From: Melissa LeBlanc-Williams Date: Fri, 7 Jun 2024 23:04:36 +0000 (-0700) Subject: Merge pull request #835 from hajimef/develop X-Git-Tag: 8.41.0 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/6c48e5e4be302ba8a78c0d3f6bb614e933447f36?hp=3ef79091c44e279637f4dbcb2e3b80d2693fdd95 Merge pull request #835 from hajimef/develop Added support for Radxa Rock 5C --- diff --git a/src/adafruit_blinka/board/generic_agnostic_board.py b/src/adafruit_blinka/board/generic_agnostic_board.py index 925e7ba..7cdfa80 100644 --- a/src/adafruit_blinka/board/generic_agnostic_board.py +++ b/src/adafruit_blinka/board/generic_agnostic_board.py @@ -11,9 +11,11 @@ Dx_INPUT_TRUE_PULL_UP = pin.D2 Dx_INPUT_TRUE_PULL_DOWN = pin.D3 Dx_OUTPUT = pin.D4 Dx_INPUT_TOGGLE = pin.D7 -# Special "digital" pins -NEOPIXEL = pin.D6 +# Special digital pins for pixels +NEOPIXEL = pin.D6 +DOTSTAR_DATA = pin.D8 +DOTSTAR_CLK = pin.D9 # Analog pins Ax_INPUT_RAND_INT = pin.A0 @@ -33,6 +35,9 @@ MOSI = pin.MOSI MISO = pin.MISO CS = pin.D6 +# SPI port +spiPorts = ((0, SCK, MOSI, MISO),) + # UART pins UART_TX = pin.UART_TX UART_RX = pin.UART_RX diff --git a/src/adafruit_blinka/board/luckfox/luckfoxpico.py b/src/adafruit_blinka/board/luckfox/luckfoxpico.py new file mode 100644 index 0000000..f81ca61 --- /dev/null +++ b/src/adafruit_blinka/board/luckfox/luckfoxpico.py @@ -0,0 +1,71 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Lockfox Pico.""" + +from adafruit_blinka.microcontroller.rockchip.rv1106 import pin + +G42 = pin.GPIO1_B2 +G43 = pin.GPIO1_B3 +G55 = pin.GPIO1_C7 +G54 = pin.GPIO1_C6 +G53 = pin.GPIO1_C5 +G52 = pin.GPIO1_C4 +G58 = pin.GPIO1_D2 +G59 = pin.GPIO1_D3 +G34 = pin.GPIO1_A2 +G48 = pin.GPIO1_C0 # This port is in use as CS0. This port is not available. +G49 = pin.GPIO1_C1 +G50 = pin.GPIO1_C2 +G51 = pin.GPIO1_C3 +G4 = pin.GPIO0_A4 +G56 = pin.GPIO1_D0 +G57 = pin.GPIO1_D1 +G137 = pin.GPIO4_B1 +G136 = pin.GPIO4_B0 +G134 = pin.GPIO4_A6 +G130 = pin.GPIO4_A2 +G131 = pin.GPIO4_A3 +G132 = pin.GPIO4_A4 + +# UART +UART3_TX = pin.UART3_TX_M1 +UART3_RX = pin.UART3_RX_M1 +UART4_TX = pin.UART4_TX_M1 +UART4_RX = pin.UART4_RX_M1 + +# Default UART +TX = UART3_TX +RX = UART3_RX +TXD = UART3_TX +RXD = UART3_RX + +# I2C +I2C3_SCL = pin.I2C3_SCL_M1 +I2C3_SDA = pin.I2C3_SDA_M1 + +# Default I2C +SCL = I2C3_SCL +SDA = I2C3_SDA + +# SPI +SPI0_MISO = pin.SPI0_MISO_M0 +SPI0_MOSI = pin.SPI0_MOSI_M0 +SPI0_SCLK = pin.SPI0_CLK_M0 +SPI0_CS0 = pin.SPI0_CS0_M0 +SPI0_CS1 = pin.SPI0_CS1_M0 + +# Default SPI +MISO = SPI0_MISO +MOSI = SPI0_MOSI +SCLK = SPI0_SCLK + +# PWM +PWM0 = pin.PWM0 +PWM1 = pin.PWM1 +PWM10 = pin.PWM10 +PWM11 = pin.PWM11 + +# ADC +ADC_IN0 = pin.ADC_IN0 +ADC_IN1 = pin.ADC_IN1 diff --git a/src/adafruit_blinka/board/luckfox/luckfoxpico_max.py b/src/adafruit_blinka/board/luckfox/luckfoxpico_max.py new file mode 100644 index 0000000..c0896fc --- /dev/null +++ b/src/adafruit_blinka/board/luckfox/luckfoxpico_max.py @@ -0,0 +1,73 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Lockfox Pico Pro/Max.""" + +from adafruit_blinka.microcontroller.rockchip.rv1106 import pin + +G42 = pin.GPIO1_B2 +G43 = pin.GPIO1_B3 +G55 = pin.GPIO1_C7 +G54 = pin.GPIO1_C6 +G53 = pin.GPIO1_C5 +G52 = pin.GPIO1_C4 +G58 = pin.GPIO1_D2 +G59 = pin.GPIO1_D3 +G73 = pin.GPIO2_B1 +G48 = pin.GPIO1_C0 # This port is in use as CS0. This port is not available. +G49 = pin.GPIO1_C1 +G50 = pin.GPIO1_C2 +G51 = pin.GPIO1_C3 +G72 = pin.GPIO2_B0 +G56 = pin.GPIO1_D0 +G57 = pin.GPIO1_D1 +G68 = pin.GPIO2_A4 +G69 = pin.GPIO2_A5 +G64 = pin.GPIO2_A0 +G65 = pin.GPIO2_A1 +G66 = pin.GPIO2_A2 +G67 = pin.GPIO2_A3 +G70 = pin.GPIO2_A6 +G71 = pin.GPIO2_A7 + +# UART +UART3_TX = pin.UART3_TX_M1 +UART3_RX = pin.UART3_RX_M1 +UART4_TX = pin.UART4_TX_M1 +UART4_RX = pin.UART4_RX_M1 + +# Default UART +TX = UART3_TX +RX = UART3_RX +TXD = UART3_TX +RXD = UART3_RX + +# I2C +I2C3_SCL = pin.I2C3_SCL_M1 +I2C3_SDA = pin.I2C3_SDA_M1 + +# Default I2C +SCL = I2C3_SCL +SDA = I2C3_SDA + +# SPI +SPI0_MISO = pin.SPI0_MISO_M0 +SPI0_MOSI = pin.SPI0_MOSI_M0 +SPI0_SCLK = pin.SPI0_CLK_M0 +SPI0_CS0 = pin.SPI0_CS0_M0 +SPI0_CS1 = pin.SPI0_CS1_M0 + +# Default SPI +MISO = SPI0_MISO +MOSI = SPI0_MOSI +SCLK = SPI0_SCLK + +# PWM +PWM5 = pin.PWM5 +PWM6 = pin.PWM6 +PWM10 = pin.PWM10 +PWM11 = pin.PWM11 + +# ADC +ADC_IN0 = pin.ADC_IN0 +ADC_IN1 = pin.ADC_IN1 diff --git a/src/adafruit_blinka/board/luckfox/luckfoxpico_mini.py b/src/adafruit_blinka/board/luckfox/luckfoxpico_mini.py new file mode 100644 index 0000000..a2d3276 --- /dev/null +++ b/src/adafruit_blinka/board/luckfox/luckfoxpico_mini.py @@ -0,0 +1,62 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Lockfox Pico Mini.""" + +from adafruit_blinka.microcontroller.rockchip.rv1106 import pin + +G42 = pin.GPIO1_B2 +G43 = pin.GPIO1_B3 +G48 = pin.GPIO1_C0 # This port is in use as CS0. This port is not available. +G49 = pin.GPIO1_C1 +G50 = pin.GPIO1_C2 +G51 = pin.GPIO1_C3 +G52 = pin.GPIO1_C4 +G53 = pin.GPIO1_C5 +G56 = pin.GPIO1_D0 +G57 = pin.GPIO1_D1 +G58 = pin.GPIO1_D2 +G59 = pin.GPIO1_D3 +G54 = pin.GPIO1_C6 +G55 = pin.GPIO1_C7 +G4 = pin.GPIO0_A4 + +# UART +UART3_TX = pin.UART3_TX_M1 +UART3_RX = pin.UART3_RX_M1 +UART4_TX = pin.UART4_TX_M1 +UART4_RX = pin.UART4_RX_M1 + +# Default UART +TX = UART3_TX +RX = UART3_RX +TXD = UART3_TX +RXD = UART3_RX + +# I2C +I2C3_SCL = pin.I2C3_SCL_M1 +I2C3_SDA = pin.I2C3_SDA_M1 + +# Default I2C +SCL = I2C3_SCL +SDA = I2C3_SDA + +# SPI +SPI0_MISO = pin.SPI0_MISO_M0 +SPI0_MOSI = pin.SPI0_MOSI_M0 +SPI0_SCLK = pin.SPI0_CLK_M0 +SPI0_CS0 = pin.SPI0_CS0_M0 +SPI0_CS1 = pin.SPI0_CS1_M0 + +# Default SPI +MISO = SPI0_MISO +MOSI = SPI0_MOSI +SCLK = SPI0_SCLK + +# PWM +PWM10 = pin.PWM10 +PWM11 = pin.PWM11 + +# ADC +ADC_IN0 = pin.ADC_IN0 +ADC_IN1 = pin.ADC_IN1 diff --git a/src/adafruit_blinka/board/luckfox/luckfoxpico_plus.py b/src/adafruit_blinka/board/luckfox/luckfoxpico_plus.py new file mode 100644 index 0000000..34b5675 --- /dev/null +++ b/src/adafruit_blinka/board/luckfox/luckfoxpico_plus.py @@ -0,0 +1,72 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Lockfox Pico Plus.""" + +from adafruit_blinka.microcontroller.rockchip.rv1106 import pin + +G42 = pin.GPIO1_B2 +G43 = pin.GPIO1_B3 +G55 = pin.GPIO1_C7 +G54 = pin.GPIO1_C6 +G53 = pin.GPIO1_C5 +G52 = pin.GPIO1_C4 +G58 = pin.GPIO1_D2 +G59 = pin.GPIO1_D3 +G73 = pin.GPIO2_B1 +G48 = pin.GPIO1_C0 # This port is in use as CS0. This port is not available. +G49 = pin.GPIO1_C1 +G50 = pin.GPIO1_C2 +G51 = pin.GPIO1_C3 +G72 = pin.GPIO2_B0 +G56 = pin.GPIO1_D0 +G57 = pin.GPIO1_D1 +G102 = pin.GPIO3_A6 +G103 = pin.GPIO3_A7 +G101 = pin.GPIO3_A5 +G100 = pin.GPIO3_A4 +G99 = pin.GPIO3_A3 +G98 = pin.GPIO3_A2 +G97 = pin.GPIO3_A1 + +# UART +UART3_TX = pin.UART3_TX_M1 +UART3_RX = pin.UART3_RX_M1 +UART4_TX = pin.UART4_TX_M1 +UART4_RX = pin.UART4_RX_M1 + +# Default UART +TX = UART3_TX +RX = UART3_RX +TXD = UART3_TX +RXD = UART3_RX + +# I2C +I2C3_SCL = pin.I2C3_SCL_M1 +I2C3_SDA = pin.I2C3_SDA_M1 + +# Default I2C +SCL = I2C3_SCL +SDA = I2C3_SDA + +# SPI +SPI0_MISO = pin.SPI0_MISO_M0 +SPI0_MOSI = pin.SPI0_MOSI_M0 +SPI0_SCLK = pin.SPI0_CLK_M0 +SPI0_CS0 = pin.SPI0_CS0_M0 +SPI0_CS1 = pin.SPI0_CS1_M0 + +# Default SPI +MISO = SPI0_MISO +MOSI = SPI0_MOSI +SCLK = SPI0_SCLK + +# PWM +PWM0 = pin.PWM0 +PWM1 = pin.PWM1 +PWM10 = pin.PWM10 +PWM11 = pin.PWM11 + +# ADC +ADC_IN0 = pin.ADC_IN0 +ADC_IN1 = pin.ADC_IN1 diff --git a/src/adafruit_blinka/board/radxa/radxazero3.py b/src/adafruit_blinka/board/radxa/radxazero3.py new file mode 100644 index 0000000..46a44d6 --- /dev/null +++ b/src/adafruit_blinka/board/radxa/radxazero3.py @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: 2024 Burberius +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Radxa ZERO 3 (3E and 3W)""" + +from adafruit_blinka.microcontroller.rockchip.rk3566 import pin + +# ZERO 3 IO pins + +D1_A0 = pin.GPIO1_A0 +D1_A1 = pin.GPIO1_A1 +D3_C4 = pin.GPIO3_C4 +D3_A1 = pin.GPIO3_A1 +D3_A2 = pin.GPIO3_A2 +D3_B0 = pin.GPIO3_B0 +D4_C3 = pin.GPIO4_C3 +D4_C5 = pin.GPIO4_C5 +D4_C2 = pin.GPIO4_C2 +D4_B2 = pin.GPIO4_B2 +D3_B3 = pin.GPIO3_B3 +D3_B4 = pin.GPIO3_B4 +D3_C3 = pin.GPIO3_C3 +D3_A4 = pin.GPIO3_A4 +D1_A4 = pin.GPIO1_A4 +D0_D1 = pin.GPIO0_D1 +D0_D0 = pin.GPIO0_D0 +D3_A3 = pin.GPIO3_A3 +D3_B1 = pin.GPIO3_B1 +D3_B2 = pin.GPIO3_B2 +D3_C1 = pin.GPIO3_C1 +D4_C6 = pin.GPIO4_C6 +D4_B3 = pin.GPIO4_B3 +D3_C2 = pin.GPIO3_C2 +D3_A7 = pin.GPIO3_A7 +D3_A6 = pin.GPIO3_A6 +D3_A5 = pin.GPIO3_A5 + + +# I2C +SDA = D1_A0 +SCL = D1_A1 + +# SPI +CE0 = D4_C6 +SCLK = D4_C2 +MOSI = D4_C3 +MISO = D4_C5 + +# UART aliases +UART_TX = D0_D1 +UART_RX = D0_D0 +UART2_TX = UART_TX +UART2_RX = UART_RX +UART3_TX = D1_A1 +UART3_RX = D1_A0 +UART4_TX = D3_B2 +UART4_RX = D3_B1 +UART5_TX = D3_C2 +UART5_RX = D3_C3 +UART9_TX = D4_C5 +UART9_RX = D4_C6 +TXD = D0_D1 +RXD = D0_D0 +TX = D0_D1 +RX = D0_D0 diff --git a/src/adafruit_blinka/board/walnutpi/__init__.py b/src/adafruit_blinka/board/walnutpi/__init__.py new file mode 100644 index 0000000..a9c3af8 --- /dev/null +++ b/src/adafruit_blinka/board/walnutpi/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Board definitions from WalnutPi""" diff --git a/src/adafruit_blinka/board/walnutpi/walnutpi1b.py b/src/adafruit_blinka/board/walnutpi/walnutpi1b.py new file mode 100644 index 0000000..0297b27 --- /dev/null +++ b/src/adafruit_blinka/board/walnutpi/walnutpi1b.py @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Pin definitions for the Walnut Pi 1b .""" + +from adafruit_blinka.microcontroller.allwinner.h616 import pin + +PI8 = pin.PI8 +SDA1 = pin.PI8 +PI7 = pin.PI7 +SCL1 = pin.PI7 +PC8 = pin.PC8 +PC9 = pin.PC9 +PC11 = pin.PC11 +PI11 = pin.PI11 +PH6 = pin.PH6 +SCLK = pin.PH6 +PH7 = pin.PH7 +MOSI = pin.PH7 +PH8 = pin.PH8 +MISO = pin.PH8 +PI10 = pin.PI10 +SDA2 = pin.PI10 +PI0 = pin.PI0 +PI1 = pin.PI1 +PI2 = pin.PI2 +PI3 = pin.PI3 +PI4 = pin.PI4 + +PI5 = pin.PI5 +TX2 = pin.PI5 +PI6 = pin.PI6 +RX2 = pin.PI6 +PC10 = pin.PC10 +PI12 = pin.PI12 +PC14 = pin.PC14 +PC15 = pin.PC15 +PH5 = pin.PH5 +CS0 = pin.PH5 +PH9 = pin.PH9 +CS1 = pin.PH9 +PI9 = pin.PI9 +SCL2 = pin.PI9 +PI16 = pin.PI16 +PI15 = pin.PI15 +PI13 = pin.PI13 +TX4 = pin.PI13 +PI14 = pin.PI14 +RX4 = pin.PI14 + +KEY = pin.PC12 +LED = pin.PC13 diff --git a/src/adafruit_blinka/microcontroller/allwinner/h616/pin.py b/src/adafruit_blinka/microcontroller/allwinner/h616/pin.py index 3ee5a9c..b8d9103 100644 --- a/src/adafruit_blinka/microcontroller/allwinner/h616/pin.py +++ b/src/adafruit_blinka/microcontroller/allwinner/h616/pin.py @@ -4,96 +4,103 @@ """Allwinner H616 Pin Names""" from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin -PC0 = Pin((1, 64)) +__chip_num = 1 +with open("/sys/class/gpio/gpiochip0/label", "r") as f: + label = f.read().strip() + if label == "300b000.pinctrl": + __chip_num = 0 + + +PC0 = Pin((__chip_num, 64)) SPI0_SCLK = PC0 -PC1 = Pin((1, 65)) -PC2 = Pin((1, 66)) +PC1 = Pin((__chip_num, 65)) +PC2 = Pin((__chip_num, 66)) SPI0_MOSI = PC2 -PC3 = Pin((1, 67)) +PC3 = Pin((__chip_num, 67)) SPI0_CS0 = PC3 -PC4 = Pin((1, 68)) +PC4 = Pin((__chip_num, 68)) SPI0_MISO = PC4 -PC5 = Pin((1, 69)) -PC6 = Pin((1, 70)) -PC7 = Pin((1, 71)) -PC8 = Pin((1, 72)) -PC9 = Pin((1, 73)) -PC10 = Pin((1, 74)) -PC11 = Pin((1, 75)) -PC12 = Pin((1, 76)) -PC13 = Pin((1, 77)) -PC14 = Pin((1, 78)) -PC15 = Pin((1, 79)) +PC5 = Pin((__chip_num, 69)) +PC6 = Pin((__chip_num, 70)) +PC7 = Pin((__chip_num, 71)) +PC8 = Pin((__chip_num, 72)) +PC9 = Pin((__chip_num, 73)) +PC10 = Pin((__chip_num, 74)) +PC11 = Pin((__chip_num, 75)) +PC12 = Pin((__chip_num, 76)) +PC13 = Pin((__chip_num, 77)) +PC14 = Pin((__chip_num, 78)) +PC15 = Pin((__chip_num, 79)) -PF0 = Pin((1, 160)) -PF1 = Pin((1, 161)) -PF2 = Pin((1, 162)) -PF3 = Pin((1, 163)) -PF4 = Pin((1, 164)) -PF5 = Pin((1, 165)) -PF6 = Pin((1, 166)) +PF0 = Pin((__chip_num, 160)) +PF1 = Pin((__chip_num, 161)) +PF2 = Pin((__chip_num, 162)) +PF3 = Pin((__chip_num, 163)) +PF4 = Pin((__chip_num, 164)) +PF5 = Pin((__chip_num, 165)) +PF6 = Pin((__chip_num, 166)) -PG0 = Pin((1, 192)) -PG1 = Pin((1, 193)) -PG2 = Pin((1, 194)) -PG3 = Pin((1, 195)) -PG4 = Pin((1, 196)) -PG5 = Pin((1, 197)) -PG6 = Pin((1, 198)) -PG7 = Pin((1, 199)) -PG8 = Pin((1, 200)) -PG9 = Pin((1, 201)) -PG10 = Pin((1, 202)) -PG11 = Pin((1, 203)) -PG12 = Pin((1, 204)) -PG13 = Pin((1, 205)) -PG14 = Pin((1, 206)) -PG15 = Pin((1, 207)) -PG16 = Pin((1, 208)) -PG17 = Pin((1, 209)) -PG18 = Pin((1, 210)) -PG19 = Pin((1, 211)) +PG0 = Pin((__chip_num, 192)) +PG1 = Pin((__chip_num, 193)) +PG2 = Pin((__chip_num, 194)) +PG3 = Pin((__chip_num, 195)) +PG4 = Pin((__chip_num, 196)) +PG5 = Pin((__chip_num, 197)) +PG6 = Pin((__chip_num, 198)) +PG7 = Pin((__chip_num, 199)) +PG8 = Pin((__chip_num, 200)) +PG9 = Pin((__chip_num, 201)) +PG10 = Pin((__chip_num, 202)) +PG11 = Pin((__chip_num, 203)) +PG12 = Pin((__chip_num, 204)) +PG13 = Pin((__chip_num, 205)) +PG14 = Pin((__chip_num, 206)) +PG15 = Pin((__chip_num, 207)) +PG16 = Pin((__chip_num, 208)) +PG17 = Pin((__chip_num, 209)) +PG18 = Pin((__chip_num, 210)) +PG19 = Pin((__chip_num, 211)) -PH0 = Pin((1, 224)) -PH1 = Pin((1, 225)) -PH2 = Pin((1, 226)) +PH0 = Pin((__chip_num, 224)) +PH1 = Pin((__chip_num, 225)) +PH2 = Pin((__chip_num, 226)) UART5_TX = PH2 -PH3 = Pin((1, 227)) +PH3 = Pin((__chip_num, 227)) UART5_RX = PH3 -PH4 = Pin((1, 228)) +PH4 = Pin((__chip_num, 228)) TWI3_SCL = PH4 -PH5 = Pin((1, 229)) +PH5 = Pin((__chip_num, 229)) UART2_TX = PH5 TWI3_SDA = PH5 SPI1_CS0 = PH5 -PH6 = Pin((1, 230)) +PH6 = Pin((__chip_num, 230)) UART2_RX = PH6 SPI1_SCLK = PH6 -PH7 = Pin((1, 231)) +PH7 = Pin((__chip_num, 231)) SPI1_MOSI = PH7 -PH8 = Pin((1, 232)) +PH8 = Pin((__chip_num, 232)) SPI1_MISO = PH8 -PH9 = Pin((1, 233)) +PH9 = Pin((__chip_num, 233)) SPI1_CS1 = PH9 -PH10 = Pin((1, 234)) +PH10 = Pin((__chip_num, 234)) -PI0 = Pin((1, 256)) -PI1 = Pin((1, 257)) -PI2 = Pin((1, 258)) -PI3 = Pin((1, 259)) -PI4 = Pin((1, 260)) -PI5 = Pin((1, 261)) -PI6 = Pin((1, 262)) -PI7 = Pin((1, 263)) -PI8 = Pin((1, 264)) -PI9 = Pin((1, 265)) -PI10 = Pin((1, 266)) -PI11 = Pin((1, 267)) -PI12 = Pin((1, 268)) -PI13 = Pin((1, 269)) -PI14 = Pin((1, 270)) -PI15 = Pin((1, 271)) -PI16 = Pin((1, 272)) +PI0 = Pin((__chip_num, 256)) +PI1 = Pin((__chip_num, 257)) +PI2 = Pin((__chip_num, 258)) +PI3 = Pin((__chip_num, 259)) +PI4 = Pin((__chip_num, 260)) +PI5 = Pin((__chip_num, 261)) +PI6 = Pin((__chip_num, 262)) +PI7 = Pin((__chip_num, 263)) +PI8 = Pin((__chip_num, 264)) +PI9 = Pin((__chip_num, 265)) +PI10 = Pin((__chip_num, 266)) +PI11 = Pin((__chip_num, 267)) +PI12 = Pin((__chip_num, 268)) +PI13 = Pin((__chip_num, 269)) +PI14 = Pin((__chip_num, 270)) +PI15 = Pin((__chip_num, 271)) +PI16 = Pin((__chip_num, 272)) i2cPorts = ((3, TWI3_SCL, TWI3_SDA),) # ordered as spiId, sckId, mosiId, misoId diff --git a/src/adafruit_blinka/microcontroller/generic_agnostic_board/neopixel.py b/src/adafruit_blinka/microcontroller/generic_agnostic_board/neopixel.py new file mode 100644 index 0000000..30102d1 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_agnostic_board/neopixel.py @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2024 Brent Rubell for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""NeoPixel write mocks for a generic board.""" + + +# pylint: disable=unused-argument +def neopixel_write(gpio, buf): + """Mocks a neopixel_write function""" + # pad output buffer from 3 bpp to 4 bpp + buffer = [] + for i in range(0, len(buf), 3): + buffer.append(0) + buffer.append(buf[i + 2]) + buffer.append(buf[i + 1]) + buffer.append(buf[i]) + + # then, do nothing diff --git a/src/adafruit_blinka/microcontroller/generic_agnostic_board/pin.py b/src/adafruit_blinka/microcontroller/generic_agnostic_board/pin.py index 47d9754..5830c30 100644 --- a/src/adafruit_blinka/microcontroller/generic_agnostic_board/pin.py +++ b/src/adafruit_blinka/microcontroller/generic_agnostic_board/pin.py @@ -204,7 +204,10 @@ A2 = Pin(9) A3 = Pin(10) A4 = Pin(12) +# Special digital pins for pixels D7 = Pin(11) +D8 = Pin(13) +D9 = Pin(14) # I2C pins SDA = Pin() @@ -217,6 +220,9 @@ MOSI = Pin() MISO = Pin() CS = Pin() +spiPorts = ((0, SCK, MOSI, MISO),) + + # UART pins UART_TX = Pin() UART_RX = Pin() diff --git a/src/adafruit_blinka/microcontroller/generic_agnostic_board/spi.py b/src/adafruit_blinka/microcontroller/generic_agnostic_board/spi.py new file mode 100644 index 0000000..a7ca140 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/generic_agnostic_board/spi.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: 2024 Brent Rubell for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""SPI class for a generic agnostic board.""" +# from .rp2040_u2if import rp2040_u2if + + +# pylint: disable=protected-access, no-self-use +class SPI: + """SPI Base Class for a generic agnostic board.""" + + MSB = 0 + + def __init__(self, index, *, baudrate=100000): + self._index = index + self._frequency = baudrate + + # pylint: disable=too-many-arguments,unused-argument + def init( + self, + baudrate=1000000, + polarity=0, + phase=0, + bits=8, + firstbit=MSB, + sck=None, + mosi=None, + miso=None, + ): + """Initialize the Port""" + self._frequency = baudrate + + # pylint: enable=too-many-arguments + + @property + def frequency(self): + """Return the current frequency""" + return self._frequency + + # pylint: disable=unnecessary-pass + def write(self, buf, start=0, end=None): + """Write data from the buffer to SPI""" + pass + + # pylint: disable=unnecessary-pass + def readinto(self, buf, start=0, end=None, write_value=0): + """Read data from SPI and into the buffer""" + pass + + # pylint: disable=too-many-arguments, unnecessary-pass + def write_readinto( + self, buffer_out, buffer_in, out_start=0, out_end=None, in_start=0, in_end=None + ): + """Perform a half-duplex write from buffer_out and then + read data into buffer_in + """ + pass diff --git a/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py b/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py index 534443f..1a8952b 100644 --- a/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py +++ b/src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py @@ -171,6 +171,7 @@ i2cPorts = [ (1, I2C1_SCL, I2C1_SDA), (2, I2C2_SCL_M0, I2C2_SDA_M0), (3, I2C3_SCL_M0, I2C3_SDA_M0), + (4, I2C4_SCL_M0, I2C4_SDA_M0), (5, I2C5_SCL_M0, I2C5_SDA_M0), ] diff --git a/src/adafruit_blinka/microcontroller/rockchip/rv1106/__init__.py b/src/adafruit_blinka/microcontroller/rockchip/rv1106/__init__.py new file mode 100644 index 0000000..e0f7bf7 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/rockchip/rv1106/__init__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT +"""Definition for the Rockchip RV1106 chip""" diff --git a/src/adafruit_blinka/microcontroller/rockchip/rv1106/pin.py b/src/adafruit_blinka/microcontroller/rockchip/rv1106/pin.py new file mode 100644 index 0000000..f632f0b --- /dev/null +++ b/src/adafruit_blinka/microcontroller/rockchip/rv1106/pin.py @@ -0,0 +1,257 @@ +# SPDX-FileCopyrightText: 2022 ShangYun +# +# SPDX-License-Identifier: MIT +"""A Pin class for use with Rockchip RV1106.""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +# GPIOx_yz = x * 32 + y * 8 + z +# y: A -> 0, B -> 1, C -> 2, D -> 3 + +GPIO0_A0 = Pin((0, 0)) +GPIO0_A1 = Pin((0, 1)) +GPIO0_A2 = Pin((0, 2)) +GPIO0_A3 = Pin((0, 3)) +GPIO0_A4 = Pin((0, 4)) +GPIO0_A5 = Pin((0, 5)) +GPIO0_A6 = Pin((0, 6)) +GPIO0_A7 = Pin((0, 7)) +GPIO0_B0 = Pin((0, 8)) +GPIO0_B1 = Pin((0, 9)) +GPIO0_B2 = Pin((0, 10)) +GPIO0_B3 = Pin((0, 11)) +GPIO0_B4 = Pin((0, 12)) +GPIO0_B5 = Pin((0, 13)) +GPIO0_B6 = Pin((0, 14)) +GPIO0_B7 = Pin((0, 15)) +GPIO0_C0 = Pin((0, 16)) +GPIO0_C1 = Pin((0, 17)) +GPIO0_C2 = Pin((0, 18)) +GPIO0_C3 = Pin((0, 19)) +GPIO0_C4 = Pin((0, 20)) +GPIO0_C5 = Pin((0, 21)) +GPIO0_C6 = Pin((0, 22)) +GPIO0_C7 = Pin((0, 23)) +GPIO0_D0 = Pin((0, 24)) +GPIO0_D1 = Pin((0, 25)) +GPIO0_D2 = Pin((0, 26)) +GPIO0_D3 = Pin((0, 27)) +GPIO0_D4 = Pin((0, 28)) +GPIO0_D5 = Pin((0, 29)) +GPIO0_D6 = Pin((0, 30)) +GPIO0_D7 = Pin((0, 31)) +GPIO1_A0 = Pin((1, 0)) +GPIO1_A1 = Pin((1, 1)) +GPIO1_A2 = Pin((1, 2)) +GPIO1_A3 = Pin((1, 3)) +GPIO1_A4 = Pin((1, 4)) +GPIO1_A5 = Pin((1, 5)) +GPIO1_A6 = Pin((1, 6)) +GPIO1_A7 = Pin((1, 7)) +GPIO1_B0 = Pin((1, 8)) +GPIO1_B1 = Pin((1, 9)) +GPIO1_B2 = Pin((1, 10)) +GPIO1_B3 = Pin((1, 11)) +GPIO1_B4 = Pin((1, 12)) +GPIO1_B5 = Pin((1, 13)) +GPIO1_B6 = Pin((1, 14)) +GPIO1_B7 = Pin((1, 15)) +GPIO1_C0 = Pin((1, 16)) +GPIO1_C1 = Pin((1, 17)) +GPIO1_C2 = Pin((1, 18)) +GPIO1_C3 = Pin((1, 19)) +GPIO1_C4 = Pin((1, 20)) +GPIO1_C5 = Pin((1, 21)) +GPIO1_C6 = Pin((1, 22)) +GPIO1_C7 = Pin((1, 23)) +GPIO1_D0 = Pin((1, 24)) +GPIO1_D1 = Pin((1, 25)) +GPIO1_D2 = Pin((1, 26)) +GPIO1_D3 = Pin((1, 27)) +GPIO1_D4 = Pin((1, 28)) +GPIO1_D5 = Pin((1, 29)) +GPIO1_D6 = Pin((1, 30)) +GPIO1_D7 = Pin((1, 31)) +GPIO2_A0 = Pin((2, 0)) +GPIO2_A1 = Pin((2, 1)) +GPIO2_A2 = Pin((2, 2)) +GPIO2_A3 = Pin((2, 3)) +GPIO2_A4 = Pin((2, 4)) +GPIO2_A5 = Pin((2, 5)) +GPIO2_A6 = Pin((2, 6)) +GPIO2_A7 = Pin((2, 7)) +GPIO2_B0 = Pin((2, 8)) +GPIO2_B1 = Pin((2, 9)) +GPIO2_B2 = Pin((2, 10)) +GPIO2_B3 = Pin((2, 11)) +GPIO2_B4 = Pin((2, 12)) +GPIO2_B5 = Pin((2, 13)) +GPIO2_B6 = Pin((2, 14)) +GPIO2_B7 = Pin((2, 15)) +GPIO2_C0 = Pin((2, 16)) +GPIO2_C1 = Pin((2, 17)) +GPIO2_C2 = Pin((2, 18)) +GPIO2_C3 = Pin((2, 19)) +GPIO2_C4 = Pin((2, 20)) +GPIO2_C5 = Pin((2, 21)) +GPIO2_C6 = Pin((2, 22)) +GPIO2_C7 = Pin((2, 23)) +GPIO2_D0 = Pin((2, 24)) +GPIO2_D1 = Pin((2, 25)) +GPIO2_D2 = Pin((2, 26)) +GPIO2_D3 = Pin((2, 27)) +GPIO2_D4 = Pin((2, 28)) +GPIO2_D5 = Pin((2, 29)) +GPIO2_D6 = Pin((2, 30)) +GPIO2_D7 = Pin((2, 31)) +GPIO3_A0 = Pin((3, 0)) +GPIO3_A1 = Pin((3, 1)) +GPIO3_A2 = Pin((3, 2)) +GPIO3_A3 = Pin((3, 3)) +GPIO3_A4 = Pin((3, 4)) +GPIO3_A5 = Pin((3, 5)) +GPIO3_A6 = Pin((3, 6)) +GPIO3_A7 = Pin((3, 7)) +GPIO3_B0 = Pin((3, 8)) +GPIO3_B1 = Pin((3, 9)) +GPIO3_B2 = Pin((3, 10)) +GPIO3_B3 = Pin((3, 11)) +GPIO3_B4 = Pin((3, 12)) +GPIO3_B5 = Pin((3, 13)) +GPIO3_B6 = Pin((3, 14)) +GPIO3_B7 = Pin((3, 15)) +GPIO3_C0 = Pin((3, 16)) +GPIO3_C1 = Pin((3, 17)) +GPIO3_C2 = Pin((3, 18)) +GPIO3_C3 = Pin((3, 19)) +GPIO3_C4 = Pin((3, 20)) +GPIO3_C5 = Pin((3, 21)) +GPIO3_C6 = Pin((3, 22)) +GPIO3_C7 = Pin((3, 23)) +GPIO3_D0 = Pin((3, 24)) +GPIO3_D1 = Pin((3, 25)) +GPIO3_D2 = Pin((3, 26)) +GPIO3_D3 = Pin((3, 27)) +GPIO3_D4 = Pin((3, 28)) +GPIO3_D5 = Pin((3, 29)) +GPIO3_D6 = Pin((3, 30)) +GPIO3_D7 = Pin((3, 31)) +GPIO4_A0 = Pin((4, 0)) +GPIO4_A1 = Pin((4, 1)) +GPIO4_A2 = Pin((4, 2)) +GPIO4_A3 = Pin((4, 3)) +GPIO4_A4 = Pin((4, 4)) +GPIO4_A5 = Pin((4, 5)) +GPIO4_A6 = Pin((4, 6)) +GPIO4_A7 = Pin((4, 7)) +GPIO4_B0 = Pin((4, 8)) +GPIO4_B1 = Pin((4, 9)) +GPIO4_B2 = Pin((4, 10)) +GPIO4_B3 = Pin((4, 11)) +GPIO4_B4 = Pin((4, 12)) +GPIO4_B5 = Pin((4, 13)) +GPIO4_B6 = Pin((4, 14)) +GPIO4_B7 = Pin((4, 15)) +GPIO4_C0 = Pin((4, 16)) +GPIO4_C1 = Pin((4, 17)) +GPIO4_C2 = Pin((4, 18)) +GPIO4_C3 = Pin((4, 19)) +GPIO4_C4 = Pin((4, 20)) +GPIO4_C5 = Pin((4, 21)) +GPIO4_C6 = Pin((4, 22)) +GPIO4_C7 = Pin((4, 23)) +GPIO4_D0 = Pin((4, 24)) +GPIO4_D1 = Pin((4, 25)) +GPIO4_D2 = Pin((4, 26)) +GPIO4_D3 = Pin((4, 27)) +GPIO4_D4 = Pin((4, 28)) +GPIO4_D5 = Pin((4, 29)) +GPIO4_D6 = Pin((4, 30)) +GPIO4_D7 = Pin((4, 31)) + +# UART +UART0_TX_M1 = GPIO2_B1 +UART0_RX_M1 = GPIO2_B0 +UART0_CTS_M1 = GPIO2_A7 +UART0_RTS_M1 = GPIO2_A6 +UART1_TX_M1 = GPIO2_A4 +UART1_RX_M1 = GPIO2_A5 +UART2_TX_M1 = GPIO1_B2 +UART2_RX_M1 = GPIO1_B3 +UART3_TX_M1 = GPIO1_D0 +UART3_RX_M1 = GPIO1_D1 +UART4_TX_M1 = GPIO1_C5 +UART4_RX_M1 = GPIO1_C4 +UART4_CTS_M1 = GPIO1_C7 +UART4_RTS_M1 = GPIO1_C6 +UART5_TX_M0 = GPIO3_A6 +UART5_RX_M0 = GPIO3_A7 + +# ordered as uartId, txId, rxId +uartPorts = ( + (0, UART0_TX_M1, UART0_RX_M1), + (1, UART1_TX_M1, UART2_RX_M1), + (2, UART2_TX_M1, UART2_RX_M1), + (3, UART3_TX_M1, UART3_RX_M1), + (4, UART4_TX_M1, UART4_RX_M1), + (5, UART5_TX_M0, UART5_RX_M0), +) + + +# I2C +I2C0_SCL_M2 = GPIO3_A4 +I2C0_SDA_M2 = GPIO3_A5 +I2C1_SCL_M1 = GPIO2_B0 +I2C1_SDA_M1 = GPIO2_B1 +I2C3_SCL_M0 = GPIO2_A6 +I2C3_SDA_M0 = GPIO2_A7 +I2C3_SCL_M1 = GPIO1_D3 +I2C3_SDA_M1 = GPIO1_D2 +I2C4_SCL_M0 = GPIO2_A1 +I2C4_SDA_M0 = GPIO2_A0 + +# ordered as i2cId, sclId, sdaId +i2cPorts = ( + (0, I2C0_SCL_M2, I2C0_SDA_M2), + (1, I2C1_SCL_M1, I2C1_SDA_M1), + (3, I2C3_SCL_M0, I2C3_SDA_M0), + (3, I2C3_SCL_M1, I2C3_SDA_M1), + (4, I2C4_SCL_M0, I2C4_SDA_M0), +) + +# SPI +SPI0_MISO_M0 = GPIO1_C3 +SPI0_MOSI_M0 = GPIO1_C2 +SPI0_CLK_M0 = GPIO1_C1 +SPI0_CS0_M0 = GPIO1_C0 +SPI0_CS1_M0 = GPIO1_D2 + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ((0, SPI0_CLK_M0, SPI0_MOSI_M0, SPI0_MISO_M0),) + +# PWM +PWM0 = GPIO1_A2 +PWM1 = GPIO0_A4 +PWM5 = GPIO2_B0 +PWM6 = GPIO2_B1 +PWM10 = GPIO1_C6 +PWM11 = GPIO1_C7 + +# SysFS pwm outputs, pwm channel and pin in first tuple +pwmOuts = ( + ((0, 0), PWM0), + ((1, 0), PWM1), + ((5, 0), PWM5), + ((6, 0), PWM6), + ((10, 0), PWM10), + ((11, 0), PWM11), +) + +# ADC IN +ADC_IN0 = 0 +ADC_IN1 = 1 + +# SysFS analog inputs, Ordered as analog analogInId, device, and channel +analogIns = ( + (ADC_IN0, 0, 0), + (ADC_IN1, 0, 1), +) diff --git a/src/analogio.py b/src/analogio.py index f1b9a55..7f702f0 100644 --- a/src/analogio.py +++ b/src/analogio.py @@ -9,7 +9,6 @@ Not supported by all boards. * Author(s): Carter Nelson, Melissa LeBlanc-Williams """ -import os import sys from adafruit_blinka.agnostic import detector @@ -37,6 +36,8 @@ elif detector.chip.RK3568: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn elif detector.chip.RK3566: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn +elif detector.chip.RV1106: + from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn elif detector.chip.IMX6ULL: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn elif detector.chip.STM32MP157: @@ -63,10 +64,7 @@ elif detector.board.itsybitsy_u2if: from adafruit_blinka.microcontroller.rp2040_u2if.analogio import ( AnalogIn_ItsyBitsy as AnalogIn, ) -elif ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" -): +elif detector.board.OS_AGNOSTIC_BOARD: from adafruit_blinka.microcontroller.generic_agnostic_board.analogio import AnalogIn from adafruit_blinka.microcontroller.generic_agnostic_board.analogio import ( AnalogOut, diff --git a/src/board.py b/src/board.py index 25f1dad..d66b000 100644 --- a/src/board.py +++ b/src/board.py @@ -17,7 +17,6 @@ __blinka__ = True import sys -import os import adafruit_platformdetect.constants.boards as ap_board from adafruit_blinka.agnostic import board_id, detector @@ -268,6 +267,9 @@ elif board_id == ap_board.ROCK_PI_3C: elif board_id == ap_board.RADXA_ZERO: from adafruit_blinka.board.radxa.radxazero import * +elif board_id == ap_board.RADXA_ZERO3: + from adafruit_blinka.board.radxa.radxazero3 import * + elif board_id == ap_board.ROCK_PI_S: from adafruit_blinka.board.radxa.rockpis import * @@ -391,12 +393,24 @@ elif board_id == ap_board.LICHEEPI_4A: elif board_id == ap_board.MILKV_DUO: from adafruit_blinka.board.milkv_duo import * -elif ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" -): +elif board_id == ap_board.WALNUT_PI_1B: + from adafruit_blinka.board.walnutpi.walnutpi1b import * + +elif board_id == ap_board.OS_AGNOSTIC_BOARD: from adafruit_blinka.board.generic_agnostic_board import * +elif board_id == ap_board.LUCKFOX_PICO: + from adafruit_blinka.board.luckfox.luckfoxpico import * + +elif board_id == ap_board.LUCKFOX_PICO_MINI: + from adafruit_blinka.board.luckfox.luckfoxpico_mini import * + +elif board_id == ap_board.LUCKFOX_PICO_PLUS: + from adafruit_blinka.board.luckfox.luckfoxpico_plus import * + +elif board_id == ap_board.LUCKFOX_PICO_MAX: + from adafruit_blinka.board.luckfox.luckfoxpico_max import * + elif "sphinx" in sys.modules: pass diff --git a/src/busio.py b/src/busio.py index 70ead88..234bc4f 100644 --- a/src/busio.py +++ b/src/busio.py @@ -9,8 +9,6 @@ See `CircuitPython:busio` in CircuitPython for more details. * Author(s): cefn """ -import os - try: import threading except ImportError: @@ -56,10 +54,7 @@ class I2C(Lockable): self._i2c = _I2C(frequency=frequency) return - if ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" - ): + if detector.board.OS_AGNOSTIC_BOARD: from adafruit_blinka.microcontroller.generic_agnostic_board.i2c import ( I2C as _I2C, ) @@ -363,6 +358,10 @@ class SPI(Lockable): from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI elif detector.board.ftdi_ft2232h: from adafruit_blinka.microcontroller.ftdi_mpsse.mpsse.spi import SPI as _SPI + elif detector.board.OS_AGNOSTIC_BOARD: + from adafruit_blinka.microcontroller.generic_agnostic_board.spi import ( + SPI as _SPI, + ) else: from adafruit_blinka.microcontroller.generic_micropython.spi import ( SPI as _SPI, @@ -442,6 +441,10 @@ class SPI(Lockable): from adafruit_blinka.microcontroller.am65xx.pin import Pin elif detector.board.any_embedded_linux: from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif detector.board.OS_AGNOSTIC_BOARD: + from adafruit_blinka.microcontroller.generic_agnostic_board.spi import ( + SPI as _SPI, + ) else: from adafruit_blinka.microcontroller.generic_micropython.spi import ( SPI as _SPI, diff --git a/src/digitalio.py b/src/digitalio.py index ecdc98e..5ecae90 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -9,7 +9,6 @@ See `CircuitPython:digitalio` in CircuitPython for more details. * Author(s): cefn """ -import os from adafruit_blinka.agnostic import board_id, detector # pylint: disable=ungrouped-imports,wrong-import-position,unused-wildcard-import,wildcard-import @@ -137,10 +136,9 @@ elif detector.chip.RP2040: from machine import Pin elif detector.chip.CV1800B: from adafruit_blinka.microcontroller.cv1800b.pin import Pin -elif ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" -): +elif detector.chip.RV1106: + from adafruit_blinka.microcontroller.rockchip.rv1106.pin import Pin +elif detector.chip.OS_AGNOSTIC: from adafruit_blinka.microcontroller.generic_agnostic_board.pin import Pin from adafruit_blinka import Enum, ContextManaged diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index 394d274..8c63c0d 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -146,14 +146,13 @@ 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.RV1106: + from adafruit_blinka.microcontroller.rockchip.rv1106 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 ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" -): +elif chip_id == ap_chip.OS_AGNOSTIC: from adafruit_blinka.microcontroller.generic_agnostic_board import * elif chip_id is None: print( diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index 0d083a0..8d43365 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -2,7 +2,6 @@ # # SPDX-License-Identifier: MIT """Pins named after their chip name.""" -import os import sys from adafruit_platformdetect.constants import chips as ap_chip, boards as ap_boards from adafruit_blinka.agnostic import board_id, chip_id @@ -96,6 +95,8 @@ elif chip_id == ap_chip.BINHO: from adafruit_blinka.microcontroller.nova.pin import * elif chip_id == ap_chip.LPC4330: from adafruit_blinka.microcontroller.nxp_lpc4330.pin import * +elif chip_id == ap_chip.OS_AGNOSTIC: + from adafruit_blinka.microcontroller.generic_agnostic_board.pin import * elif chip_id == ap_chip.MCP2221: from adafruit_blinka.microcontroller.mcp2221.pin import * elif chip_id == ap_chip.A10: @@ -143,17 +144,14 @@ 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 chip_id == ap_chip.RV1106: + from adafruit_blinka.microcontroller.rockchip.rv1106.pin import * elif "sphinx" in sys.modules: # pylint: disable=unused-import from adafruit_blinka.microcontroller.generic_micropython import Pin elif chip_id == ap_chip.GENERIC_X86: print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.") from adafruit_blinka.microcontroller.generic_micropython import Pin -elif ( - "BLINKA_FORCECHIP" in os.environ - and os.environ["BLINKA_FORCEBOARD"] == "GENERIC_AGNOSTIC_BOARD" -): - from adafruit_blinka.microcontroller.generic_agnostic_board.pin import * elif chip_id is None: print( "WARNING: chip_id == None is not fully supported. Some features may not work." diff --git a/src/neopixel_write.py b/src/neopixel_write.py index 7c4f757..77e5776 100644 --- a/src/neopixel_write.py +++ b/src/neopixel_write.py @@ -19,6 +19,10 @@ if detector.board.any_raspberry_pi: from adafruit_blinka.microcontroller.bcm283x import neopixel as _neopixel elif detector.board.pico_u2if: from adafruit_blinka.microcontroller.rp2040_u2if import neopixel as _neopixel +elif detector.board.OS_AGNOSTIC_BOARD: + from adafruit_blinka.microcontroller.generic_agnostic_board import ( + neopixel as _neopixel, + ) elif ( detector.board.feather_u2if or detector.board.feather_can_u2if diff --git a/src/pwmio.py b/src/pwmio.py index fa7799d..3039c94 100644 --- a/src/pwmio.py +++ b/src/pwmio.py @@ -44,6 +44,8 @@ elif detector.board.pico_u2if: from adafruit_blinka.microcontroller.rp2040_u2if.pwmio import PWMOut elif detector.board.any_jetson_board: from adafruit_blinka.microcontroller.tegra.PWMOut import PWMOut +elif detector.board.any_luckfox_pico_board: + from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut elif ( detector.board.feather_u2if or detector.board.feather_can_u2if diff --git a/tests/test_generic_agnostic_board_analogio.py b/tests/test_generic_agnostic_board_analogio.py index 3658380..aa36907 100644 --- a/tests/test_generic_agnostic_board_analogio.py +++ b/tests/test_generic_agnostic_board_analogio.py @@ -9,7 +9,7 @@ import analogio # Analog Outputs def test_Ax_OUTPUT(): """Test analog output pin functionality.""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_out = analogio.AnalogOut(board.Ax_OUTPUT) # Test boundaries of setting the value and reading it back @@ -76,7 +76,7 @@ sawtooth_wave = [ def test_Ax_INPUT_RAND_INT(): """Test random integer from pin Ax_INPUT_RAND_INT""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_random = analogio.AnalogIn(board.Ax_INPUT_RAND_INT) assert isinstance(pin_random.value, int) @@ -86,7 +86,7 @@ def test_Ax_INPUT_RAND_INT(): def test_Ax_INPUT_FIXED_INT_PI(): """Test fixed integer from pin Ax_INPUT_FIXED_INT_PI""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_pi = analogio.AnalogIn(board.Ax_INPUT_FIXED_INT_PI) assert pin_pi.value == 31415 @@ -96,7 +96,7 @@ def test_Ax_INPUT_FIXED_INT_PI(): def test_Ax_INPUT_WAVE_SINE(): """Test sine wave from pin Ax_INPUT_WAVE_SINE""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_sine_wave = analogio.AnalogIn(board.Ax_INPUT_WAVE_SINE) # Run through the sine wave once @@ -112,7 +112,7 @@ def test_Ax_INPUT_WAVE_SINE(): def test_Ax_INPUT_WAVE_SAW(): """Test sawtooth wave from pin Ax_INPUT_WAVE_SAW""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_saw_wave = analogio.AnalogIn(board.Ax_INPUT_WAVE_SAW) # Run through the sine wave once diff --git a/tests/test_generic_agnostic_board_digitalio.py b/tests/test_generic_agnostic_board_digitalio.py index a9ebb32..47a112f 100644 --- a/tests/test_generic_agnostic_board_digitalio.py +++ b/tests/test_generic_agnostic_board_digitalio.py @@ -10,7 +10,7 @@ import digitalio def test_Dx_OUTPUT_TRUE(): """Test digital output pin functionality.""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_out = digitalio.DigitalInOut(board.Dx_OUTPUT) pin_out.direction = digitalio.Direction.OUTPUT # Test setting the value and reading it back @@ -26,7 +26,7 @@ def test_Dx_OUTPUT_TRUE(): def test_Dx_INPUT_TRUE(): """Test digital input pin Dx_INPUT_TRUE.""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_true = digitalio.DigitalInOut(board.Dx_INPUT_TRUE) pin_true.direction = digitalio.Direction.INPUT assert pin_true.value is True @@ -36,7 +36,7 @@ def test_Dx_INPUT_TRUE(): def test_Dx_INPUT_TRUE_PULL_DOWN(): """Test digital input pin Dx_INPUT_TRUE w/pull down.""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_true = digitalio.DigitalInOut(board.Dx_INPUT_TRUE) pin_true.direction = digitalio.Direction.INPUT assert pin_true.value is True @@ -48,7 +48,7 @@ def test_Dx_INPUT_TRUE_PULL_DOWN(): def test_Dx_INPUT_FALSE_PULL_UP(): """Test digital input pin Dx_INPUT_FALSE w/pull up.""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_false = digitalio.DigitalInOut(board.Dx_INPUT_FALSE) pin_false.direction = digitalio.Direction.INPUT assert pin_false.value is False @@ -60,7 +60,7 @@ def test_Dx_INPUT_FALSE_PULL_UP(): def test_Dx_INPUT_FALSE(): """Test digital input pin Dx_INPUT_FALSE""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_false = digitalio.DigitalInOut(board.Dx_INPUT_FALSE) pin_false.direction = digitalio.Direction.INPUT assert pin_false.value is False @@ -70,7 +70,7 @@ def test_Dx_INPUT_FALSE(): def test_Dx_INPUT_TOGGLE(): """Test digital input pin Dx_INPUT_TOGGLE""" - assert board.board_id == "GENERIC_AGNOSTIC_BOARD" + assert board.board_id == "OS_AGNOSTIC_BOARD" pin_toggle = digitalio.DigitalInOut(board.Dx_INPUT_TOGGLE) pin_toggle.direction = digitalio.Direction.INPUT assert pin_toggle.value is True