Skip to content

Commit

Permalink
support allwinner h618 chip and bananapi m4berry and m4zero board
Browse files Browse the repository at this point in the history
  • Loading branch information
Dangku committed Aug 31, 2024
1 parent 9ddbd63 commit 2152c18
Show file tree
Hide file tree
Showing 8 changed files with 293 additions and 0 deletions.
71 changes: 71 additions & 0 deletions src/adafruit_blinka/board/bananapi/bpim4berry.py
Original file line number Diff line number Diff line change
@@ -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
71 changes: 71 additions & 0 deletions src/adafruit_blinka/board/bananapi/bpim4zero.py
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""Definition for the AllWinner H618 chip"""
135 changes: 135 additions & 0 deletions src/adafruit_blinka/microcontroller/allwinner/h618/pin.py
Original file line number Diff line number Diff line change
@@ -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),
)
6 changes: 6 additions & 0 deletions src/board.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,12 @@
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 *

Expand Down
2 changes: 2 additions & 0 deletions src/digitalio.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@
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:
Expand Down
2 changes: 2 additions & 0 deletions src/microcontroller/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ def delay_us(delay):
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:
Expand Down
2 changes: 2 additions & 0 deletions src/microcontroller/pin.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@
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 *
Expand Down

0 comments on commit 2152c18

Please sign in to comment.