]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
support allwinner h618 chip and bananapi m4berry and m4zero board
authorAugust <2819763+Dangku@users.noreply.github.com>
Sat, 31 Aug 2024 15:43:17 +0000 (23:43 +0800)
committerAugust <2819763+Dangku@users.noreply.github.com>
Sat, 31 Aug 2024 15:43:17 +0000 (23:43 +0800)
src/adafruit_blinka/board/bananapi/bpim4berry.py [new file with mode: 0644]
src/adafruit_blinka/board/bananapi/bpim4zero.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/h618/__init__.py [new file with mode: 0644]
src/adafruit_blinka/microcontroller/allwinner/h618/pin.py [new file with mode: 0644]
src/board.py
src/digitalio.py
src/microcontroller/__init__.py
src/microcontroller/pin.py

diff --git a/src/adafruit_blinka/board/bananapi/bpim4berry.py b/src/adafruit_blinka/board/bananapi/bpim4berry.py
new file mode 100644 (file)
index 0000000..cfed3a3
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Banana Pi M4 Berry."""
+
+from adafruit_blinka.microcontroller.allwinner.h618 import pin
+
+# I2C
+I2C3_SCL = pin.TWI3_SCL
+I2C3_SDA = pin.TWI3_SDA
+I2C4_SCL = pin.TWI4_SCL
+I2C4_SDA = pin.TWI4_SDA
+
+# Default I2C
+SCL = I2C4_SCL
+SDA = I2C4_SDA
+
+# UART
+UART1_TX = pin.UART1_TX
+UART1_RX = pin.UART1_RX
+UART5_TX = pin.UART5_TX
+UART5_RX = pin.UART5_RX
+
+# Default UART
+TX = UART1_TX
+RX = UART1_RX
+TXD = UART1_TX
+RXD = UART1_RX
+
+# SPI
+SPI1_MOSI = pin.SPI1_MOSI
+SPI1_MISO = pin.SPI1_MISO
+SPI1_SCLK = pin.SPI1_SCLK
+SPI1_CS0 = pin.SPI1_CS0
+
+# Default SPI
+MOSI = SPI1_MOSI
+MISO = SPI1_MISO
+SCLK = SPI1_SCLK
+CS = SPI1_CS0
+
+# Pinout reference:
+# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Berry#BPI-M4_Berry_40-pin_header
+PG16 = pin.PG16
+PG15 = pin.PG15
+PG19 = pin.PG19
+PG6 = pin.PG6
+PG7 = pin.PG7
+PH2 = pin.PH2
+PG11 = pin.PG11
+PH3 = pin.PH3
+PG2 = pin.PG2
+PG8 = pin.PG8
+PG9 = pin.PG9
+PH7 = pin.PH7
+PH8 = pin.PH8
+PG1 = pin.PG1
+PH6 = pin.PH6
+PH5 = pin.PH5
+PH9 = pin.PH9
+PG18 = pin.PG18
+PG17 = pin.PG17
+PG3 = pin.PG3
+PG4 = pin.PG4
+PG0 = pin.PG0
+PG5 = pin.PG5
+PG12 = pin.PG12
+PH4 = pin.PH4
+PG10 = pin.PG10
+PG14 = pin.PG14
+PG13 = pin.PG13
diff --git a/src/adafruit_blinka/board/bananapi/bpim4zero.py b/src/adafruit_blinka/board/bananapi/bpim4zero.py
new file mode 100644 (file)
index 0000000..bd2e553
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Pin definitions for the Banana Pi M4 Zero."""
+
+from adafruit_blinka.microcontroller.allwinner.h618 import pin
+
+# I2C
+I2C0_SCL = pin.TWI0_SCL
+I2C0_SDA = pin.TWI0_SDA
+I2C1_SCL = pin.TWI1_SCL
+I2C1_SDA = pin.TWI1_SDA
+
+# Default I2C
+SCL = I2C0_SCL
+SDA = I2C0_SDA
+
+# UART
+UART4_TX = pin.UART4_TX
+UART4_RX = pin.UART4_RX
+UART5_TX = pin.UART5_TX
+UART5_RX = pin.UART5_RX
+
+# Default UART
+TX = UART4_TX
+RX = UART4_RX
+TXD = UART4_TX
+RXD = UART4_RX
+
+# SPI
+SPI1_MOSI = pin.SPI1_MOSI
+SPI1_MISO = pin.SPI1_MISO
+SPI1_SCLK = pin.SPI1_SCLK
+SPI1_CS0 = pin.SPI1_CS0
+
+# Default SPI
+MOSI = SPI1_MOSI
+MISO = SPI1_MISO
+SCLK = SPI1_SCLK
+CS = SPI1_CS0
+
+# Pinout reference:
+# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Zero#BPI-M4_Zero_40-pin_header
+D3 = pin.PI6
+D5 = pin.PI5
+D7 = pin.PI12
+D8 = pin.PI13
+D10 = pin.PI14
+D11 = pin.PH2
+D12 = pin.PI1
+D13 = pin.PH3
+D15 = pin.PI11
+D16 = pin.PI15
+D18 = pin.PI16
+D19 = pin.PH7
+D21 = pin.PH8
+D22 = pin.PC2
+D23 = pin.PH6
+D24 = pin.PH5
+D26 = pin.PH9
+D27 = pin.PI8
+D28 = pin.PI7
+D29 = pin.PI10
+D31 = pin.PI9
+D32 = pin.PH4
+D33 = pin.PH10
+D35 = pin.PI2
+D36 = pin.PC7
+D37 = pin.PI0
+D38 = pin.PI4
+D40 = pin.PI3
diff --git a/src/adafruit_blinka/microcontroller/allwinner/h618/__init__.py b/src/adafruit_blinka/microcontroller/allwinner/h618/__init__.py
new file mode 100644 (file)
index 0000000..bb4a91e
--- /dev/null
@@ -0,0 +1,4 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Definition for the AllWinner H618 chip"""
diff --git a/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py b/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py
new file mode 100644 (file)
index 0000000..7eabaa2
--- /dev/null
@@ -0,0 +1,135 @@
+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Allwinner H618 Pin Names"""
+from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
+
+# gpiochip select
+__chip_num = 0
+with open("/sys/class/gpio/gpiochip0/label", "r") as f:
+    label = f.read().strip()
+    if label == "300b000.pinctrl":
+        __chip_num = 1
+
+PC0 = Pin((__chip_num, 64))
+SPI0_SCLK = PC0
+PC1 = Pin((__chip_num, 65))
+PC2 = Pin((__chip_num, 66))
+SPI0_MOSI = PC2
+PC3 = Pin((__chip_num, 67))
+SPI0_CS0 = PC3
+PC4 = Pin((__chip_num, 68))
+SPI0_MISO = PC4
+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((__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((__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))
+UART1_TX = PG6
+PG7 = Pin((__chip_num, 199))
+UART1_RX = PG7
+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))
+TWI4_SCL = PG15
+PG16 = Pin((__chip_num, 208))
+TWI4_SDA = PG16
+PG17 = Pin((__chip_num, 209))
+TWI3_SCL = PG17
+PG18 = Pin((__chip_num, 210))
+TWI3_SDA = PG18
+PG19 = Pin((__chip_num, 211))
+
+PH0 = Pin((__chip_num, 224))
+PH1 = Pin((__chip_num, 225))
+PH2 = Pin((__chip_num, 226))
+UART5_TX = PH2
+PH3 = Pin((__chip_num, 227))
+UART5_RX = PH3
+PH4 = Pin((__chip_num, 228))
+PH5 = Pin((__chip_num, 229))
+UART2_TX = PH5
+SPI1_CS0 = PH5
+PH6 = Pin((__chip_num, 230))
+UART2_RX = PH6
+SPI1_SCLK = PH6
+PH7 = Pin((__chip_num, 231))
+SPI1_MOSI = PH7
+PH8 = Pin((__chip_num, 232))
+SPI1_MISO = PH8
+PH9 = Pin((__chip_num, 233))
+SPI1_CS1 = PH9
+PH10 = Pin((__chip_num, 234))
+
+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))
+TWI0_SCL = PI5
+PI6 = Pin((__chip_num, 262))
+TWI0_SDA = PI6
+PI7 = Pin((__chip_num, 263))
+TWI1_SCL = PI7
+PI8 = Pin((__chip_num, 264))
+TWI1_SDA = PI8
+PI9 = Pin((__chip_num, 265))
+UART3_TX = PI9
+PI10 = Pin((__chip_num, 266))
+UART3_RX = PI10
+PI11 = Pin((__chip_num, 267))
+PI12 = Pin((__chip_num, 268))
+PI13 = Pin((__chip_num, 269))
+UART4_TX = PI13
+PI14 = Pin((__chip_num, 270))
+UART4_RX = PI14
+PI15 = Pin((__chip_num, 271))
+PI16 = Pin((__chip_num, 272))
+
+i2cPorts = (
+    (0, TWI0_SCL, TWI0_SDA),
+    (1, TWI1_SCL, TWI1_SDA),
+    (3, TWI3_SCL, TWI3_SDA),
+    (4, TWI4_SCL, TWI4_SDA),
+)
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = (
+    (0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),
+    (1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),
+)
+# ordered as uartId, txId, rxId
+uartPorts = (
+    (1, UART1_TX, UART1_RX),
+    (2, UART2_TX, UART2_RX),
+    (3, UART3_TX, UART3_RX),
+    (4, UART4_TX, UART4_RX),
+    (5, UART5_TX, UART5_RX),
+)
index 8105fd41cb662c85be92a474980e5f83a87fce3c..14f600a073887a5c5746c0a22e240dff74d1ba8f 100644 (file)
@@ -152,6 +152,12 @@ elif board_id == ap_board.BANANA_PI_M2_ZERO:
 elif board_id == ap_board.BANANA_PI_M2_PLUS:
     from adafruit_blinka.board.bananapi.bpim2plus import *
 
 elif board_id == ap_board.BANANA_PI_M2_PLUS:
     from adafruit_blinka.board.bananapi.bpim2plus import *
 
+elif board_id == ap_board.BANANA_PI_M4_BERRY:
+    from adafruit_blinka.board.bananapi.bpim4berry import *
+
+elif board_id == ap_board.BANANA_PI_M4_ZERO:
+    from adafruit_blinka.board.bananapi.bpim4zero import *
+
 elif board_id == ap_board.BANANA_PI_M5:
     from adafruit_blinka.board.bananapi.bpim5 import *
 
 elif board_id == ap_board.BANANA_PI_M5:
     from adafruit_blinka.board.bananapi.bpim5 import *
 
index 46f23a644533ef15ebfff69833094a67f107c0ae..6f92fc53d2228431c0d476e8693f08963f2e4fe3 100644 (file)
@@ -111,6 +111,8 @@ elif detector.chip.H5:
     from adafruit_blinka.microcontroller.allwinner.h5.pin import Pin
 elif detector.chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6.pin import Pin
     from adafruit_blinka.microcontroller.allwinner.h5.pin import Pin
 elif detector.chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6.pin import Pin
+elif detector.chip.H618:
+    from adafruit_blinka.microcontroller.allwinner.h618.pin import Pin
 elif detector.chip.H616:
     from adafruit_blinka.microcontroller.allwinner.h616.pin import Pin
 elif detector.chip.D1_RISCV:
 elif detector.chip.H616:
     from adafruit_blinka.microcontroller.allwinner.h616.pin import Pin
 elif detector.chip.D1_RISCV:
index 036fbc9e126c3ef274695492d23611c25504d836..ea0b5e288f1e6d851f4f8f46a668143e5aa97d3d 100644 (file)
@@ -61,6 +61,8 @@ elif chip_id == ap_chip.H5:
     from adafruit_blinka.microcontroller.allwinner.h5 import *
 elif chip_id == ap_chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6 import *
     from adafruit_blinka.microcontroller.allwinner.h5 import *
 elif chip_id == ap_chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6 import *
+elif chip_id == ap_chip.H618:
+    from adafruit_blinka.microcontroller.allwinner.h618 import *
 elif chip_id == ap_chip.H616:
     from adafruit_blinka.microcontroller.allwinner.h616 import *
 elif chip_id == ap_chip.SAMA5:
 elif chip_id == ap_chip.H616:
     from adafruit_blinka.microcontroller.allwinner.h616 import *
 elif chip_id == ap_chip.SAMA5:
index 5872271fc5a5e08d97de90f88392e181a3215b24..bdc5a8d7e1d311e2892a8ec2f337732e1fd035c0 100644 (file)
@@ -51,6 +51,8 @@ elif chip_id == ap_chip.H5:
         from adafruit_blinka.microcontroller.allwinner.h5.pin import *
 elif chip_id == ap_chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6.pin import *
         from adafruit_blinka.microcontroller.allwinner.h5.pin import *
 elif chip_id == ap_chip.H6:
     from adafruit_blinka.microcontroller.allwinner.h6.pin import *
+elif chip_id == ap_chip.H618:
+    from adafruit_blinka.microcontroller.allwinner.h618.pin import *
 elif chip_id == ap_chip.H616:
     if board_id == ap_boards.REPKA_PI_4_H6:
         from adafruit_blinka.board.repkapi.repka_pi_4 import *
 elif chip_id == ap_chip.H616:
     if board_id == ap_boards.REPKA_PI_4_H6:
         from adafruit_blinka.board.repkapi.repka_pi_4 import *