From: Melissa LeBlanc-Williams Date: Mon, 26 Feb 2024 18:06:47 +0000 (-0800) Subject: Merge branch 'main' into main X-Git-Tag: 8.33.0~1^2 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/b5d02b750a519072fb5ca6162622fc3a5911445c?hp=8e188ef6530f4884b7228a294e9328f19202d404 Merge branch 'main' into main --- diff --git a/src/adafruit_blinka/board/hardkernel/odroidc4.py b/src/adafruit_blinka/board/hardkernel/odroidc4.py index 34e1ace..fd7af82 100644 --- a/src/adafruit_blinka/board/hardkernel/odroidc4.py +++ b/src/adafruit_blinka/board/hardkernel/odroidc4.py @@ -16,7 +16,9 @@ if pin.i2cPorts: SCLK = pin.SPI0_SCLK MOSI = pin.SPI0_MOSI MISO = pin.SPI0_MISO -SPI_CS0 = pin.SPI0_CS0 +CS0 = pin.SPI0_CS0 +CS1 = pin.GPIOH_6 +SPI_CS0 = CS0 # aliased for backward compatibility """J2: physical pin number""" @@ -57,3 +59,10 @@ D47 = pin.GPIOAO_4 """ ADC """ A0 = 40 A1 = 37 + +""" PWM """ +PWM = D15 + +""" UART """ +UART0_TX = D8 +UART0_RX = D10 diff --git a/src/adafruit_blinka/board/hardkernel/odroidm1.py b/src/adafruit_blinka/board/hardkernel/odroidm1.py index 7093fc4..23ec888 100644 --- a/src/adafruit_blinka/board/hardkernel/odroidm1.py +++ b/src/adafruit_blinka/board/hardkernel/odroidm1.py @@ -31,18 +31,20 @@ D31 = pin.GPIO4B_6 D33 = pin.GPIO0B_5 D35 = pin.GPIO3D_5 -SDA = D27 -SCL = D28 +SDA = D3 +SCL = D5 SCLK = D23 MOSI = D19 MISO = D21 -CS = D24 +CS0 = D24 +CS1 = D26 +CS = CS0 # aliased for backward compatibility -UART0_TX = D13 -UART0_RX = D11 -UART1_TX = D8 -UART1_RX = D10 +UART0_TX = D8 +UART0_RX = D10 +UART1_TX = D13 +UART1_RX = D11 UART1_CTS = D29 UART1_RTS = D31 @@ -55,3 +57,6 @@ I2C1_SCL = D28 """ ADC """ A0 = 40 A1 = 37 + +""" PWM """ +PWM = D15 diff --git a/src/adafruit_blinka/board/hardkernel/odroidm1s.py b/src/adafruit_blinka/board/hardkernel/odroidm1s.py index 4b5d600..3ed43a5 100644 --- a/src/adafruit_blinka/board/hardkernel/odroidm1s.py +++ b/src/adafruit_blinka/board/hardkernel/odroidm1s.py @@ -37,18 +37,20 @@ EXT_D12 = pin.GPIO3_C5 EXT_D13 = pin.GPIO3_B3 EXT_D14 = pin.GPIO3_B4 -SDA = D27 -SCL = D28 +SDA = D3 +SCL = D5 SCLK = D23 MOSI = D19 MISO = D21 -CS = D24 +CS0 = D24 +CS1 = D26 +CS = CS0 # aliased for backward compatibility -UART0_TX = D13 -UART0_RX = D11 -UART1_TX = D8 -UART1_RX = D10 +UART0_TX = D8 +UART0_RX = D10 +UART1_TX = D13 +UART1_RX = D11 UART1_CTS = D29 UART1_RTS = D31 @@ -61,3 +63,6 @@ I2C1_SCL = D28 """ ADC """ A0 = 40 A1 = 37 + +""" PWM """ +PWM = D15 diff --git a/src/adafruit_blinka/board/hardkernel/odroidn2.py b/src/adafruit_blinka/board/hardkernel/odroidn2.py index 782fbd2..c88f1de 100644 --- a/src/adafruit_blinka/board/hardkernel/odroidn2.py +++ b/src/adafruit_blinka/board/hardkernel/odroidn2.py @@ -58,47 +58,50 @@ for it in pin.i2cPorts: globals()["SCL" + str(it[0])] = it[1] globals()["SDA" + str(it[0])] = it[2] -SCL = None -SDA = None -# Set second i2c bus as default for backward compatibility. -if len(pin.i2cPorts) > 1: - SCL = pin.i2cPorts[1][1] - SDA = pin.i2cPorts[1][2] -elif len(pin.i2cPorts) > 0: +if pin.i2cPorts: SCL = pin.i2cPorts[0][1] SDA = pin.i2cPorts[0][2] SCLK = pin.SPI0_SCLK MOSI = pin.SPI0_MOSI MISO = pin.SPI0_MISO -SPI_CS0 = pin.GPIO486 +CS0 = pin.GPIO486 +CS1 = pin.GPIO464 +SPI_CS0 = CS0 # aliased for backward compatibility -D0 = GPIOX_3 # PIN_11 -D1 = GPIOX_16 # PIN_12 -D2 = GPIOX_4 # PIN_13 -D3 = GPIOX_7 # PIN_15 -D4 = GPIOX_0 # PIN_16 -D5 = GPIOX_1 # PIN_18 -D6 = GPIOX_2 # PIN_22 -D7 = GPIOA_13 # PIN_7 -D8 = GPIOX_17 # PIN_3 -D9 = GPIOX_18 # PIN_5 -D10 = GPIOX_10 # PIN_24 -D11 = GPIOA_4 # PIN_26 -D12 = GPIOX_8 # PIN_19 -D13 = GPIOX_9 # PIN_21 -D14 = GPIOX_11 # PIN_23 -D15 = GPIOX_12 # PIN_8 -D16 = GPIOX_13 # PIN_10 -D21 = GPIOX_14 # PIN_29 -D22 = GPIOX_15 # PIN_31 -D23 = GPIOX_5 # PIN_33 -D24 = GPIOX_6 # PIN_35 -D26 = GPIOA_12 # PIN_32 -D27 = GPIOX_19 # PIN_36 -D30 = GPIOA_14 # PIN_27 -D31 = GPIOA_15 # PIN_28 +D3 = GPIOX_17 +D5 = GPIOX_18 +D7 = GPIOA_13 +D8 = GPIOX_12 +D10 = GPIOX_13 +D11 = GPIOX_3 +D12 = GPIOX_16 +D13 = GPIOX_4 +D15 = GPIOX_7 +D16 = GPIOX_0 +D18 = GPIOX_1 +D19 = GPIOX_8 +D21 = GPIOX_9 +D22 = GPIOX_2 +D23 = GPIOX_11 +D24 = GPIOX_10 +D26 = GPIOA_4 +D27 = GPIOA_14 +D28 = GPIOA_15 +D29 = GPIOX_14 +D31 = GPIOX_15 +D32 = GPIOA_12 +D33 = GPIOX_5 +D35 = GPIOX_6 +D36 = GPIOX_19 """ ADC """ A0 = 40 A1 = 37 + +""" PWM """ +PWM = D15 + +""" UART """ +UART0_TX = D8 +UART0_RX = D10 diff --git a/src/adafruit_blinka/board/licheepi_4a.py b/src/adafruit_blinka/board/licheepi_4a.py new file mode 100644 index 0000000..cfda165 --- /dev/null +++ b/src/adafruit_blinka/board/licheepi_4a.py @@ -0,0 +1,39 @@ +# SPDX-FileCopyrightText: 2024 Chris Brown +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Lichee Pi 4A.""" + +from adafruit_blinka.microcontroller.thead.th1520 import pin + +IO1_6 = pin.GPIO1_6 +IO1_5 = pin.GPIO1_5 +IO1_4 = pin.GPIO1_4 +IO1_3 = pin.GPIO1_3 +I2C2_SCL = pin.TWI2_SCL +U2_TX = pin.UART2_TX +I2C2_SDA = pin.TWI2_SDA +U2_RX = pin.UART2_RX +U3_TX = pin.UART3_TX +U3_RX = pin.UART3_RX +U1_TX = pin.UART1_TX +U1_RX = pin.UART1_RX +U0_TX = pin.UART0_TX +U0_RX = pin.UART0_RX +QSPI1_SO = pin.SPI1_MISO +QSPI1_CS = pin.SPI1_CS +QSPI1_SI = pin.SPI1_MOSI +QSPI1_CLK = pin.SPI1_SCLK + +# Default UART +TX = U0_TX +RX = U0_RX + +# Default I2C +SCL = I2C2_SCL +SDA = I2C2_SDA + +# Default SPI +SCLK = QSPI1_CLK +MOSI = QSPI1_SI +MISO = QSPI1_SO +CS = QSPI1_CS diff --git a/src/adafruit_blinka/board/repkapi/__init__.py b/src/adafruit_blinka/board/repkapi/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/board/repkapi/repka_pi_3.py b/src/adafruit_blinka/board/repkapi/repka_pi_3.py new file mode 100644 index 0000000..b8ff820 --- /dev/null +++ b/src/adafruit_blinka/board/repkapi/repka_pi_3.py @@ -0,0 +1,79 @@ +# SPDX-FileCopyrightText: 2024 Suren Khorenyan +# +# SPDX-License-Identifier: MIT +"""Repka Pi 3 (Allwinner H5) pin names""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +PA0 = Pin((1, 0)) +UART2_TX = PA0 +PA1 = Pin((1, 1)) +UART2_RX = PA1 +PA2 = Pin((1, 2)) +PA3 = Pin((1, 3)) +SPI0_CS1 = PA3 +PA4 = Pin((1, 4)) +UART0_TX = PA4 +PA5 = Pin((1, 5)) +UART0_RX = PA5 +PA6 = Pin((1, 6)) +PA7 = Pin((1, 7)) +PA8 = Pin((1, 8)) +PA9 = Pin((1, 9)) +PA10 = Pin((1, 10)) +PA11 = Pin((1, 11)) +TWI1_SCL = PA11 +PA12 = Pin((1, 12)) +TWI1_SDA = PA12 +PA13 = Pin((1, 13)) +SPI1_CS0 = PA13 +PA14 = Pin((1, 14)) +SPI1_CLK = PA14 +PA15 = Pin((1, 15)) +SPI1_MOSI = PA15 +PA16 = Pin((1, 16)) +SPI1_MISO = PA16 +PA18 = Pin((1, 18)) +TWI2_SCL = PA18 +PA19 = Pin((1, 19)) +TWI2_SDA = PA19 +PA21 = Pin((1, 21)) + +PC0 = Pin((1, 64)) +SPI0_MOSI = PC0 +PC1 = Pin((1, 65)) +SPI0_MISO = PC1 +PC2 = Pin((1, 66)) +SPI0_CLK = PC2 +PC3 = Pin((1, 67)) +SPI0_CS0 = PC3 + + +PL2 = Pin((1, 354)) +S_UART_TX = PL2 +PL3 = Pin((1, 355)) +S_UART_RX = PL3 +PL11 = Pin((1, 363)) + + +i2cPorts = ( + (1, TWI1_SCL, TWI1_SDA), + # todo: check pinout in `/proc/device-tree/repka-pinout`? + (2, TWI2_SCL, TWI2_SDA), +) +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ( + (0, SPI0_CLK, SPI0_MOSI, SPI0_MISO), + (1, SPI1_CLK, SPI1_MOSI, SPI1_MISO), +) +# ordered as uartId, txId, rxId +uartPorts = ( + # todo: check uart ids + (0, UART0_TX, UART0_RX), + (2, UART2_TX, UART2_RX), + (1, S_UART_TX, S_UART_RX), +) + + +# default I2C +SCL = i2cPorts[0][1] +SDA = i2cPorts[0][2] diff --git a/src/adafruit_blinka/board/repkapi/repka_pi_4.py b/src/adafruit_blinka/board/repkapi/repka_pi_4.py new file mode 100644 index 0000000..4d776bd --- /dev/null +++ b/src/adafruit_blinka/board/repkapi/repka_pi_4.py @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +# copied from Allwinner H6 to be updated later + +"""Repka Pi 4 (Allwinner H6) Pin Names""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +# TODO: check and update all pins after board release +PC16 = Pin((1, 79)) + +PD14 = Pin((1, 110)) +PD15 = Pin((1, 111)) +PD16 = Pin((1, 112)) +PD17 = Pin((1, 113)) +PD18 = Pin((1, 114)) +PD19 = Pin((1, 115)) +UART2_TX = PD19 +PD20 = Pin((1, 116)) +UART2_RX = PD20 +PD21 = Pin((1, 117)) +PD22 = Pin((1, 118)) +PD23 = Pin((1, 119)) +PD24 = Pin((1, 120)) +PD25 = Pin((1, 121)) +TWI0_SCL = PD25 +PD26 = Pin((1, 122)) +TWI0_SDA = PD26 + +PG10 = Pin((1, 202)) +PG11 = Pin((1, 203)) +PG12 = Pin((1, 204)) +PG13 = Pin((1, 205)) +PG14 = Pin((1, 206)) + +PH2 = Pin((1, 226)) +PH3 = Pin((1, 227)) +SPI1_CS = PH3 +PH4 = Pin((1, 228)) +SPI1_SCLK = PH4 +PH5 = Pin((1, 229)) +SPI1_MOSI = PH5 +PH6 = Pin((1, 230)) +SPI1_MISO = PH6 +PH8 = Pin((1, 230)) +PH9 = Pin((1, 231)) + +PL2 = Pin((0, 2)) +PL3 = Pin((0, 3)) +PL8 = Pin((0, 8)) +PL9 = Pin((0, 9)) +PL10 = Pin((0, 10)) + +i2cPorts = ((0, TWI0_SCL, TWI0_SDA),) +spiPorts = ((1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),) +uartPorts = ((2, UART2_TX, UART2_RX),) diff --git a/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py b/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py index f44f92a..ea01a8e 100644 --- a/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py +++ b/src/adafruit_blinka/microcontroller/amlogic/meson_g12_common/pin.py @@ -13,32 +13,15 @@ Linux kernel 5.4.y (mainline) """ from adafruit_blinka.agnostic import detector -from adafruit_blinka.microcontroller.alias import get_dts_alias +from adafruit_blinka.microcontroller.alias import get_dts_alias, get_pwm_chipid from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin +from adafruit_blinka.microcontroller.generic_linux.libgpiod_chip import Chip -try: - import gpiod -except ImportError: - raise ImportError( - "libgpiod Python bindings not found, please install and try again!" - ) from ImportError +chip0 = Chip("0") +chip1 = Chip("1") -if hasattr(gpiod, "Chip"): - chip0 = gpiod.Chip("0") - chip1 = gpiod.Chip("1") -else: - chip0 = gpiod.chip("0") - chip1 = gpiod.chip("1") - -if callable(chip0.num_lines): - chip0lines = chip0.num_lines() -else: - chip0lines = chip0.num_lines - -if callable(chip1.num_lines): - chip1lines = chip1.num_lines() -else: - chip1lines = chip1.num_lines +chip0lines = chip0.num_lines +chip1lines = chip1.num_lines if chip0lines < 20: aobus = 0 @@ -131,6 +114,9 @@ i2cPorts = [] # ordered as spiId, sckId, mosiId, misoId spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),) +# SysFs pwm outputs, pwm channel and pin in first tuple +pwmOuts = [] + # ordered as uartId, txId, rxId uartPorts = [ (1, UART1_TX, UART1_RX), @@ -151,24 +137,55 @@ if board in ("ODROID_C4", "ODROID_N2"): globals()[alias + "_SCL"] = GPIOA_15 globals()[alias + "_SDA"] = GPIOA_14 i2cPorts.append((int(alias[-1]), GPIOA_15, GPIOA_14)) - alias = get_dts_alias("fdd24000.serial") + alias = get_dts_alias("ffd24000.serial") if alias is not None: globals()[alias + "_TX"] = GPIOX_12 globals()[alias + "_RX"] = GPIOX_13 uartPorts.append((int(alias[-1]), GPIOX_12, GPIOX_13)) - alias = get_dts_alias("fdd23000.serial") + alias = get_dts_alias("ffd23000.serial") if alias is not None: globals()[alias + "_TX"] = GPIOX_6 globals()[alias + "_RX"] = GPIOX_7 uartPorts.append((int(alias[-1]), GPIOX_6, GPIOX_7)) if board in ("ODROID_C4"): + alias = get_pwm_chipid("ffd1b000.pwm") + if alias is not None: + globals()["PWMA"] = GPIOX_6 + globals()["PWMB"] = GPIOX_19 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_6)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_19)) + alias = get_pwm_chipid("ffd1a000.pwm") + if alias is not None: + globals()["PWMC"] = GPIOX_5 + globals()["PWMD"] = GPIOX_3 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_5)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_3)) + alias = get_pwm_chipid("ffd19000.pwm") + if alias is not None: + globals()["PWME"] = GPIOX_16 + globals()["PWMF"] = GPIOX_7 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_16)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_7)) analogIns.append((37, 0, 2)) analogIns.append((40, 0, 0)) if board in ("ODROID_N2"): + alias = get_pwm_chipid("ffd1a000.pwm") + if alias is not None: + globals()["PWMC"] = GPIOX_5 + globals()["PWMD"] = GPIOX_6 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_5)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_6)) + alias = get_pwm_chipid("ffd19000.pwm") + if alias is not None: + globals()["PWME"] = GPIOX_16 + globals()["PWMF"] = GPIOX_7 + pwmOuts.append(((int(alias[-1]), 0), GPIOX_16)) + pwmOuts.append(((int(alias[-1]), 1), GPIOX_7)) analogIns.append((37, 0, 3)) analogIns.append((40, 0, 2)) analogIns = tuple(analogIns) i2cPorts = tuple(i2cPorts) +pwmOuts = tuple(pwmOuts) uartPorts = tuple(uartPorts) diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_1_x.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_1_x.py new file mode 100644 index 0000000..532fb44 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_1_x.py @@ -0,0 +1,33 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""A Chip class for use with libgpiod 1.x.""" +import gpiod + + +# pylint: disable=too-many-branches,too-many-statements +class Chip: + """Abstraction for handling all breaking changes over the lifecycle of gpiod""" + + _CONSUMER = "adafruit_blinka" + + id: str = None + num_lines: int + + def __init__(self, chip_id: str): + self.id = chip_id + if hasattr(gpiod, "Chip"): + self._chip = gpiod.Chip(self.id) + else: + self._chip = gpiod.chip(self.id) + + if callable(self._chip.num_lines): + self.num_lines = self._chip.num_lines() + else: + self.num_lines = self.num_lines + + def __repr__(self): + return self.id + + def __eq__(self, other): + return self.id == other diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_2_x.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_2_x.py new file mode 100644 index 0000000..8fd75e4 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_chip_2_x.py @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""A Chip class for use with libgpiod 2.x.""" +import gpiod + + +# pylint: disable=too-many-branches,too-many-statements +class Chip: + """Abstraction for handling all breaking changes over the lifecycle of gpiod""" + + _CONSUMER = "adafruit_blinka" + + id: str = None + num_lines: int + + def __init__(self, chip_id: str): + self.id = chip_id + path = f"/dev/gpiochip{self.id}" + self._chip = gpiod.Chip(path) + + info = self._chip.get_info() + self.num_lines = info.num_lines + + def __repr__(self): + return self.id + + def __eq__(self, other): + return self.id == other diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_chip.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_chip.py new file mode 100644 index 0000000..66d2376 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_chip.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""A Chip class for use with libgpiod.""" +try: + import gpiod +except ImportError: + raise ImportError( + "libgpiod Python bindings not found, please install and try again! See " + "https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/main/libgpiod.py" + ) from ImportError + +# Versions 1.5.4 and earlier have no __version__ attribute +if hasattr(gpiod, "__version__"): + version = gpiod.__version__ +else: + version = "1.x" + +if version.startswith("1."): + from .libgpiod.libgpiod_chip_1_x import Chip # pylint: disable=unused-import +else: + from .libgpiod.libgpiod_chip_2_x import Chip # pylint: disable=unused-import diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py index d495524..831bc1a 100644 --- a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod_pin.py @@ -7,7 +7,7 @@ try: except ImportError: raise ImportError( "libgpiod Python bindings not found, please install and try again! See " - "https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/master/libgpiod.sh" + "https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/main/libgpiod.py" ) from ImportError # Versions 1.5.4 and earlier have no __version__ attribute diff --git a/src/adafruit_blinka/microcontroller/thead/__init__.py b/src/adafruit_blinka/microcontroller/thead/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/microcontroller/thead/th1520/__init__.py b/src/adafruit_blinka/microcontroller/thead/th1520/__init__.py new file mode 100644 index 0000000..2be333d --- /dev/null +++ b/src/adafruit_blinka/microcontroller/thead/th1520/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2024 Chris Brown +# +# SPDX-License-Identifier: MIT +"""Definition for the T-Head TH1520 chip""" diff --git a/src/adafruit_blinka/microcontroller/thead/th1520/pin.py b/src/adafruit_blinka/microcontroller/thead/th1520/pin.py new file mode 100644 index 0000000..362fa4a --- /dev/null +++ b/src/adafruit_blinka/microcontroller/thead/th1520/pin.py @@ -0,0 +1,150 @@ +# SPDX-FileCopyrightText: 2024 Chris Brown +# +# SPDX-License-Identifier: MIT +"""T-Head TH1520 pin names""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +GPIO0_0 = Pin((0, 0)) +SPI1_SCLK = GPIO0_0 +GPIO0_1 = Pin((0, 1)) +SPI1_CS = GPIO0_1 +GPIO0_2 = Pin((0, 2)) +SPI1_MOSI = GPIO0_2 +GPIO0_3 = Pin((0, 3)) +SPI1_MISO = GPIO0_3 +GPIO0_4 = Pin((0, 4)) +GPIO0_5 = Pin((0, 5)) +GPIO0_6 = Pin((0, 6)) +GPIO0_7 = Pin((0, 7)) +GPIO0_8 = Pin((0, 8)) +GPIO0_9 = Pin((0, 9)) +GPIO0_10 = Pin((0, 10)) +UART1_TX = GPIO0_10 +GPIO0_11 = Pin((0, 11)) +UART1_RX = GPIO0_11 +GPIO0_12 = Pin((0, 12)) +GPIO0_13 = Pin((0, 13)) +GPIO0_14 = Pin((0, 14)) +GPIO0_15 = Pin((0, 15)) +GPIO0_16 = Pin((0, 16)) +UART3_TX = GPIO0_16 +GPIO0_17 = Pin((0, 17)) +UART3_RX = GPIO0_17 +GPIO0_18 = Pin((0, 18)) +GPIO0_19 = Pin((0, 19)) +GPIO0_20 = Pin((0, 20)) +GPIO0_21 = Pin((0, 21)) +GPIO0_22 = Pin((0, 22)) +GPIO0_23 = Pin((0, 23)) +GPIO0_24 = Pin((0, 24)) +GPIO0_25 = Pin((0, 25)) +GPIO0_26 = Pin((0, 26)) +GPIO0_27 = Pin((0, 27)) +GPIO0_28 = Pin((0, 28)) +GPIO0_29 = Pin((0, 29)) +GPIO0_30 = Pin((0, 30)) +GPIO0_31 = Pin((0, 31)) +GPIO1_0 = Pin((1, 0)) +GPIO1_1 = Pin((1, 1)) +GPIO1_2 = Pin((1, 2)) +GPIO1_3 = Pin((1, 3)) +GPIO1_4 = Pin((1, 4)) +GPIO1_5 = Pin((1, 5)) +GPIO1_6 = Pin((1, 6)) +GPIO1_7 = Pin((1, 7)) +GPIO1_8 = Pin((1, 8)) +GPIO1_9 = Pin((1, 9)) +GPIO1_10 = Pin((1, 10)) +GPIO1_11 = Pin((1, 11)) +GPIO1_12 = Pin((1, 12)) +GPIO1_13 = Pin((1, 13)) +GPIO1_14 = Pin((1, 14)) +GPIO1_15 = Pin((1, 15)) +GPIO1_16 = Pin((1, 16)) +GPIO1_17 = Pin((1, 17)) +GPIO1_18 = Pin((1, 18)) +GPIO1_19 = Pin((1, 19)) +GPIO1_20 = Pin((1, 20)) +GPIO1_21 = Pin((1, 21)) +GPIO1_22 = Pin((1, 22)) +GPIO1_23 = Pin((1, 23)) +GPIO1_24 = Pin((1, 24)) +GPIO1_25 = Pin((1, 25)) +GPIO1_26 = Pin((1, 26)) +GPIO1_27 = Pin((1, 27)) +GPIO1_28 = Pin((1, 28)) +GPIO1_29 = Pin((1, 29)) +GPIO1_30 = Pin((1, 30)) +GPIO1_31 = Pin((1, 31)) +GPIO2_0 = Pin((2, 0)) +UART0_TX = GPIO2_0 +GPIO2_1 = Pin((2, 1)) +UART0_RX = GPIO2_1 +GPIO2_2 = Pin((2, 2)) +GPIO2_3 = Pin((2, 3)) +GPIO2_4 = Pin((2, 4)) +GPIO2_5 = Pin((2, 5)) +GPIO2_6 = Pin((2, 6)) +GPIO2_7 = Pin((2, 7)) +GPIO2_8 = Pin((2, 8)) +GPIO2_9 = Pin((2, 9)) +TWI2_SCL = GPIO2_9 +UART2_TX = GPIO2_9 +GPIO2_10 = Pin((2, 10)) +TWI2_SDA = GPIO2_10 +UART2_RX = GPIO2_10 +GPIO2_11 = Pin((2, 11)) +GPIO2_12 = Pin((2, 12)) +GPIO2_13 = Pin((2, 13)) +GPIO2_14 = Pin((2, 14)) +GPIO2_15 = Pin((2, 15)) +GPIO2_16 = Pin((2, 16)) +GPIO2_17 = Pin((2, 17)) +GPIO2_18 = Pin((2, 18)) +GPIO2_19 = Pin((2, 19)) +GPIO2_20 = Pin((2, 20)) +GPIO2_21 = Pin((2, 21)) +GPIO2_22 = Pin((2, 22)) +GPIO2_23 = Pin((2, 23)) +GPIO2_24 = Pin((2, 24)) +GPIO2_25 = Pin((2, 25)) +GPIO2_26 = Pin((2, 26)) +GPIO2_27 = Pin((2, 27)) +GPIO2_28 = Pin((2, 28)) +GPIO2_29 = Pin((2, 29)) +GPIO2_30 = Pin((2, 30)) +GPIO2_31 = Pin((2, 31)) +GPIO3_0 = Pin((3, 0)) +GPIO3_1 = Pin((3, 1)) +GPIO3_2 = Pin((3, 2)) +GPIO3_3 = Pin((3, 3)) +GPIO3_4 = Pin((3, 4)) +GPIO3_5 = Pin((3, 5)) +GPIO3_6 = Pin((3, 6)) +GPIO3_7 = Pin((3, 7)) +GPIO3_8 = Pin((3, 8)) +GPIO3_9 = Pin((3, 9)) +GPIO3_10 = Pin((3, 10)) +GPIO3_11 = Pin((3, 11)) +GPIO3_12 = Pin((3, 12)) +GPIO3_13 = Pin((3, 13)) +GPIO3_14 = Pin((3, 14)) +GPIO3_15 = Pin((3, 15)) +GPIO3_16 = Pin((3, 16)) +GPIO3_17 = Pin((3, 17)) +GPIO3_18 = Pin((3, 18)) +GPIO3_19 = Pin((3, 19)) +GPIO3_20 = Pin((3, 20)) +GPIO3_21 = Pin((3, 21)) +GPIO3_22 = Pin((3, 22)) + +uartPorts = ( + (0, UART0_TX, UART0_RX), + (1, UART1_TX, UART1_RX), + (2, UART2_TX, UART2_RX), + (3, UART3_TX, UART3_RX), +) + +i2cPorts = ((2, TWI2_SCL, TWI2_SDA),) + +spiPorts = ((2, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),) diff --git a/src/board.py b/src/board.py index baa15e6..ca7c683 100644 --- a/src/board.py +++ b/src/board.py @@ -364,9 +364,18 @@ elif board_id == ap_board.AML_S905X_CC: elif board_id == ap_board.ROC_RK3328_CC: from adafruit_blinka.board.librecomputer.roc_rk3328_cc import * +elif board_id == ap_board.REPKA_PI_3_H5: + from adafruit_blinka.board.repkapi.repka_pi_3 import * + +elif board_id == ap_board.REPKA_PI_4_H6: + from adafruit_blinka.board.repkapi.repka_pi_4 import * + elif board_id == ap_board.GENERIC_LINUX_PC: from adafruit_blinka.board.generic_linux_pc import * +elif board_id == ap_board.LICHEEPI_4A: + from adafruit_blinka.board.licheepi_4a import * + elif board_id == ap_board.MILKV_DUO: from adafruit_blinka.board.milkv_duo import * diff --git a/src/digitalio.py b/src/digitalio.py index 0778614..640a8cf 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -115,6 +115,8 @@ elif detector.chip.H616: from adafruit_blinka.microcontroller.allwinner.h616.pin import Pin elif detector.chip.D1_RISCV: from adafruit_blinka.microcontroller.allwinner.D1.pin import Pin +elif detector.chip.TH1520: + from adafruit_blinka.microcontroller.thead.th1520.pin import Pin # Special Case Boards elif detector.board.ftdi_ft232h: from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index 7ef7bab..2c51e3b 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -146,6 +146,8 @@ elif chip_id == ap_chip.D1_RISCV: from adafruit_blinka.microcontroller.allwinner.D1 import * elif chip_id == ap_chip.CV1800B: from adafruit_blinka.microcontroller.cv1800b import * +elif chip_id == ap_chip.TH1520: + from adafruit_blinka.microcontroller.thead.th1520 import * elif chip_id == ap_chip.GENERIC_X86: print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.") elif chip_id is None: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index 3e4e731..c499364 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -4,7 +4,7 @@ """Pins named after their chip name.""" import sys -from adafruit_platformdetect.constants import chips as ap_chip +from adafruit_platformdetect.constants import chips as ap_chip, boards as ap_boards from adafruit_blinka.agnostic import board_id, chip_id # We intentionally are patching into this namespace so skip the wildcard check. @@ -45,11 +45,17 @@ elif chip_id == ap_chip.SUN8I: elif chip_id == ap_chip.H3: from adafruit_blinka.microcontroller.allwinner.h3.pin import * elif chip_id == ap_chip.H5: - from adafruit_blinka.microcontroller.allwinner.h5.pin import * + if board_id == ap_boards.REPKA_PI_3_H5: + from adafruit_blinka.board.repkapi.repka_pi_3 import * + else: + from adafruit_blinka.microcontroller.allwinner.h5.pin import * elif chip_id == ap_chip.H6: from adafruit_blinka.microcontroller.allwinner.h6.pin import * elif chip_id == ap_chip.H616: - from adafruit_blinka.microcontroller.allwinner.h616.pin import * + if board_id == ap_boards.REPKA_PI_4_H6: + from adafruit_blinka.board.repkapi.repka_pi_4 import * + else: + from adafruit_blinka.microcontroller.allwinner.h616.pin import * elif chip_id == ap_chip.SAMA5: from adafruit_blinka.microcontroller.sama5.pin import * elif chip_id == ap_chip.T210: @@ -113,7 +119,7 @@ elif chip_id == ap_chip.RK3328: elif chip_id == ap_chip.RK3566: from adafruit_blinka.microcontroller.rockchip.rk3566.pin import * elif chip_id == ap_chip.RK3568: - if board_id in ("ODROID_M1"): + if board_id in (ap_boards.ODROID_M1,): from adafruit_blinka.microcontroller.rockchip.rk3568b2.pin import * else: from adafruit_blinka.microcontroller.rockchip.rk3568.pin import * @@ -135,6 +141,8 @@ elif chip_id == ap_chip.D1_RISCV: from adafruit_blinka.microcontroller.allwinner.D1.pin import * elif chip_id == ap_chip.CV1800B: from adafruit_blinka.microcontroller.cv1800b.pin import * +elif chip_id == ap_chip.TH1520: + from adafruit_blinka.microcontroller.thead.th1520.pin import * elif "sphinx" in sys.modules: # pylint: disable=unused-import from adafruit_blinka.microcontroller.generic_micropython import Pin diff --git a/src/pwmio.py b/src/pwmio.py index 397120b..e98d2f8 100644 --- a/src/pwmio.py +++ b/src/pwmio.py @@ -16,7 +16,7 @@ from adafruit_blinka.agnostic import detector # pylint: disable=unused-import -if detector.board.any_raspberry_pi: +if detector.board.any_raspberry_pi and not detector.board.RASPBERRY_PI_5: from adafruit_blinka.microcontroller.bcm283x.pwmio.PWMOut import PWMOut elif detector.board.any_coral_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut