Skip to content

Commit f9b4015

Browse files
authored
Merge pull request #779 from anonymouscowhead/add-licheepi4a
Add sipeed lichee pi 4a support
2 parents 7cd06ef + 7dc53ac commit f9b4015

File tree

8 files changed

+202
-0
lines changed

8 files changed

+202
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# SPDX-FileCopyrightText: 2024 Chris Brown
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Pin definitions for the Lichee Pi 4A."""
5+
6+
from adafruit_blinka.microcontroller.thead.th1520 import pin
7+
8+
IO1_6 = pin.GPIO1_6
9+
IO1_5 = pin.GPIO1_5
10+
IO1_4 = pin.GPIO1_4
11+
IO1_3 = pin.GPIO1_3
12+
I2C2_SCL = pin.TWI2_SCL
13+
U2_TX = pin.UART2_TX
14+
I2C2_SDA = pin.TWI2_SDA
15+
U2_RX = pin.UART2_RX
16+
U3_TX = pin.UART3_TX
17+
U3_RX = pin.UART3_RX
18+
U1_TX = pin.UART1_TX
19+
U1_RX = pin.UART1_RX
20+
U0_TX = pin.UART0_TX
21+
U0_RX = pin.UART0_RX
22+
QSPI1_SO = pin.SPI1_MISO
23+
QSPI1_CS = pin.SPI1_CS
24+
QSPI1_SI = pin.SPI1_MOSI
25+
QSPI1_CLK = pin.SPI1_SCLK
26+
27+
# Default UART
28+
TX = U0_TX
29+
RX = U0_RX
30+
31+
# Default I2C
32+
SCL = I2C2_SCL
33+
SDA = I2C2_SDA
34+
35+
# Default SPI
36+
SCLK = QSPI1_CLK
37+
MOSI = QSPI1_SI
38+
MISO = QSPI1_SO
39+
CS = QSPI1_CS

src/adafruit_blinka/microcontroller/thead/__init__.py

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# SPDX-FileCopyrightText: 2024 Chris Brown
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""Definition for the T-Head TH1520 chip"""
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
# SPDX-FileCopyrightText: 2024 Chris Brown
2+
#
3+
# SPDX-License-Identifier: MIT
4+
"""T-Head TH1520 pin names"""
5+
from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
6+
7+
GPIO0_0 = Pin((0, 0))
8+
SPI1_SCLK = GPIO0_0
9+
GPIO0_1 = Pin((0, 1))
10+
SPI1_CS = GPIO0_1
11+
GPIO0_2 = Pin((0, 2))
12+
SPI1_MOSI = GPIO0_2
13+
GPIO0_3 = Pin((0, 3))
14+
SPI1_MISO = GPIO0_3
15+
GPIO0_4 = Pin((0, 4))
16+
GPIO0_5 = Pin((0, 5))
17+
GPIO0_6 = Pin((0, 6))
18+
GPIO0_7 = Pin((0, 7))
19+
GPIO0_8 = Pin((0, 8))
20+
GPIO0_9 = Pin((0, 9))
21+
GPIO0_10 = Pin((0, 10))
22+
UART1_TX = GPIO0_10
23+
GPIO0_11 = Pin((0, 11))
24+
UART1_RX = GPIO0_11
25+
GPIO0_12 = Pin((0, 12))
26+
GPIO0_13 = Pin((0, 13))
27+
GPIO0_14 = Pin((0, 14))
28+
GPIO0_15 = Pin((0, 15))
29+
GPIO0_16 = Pin((0, 16))
30+
UART3_TX = GPIO0_16
31+
GPIO0_17 = Pin((0, 17))
32+
UART3_RX = GPIO0_17
33+
GPIO0_18 = Pin((0, 18))
34+
GPIO0_19 = Pin((0, 19))
35+
GPIO0_20 = Pin((0, 20))
36+
GPIO0_21 = Pin((0, 21))
37+
GPIO0_22 = Pin((0, 22))
38+
GPIO0_23 = Pin((0, 23))
39+
GPIO0_24 = Pin((0, 24))
40+
GPIO0_25 = Pin((0, 25))
41+
GPIO0_26 = Pin((0, 26))
42+
GPIO0_27 = Pin((0, 27))
43+
GPIO0_28 = Pin((0, 28))
44+
GPIO0_29 = Pin((0, 29))
45+
GPIO0_30 = Pin((0, 30))
46+
GPIO0_31 = Pin((0, 31))
47+
GPIO1_0 = Pin((1, 0))
48+
GPIO1_1 = Pin((1, 1))
49+
GPIO1_2 = Pin((1, 2))
50+
GPIO1_3 = Pin((1, 3))
51+
GPIO1_4 = Pin((1, 4))
52+
GPIO1_5 = Pin((1, 5))
53+
GPIO1_6 = Pin((1, 6))
54+
GPIO1_7 = Pin((1, 7))
55+
GPIO1_8 = Pin((1, 8))
56+
GPIO1_9 = Pin((1, 9))
57+
GPIO1_10 = Pin((1, 10))
58+
GPIO1_11 = Pin((1, 11))
59+
GPIO1_12 = Pin((1, 12))
60+
GPIO1_13 = Pin((1, 13))
61+
GPIO1_14 = Pin((1, 14))
62+
GPIO1_15 = Pin((1, 15))
63+
GPIO1_16 = Pin((1, 16))
64+
GPIO1_17 = Pin((1, 17))
65+
GPIO1_18 = Pin((1, 18))
66+
GPIO1_19 = Pin((1, 19))
67+
GPIO1_20 = Pin((1, 20))
68+
GPIO1_21 = Pin((1, 21))
69+
GPIO1_22 = Pin((1, 22))
70+
GPIO1_23 = Pin((1, 23))
71+
GPIO1_24 = Pin((1, 24))
72+
GPIO1_25 = Pin((1, 25))
73+
GPIO1_26 = Pin((1, 26))
74+
GPIO1_27 = Pin((1, 27))
75+
GPIO1_28 = Pin((1, 28))
76+
GPIO1_29 = Pin((1, 29))
77+
GPIO1_30 = Pin((1, 30))
78+
GPIO1_31 = Pin((1, 31))
79+
GPIO2_0 = Pin((2, 0))
80+
UART0_TX = GPIO2_0
81+
GPIO2_1 = Pin((2, 1))
82+
UART0_RX = GPIO2_1
83+
GPIO2_2 = Pin((2, 2))
84+
GPIO2_3 = Pin((2, 3))
85+
GPIO2_4 = Pin((2, 4))
86+
GPIO2_5 = Pin((2, 5))
87+
GPIO2_6 = Pin((2, 6))
88+
GPIO2_7 = Pin((2, 7))
89+
GPIO2_8 = Pin((2, 8))
90+
GPIO2_9 = Pin((2, 9))
91+
TWI2_SCL = GPIO2_9
92+
UART2_TX = GPIO2_9
93+
GPIO2_10 = Pin((2, 10))
94+
TWI2_SDA = GPIO2_10
95+
UART2_RX = GPIO2_10
96+
GPIO2_11 = Pin((2, 11))
97+
GPIO2_12 = Pin((2, 12))
98+
GPIO2_13 = Pin((2, 13))
99+
GPIO2_14 = Pin((2, 14))
100+
GPIO2_15 = Pin((2, 15))
101+
GPIO2_16 = Pin((2, 16))
102+
GPIO2_17 = Pin((2, 17))
103+
GPIO2_18 = Pin((2, 18))
104+
GPIO2_19 = Pin((2, 19))
105+
GPIO2_20 = Pin((2, 20))
106+
GPIO2_21 = Pin((2, 21))
107+
GPIO2_22 = Pin((2, 22))
108+
GPIO2_23 = Pin((2, 23))
109+
GPIO2_24 = Pin((2, 24))
110+
GPIO2_25 = Pin((2, 25))
111+
GPIO2_26 = Pin((2, 26))
112+
GPIO2_27 = Pin((2, 27))
113+
GPIO2_28 = Pin((2, 28))
114+
GPIO2_29 = Pin((2, 29))
115+
GPIO2_30 = Pin((2, 30))
116+
GPIO2_31 = Pin((2, 31))
117+
GPIO3_0 = Pin((3, 0))
118+
GPIO3_1 = Pin((3, 1))
119+
GPIO3_2 = Pin((3, 2))
120+
GPIO3_3 = Pin((3, 3))
121+
GPIO3_4 = Pin((3, 4))
122+
GPIO3_5 = Pin((3, 5))
123+
GPIO3_6 = Pin((3, 6))
124+
GPIO3_7 = Pin((3, 7))
125+
GPIO3_8 = Pin((3, 8))
126+
GPIO3_9 = Pin((3, 9))
127+
GPIO3_10 = Pin((3, 10))
128+
GPIO3_11 = Pin((3, 11))
129+
GPIO3_12 = Pin((3, 12))
130+
GPIO3_13 = Pin((3, 13))
131+
GPIO3_14 = Pin((3, 14))
132+
GPIO3_15 = Pin((3, 15))
133+
GPIO3_16 = Pin((3, 16))
134+
GPIO3_17 = Pin((3, 17))
135+
GPIO3_18 = Pin((3, 18))
136+
GPIO3_19 = Pin((3, 19))
137+
GPIO3_20 = Pin((3, 20))
138+
GPIO3_21 = Pin((3, 21))
139+
GPIO3_22 = Pin((3, 22))
140+
141+
uartPorts = (
142+
(0, UART0_TX, UART0_RX),
143+
(1, UART1_TX, UART1_RX),
144+
(2, UART2_TX, UART2_RX),
145+
(3, UART3_TX, UART3_RX),
146+
)
147+
148+
i2cPorts = ((2, TWI2_SCL, TWI2_SDA),)
149+
150+
spiPorts = ((2, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),)

src/board.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,9 @@
373373
elif board_id == ap_board.GENERIC_LINUX_PC:
374374
from adafruit_blinka.board.generic_linux_pc import *
375375

376+
elif board_id == ap_board.LICHEEPI_4A:
377+
from adafruit_blinka.board.licheepi_4a import *
378+
376379
elif "sphinx" in sys.modules:
377380
pass
378381

src/digitalio.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@
115115
from adafruit_blinka.microcontroller.allwinner.h616.pin import Pin
116116
elif detector.chip.D1_RISCV:
117117
from adafruit_blinka.microcontroller.allwinner.D1.pin import Pin
118+
elif detector.chip.TH1520:
119+
from adafruit_blinka.microcontroller.thead.th1520.pin import Pin
118120
# Special Case Boards
119121
elif detector.board.ftdi_ft232h:
120122
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
@@ -144,6 +144,8 @@ def delay_us(delay):
144144
from adafruit_blinka.microcontroller.rp2040_u2if import *
145145
elif chip_id == ap_chip.D1_RISCV:
146146
from adafruit_blinka.microcontroller.allwinner.D1 import *
147+
elif chip_id == ap_chip.TH1520:
148+
from adafruit_blinka.microcontroller.thead.th1520 import *
147149
elif chip_id == ap_chip.GENERIC_X86:
148150
print("WARNING: GENERIC_X86 is not fully supported. Some features may not work.")
149151
elif chip_id is None:

src/microcontroller/pin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@
139139
from adafruit_blinka.microcontroller.rp2040_u2if.pin import *
140140
elif chip_id == ap_chip.D1_RISCV:
141141
from adafruit_blinka.microcontroller.allwinner.D1.pin import *
142+
elif chip_id == ap_chip.TH1520:
143+
from adafruit_blinka.microcontroller.thead.th1520.pin import *
142144
elif "sphinx" in sys.modules:
143145
# pylint: disable=unused-import
144146
from adafruit_blinka.microcontroller.generic_micropython import Pin

0 commit comments

Comments
 (0)