]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge pull request #835 from hajimef/develop 8.41.0
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 7 Jun 2024 23:04:36 +0000 (16:04 -0700)
committerGitHub <noreply@github.com>
Fri, 7 Jun 2024 23:04:36 +0000 (16:04 -0700)
Added support for Radxa Rock 5C

25 files changed:
src/adafruit_blinka/board/generic_agnostic_board.py
src/adafruit_blinka/board/luckfox/luckfoxpico.py [new file with mode: 0644]
src/adafruit_blinka/board/luckfox/luckfoxpico_max.py [new file with mode: 0644]
src/adafruit_blinka/board/luckfox/luckfoxpico_mini.py [new file with mode: 0644]
src/adafruit_blinka/board/luckfox/luckfoxpico_plus.py [new file with mode: 0644]
src/adafruit_blinka/board/radxa/radxazero3.py [new file with mode: 0644]
src/adafruit_blinka/board/walnutpi/__init__.py [new file with mode: 0644]
src/adafruit_blinka/board/walnutpi/walnutpi1b.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/h616/pin.py
src/adafruit_blinka/microcontroller/generic_agnostic_board/neopixel.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/generic_agnostic_board/pin.py
src/adafruit_blinka/microcontroller/generic_agnostic_board/spi.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/rockchip/rk3566/pin.py
src/adafruit_blinka/microcontroller/rockchip/rv1106/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/rockchip/rv1106/pin.py [new file with mode: 0644]
src/analogio.py
src/board.py
src/busio.py
src/digitalio.py
src/microcontroller/__init__.py
src/microcontroller/pin.py
src/neopixel_write.py
src/pwmio.py
tests/test_generic_agnostic_board_analogio.py
tests/test_generic_agnostic_board_digitalio.py

index 925e7baf936d1055db6dd86e6a42ca2a124b892d..7cdfa802e010c71bf2a8bd4c0e018f87167ed705 100644 (file)
@@ -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 (file)
index 0000000..f81ca61
--- /dev/null
@@ -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 (file)
index 0000000..c0896fc
--- /dev/null
@@ -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 (file)
index 0000000..a2d3276
--- /dev/null
@@ -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 (file)
index 0000000..34b5675
--- /dev/null
@@ -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 (file)
index 0000000..46a44d6
--- /dev/null
@@ -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 (file)
index 0000000..a9c3af8
--- /dev/null
@@ -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 (file)
index 0000000..0297b27
--- /dev/null
@@ -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
index 3ee5a9c9e9bc42de05eb39c5121aaca0c1ffd2fa..b8d910363f74a4d23fb93e4da88213dab3989ba5 100644 (file)
 """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 (file)
index 0000000..30102d1
--- /dev/null
@@ -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
index 47d97545661e59b0c05c2a09905b46565f99a956..5830c30ef601bf17f6f52b6ef3892c0fdf082b99 100644 (file)
@@ -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 (file)
index 0000000..a7ca140
--- /dev/null
@@ -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
index 534443fb7bae9df3016cde68addae24da8482365..1a8952b8b2938da1d58a21a5785c6b1769e82a9d 100644 (file)
@@ -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 (file)
index 0000000..e0f7bf7
--- /dev/null
@@ -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 (file)
index 0000000..f632f0b
--- /dev/null
@@ -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),
+)
index f1b9a55986fe9370e144230abd11ee4430fa360e..7f702f0b858a459572044ed874351545089e718e 100644 (file)
@@ -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,
index 25f1dadc172fd0a00b46d8a567bb9e08fba6c500..d66b00047f28b472d4eac3c208c7a6a0549b359d 100644 (file)
@@ -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
 
index 70ead8822875364f40ebb40bdf109db15ad05b25..234bc4fd156aefb14459e3aefd91313d9f7cb8f8 100644 (file)
@@ -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,
index ecdc98e9003d22f6ab1d3468d94562c8aac5e9df..5ecae90047d58dc11b0263d05f29d885d6f755b7 100644 (file)
@@ -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
index 394d2746a3cd859ffee705ec82685bdfc41bcd02..8c63c0dfd29a1bbea562c1a327db38b2949883b5 100644 (file)
@@ -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(
index 0d083a0ad3a9b6b557e745f953c1abb7e4babdc5..8d43365cfa4399edb866de40fbf6e301d988d31f 100644 (file)
@@ -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."
index 7c4f757a0fdb3d68481e5618f7d87055f5d707dd..77e577674498522bc1396ac44da3c7863185ca17 100644 (file)
@@ -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
index fa7799d8362a8f1b058e66d60cbff6d51c3b2c02..3039c94003c8ae40fbb9ce9375257ce35b2dc745 100644 (file)
@@ -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
index 3658380d6a269a501783ed758d25a2e08d4e6c5e..aa36907dc5bed7fb3d5baf682a3e29f8df87aaa7 100644 (file)
@@ -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
index a9ebb322d67f5cd1b07ac1cebe64965eabd8d559..47a112fef7e68d5fc1967fda19925cf26ae07a07 100644 (file)
@@ -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