Skip to content

Commit 1c43583

Browse files
authored
Merge pull request #891 from Dangku/main
support bananapi m4berry, m4zero and f3
2 parents 9ddbd63 + 3746b1b commit 1c43583

File tree

13 files changed

+570
-0
lines changed

13 files changed

+570
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Pin definitions for the Banana Pi F3."""
5+
6+
from adafruit_blinka.microcontroller.spacemit.k1 import pin
7+
8+
# I2C
9+
I2C4_SCL = pin.I2C4_SCL
10+
I2C4_SDA = pin.I2C4_SDA
11+
12+
# Default I2C
13+
SCL = I2C4_SCL
14+
SDA = I2C4_SDA
15+
16+
# UART
17+
UART0_TX = pin.UART0_TX
18+
UART0_RX = pin.UART0_RX
19+
20+
# Default UART
21+
TX = UART0_TX
22+
RX = UART0_RX
23+
TXD = UART0_TX
24+
RXD = UART0_RX
25+
26+
# SPI
27+
SPI3_MOSI = pin.SPI3_MOSI
28+
SPI3_MISO = pin.SPI3_MISO
29+
SPI3_SCLK = pin.SPI3_SCLK
30+
SPI3_CS0 = pin.SPI3_CS0
31+
32+
# Default SPI
33+
MOSI = SPI3_MOSI
34+
MISO = SPI3_MISO
35+
SCLK = SPI3_SCLK
36+
CS = SPI3_CS0
37+
38+
# Pinout reference:
39+
# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Berry#BPI-M4_Berry_40-pin_header
40+
D3 = pin.GPIO_52
41+
D5 = pin.GPIO_51
42+
D7 = pin.GPIO_70
43+
D8 = pin.GPIO_47
44+
D10 = pin.GPIO_48
45+
D11 = pin.GPIO_71
46+
D12 = pin.GPIO_74
47+
D13 = pin.GPIO_72
48+
D15 = pin.GPIO_73
49+
D16 = pin.GPIO_91
50+
D18 = pin.GPIO_92
51+
D19 = pin.GPIO_77
52+
D21 = pin.GPIO_78
53+
D22 = pin.GPIO_49
54+
D23 = pin.GPIO_75
55+
D24 = pin.GPIO_76
56+
D26 = pin.GPIO_50
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Pin definitions for the Banana Pi M4 Berry."""
5+
6+
from adafruit_blinka.microcontroller.allwinner.h618 import pin
7+
8+
# I2C
9+
I2C3_SCL = pin.TWI3_SCL
10+
I2C3_SDA = pin.TWI3_SDA
11+
I2C4_SCL = pin.TWI4_SCL
12+
I2C4_SDA = pin.TWI4_SDA
13+
14+
# Default I2C
15+
SCL = I2C4_SCL
16+
SDA = I2C4_SDA
17+
18+
# UART
19+
UART1_TX = pin.UART1_TX
20+
UART1_RX = pin.UART1_RX
21+
UART5_TX = pin.UART5_TX
22+
UART5_RX = pin.UART5_RX
23+
24+
# Default UART
25+
TX = UART1_TX
26+
RX = UART1_RX
27+
TXD = UART1_TX
28+
RXD = UART1_RX
29+
30+
# SPI
31+
SPI1_MOSI = pin.SPI1_MOSI
32+
SPI1_MISO = pin.SPI1_MISO
33+
SPI1_SCLK = pin.SPI1_SCLK
34+
SPI1_CS0 = pin.SPI1_CS0
35+
36+
# Default SPI
37+
MOSI = SPI1_MOSI
38+
MISO = SPI1_MISO
39+
SCLK = SPI1_SCLK
40+
CS = SPI1_CS0
41+
42+
# Pinout reference:
43+
# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Berry#BPI-M4_Berry_40-pin_header
44+
D3 = pin.PG16
45+
D5 = pin.PG15
46+
D7 = pin.PG19
47+
D8 = pin.PG6
48+
D10 = pin.PG7
49+
D11 = pin.PH2
50+
D12 = pin.PG11
51+
D13 = pin.PH3
52+
D15 = pin.PG2
53+
D16 = pin.PG8
54+
D18 = pin.PG9
55+
D19 = pin.PH7
56+
D21 = pin.PH8
57+
D22 = pin.PG1
58+
D23 = pin.PH6
59+
D24 = pin.PH5
60+
D26 = pin.PH9
61+
D27 = pin.PG18
62+
D28 = pin.PG17
63+
D29 = pin.PG3
64+
D31 = pin.PG4
65+
D32 = pin.PG0
66+
D33 = pin.PG5
67+
D35 = pin.PG12
68+
D36 = pin.PH4
69+
D37 = pin.PG10
70+
D38 = pin.PG14
71+
D40 = pin.PG13
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Pin definitions for the Banana Pi M4 Zero."""
5+
6+
from adafruit_blinka.microcontroller.allwinner.h618 import pin
7+
8+
# I2C
9+
I2C0_SCL = pin.TWI0_SCL
10+
I2C0_SDA = pin.TWI0_SDA
11+
I2C1_SCL = pin.TWI1_SCL
12+
I2C1_SDA = pin.TWI1_SDA
13+
14+
# Default I2C
15+
SCL = I2C0_SCL
16+
SDA = I2C0_SDA
17+
18+
# UART
19+
UART4_TX = pin.UART4_TX
20+
UART4_RX = pin.UART4_RX
21+
UART5_TX = pin.UART5_TX
22+
UART5_RX = pin.UART5_RX
23+
24+
# Default UART
25+
TX = UART4_TX
26+
RX = UART4_RX
27+
TXD = UART4_TX
28+
RXD = UART4_RX
29+
30+
# SPI
31+
SPI1_MOSI = pin.SPI1_MOSI
32+
SPI1_MISO = pin.SPI1_MISO
33+
SPI1_SCLK = pin.SPI1_SCLK
34+
SPI1_CS0 = pin.SPI1_CS0
35+
36+
# Default SPI
37+
MOSI = SPI1_MOSI
38+
MISO = SPI1_MISO
39+
SCLK = SPI1_SCLK
40+
CS = SPI1_CS0
41+
42+
# Pinout reference:
43+
# https://wiki.banana-pi.org/Banana_Pi_BPI-M4_Zero#BPI-M4_Zero_40-pin_header
44+
D3 = pin.PI6
45+
D5 = pin.PI5
46+
D7 = pin.PI12
47+
D8 = pin.PI13
48+
D10 = pin.PI14
49+
D11 = pin.PH2
50+
D12 = pin.PI1
51+
D13 = pin.PH3
52+
D15 = pin.PI11
53+
D16 = pin.PI15
54+
D18 = pin.PI16
55+
D19 = pin.PH7
56+
D21 = pin.PH8
57+
D22 = pin.PC2
58+
D23 = pin.PH6
59+
D24 = pin.PH5
60+
D26 = pin.PH9
61+
D27 = pin.PI8
62+
D28 = pin.PI7
63+
D29 = pin.PI10
64+
D31 = pin.PI9
65+
D32 = pin.PH4
66+
D33 = pin.PH10
67+
D35 = pin.PI2
68+
D36 = pin.PC7
69+
D37 = pin.PI0
70+
D38 = pin.PI4
71+
D40 = pin.PI3
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Definition for the AllWinner H618 chip"""
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Allwinner H618 Pin Names"""
5+
import re
6+
from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
7+
8+
9+
def find_gpiochip_number(target_label):
10+
"""Get correct gpiochip number, legacy kernel and mainline kernel are different"""
11+
try:
12+
with open("/sys/kernel/debug/gpio", "r") as f:
13+
lines = f.readlines()
14+
except FileNotFoundError:
15+
print("The file /sys/kernel/debug/gpio does not exist.")
16+
return None
17+
18+
gpiochip_number = None
19+
for line in lines:
20+
if target_label in line:
21+
match = re.search(r"gpiochip(\d+)", line)
22+
if match:
23+
gpiochip_number = match.group(1)
24+
break
25+
26+
return gpiochip_number
27+
28+
29+
if find_gpiochip_number("300b000.pinctrl"):
30+
__chip_num = 1
31+
else:
32+
__chip_num = 0
33+
34+
PC0 = Pin((__chip_num, 64))
35+
SPI0_SCLK = PC0
36+
PC1 = Pin((__chip_num, 65))
37+
PC2 = Pin((__chip_num, 66))
38+
SPI0_MOSI = PC2
39+
PC3 = Pin((__chip_num, 67))
40+
SPI0_CS0 = PC3
41+
PC4 = Pin((__chip_num, 68))
42+
SPI0_MISO = PC4
43+
PC5 = Pin((__chip_num, 69))
44+
PC6 = Pin((__chip_num, 70))
45+
PC7 = Pin((__chip_num, 71))
46+
PC8 = Pin((__chip_num, 72))
47+
PC9 = Pin((__chip_num, 73))
48+
PC10 = Pin((__chip_num, 74))
49+
PC11 = Pin((__chip_num, 75))
50+
PC12 = Pin((__chip_num, 76))
51+
PC13 = Pin((__chip_num, 77))
52+
PC14 = Pin((__chip_num, 78))
53+
PC15 = Pin((__chip_num, 79))
54+
55+
PF0 = Pin((__chip_num, 160))
56+
PF1 = Pin((__chip_num, 161))
57+
PF2 = Pin((__chip_num, 162))
58+
PF3 = Pin((__chip_num, 163))
59+
PF4 = Pin((__chip_num, 164))
60+
PF5 = Pin((__chip_num, 165))
61+
PF6 = Pin((__chip_num, 166))
62+
63+
PG0 = Pin((__chip_num, 192))
64+
PG1 = Pin((__chip_num, 193))
65+
PG2 = Pin((__chip_num, 194))
66+
PG3 = Pin((__chip_num, 195))
67+
PG4 = Pin((__chip_num, 196))
68+
PG5 = Pin((__chip_num, 197))
69+
PG6 = Pin((__chip_num, 198))
70+
UART1_TX = PG6
71+
PG7 = Pin((__chip_num, 199))
72+
UART1_RX = PG7
73+
PG8 = Pin((__chip_num, 200))
74+
PG9 = Pin((__chip_num, 201))
75+
PG10 = Pin((__chip_num, 202))
76+
PG11 = Pin((__chip_num, 203))
77+
PG12 = Pin((__chip_num, 204))
78+
PG13 = Pin((__chip_num, 205))
79+
PG14 = Pin((__chip_num, 206))
80+
PG15 = Pin((__chip_num, 207))
81+
TWI4_SCL = PG15
82+
PG16 = Pin((__chip_num, 208))
83+
TWI4_SDA = PG16
84+
PG17 = Pin((__chip_num, 209))
85+
TWI3_SCL = PG17
86+
PG18 = Pin((__chip_num, 210))
87+
TWI3_SDA = PG18
88+
PG19 = Pin((__chip_num, 211))
89+
PWM1 = PG19
90+
91+
PH0 = Pin((__chip_num, 224))
92+
PH1 = Pin((__chip_num, 225))
93+
PH2 = Pin((__chip_num, 226))
94+
UART5_TX = PH2
95+
PH3 = Pin((__chip_num, 227))
96+
UART5_RX = PH3
97+
PH4 = Pin((__chip_num, 228))
98+
PH5 = Pin((__chip_num, 229))
99+
UART2_TX = PH5
100+
SPI1_CS0 = PH5
101+
PH6 = Pin((__chip_num, 230))
102+
UART2_RX = PH6
103+
SPI1_SCLK = PH6
104+
PH7 = Pin((__chip_num, 231))
105+
SPI1_MOSI = PH7
106+
PH8 = Pin((__chip_num, 232))
107+
SPI1_MISO = PH8
108+
PH9 = Pin((__chip_num, 233))
109+
SPI1_CS1 = PH9
110+
PH10 = Pin((__chip_num, 234))
111+
112+
PI0 = Pin((__chip_num, 256))
113+
PI1 = Pin((__chip_num, 257))
114+
PI2 = Pin((__chip_num, 258))
115+
PI3 = Pin((__chip_num, 259))
116+
PI4 = Pin((__chip_num, 260))
117+
PI5 = Pin((__chip_num, 261))
118+
TWI0_SCL = PI5
119+
PI6 = Pin((__chip_num, 262))
120+
TWI0_SDA = PI6
121+
PI7 = Pin((__chip_num, 263))
122+
TWI1_SCL = PI7
123+
PI8 = Pin((__chip_num, 264))
124+
TWI1_SDA = PI8
125+
PI9 = Pin((__chip_num, 265))
126+
UART3_TX = PI9
127+
PI10 = Pin((__chip_num, 266))
128+
UART3_RX = PI10
129+
PI11 = Pin((__chip_num, 267))
130+
PI12 = Pin((__chip_num, 268))
131+
PWM2 = PI12
132+
PI13 = Pin((__chip_num, 269))
133+
UART4_TX = PI13
134+
PI14 = Pin((__chip_num, 270))
135+
UART4_RX = PI14
136+
PI15 = Pin((__chip_num, 271))
137+
PI16 = Pin((__chip_num, 272))
138+
139+
i2cPorts = (
140+
(0, TWI0_SCL, TWI0_SDA),
141+
(1, TWI1_SCL, TWI1_SDA),
142+
(3, TWI3_SCL, TWI3_SDA),
143+
(4, TWI4_SCL, TWI4_SDA),
144+
)
145+
# ordered as spiId, sckId, mosiId, misoId
146+
spiPorts = (
147+
(0, SPI0_SCLK, SPI0_MOSI, SPI0_MISO),
148+
(1, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),
149+
)
150+
# ordered as uartId, txId, rxId
151+
uartPorts = (
152+
(1, UART1_TX, UART1_RX),
153+
(2, UART2_TX, UART2_RX),
154+
(3, UART3_TX, UART3_RX),
155+
(4, UART4_TX, UART4_RX),
156+
(5, UART5_TX, UART5_RX),
157+
)
158+
159+
# SysFS pwm outputs, pwm channel and pin in first tuple
160+
pwmOuts = [
161+
((0, 1), PWM1),
162+
((0, 2), PWM2),
163+
]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Definition of all Spacemit chips"""
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Definition for the Spacemit K1 chip"""

0 commit comments

Comments
 (0)