]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Merge branch 'main' of github.com:janvolck/Adafruit_Blinka
authorJan Volckaert <janvolck@gmail.com>
Wed, 19 Apr 2023 18:33:56 +0000 (20:33 +0200)
committerJan Volckaert <janvolck@gmail.com>
Wed, 19 Apr 2023 18:33:56 +0000 (20:33 +0200)
28 files changed:
.github/workflows/build.yml
.github/workflows/release.yml
src/adafruit_blinka/board/beagleboard/beaglebone_blue.py [new file with mode: 0644]
src/adafruit_blinka/board/coral_dev_board.py
src/adafruit_blinka/board/feather_can_u2if.py [new file with mode: 0644]
src/adafruit_blinka/board/feather_epd_u2if.py [new file with mode: 0644]
src/adafruit_blinka/board/feather_rfm_u2if.py [new file with mode: 0644]
src/adafruit_blinka/board/generic_linux_pc.py [new file with mode: 0644]
src/adafruit_blinka/board/librecomputer/aml_s905x_cc_v1.py
src/adafruit_blinka/board/librecomputer/roc_rk3328_cc.py [new file with mode: 0644]
src/adafruit_blinka/board/nvidia/jetson_orin_nx.py [new file with mode: 0644]
src/adafruit_blinka/board/orangepi/orangepi4.py
src/adafruit_blinka/board/radxa/rockpi3a.py [new file with mode: 0644]
src/adafruit_blinka/board/radxa/rockpi4.py
src/adafruit_blinka/microcontroller/amlogic/s905x/pin.py
src/adafruit_blinka/microcontroller/rockchip/rk3399/pin.py
src/adafruit_blinka/microcontroller/rockchip/rk3568/pin.py
src/adafruit_blinka/microcontroller/rp2040/pin.py
src/adafruit_blinka/microcontroller/rp2040_u2if/i2c.py
src/adafruit_blinka/microcontroller/rp2040_u2if/spi.py
src/adafruit_blinka/microcontroller/tegra/t234/pin.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

index 5fe5064b350be4a29d17ff01796f6c310d7fddb0..ea5eab574717f0571002f74b20631e2d7eb86ea3 100644 (file)
@@ -15,20 +15,20 @@ jobs:
       run: echo "$GITHUB_CONTEXT"
     - name: Translate Repo Name For Build Tools filename_prefix
       id: repo-name
-      run: echo ::set-output name=repo-name::Adafruit-Blinka
+      run: echo "repo-name=Adafruit-Blinka" >> $GITHUB_OUTPUT
     - name: Set up Python 3.7
-      uses: actions/setup-python@v1
+      uses: actions/setup-python@v4
       with:
         python-version: 3.7
     - name: Versions
       run: |
         python3 --version
     - name: Checkout Current Repo
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
       with:
         submodules: true
     - name: Checkout tools repo
-      uses: actions/checkout@v2
+      uses: actions/checkout@v3
       with:
         repository: adafruit/actions-ci-circuitpython-libs
         path: actions-ci
index f8399b734d73a7fbc4a6001ab52bd666d7c1f2ba..a0eb8f585040b9b917433fced8551f7ff75c3f37 100644 (file)
@@ -11,14 +11,14 @@ jobs:
   upload-pypi:
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v1
+    - uses: actions/checkout@v3
     - name: Check For setup.py
       id: need-pypi
       run: |
-        echo ::set-output name=setup-py::$( find . -wholename './setup.py' )
+        echo "setup-py=$( find . -wholename './setup.py' )" >> $GITHUB_OUTPUT
     - name: Set up Python
       if: contains(steps.need-pypi.outputs.setup-py, 'setup.py')
-      uses: actions/setup-python@v1
+      uses: actions/setup-python@v4
       with:
         python-version: '3.x'
     - name: Install dependencies
diff --git a/src/adafruit_blinka/board/beagleboard/beaglebone_blue.py b/src/adafruit_blinka/board/beagleboard/beaglebone_blue.py
new file mode 100644 (file)
index 0000000..47f038f
--- /dev/null
@@ -0,0 +1,14 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Beaglebone Blue."""
+from adafruit_blinka.microcontroller.am335x import pin
+
+# common to all beagles
+LED_USR0 = pin.USR0
+LED_USR1 = pin.USR1
+LED_USR2 = pin.USR2
+LED_USR3 = pin.USR3
+
+SDA = pin.I2C1_SDA
+SCL = pin.I2C1_SCL
index 04fcbde95ac8fab817a56129e3fb8c08470d3af5..943ef364b0ddb00d620c11f3936104ac3337c30b 100644 (file)
@@ -8,6 +8,9 @@ from adafruit_blinka.microcontroller.nxp_imx8m import pin
 # Board name = RPI name [= alias] = pin name
 I2C2_SDA = D2 = SDA = pin.I2C2_SDA
 I2C2_SCL = D3 = SCL = pin.I2C2_SCL
+I2C3_SDA = SDA3 = pin.I2C3_SDA
+I2C3_SCL = SCL3 = pin.I2C3_SCL
+
 
 PWM1 = D12 = pin.PWM1
 PWM2 = D13 = pin.PWM2
diff --git a/src/adafruit_blinka/board/feather_can_u2if.py b/src/adafruit_blinka/board/feather_can_u2if.py
new file mode 100644 (file)
index 0000000..d53d290
--- /dev/null
@@ -0,0 +1,64 @@
+# SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""
+Pin definitions for the Feather RP2040 CAN with u2if firmware.
+
+Adafruit CircuitPython 6.2.0 on 2021-04-05; Adafruit Feather RP2040 CAN with rp2040
+>>> import board
+>>> board.
+A0              A1              A2              A3
+D0              D1              D10             D11
+D12             D13             D24             D25
+D4              D5              D6              D9
+I2C             SDA             SCL             LED
+NEOPIXEL        SPI             SCK             MISO
+MOSI            RX              TX              UART
+CAN_STANDBY     CAN_TX0_RTS     CAN_RESET       CAN_CS
+CAN_INTERRUPT   CAN_RX0_BF      NEOPIXEL_POWER
+"""
+
+from adafruit_blinka.microcontroller.rp2040_u2if import pin
+
+D0 = RX = pin.GP1
+D1 = TX = pin.GP0
+D4 = pin.GP4
+D5 = pin.GP5
+D6 = pin.GP6
+D9 = pin.GP9
+D10 = pin.GP10
+D11 = pin.GP11
+D12 = pin.GP12
+D13 = pin.GP13
+D24 = pin.GP24
+D25 = pin.GP25
+
+A0 = pin.GP26
+A1 = pin.GP27
+A2 = pin.GP28
+A3 = pin.GP29
+
+LED = pin.GP13
+
+BUTTON = BOOT = pin.GP7
+
+NEOPIXEL = pin.GP21
+NEOPIXEL_POWER = pin.GP20
+
+SDA = pin.GP2
+SCL = pin.GP3
+
+SCLK = SCK = pin.GP14
+MOSI = pin.GP15
+MISO = pin.GP8
+
+CAN_STANDBY = pin.GP16
+CAN_TX0_RTS = pin.GP17
+CAN_RESET = pin.GP18
+CAN_CS = pin.GP19
+CAN_INTERRUPT = pin.GP22
+CAN_RX0_BF = pin.GP23
+
+# access u2if via pin instance to open for specifc VID/PID
+# pylint:disable = protected-access
+pin.GP0._u2if_open_hid(0x239A, 0x8130)
diff --git a/src/adafruit_blinka/board/feather_epd_u2if.py b/src/adafruit_blinka/board/feather_epd_u2if.py
new file mode 100644 (file)
index 0000000..f31096f
--- /dev/null
@@ -0,0 +1,64 @@
+# SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""
+Pin definitions for the Feather RP2040 ThinkInk with u2if firmware.
+
+Adafruit CircuitPython 6.2.0 on 2021-04-05; Adafruit Feather RP2040 ThinkInk with rp2040
+>>> import board
+>>> board.
+A0              A1              A2              A3
+D0              D1              D10             D11
+D12             D13             D24             D25
+D4              D5              D6              D9
+I2C             LED             MISO            MOSI
+NEOPIXEL        EPD_BUSY        SCK             SCL
+SDA             SPI             TX              UART
+EPD_CS          EPD_RESET       EPD_DC          EPD_MOSI
+EPD_SCK
+"""
+
+from adafruit_blinka.microcontroller.rp2040_u2if import pin
+
+D0 = pin.GP1
+D1 = pin.GP0
+D4 = pin.GP4
+D5 = pin.GP5
+D6 = pin.GP6
+D9 = pin.GP9
+D10 = pin.GP10
+D11 = pin.GP11
+D12 = pin.GP12
+D13 = pin.GP13
+D24 = pin.GP24
+D25 = pin.GP25
+
+A0 = pin.GP26
+A1 = pin.GP27
+A2 = pin.GP28
+A3 = pin.GP29
+
+LED = pin.GP13
+
+BUTTON = BOOT = pin.GP7
+
+NEOPIXEL = pin.GP21
+NEOPIXEL_POWER = pin.GP20
+
+SDA = pin.GP2
+SCL = pin.GP3
+
+SCLK = SCK = pin.GP14
+MOSI = pin.GP15
+MISO = pin.GP8
+
+EPD_BUSY = pin.GP16
+EPD_RESET = pin.GP17
+EPD_DC = pin.GP18
+EPD_CS = pin.GP19
+EPD_SCK = pin.GP22
+EPD_MOSI = pin.GP23
+
+# access u2if via pin instance to open for specifc VID/PID
+# pylint:disable = protected-access
+pin.GP0._u2if_open_hid(0x239A, 0x812C)
diff --git a/src/adafruit_blinka/board/feather_rfm_u2if.py b/src/adafruit_blinka/board/feather_rfm_u2if.py
new file mode 100644 (file)
index 0000000..13b37af
--- /dev/null
@@ -0,0 +1,65 @@
+# SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""
+Pin definitions for the Feather RP2040 RFM with u2if firmware.
+
+Adafruit CircuitPython 6.2.0 on 2021-04-05; Adafruit Feather RP2040 RFM with rp2040
+>>> import board
+>>> board.
+A0              A1              A2              A3
+D0              D1              D10             D11
+D12             D13             D24             D25
+D4              D5              D6              D9
+I2C             SDA             SCL             LED
+NEOPIXEL        SPI             SCK             MISO
+MOSI            RX              TX              UART
+RFM_CS          RFM_RST         RFM_IO5         RFM_IO3
+RFM_IO4         RFM_IO0         RFM_IO1         RFM_IO2
+"""
+
+from adafruit_blinka.microcontroller.rp2040_u2if import pin
+
+D0 = RX = pin.GP1
+D1 = TX = pin.GP0
+D4 = pin.GP4
+D5 = pin.GP5
+D6 = pin.GP6
+D9 = pin.GP9
+D10 = pin.GP10
+D11 = pin.GP11
+D12 = pin.GP12
+D13 = pin.GP13
+D24 = pin.GP24
+D25 = pin.GP25
+
+A0 = pin.GP26
+A1 = pin.GP27
+A2 = pin.GP28
+A3 = pin.GP29
+
+LED = pin.GP13
+
+BUTTON = BOOT = pin.GP7
+
+NEOPIXEL = pin.GP4
+
+SDA = pin.GP2
+SCL = pin.GP3
+
+SCLK = SCK = pin.GP14
+MOSI = pin.GP15
+MISO = pin.GP8
+
+RFM_CS = pin.GP16
+RFM_RST = pin.GP17
+RFM_IO5 = pin.GP18
+RFM_IO3 = pin.GP19
+RFM_IO4 = pin.GP20
+RFM_IO0 = pin.GP21
+RFM_IO1 = pin.GP22
+RFM_IO2 = pin.GP23
+
+# access u2if via pin instance to open for specifc VID/PID
+# pylint:disable = protected-access
+pin.GP0._u2if_open_hid(0x239A, 0x812E)
diff --git a/src/adafruit_blinka/board/generic_linux_pc.py b/src/adafruit_blinka/board/generic_linux_pc.py
new file mode 100644 (file)
index 0000000..bb3e737
--- /dev/null
@@ -0,0 +1,4 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""(Empty) definitions for the GENERIC_LINUX_PC."""
index e84812cc7a7282a1e75d4e90c93af5c959bf884b..0ce256371e419bba40753eb97dba90350aa6a405 100644 (file)
@@ -12,10 +12,10 @@ for it in pin.i2cPorts:
 SCL = pin.i2cPorts[0][1]
 SDA = pin.i2cPorts[0][2]
 
-SCLK = pin.SPI1_SCLK
-MOSI = pin.SPI1_MOSI
-MISO = pin.SPI1_MISO
-SPI_CS = pin.SPI1_CS
+SCLK = pin.SPI0_SCLK
+MOSI = pin.SPI0_MOSI
+MISO = pin.SPI0_MISO
+SPI_CS = pin.SPI0_CS
 
 # Pinout reference:
 # https://github.com/libre-computer-project/libretech-wiring-tool/blob/master/libre-computer/aml-s905x-cc/gpio.map
diff --git a/src/adafruit_blinka/board/librecomputer/roc_rk3328_cc.py b/src/adafruit_blinka/board/librecomputer/roc_rk3328_cc.py
new file mode 100644 (file)
index 0000000..4501457
--- /dev/null
@@ -0,0 +1,51 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the ROC-RK3328-CC."""
+
+from adafruit_blinka.microcontroller.rockchip.rk3328 import pin
+
+for it in pin.i2cPorts:
+    globals()["SCL" + str(it[0])] = it[1]
+    globals()["SDA" + str(it[0])] = it[2]
+
+SCL = pin.i2cPorts[0][1]
+SDA = pin.i2cPorts[0][2]
+
+SCLK = pin.SPI0_SCLK
+MOSI = pin.SPI0_MOSI
+MISO = pin.SPI0_MISO
+SPI_CS = pin.SPI0_CS
+
+# Pinout reference:
+# https://github.com/libre-computer-project/libretech-wiring-tool/blob/master/libre-computer/roc-rk3328-cc/gpio.map
+
+# 40 pin Header J1
+P3 = pin.GPIO2_D1
+P5 = pin.GPIO2_D0
+P7 = pin.GPIO1_D4
+P8 = pin.GPIO3_A4
+P10 = pin.GPIO3_A6
+P11 = pin.GPIO2_C4
+P12 = pin.GPIO2_A6
+P13 = pin.GPIO2_C5
+P15 = pin.GPIO2_C6
+P16 = pin.GPIO3_A7
+P18 = pin.GPIO3_A5
+P19 = pin.GPIO3_A1
+P21 = pin.GPIO3_A2
+P22 = pin.GPIO0_A2
+P23 = pin.GPIO3_A0
+P24 = pin.GPIO3_B0
+P26 = pin.GPIO2_B4
+P27 = pin.GPIO2_A4
+P28 = pin.GPIO2_A5
+P29 = pin.GPIO2_C3
+P31 = pin.GPIO2_C7
+P32 = pin.GPIO0_A0
+P33 = pin.GPIO2_C0
+P35 = pin.GPIO2_C2
+P36 = pin.GPIO2_A0
+P37 = pin.GPIO2_B7
+P38 = pin.GPIO2_A1
+P40 = pin.GPIO0_D3
diff --git a/src/adafruit_blinka/board/nvidia/jetson_orin_nx.py b/src/adafruit_blinka/board/nvidia/jetson_orin_nx.py
new file mode 100644 (file)
index 0000000..1aa27d3
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-FileCopyrightText: 2022 Linh Hoang for NVIDIA
+# SPDX-FileCopyrightText: 2022 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for Jetson AGX Orin."""
+
+from adafruit_blinka.microcontroller.tegra.t234 import pin
+
+SDA = pin.SDA
+SCL = pin.SCL
+SDA_1 = pin.SDA_1
+SCL_1 = pin.SCL_1
+
+D4 = pin.AC06
+D5 = pin.Q05
+D6 = pin.Q06
+D7 = pin.Z07
+D8 = pin.Z06
+D9 = pin.Z04
+D10 = pin.Z05
+D11 = pin.Z03
+D12 = pin.G06
+D13 = pin.H00
+D16 = pin.R05
+D17 = pin.R04
+D18 = pin.H07
+D19 = pin.I02
+D20 = pin.I01
+D21 = pin.I00
+D22 = pin.N01
+D23 = pin.Y04
+D24 = pin.Y03
+D25 = pin.Y01
+D26 = pin.Y02
+D27 = pin.Y00
+
+CE1 = D7
+CE0 = D8
+MISO = D9
+MOSI = D10
+SCLK = D11
+SCK = D11
index e767a74a57630d0af452623b1f2fea977dc47480..6c772c20b1d4dd2157ea5bf3ff7ab083e6c7f020 100644 (file)
@@ -5,61 +5,77 @@
 
 from adafruit_blinka.microcontroller.rockchip.rk3399 import pin
 
-D3 = pin.GPIO2_A7  # /I2C7_SDA/PIN 71/
-D5 = pin.GPIO2_B0  # /I2C7_SCL/PIN 72/
-D7 = pin.GPIO2_B3  # /SPI2_CLK/PIN 75/
-D8 = pin.GPIO4_C4  # /UART2_TXD/PIN 148/
-D10 = pin.GPIO4_C3  # /UART2_RXD/PIN 147/
-D11 = pin.GPIO4_C2  # /PWM0/PIN 146/
-D13 = pin.GPIO4_C6  # /PWM1/PIN 150/
-D15 = pin.GPIO4_C5  # /SPDIF_TX/PIN 149/
-D16 = pin.GPIO4_D2  # /PIN 154/
-D17 = pin.GPIO4_D4  # /PIN 156/
-D19 = pin.GPIO1_B0  # /UART4_TXD/SPI1_TXD/PIN 40/
-D21 = pin.GPIO1_A7  # /UART4_RXD/SPI1_RXD/PIN 39/
-D22 = pin.GPIO4_D5  # /PIN 157/
-D23 = pin.GPIO1_B1  # /SPI1_CLK/PIN 41/
-D24 = pin.GPIO1_B2  # /SPI1_CS/PIN 42/
-D27 = pin.GPIO2_A0  # /I2C2_SDA/PIN 64/
-D28 = pin.GPIO2_A1  # /I2C2_SCL/PIN 65/
-D29 = pin.GPIO2_B2  # /I2C6_SCL/SPI2_TXD/PIN 74/
-D31 = pin.GPIO2_B1  # /I2C6_SDA/SPI2_RXD/PIN 73/
-D32 = pin.GPIO3_C0  # /SPDIF_TX/UART3_CTS/PIN 112/
-D33 = pin.GPIO2_B4  # /SPI2_CS/PIN 76/
-D35 = pin.GPIO4_A5  # /I2S1_LRCK_TX/PIN 133/
-D36 = pin.GPIO4_A4  # /I2S1_LRCK_RX/PIN 132/
-D37 = pin.GPIO4_D6  # /PIN 158/
-D38 = pin.GPIO4_A6  # /I2S1_SDI/PIN 134/
-D40 = pin.GPIO4_A7  # /I2S1_SDO/PIN 135/
+# D pin number is ordered by physical pin sequence
+# Reference: https://service.robots.org.nz/wiki/Wiki.jsp?page=OrangePi
 
-SDA2 = D27
-SCL2 = D28
+# +------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+
+# | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
+# +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
+# |      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      |
+# |   64 |   0 | I2C2_SDA |   IN | 1 |  3 || 4  |   |      | 5V       |     |      |
+# |   65 |   1 | I2C2_SCL |   IN | 1 |  5 || 6  |   |      | GND      |     |      |
+# |  150 |   2 |     PWM1 | ALT2 | 1 |  7 || 8  | 1 | ALT2 | I2C3_SCL | 3   | 145  |
+# |      |     |      GND |      |   |  9 || 10 | 1 | ALT2 | I2C3_SDA | 4   | 144  |
+# |   33 |   5 | GPIO1_A1 |   IN | 0 | 11 || 12 | 1 | IN   | GPIO1_C2 | 6   | 50   |
+# |   35 |   7 | GPIO1_A3 |  OUT | 1 | 13 || 14 |   |      | GND      |     |      |
+# |   92 |   8 | GPIO2_D4 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO1_C6 | 9   | 54   |
+# |      |     |     3.3V |      |   | 17 || 18 | 0 | IN   | GPIO1_C7 | 10  | 55   |
+# |   40 |  11 | SPI1_TXD | ALT3 | 0 | 19 || 20 |   |      | GND      |     |      |
+# |   39 |  12 | SPI1_RXD | ALT3 | 1 | 21 || 22 | 0 | IN   | GPIO1_D0 | 13  | 56   |
+# |   41 |  14 | SPI1_CLK | ALT3 | 1 | 23 || 24 | 1 | ALT3 | SPI1_CS  | 15  | 42   |
+# |      |     |      GND |      |   | 25 || 26 | 0 | IN   | GPIO4_C5 | 16  | 149  |
+# |   64 |  17 | I2C2_SDA |   IN | 1 | 27 || 28 | 1 | IN   | I2C2_SCL | 18  | 65   |
+# |      |     |  I2S0_RX |      |   | 29 || 30 |   |      | GND      |     |      |
+# |      |     |  I2S0_TX |      |   | 31 || 32 |   |      | I2S_CLK  |     |      |
+# |      |     | I2S0_SCK |      |   | 33 || 34 |   |      | GND      |     |      |
+# |      |     | I2S0_SI0 |      |   | 35 || 36 |   |      | I2S0_SO0 |     |      |
+# |      |     | I2S0_SI1 |      |   | 37 || 38 |   |      | I2S0_SI2 |     |      |
+# |      |     |      GND |      |   | 39 || 40 |   |      | I2S0_SI3 |     |      |
+# +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
+# | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
+# +------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+
 
-SDA6 = D31
-SCL6 = D29
+# D1 = VCC3V3_SYS
+# D2 = VCC5V0_SYS
+D3 = pin.I2C2_SDA  # I2C2_SDA_3V0
+# D4 = VCC5V0_SYS
+D5 = pin.I2C2_SCL  # I2C2_SCL_3V0
+# D6 = GND
+D7 = pin.GPIO4_C6  # GPIO4_C6/PWM1
+D8 = pin.I2C3_SCL  # I2C3_SCL
+# D9 = GND
+D10 = pin.I2C3_SDA  # I2C3_SDA
+D11 = pin.GPIO1_A1  # GPIO1_A1
+D12 = pin.GPIO1_C2  # GPIO1_C2
+D13 = pin.GPIO1_A3  # GPIO1_A3
+# D14 = GND
+D15 = pin.GPIO2_D4  # GPIO2_D4
+D16 = pin.GPIO1_C6  # GPIO1_C6
+# D17 = GND
+D18 = pin.GPIO1_C7  # GPIO1_C7
+D19 = pin.GPIO1_B0  # UART4_TX / SPI1_TXD
+# D20 = GND
+D21 = pin.GPIO1_A7  # UART4_RX / SPI1_RXD
+D22 = pin.GPIO1_D0  # GPIO1_D0
+D23 = pin.GPIO1_B1  # SPI1_CLK
+D24 = pin.GPIO1_B2  # SPI1_CSn0
+# D25 = GND
+D26 = pin.GPIO4_C5  # GPIO4_C5
+D27 = pin.I2C2_SDA  # I2C2_SDA
+D28 = pin.I2C2_SCL  # I2C2_SCL
+# D29 = pin.I2S0_LRCK_RX
+# D30 = GND
+# D31 = pin.I2S0_LRCK_TX
+# D32 = pin.I2S_CLK
+# D33 = pin.I2S0_SCLK
+# D34 = GND
+# D35 = pin.I2S0_SDI0
+# D36 = pin.I2S0_SDO0
+# D37 = pin.I2S0_SDI1SDO_3
+# D38 = pin.I2S0_SDI2SDO2
+# D39 = GND
+# D40 = pin.I2S0_SDI3SDO1
 
-SDA7 = D3
-SCL7 = D5
-
-SDA = SDA2
-SCL = SCL2
-
-SCLK = D7
-MOSI = D29
-MISO = D31
-CS = D33
-SCK = SCLK
-
-UART2_TX = D8
-UART2_RX = D10
-
-UART4_TX = D19
-UART4_RX = D21
-
-UART_TX = UART2_TX
-UART_RX = UART2_RX
-
-PWM0 = pin.PWM0
-PWM1 = pin.PWM1
-
-ADC_IN0 = pin.ADC_IN0
+# UART
+UART4_TX = pin.GPIO1_B0
+UART4_RX = pin.GPIO1_A7
diff --git a/src/adafruit_blinka/board/radxa/rockpi3a.py b/src/adafruit_blinka/board/radxa/rockpi3a.py
new file mode 100644 (file)
index 0000000..ee6bbba
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-FileCopyrightText: 2023 Enrico Trevisanello
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Radxa Rock Pi 3A."""
+
+from adafruit_blinka.microcontroller.rockchip.rk3568 import pin
+
+# 3A IO pins
+
+D1_A0 = pin.GPIO1_A0  # /I2C3_SDA_M0/PIN 32
+D1_A1 = pin.GPIO1_A1  # /I2C3_SCL_M0/PIN 33
+D0_B5 = pin.GPIO0_B5  # /I2C2_SCL_M0/PIN 13
+D0_D1 = pin.GPIO0_D1  # /UART2_TX_M0/PIN 25
+D0_D0 = pin.GPIO0_D0  # /UART2_RX_M0/PIN 24
+D3_C4 = pin.GPIO3_C4  # /PWM14_M0/PIN 116
+D3_A3 = pin.GPIO3_A3  # /PIN 99
+D3_C5 = pin.GPIO3_C5  # /PWM14_M0/PIN 117
+D3_C0 = pin.GPIO3_C0  # /PWM14_M0/PIN 16
+D0_B2 = pin.GPIO0_B2  # /UART4_TX_M1/PIN 106
+D4_C3 = pin.GPIO4_C3  # /PWM15_IR_M1/PIN 147
+D4_C5 = pin.GPIO4_C5  # /PWM12_M1/PIN 149
+D0_C1 = pin.GPIO0_C1  # /PWM2_M0/ PIN 17
+D4_C2 = pin.GPIO4_C2  # /PWM14_M1/PIN 146
+D4_C6 = pin.GPIO4_C6  # /PWM13_M1/PIN 150
+D4_D1 = pin.GPIO4_D1  # /SPI3_CS1_M1/PIN 153
+D0_B6 = pin.GPIO0_B6  # /I2C2_SDA_M0/PIN 14
+D0_B5 = pin.GPIO0_B5  # /I2C2_SCL_M0/PIN 13
+D2_D7 = pin.GPIO2_D7  # /UART8_TX_M1/PIN 95
+D3_A0 = pin.GPIO3_A0  # /SPI2_CLK_M1/PIN 96
+D3_C2 = pin.GPIO3_C2  # /UART5_TX_M1/PIN 114
+D3_C3 = pin.GPIO3_C3  # /UART5_RX_M1/PIN 115
+D3_A4 = pin.GPIO3_A4  # /PIN 100
+D3_A2 = pin.GPIO3_A2  # /PIN 98
+D3_C0 = pin.GPIO3_C0  # /PWM13_M0/PIN 112
+D3_A6 = pin.GPIO3_A6  # /PIN 102
+D3_A5 = pin.GPIO3_A5  # /PIN 101
+
+# 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
+TXD = D0_D1
+RXD = D0_D0
+TX = D0_D1
+RX = D0_D0
index 9c046701d7c768a60b23abc6a2ef7615304d10c9..c8070edf9c8f5e8e1605957661010ea62f8aea54 100644 (file)
@@ -1,36 +1,38 @@
 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+# See https://wiki.radxa.com/Rock4/hardware/gpio for pinout
 #
 # SPDX-License-Identifier: MIT
-"""Pin definitions for the Rock Pi 4."""
+"""Pin definitions for the Rock Pi 4 Family."""
 
 from adafruit_blinka.microcontroller.rockchip.rk3399 import pin
 
-D3 = pin.GPIO2_A7  # /I2C7_SDA/PIN 71/
-D5 = pin.GPIO2_B0  # /I2C7_SCL/PIN 72/
-D7 = pin.GPIO2_B3  # /SPI2_CLK/PIN 75/
-D8 = pin.GPIO4_C4  # /UART2_TXD/PIN 148/
-D10 = pin.GPIO4_C3  # /UART2_RXD/PIN 147/
-D11 = pin.GPIO4_C2  # /PWM0/PIN 146/
-D13 = pin.GPIO4_C6  # /PWM1/PIN 150/
-D15 = pin.GPIO4_C5  # /SPDIF_TX/PIN 149/
-D16 = pin.GPIO4_D2  # /PIN 154/
-D17 = pin.GPIO4_D4  # /PIN 156/
-D19 = pin.GPIO1_B0  # /UART4_TXD/SPI1_TXD/PIN 40/
-D21 = pin.GPIO1_A7  # /UART4_RXD/SPI1_RXD/PIN 39/
-D22 = pin.GPIO4_D5  # /PIN 157/
-D23 = pin.GPIO1_B1  # /SPI1_CLK/PIN 41/
-D24 = pin.GPIO1_B2  # /SPI1_CS/PIN 42/
-D27 = pin.GPIO2_A0  # /I2C2_SDA/PIN 64/
-D28 = pin.GPIO2_A1  # /I2C2_SCL/PIN 65/
-D29 = pin.GPIO2_B2  # /I2C6_SCL/SPI2_TXD/PIN 74/
-D31 = pin.GPIO2_B1  # /I2C6_SDA/SPI2_RXD/PIN 73/
-D32 = pin.GPIO3_C0  # /SPDIF_TX/UART3_CTS/PIN 112/
-D33 = pin.GPIO2_B4  # /SPI2_CS/PIN 76/
-D35 = pin.GPIO4_A5  # /I2S1_LRCK_TX/PIN 133/
-D36 = pin.GPIO4_A4  # /I2S1_LRCK_RX/PIN 132/
-D37 = pin.GPIO4_D6  # /PIN 158/
-D38 = pin.GPIO4_A6  # /I2S1_SDI/PIN 134/
-D40 = pin.GPIO4_A7  # /I2S1_SDO/PIN 135/
+D3 = pin.GPIO2_A7
+D5 = pin.GPIO2_B0
+D7 = pin.GPIO2_B3
+D8 = pin.GPIO4_C4
+D10 = pin.GPIO4_C3
+D11 = pin.GPIO4_C2
+D12 = pin.GPIO4_A3
+D13 = pin.GPIO4_C6
+D15 = pin.GPIO4_C5
+D16 = pin.GPIO4_D2
+D18 = pin.GPIO4_D4
+D19 = pin.GPIO1_B0
+D21 = pin.GPIO1_A7
+D22 = pin.GPIO4_D5
+D23 = pin.GPIO1_B1
+D24 = pin.GPIO1_B2
+D27 = pin.GPIO2_A0
+D28 = pin.GPIO2_A1
+D29 = pin.GPIO2_B2
+D31 = pin.GPIO2_B1
+D32 = pin.GPIO3_C0
+D33 = pin.GPIO2_B4
+D35 = pin.GPIO4_A5
+D36 = pin.GPIO4_A4
+D37 = pin.GPIO4_D6
+D38 = pin.GPIO4_A6
+D40 = pin.GPIO4_A7
 
 SDA2 = D27
 SCL2 = D28
@@ -44,10 +46,10 @@ SCL7 = D5
 SDA = SDA2
 SCL = SCL2
 
-SCLK = D7
-MOSI = D29
-MISO = D31
-CS = D33
+SCLK = D23
+MOSI = D19
+MISO = D21
+CS = D24
 SCK = SCLK
 
 UART2_TX = D8
index a2ff1947281797486bf1027204afe3a22c38d02e..ea6b51e57b8c4eb325590cd1132af22b726c0b0b 100644 (file)
@@ -53,6 +53,10 @@ UART1_TX = GPIO287
 UART2_RX = GPIO292
 UART2_TX = GPIO291
 
+SPI0_SCLK = GPIO290
+SPI0_MISO = GPIO288
+SPI0_MOSI = GPIO287
+SPI0_CS = GPIO289
 SPI1_SCLK = GPIO223
 SPI1_MISO = GPIO288
 SPI1_MOSI = GPIO287
@@ -63,7 +67,7 @@ i2cPorts = (
     (1, I2C1_SCK, I2C1_SDA),
 )
 
-spiPorts = (0, SPI1_SCLK, SPI1_MOSI, SPI1_MISO)
+spiPorts = ((0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO), (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO))
 
 uartPorts = (
     (1, UART1_TX, UART1_RX),
index 3dd75e7ce236cdc6767c788aed5a153604851171..f9912ae2dc6a632f17b9a841266507676da1c5e0 100644 (file)
@@ -1,7 +1,8 @@
 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+# See https://wiki.radxa.com/Rock4/hardware/gpio
 #
 # SPDX-License-Identifier: MIT
-"""A Pin class for use with Rockchip RK3399."""
+"""A Pin class for use with Rockchip RK3399 and RK3399_T."""
 
 from adafruit_blinka.microcontroller.generic_linux.sysfs_pin import Pin
 
@@ -60,16 +61,18 @@ I2C8_SCL = GPIO1_C5
 # SPI
 SPI1_CS = GPIO1_B2
 SPI1_SCLK = GPIO1_B1
-SPI1_MISO = GPIO1_B0
-SPI1_MOSI = GPIO1_A7
+SPI1_MISO = GPIO1_A7
+SPI1_MOSI = GPIO1_B0
 SPI2_CS = GPIO2_B4
-SPI2_SCLK = GPIO2_A1
+SPI2_SCLK = GPIO2_B3
 SPI2_MISO = GPIO2_B1
 SPI2_MOSI = GPIO2_B2
 
 # UART
-UART0_TX = GPIO4_C4
-UART0_RX = GPIO4_C3
+UART2_TX = GPIO4_C4
+UART2_RX = GPIO4_C3
+UART4_TX = GPIO1_B0
+UART4_RX = GPIO1_A7
 
 # PWM
 PWM0 = GPIO4_C2
@@ -77,18 +80,21 @@ PWM1 = GPIO4_C6
 
 # ordered as i2cId, SCL, SDA
 i2cPorts = (
-    (0, I2C2_SCL, I2C2_SDA),
-    (1, I2C6_SCL, I2C6_SDA),
+    (2, I2C2_SCL, I2C2_SDA),
+    (6, I2C6_SCL, I2C6_SDA),
     (7, I2C7_SCL, I2C7_SDA),
 )
 
 # ordered as spiId, sckId, mosiId, misoId
-spiPorts = ((1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),)
+spiPorts = (
+    (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),
+    (2, SPI2_SCLK, SPI2_MOSI, SPI2_MISO),
+)
 
 # SysFS pwm outputs, pwm channel and pin in first tuple
 pwmOuts = (
     ((0, 0), PWM0),
-    ((1, 0), PWM1),
+    ((0, 0), PWM1),
 )
 
 # SysFS analog inputs, Ordered as analog analogInId, device, and channel
index e458b150c65c53c566b5f1afe47bb66e36cb6021..0aa3a55921a3582c65491d6f90c51fd0b3a4f951 100644 (file)
@@ -1,4 +1,4 @@
-# SPDX-FileCopyrightText: 2023 mmontol
+# SPDX-FileCopyrightText: 2023 mmontol, etrevis
 #
 # SPDX-License-Identifier: MIT
 
 
 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
+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
 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
+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
 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))
@@ -33,43 +130,105 @@ 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
+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))
 
 # I2C
 I2C3_SCL_M0 = GPIO1_A1
 I2C3_SDA_M0 = GPIO1_A0
 I2C5_SCL_M0 = GPIO3_B3
 I2C5_SDA_M0 = GPIO3_B4
+I2C2_SCL_M0 = GPIO0_B5
+I2C2_SDA_M0 = GPIO0_B6
+I2C1_SCL = GPIO0_B3
+I2C1_SDA = GPIO0_B4
 
 # SPI
 SPI3_CS0_M1 = GPIO4_C6
+SPI3_CS1_M1 = GPIO4_D1
 SPI3_CLK_M1 = GPIO4_C2
 SPI3_MISO_M1 = GPIO4_C5
 SPI3_MOSI_M1 = GPIO4_C3
 
 # UART
+UART0_RX = GPIO0_C0
+UART0_TX = GPIO0_C1
+UART2_TX_M0 = GPIO0_D1
+UART2_RX_M0 = GPIO0_D0
+UART3_TX_M0 = GPIO1_A1
+UART3_RX_M0 = GPIO1_A0
 UART3_TX_M1 = GPIO3_B7
 UART3_RX_M1 = GPIO3_C0
+UART7_TX_M1 = GPIO3_C4
+UART7_RX_M1 = GPIO3_C5
 
 # PWM
+PWM1_M0 = GPIO0_C0
+PWM1_M1 = GPIO0_B5
+PWM2_M0 = GPIO0_C1
+PWM2_M1 = GPIO0_B6
 PWM8_M0 = GPIO3_B1
 PWM9_M0 = GPIO3_B2
+PWM12_M1 = GPIO4_C5
+PWM13_M1 = GPIO4_C6
 PWM10_M0 = GPIO3_B5
 PWM14_M0 = GPIO3_C4
+PWM14_M1 = GPIO4_C2
+PWM15_IR_M1 = GPIO3_C5
 
 # ordered as i2cId, SCL, SDA
 i2cPorts = (
     (3, I2C3_SCL_M0, I2C3_SDA_M0),
     (5, I2C5_SCL_M0, I2C5_SDA_M0),
+    (2, I2C2_SCL_M0, I2C2_SDA_M0),
+    (1, I2C1_SCL, I2C1_SDA),
 )
 
 # ordered as spiId, sckId, mosiId, misoId
@@ -77,9 +236,13 @@ spiPorts = ((3, SPI3_CLK_M1, SPI3_MOSI_M1, SPI3_MISO_M1),)
 
 # SysFS pwm outputs, pwm channel and pin in first tuple
 pwmOuts = (
+    ((1, 0), PWM1_M0),
+    ((1, 0), PWM2_M0),
     ((1, 0), PWM8_M0),
     ((1, 0), PWM9_M0),
     ((1, 0), PWM10_M0),
+    ((1, 0), PWM12_M1),
+    ((1, 0), PWM13_M1),
     ((1, 0), PWM14_M0),
 )
 
index 7d29960e8bfc613a77721fb3ff53e9b48d403ac4..68fe5d10a40ca975c9f9f6e86c757a65221e24ce 100755 (executable)
@@ -41,30 +41,39 @@ spiPorts = (
     (0, GP2, GP3, GP0),
     (0, GP2, GP3, GP4),
     (0, GP2, GP3, GP16),
+    (0, GP2, GP3, GP20),
     (0, GP2, GP7, GP0),
     (0, GP2, GP7, GP4),
     (0, GP2, GP7, GP16),
+    (0, GP2, GP7, GP20),
     (0, GP2, GP19, GP0),
     (0, GP2, GP19, GP4),
     (0, GP2, GP19, GP16),
+    (0, GP2, GP19, GP20),
     (0, GP6, GP3, GP0),
     (0, GP6, GP3, GP4),
     (0, GP6, GP3, GP16),
+    (0, GP6, GP3, GP20),
     (0, GP6, GP7, GP0),
     (0, GP6, GP7, GP4),
     (0, GP6, GP7, GP16),
+    (0, GP6, GP7, GP20),
     (0, GP6, GP19, GP0),
     (0, GP6, GP19, GP4),
     (0, GP6, GP19, GP16),
+    (0, GP6, GP19, GP20),
     (0, GP18, GP3, GP0),
     (0, GP18, GP3, GP4),
     (0, GP18, GP3, GP16),
+    (0, GP18, GP3, GP20),
     (0, GP18, GP7, GP0),
     (0, GP18, GP7, GP4),
     (0, GP18, GP7, GP16),
+    (0, GP18, GP7, GP20),
     (0, GP18, GP19, GP0),
     (0, GP18, GP19, GP4),
     (0, GP18, GP19, GP16),
+    (0, GP18, GP19, GP20),
     (1, GP10, GP11, GP8),
     (1, GP10, GP11, GP12),
     (1, GP10, GP15, GP8),
index f4a1a61fd697d5442ad4d82fed306da9656789da..1715b4a026a9443f19f12b3ee646881b188a2f28 100644 (file)
@@ -88,6 +88,48 @@ class I2C_Feather(I2C):
         super().__init__(index, frequency=frequency)
 
 
+class I2C_Feather_CAN(I2C):
+    """I2C Class for Feather EPD u2if"""
+
+    def __init__(self, scl, sda, *, frequency=100000):
+        index = None
+        if scl.id == 3 and sda.id == 2:
+            index = 1
+        if index is None:
+            raise ValueError("I2C not found on specified pins.")
+        self._index = index
+
+        super().__init__(index, frequency=frequency)
+
+
+class I2C_Feather_EPD(I2C):
+    """I2C Class for Feather EPD u2if"""
+
+    def __init__(self, scl, sda, *, frequency=100000):
+        index = None
+        if scl.id == 3 and sda.id == 2:
+            index = 1
+        if index is None:
+            raise ValueError("I2C not found on specified pins.")
+        self._index = index
+
+        super().__init__(index, frequency=frequency)
+
+
+class I2C_Feather_RFM(I2C):
+    """I2C Class for Feather EPD u2if"""
+
+    def __init__(self, scl, sda, *, frequency=100000):
+        index = None
+        if scl.id == 3 and sda.id == 2:
+            index = 1
+        if index is None:
+            raise ValueError("I2C not found on specified pins.")
+        self._index = index
+
+        super().__init__(index, frequency=frequency)
+
+
 class I2C_QTPY(I2C):
     """I2C Class for QT Py 2if"""
 
index 435baba2f6e2680df06afa601b3b093220e58051..7491c0343d03e63328b153d67d449c5c5c98950c 100644 (file)
@@ -4,6 +4,7 @@
 """SPI Classes for RP2040s with u2if firmware"""
 from .rp2040_u2if import rp2040_u2if
 
+
 # pylint: disable=protected-access, no-self-use
 class SPI:
     """SPI Base Class for RP2040 u2if"""
@@ -93,6 +94,44 @@ class SPI_Feather(SPI):
         super().__init__(index, baudrate=baudrate)
 
 
+class SPI_Feather_CAN(SPI):
+    """SPI Class for Feather EPD u2if"""
+
+    def __init__(self, clock, *, baudrate=100000):
+        index = None
+        if clock.id == 14:
+            index = 1
+        if index is None:
+            raise ValueError("No SPI port on specified pin.")
+        super().__init__(index, baudrate=baudrate)
+
+
+class SPI_Feather_EPD(SPI):
+    """SPI Class for Feather EPD u2if"""
+
+    def __init__(self, clock, *, baudrate=100000):
+        index = None
+        if clock.id == 22:
+            index = 0
+        if clock.id == 14:
+            index = 1
+        if index is None:
+            raise ValueError("No SPI port on specified pin.")
+        super().__init__(index, baudrate=baudrate)
+
+
+class SPI_Feather_RFM(SPI):
+    """SPI Class for Feather EPD u2if"""
+
+    def __init__(self, clock, *, baudrate=100000):
+        index = None
+        if clock.id == 14:
+            index = 1
+        if index is None:
+            raise ValueError("No SPI port on specified pin.")
+        super().__init__(index, baudrate=baudrate)
+
+
 class SPI_QTPY(SPI):
     """SPI Class for QT Py u2if"""
 
index f2f33327d83222a52a2e67402cea7905b0f5fe5b..26a80723cfd5cea2d70a2abc27efa5353af5782b 100644 (file)
@@ -110,6 +110,18 @@ AA03 = Pin("GP20_CAN1_DIN")
 I01 = Pin("GP124")
 I00 = Pin("GP123")
 
+
+AC06 = Pin("GP167")
+Y00 = Pin("SPI1_SCK")
+N01 = Pin("GP88_PWM1")
+Y04 = Pin("GP40_SPI3_CS1_N")
+Y03 = Pin("GP39_SPI3_CS0_N")
+Y01 = Pin("GP37_SPI3_MISO")
+Q05 = Pin("GP65")
+G06 = Pin("GP113_PWM7")
+Y02 = Pin("GP38_SPI3_MOSI")
+
+
 i2cPorts = (
     (7, SCL, SDA),
     (1, SCL_1, SDA_1),
index aabef898af0e1d005bad7220ea1e8fcd0d8d1bce..89a2a73609c1410643ab49babec6cdd02e440164 100644 (file)
@@ -61,6 +61,9 @@ elif board_id == ap_board.BEAGLEBONE:
 elif board_id == ap_board.BEAGLEBONE_BLACK:
     from adafruit_blinka.board.beagleboard.beaglebone_black import *
 
+elif board_id == ap_board.BEAGLEBONE_BLUE:
+    from adafruit_blinka.board.beagleboard.beaglebone_blue import *
+
 elif board_id == ap_board.BEAGLEBONE_GREEN:
     from adafruit_blinka.board.beagleboard.beaglebone_black import *
 
@@ -163,6 +166,9 @@ elif board_id == ap_board.JETSON_NX:
 elif board_id == ap_board.JETSON_AGX_ORIN:
     from adafruit_blinka.board.nvidia.jetson_orin import *
 
+elif board_id in (ap_board.JETSON_ORIN_NX, ap_board.JETSON_ORIN_NANO):
+    from adafruit_blinka.board.nvidia.jetson_orin_nx import *
+
 elif board_id == ap_board.CLARA_AGX_XAVIER:
     from adafruit_blinka.board.nvidia.clara_agx_xavier import *
 
@@ -229,6 +235,9 @@ elif board_id == ap_board.ONION_OMEGA2:
 elif board_id == ap_board.RADXA_CM3:
     from adafruit_blinka.board.radxa.radxacm3 import *
 
+elif board_id == ap_board.ROCK_PI_3A:
+    from adafruit_blinka.board.radxa.rockpi3a import *
+
 elif board_id == ap_board.RADXA_ZERO:
     from adafruit_blinka.board.radxa.radxazero import *
 
@@ -238,6 +247,9 @@ elif board_id == ap_board.ROCK_PI_S:
 elif board_id == ap_board.ROCK_PI_4:
     from adafruit_blinka.board.radxa.rockpi4 import *
 
+elif board_id == ap_board.ROCK_PI_4_C_PLUS:
+    from adafruit_blinka.board.radxa.rockpi4 import *
+
 elif board_id == ap_board.ROCK_PI_5:
     from adafruit_blinka.board.radxa.rock5 import *
 
@@ -289,6 +301,15 @@ elif board_id == ap_board.PICO_U2IF:
 elif board_id == ap_board.FEATHER_U2IF:
     from adafruit_blinka.board.feather_u2if import *
 
+elif board_id == ap_board.FEATHER_CAN_U2IF:
+    from adafruit_blinka.board.feather_can_u2if import *
+
+elif board_id == ap_board.FEATHER_EPD_U2IF:
+    from adafruit_blinka.board.feather_epd_u2if import *
+
+elif board_id == ap_board.FEATHER_RFM_U2IF:
+    from adafruit_blinka.board.feather_rfm_u2if import *
+
 elif board_id == ap_board.QTPY_U2IF:
     from adafruit_blinka.board.qtpy_u2if import *
 
@@ -307,9 +328,18 @@ elif board_id == ap_board.LICHEE_RV:
 elif board_id == ap_board.SIEMENS_SIMATIC_IOT2050_ADV:
     from adafruit_blinka.board.siemens.siemens_iot2050 import *
 
+elif board_id == ap_board.SIEMENS_SIMATIC_IOT2050_BASIC:
+    from adafruit_blinka.board.siemens.siemens_iot2050 import *
+
 elif board_id == ap_board.AML_S905X_CC:
     from adafruit_blinka.board.librecomputer.aml_s905x_cc_v1 import *
 
+elif board_id == ap_board.ROC_RK3328_CC:
+    from adafruit_blinka.board.librecomputer.roc_rk3328_cc import *
+
+elif board_id == ap_board.GENERIC_LINUX_PC:
+    from adafruit_blinka.board.generic_linux_pc import *
+
 elif "sphinx" in sys.modules:
     pass
 
@@ -319,15 +349,16 @@ elif board_id is None:
 
     package = str(pkg_resources.get_distribution("adafruit_platformdetect")).split()
     raise NotImplementedError(
-        "{1} version {2} was unable to identify the board and/or microcontroller running "
-        "the {0} platform. Please be sure you have the latest packages running: 'pip3 install "
-        "--upgrade adafruit-blinka adafruit-platformdetect'".format(
-            platform.system(), package[0], package[1]
-        )
+        f"""
+        {package[0]} version {package[1]} was unable to identify the board and/or
+        microcontroller running the {platform.system()} platform. Please be sure you
+        have the latest packages running:
+        'pip3 install --upgrade adafruit-blinka adafruit-platformdetect'
+        """
     )
 
 else:
-    raise NotImplementedError("Board not supported {}".format(board_id))
+    raise NotImplementedError(f"Board not supported {board_id}.")
 
 if "SCL" in locals() and "SDA" in locals():
 
index 75b08cba3222746b610e79ee53aa630064c608e1..ed5c88c2016e324ecd2805714ee23f400dada482 100644 (file)
@@ -67,6 +67,27 @@ class I2C(Lockable):
                 I2C_Feather as _I2C,
             )
 
+            self._i2c = _I2C(scl, sda, frequency=frequency)
+            return
+        if detector.board.feather_can_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.i2c import (
+                I2C_Feather_CAN as _I2C,
+            )
+
+            self._i2c = _I2C(scl, sda, frequency=frequency)
+            return
+        if detector.board.feather_epd_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.i2c import (
+                I2C_Feather_EPD as _I2C,
+            )
+
+            self._i2c = _I2C(scl, sda, frequency=frequency)
+            return
+        if detector.board.feather_rfm_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.i2c import (
+                I2C_Feather_RFM as _I2C,
+            )
+
             self._i2c = _I2C(scl, sda, frequency=frequency)
             return
         if detector.board.qtpy_u2if:
@@ -245,6 +266,30 @@ class SPI(Lockable):
                 SPI_Feather as _SPI,
             )
 
+            self._spi = _SPI(clock)  # this is really all that's needed
+            self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
+            return
+        if detector.board.feather_can_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_CAN as _SPI,
+            )
+
+            self._spi = _SPI(clock)  # this is really all that's needed
+            self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
+            return
+        if detector.board.feather_epd_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_EPD as _SPI,
+            )
+
+            self._spi = _SPI(clock)  # this is really all that's needed
+            self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
+            return
+        if detector.board.feather_rfm_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_RFM as _SPI,
+            )
+
             self._spi = _SPI(clock)  # this is really all that's needed
             self._pins = (clock, clock, clock)  # will determine MOSI/MISO from clock
             return
@@ -332,6 +377,18 @@ class SPI(Lockable):
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
                 SPI_Feather as _SPI,
             )
+        elif detector.board.feather_can_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_CAN as _SPI,
+            )
+        elif detector.board.feather_epd_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_EPD as _SPI,
+            )
+        elif detector.board.feather_rfm_u2if:
+            from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
+                SPI_Feather_RFM as _SPI,
+            )
         elif detector.board.itsybitsy_u2if:
             from adafruit_blinka.microcontroller.rp2040_u2if.spi import (
                 SPI_ItsyBitsy as _SPI,
index fc75b8e6329de6aa7f7d2f03e23d17feff0ffb8b..7ce324002821ca87bfb0dfce8eec6d2f82e3f311 100644 (file)
@@ -69,6 +69,8 @@ elif detector.chip.RK3308:
     from adafruit_blinka.microcontroller.rockchip.rk3308.pin import Pin
 elif detector.chip.RK3399:
     from adafruit_blinka.microcontroller.rockchip.rk3399.pin import Pin
+elif detector.chip.RK3399_T:
+    from adafruit_blinka.microcontroller.rockchip.rk3399.pin import Pin
 elif detector.chip.RK3588:
     from adafruit_blinka.microcontroller.rockchip.rk3588.pin import Pin
 elif detector.chip.RK3328:
index da730155ac230b0f3b13129abe07fd3422f2d8b8..715c080a021369363775041f74288ae3d6634b94 100644 (file)
@@ -90,6 +90,8 @@ elif chip_id == ap_chip.RK3308:
     from adafruit_blinka.microcontroller.rockchip.rk3308 import *
 elif chip_id == ap_chip.RK3399:
     from adafruit_blinka.microcontroller.rockchip.rk3399 import *
+elif chip_id == ap_chip.RK3399_T:
+    from adafruit_blinka.microcontroller.rockchip.rk3399 import *
 elif chip_id == ap_chip.RK3588:
     from adafruit_blinka.microcontroller.rockchip.rk3588 import *
 elif chip_id == ap_chip.RK3328:
index f717da27ce2bfbc2706914df3272a32048a61b0b..ebdac6bbbb48317528a505e1a52b789c41ff8633 100644 (file)
@@ -93,6 +93,8 @@ elif chip_id == ap_chip.RK3308:
     from adafruit_blinka.microcontroller.rockchip.rk3308.pin import *
 elif chip_id == ap_chip.RK3399:
     from adafruit_blinka.microcontroller.rockchip.rk3399.pin import *
+elif chip_id == ap_chip.RK3399_T:
+    from adafruit_blinka.microcontroller.rockchip.rk3399.pin import *
 elif chip_id == ap_chip.RK3588:
     from adafruit_blinka.microcontroller.rockchip.rk3588.pin import *
 elif chip_id == ap_chip.RK3328:
index 2bc5f81790f31aab357a7bf031f35bfa0f464fea..997dd0dec5e75dafbe7dec5cac56f77817274067 100644 (file)
@@ -10,7 +10,7 @@ Currently supported on Raspberry Pi only.
 
 * Author(s): ladyada
 """
-
+# pylint: disable=too-many-boolean-expressions
 import sys
 
 from adafruit_blinka.agnostic import detector
@@ -21,6 +21,9 @@ elif detector.board.pico_u2if:
     from adafruit_blinka.microcontroller.rp2040_u2if import neopixel as _neopixel
 elif (
     detector.board.feather_u2if
+    or detector.board.feather_can_u2if
+    or detector.board.feather_epd_u2if
+    or detector.board.feather_rfm_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
     or detector.board.macropad_u2if
index ccf44209647be4c9e2987951a4fefc8d897cdc56..57854df42b736a6fa61ae6a9a9c954ad3791dbee 100644 (file)
@@ -9,7 +9,7 @@ Not supported by all boards.
 
 * Author(s): Melissa LeBlanc-Williams
 """
-
+# pylint: disable=too-many-boolean-expressions
 import sys
 
 from adafruit_blinka.agnostic import detector
@@ -38,6 +38,9 @@ elif detector.board.pico_u2if:
     from adafruit_blinka.microcontroller.rp2040_u2if.pwmio import PWMOut
 elif (
     detector.board.feather_u2if
+    or detector.board.feather_can_u2if
+    or detector.board.feather_epd_u2if
+    or detector.board.feather_rfm_u2if
     or detector.board.qtpy_u2if
     or detector.board.itsybitsy_u2if
     or detector.board.macropad_u2if