From: August <2819763+Dangku@users.noreply.github.com> Date: Sat, 31 Aug 2024 15:43:17 +0000 (+0800) Subject: support allwinner h618 chip and bananapi m4berry and m4zero board X-Git-Tag: 8.48.0~1^2~9 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/2152c18a1e8ec87e45ca2a273819fbde777d4415?ds=inline support allwinner h618 chip and bananapi m4berry and m4zero board --- diff --git a/src/adafruit_blinka/board/bananapi/bpim4berry.py b/src/adafruit_blinka/board/bananapi/bpim4berry.py new file mode 100644 index 0000000..cfed3a3 --- /dev/null +++ b/src/adafruit_blinka/board/bananapi/bpim4berry.py @@ -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 index 0000000..bd2e553 --- /dev/null +++ b/src/adafruit_blinka/board/bananapi/bpim4zero.py @@ -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 index 0000000..bb4a91e --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/h618/__init__.py @@ -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 index 0000000..7eabaa2 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/h618/pin.py @@ -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), +) diff --git a/src/board.py b/src/board.py index 8105fd4..14f600a 100644 --- a/src/board.py +++ b/src/board.py @@ -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_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 * diff --git a/src/digitalio.py b/src/digitalio.py index 46f23a6..6f92fc5 100644 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -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 +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: diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index 036fbc9..ea0b5e2 100644 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -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 * +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: diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index 5872271..bdc5a8d 100644 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -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 * +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 *