Skip to content

Commit 41b183d

Browse files
committed
support spacemit k1, bananapif3
1 parent 18c14b9 commit 41b183d

File tree

9 files changed

+253
-0
lines changed

9 files changed

+253
-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
16 KB
Binary file not shown.
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"""
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Spacemit K1 Pin Names"""
5+
from adafruit_blinka.agnostic import detector
6+
from adafruit_blinka.microcontroller.alias import get_pwm_chipid
7+
from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
8+
9+
__chip_num = 0
10+
11+
GPIO_0 = Pin((__chip_num, 0))
12+
GPIO_1 = Pin((__chip_num, 1))
13+
GPIO_2 = Pin((__chip_num, 2))
14+
GPIO_3 = Pin((__chip_num, 3))
15+
GPIO_4 = Pin((__chip_num, 4))
16+
GPIO_5 = Pin((__chip_num, 5))
17+
GPIO_6 = Pin((__chip_num, 6))
18+
GPIO_7 = Pin((__chip_num, 7))
19+
GPIO_8 = Pin((__chip_num, 8))
20+
GPIO_9 = Pin((__chip_num, 9))
21+
GPIO_10 = Pin((__chip_num, 10))
22+
GPIO_11 = Pin((__chip_num, 11))
23+
GPIO_12 = Pin((__chip_num, 12))
24+
GPIO_13 = Pin((__chip_num, 13))
25+
GPIO_14 = Pin((__chip_num, 14))
26+
GPIO_15 = Pin((__chip_num, 15))
27+
GPIO_16 = Pin((__chip_num, 16))
28+
GPIO_17 = Pin((__chip_num, 17))
29+
GPIO_18 = Pin((__chip_num, 18))
30+
GPIO_19 = Pin((__chip_num, 19))
31+
GPIO_20 = Pin((__chip_num, 20))
32+
GPIO_21 = Pin((__chip_num, 21))
33+
GPIO_22 = Pin((__chip_num, 22))
34+
GPIO_23 = Pin((__chip_num, 23))
35+
GPIO_24 = Pin((__chip_num, 24))
36+
GPIO_25 = Pin((__chip_num, 25))
37+
GPIO_26 = Pin((__chip_num, 26))
38+
GPIO_27 = Pin((__chip_num, 27))
39+
GPIO_28 = Pin((__chip_num, 28))
40+
GPIO_29 = Pin((__chip_num, 29))
41+
GPIO_30 = Pin((__chip_num, 30))
42+
GPIO_31 = Pin((__chip_num, 31))
43+
GPIO_32 = Pin((__chip_num, 32))
44+
GPIO_33 = Pin((__chip_num, 33))
45+
GPIO_34 = Pin((__chip_num, 34))
46+
GPIO_35 = Pin((__chip_num, 35))
47+
GPIO_36 = Pin((__chip_num, 36))
48+
GPIO_37 = Pin((__chip_num, 37))
49+
GPIO_38 = Pin((__chip_num, 38))
50+
GPIO_39 = Pin((__chip_num, 39))
51+
GPIO_40 = Pin((__chip_num, 40))
52+
GPIO_41 = Pin((__chip_num, 41))
53+
GPIO_42 = Pin((__chip_num, 42))
54+
GPIO_43 = Pin((__chip_num, 43))
55+
GPIO_44 = Pin((__chip_num, 44))
56+
GPIO_45 = Pin((__chip_num, 45))
57+
GPIO_46 = Pin((__chip_num, 46))
58+
GPIO_47 = Pin((__chip_num, 47))
59+
GPIO_48 = Pin((__chip_num, 48))
60+
GPIO_49 = Pin((__chip_num, 49))
61+
GPIO_50 = Pin((__chip_num, 50))
62+
GPIO_51 = Pin((__chip_num, 51))
63+
GPIO_52 = Pin((__chip_num, 52))
64+
GPIO_53 = Pin((__chip_num, 53))
65+
GPIO_54 = Pin((__chip_num, 54))
66+
GPIO_55 = Pin((__chip_num, 55))
67+
GPIO_56 = Pin((__chip_num, 56))
68+
GPIO_57 = Pin((__chip_num, 57))
69+
GPIO_58 = Pin((__chip_num, 58))
70+
GPIO_59 = Pin((__chip_num, 59))
71+
GPIO_60 = Pin((__chip_num, 60))
72+
GPIO_61 = Pin((__chip_num, 61))
73+
GPIO_62 = Pin((__chip_num, 62))
74+
GPIO_63 = Pin((__chip_num, 63))
75+
GPIO_64 = Pin((__chip_num, 64))
76+
GPIO_65 = Pin((__chip_num, 65))
77+
GPIO_66 = Pin((__chip_num, 66))
78+
GPIO_67 = Pin((__chip_num, 67))
79+
GPIO_68 = Pin((__chip_num, 68))
80+
GPIO_69 = Pin((__chip_num, 69))
81+
GPIO_70 = Pin((__chip_num, 70))
82+
GPIO_71 = Pin((__chip_num, 71))
83+
GPIO_72 = Pin((__chip_num, 72))
84+
GPIO_73 = Pin((__chip_num, 73))
85+
GPIO_74 = Pin((__chip_num, 74))
86+
GPIO_75 = Pin((__chip_num, 75))
87+
GPIO_76 = Pin((__chip_num, 76))
88+
GPIO_77 = Pin((__chip_num, 77))
89+
GPIO_78 = Pin((__chip_num, 78))
90+
GPIO_79 = Pin((__chip_num, 79))
91+
GPIO_80 = Pin((__chip_num, 80))
92+
GPIO_81 = Pin((__chip_num, 81))
93+
GPIO_82 = Pin((__chip_num, 82))
94+
GPIO_83 = Pin((__chip_num, 83))
95+
GPIO_84 = Pin((__chip_num, 84))
96+
GPIO_85 = Pin((__chip_num, 85))
97+
GPIO_86 = Pin((__chip_num, 86))
98+
GPIO_87 = Pin((__chip_num, 87))
99+
GPIO_88 = Pin((__chip_num, 88))
100+
GPIO_89 = Pin((__chip_num, 89))
101+
GPIO_90 = Pin((__chip_num, 90))
102+
GPIO_91 = Pin((__chip_num, 91))
103+
GPIO_92 = Pin((__chip_num, 92))
104+
GPIO_93 = Pin((__chip_num, 93))
105+
GPIO_94 = Pin((__chip_num, 94))
106+
GPIO_95 = Pin((__chip_num, 95))
107+
GPIO_96 = Pin((__chip_num, 96))
108+
GPIO_97 = Pin((__chip_num, 97))
109+
GPIO_98 = Pin((__chip_num, 98))
110+
GPIO_99 = Pin((__chip_num, 99))
111+
GPIO_100 = Pin((__chip_num, 100))
112+
GPIO_101 = Pin((__chip_num, 101))
113+
GPIO_102 = Pin((__chip_num, 102))
114+
GPIO_103 = Pin((__chip_num, 103))
115+
GPIO_104 = Pin((__chip_num, 104))
116+
GPIO_105 = Pin((__chip_num, 105))
117+
GPIO_106 = Pin((__chip_num, 106))
118+
GPIO_107 = Pin((__chip_num, 107))
119+
GPIO_108 = Pin((__chip_num, 108))
120+
GPIO_109 = Pin((__chip_num, 109))
121+
GPIO_110 = Pin((__chip_num, 110))
122+
GPIO_111 = Pin((__chip_num, 111))
123+
GPIO_112 = Pin((__chip_num, 112))
124+
GPIO_113 = Pin((__chip_num, 113))
125+
GPIO_114 = Pin((__chip_num, 114))
126+
GPIO_115 = Pin((__chip_num, 115))
127+
GPIO_116 = Pin((__chip_num, 116))
128+
GPIO_117 = Pin((__chip_num, 117))
129+
GPIO_118 = Pin((__chip_num, 118))
130+
GPIO_119 = Pin((__chip_num, 119))
131+
GPIO_120 = Pin((__chip_num, 120))
132+
GPIO_121 = Pin((__chip_num, 121))
133+
GPIO_122 = Pin((__chip_num, 122))
134+
GPIO_123 = Pin((__chip_num, 123))
135+
GPIO_124 = Pin((__chip_num, 124))
136+
GPIO_125 = Pin((__chip_num, 125))
137+
GPIO_126 = Pin((__chip_num, 126))
138+
GPIO_127 = Pin((__chip_num, 127))
139+
140+
# I2C
141+
I2C4_SCL = GPIO_51
142+
I2C4_SDA = GPIO_52
143+
144+
i2cPorts = (
145+
(4, I2C4_SCL, I2C4_SDA),
146+
)
147+
148+
# SPI
149+
SPI3_MISO = GPIO_78
150+
SPI3_MOSI = GPIO_77
151+
SPI3_SCLK = GPIO_75
152+
SPI3_CS0 = GPIO_76
153+
154+
# ordered as spiId, sckId, mosiId, misoId
155+
spiPorts = (
156+
(3, SPI3_SCLK, SPI3_MOSI, SPI3_MISO),
157+
)
158+
159+
# UART
160+
UART0_TX = GPIO_47
161+
UART0_RX = GPIO_48
162+
163+
# ordered as uartId, txId, rxId
164+
uartPorts = (
165+
(0, UART0_TX, UART0_RX),
166+
)
167+
168+
# SysFS pwm outputs, pwm channel and pin in first tuple
169+
pwmOuts = []
170+
171+
board = detector.board.id
172+
if board in ("BANANA_PI_F3"):
173+
alias = get_pwm_chipid("d401bc00.pwm")
174+
if alias is not None:
175+
globals()["PWM" + alias] = GPIO_92
176+
pwmOuts.append(((int(alias[-1]), 0), GPIO_92))
177+
alias = get_pwm_chipid("d4020400.pwm")
178+
if alias is not None:
179+
globals()["PWM" + alias] = GPIO_74
180+
pwmOuts.append(((int(alias[-1]), 0), GPIO_74))

src/board.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@
161161
elif board_id == ap_board.BANANA_PI_M5:
162162
from adafruit_blinka.board.bananapi.bpim5 import *
163163

164+
elif board_id == ap_board.BANANA_PI_F3:
165+
from adafruit_blinka.board.bananapi.bpif3 import *
166+
164167
elif board_id == ap_board.LEMAKER_BANANA_PRO:
165168
from adafruit_blinka.board.lemaker.bananapro import *
166169

src/digitalio.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@
119119
from adafruit_blinka.microcontroller.allwinner.D1.pin import Pin
120120
elif detector.chip.TH1520:
121121
from adafruit_blinka.microcontroller.thead.th1520.pin import Pin
122+
elif detector.chip.K1:
123+
from adafruit_blinka.microcontroller.spacemit.k1.pin import Pin
122124
# Special Case Boards
123125
elif detector.board.ftdi_ft232h:
124126
from adafruit_blinka.microcontroller.ftdi_mpsse.ft232h.pin import Pin

src/microcontroller/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ def delay_us(delay):
157157
from adafruit_blinka.microcontroller.rockchip.rv1106 import *
158158
elif chip_id == ap_chip.TH1520:
159159
from adafruit_blinka.microcontroller.thead.th1520 import *
160+
elif chip_id == ap_chip.K1:
161+
from adafruit_blinka.microcontroller.spacemit.k1 import *
160162
elif chip_id == ap_chip.GENERIC_X86:
161163
print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.")
162164
elif chip_id == ap_chip.OS_AGNOSTIC:

src/microcontroller/pin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@
147147
from adafruit_blinka.microcontroller.cv1800b.pin import *
148148
elif chip_id == ap_chip.TH1520:
149149
from adafruit_blinka.microcontroller.thead.th1520.pin import *
150+
elif chip_id == ap_chip.K1:
151+
from adafruit_blinka.microcontroller.spacemit.k1.pin import *
150152
elif chip_id == ap_chip.RV1103:
151153
from adafruit_blinka.microcontroller.rockchip.rv1103.pin import *
152154
elif chip_id == ap_chip.RV1106:

0 commit comments

Comments
 (0)