]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/rockchip/rk3568b2/pin.py
Merge pull request #751 from how2flow/odroid
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / rockchip / rk3568b2 / pin.py
1 # SPDX-FileCopyrightText: 2022 MrPanc0 for Adafruit Industries
2 # SPDX-FileCopyrightText: 2023 Steve Jeong for Hardkernel
3 #
4 # SPDX-License-Identifier: MIT
5
6 """A Pin class for use with Rockchip RK3568B2."""
7
8 from adafruit_blinka.agnostic import detector
9 from adafruit_blinka.microcontroller.alias import get_dts_alias
10 from adafruit_blinka.microcontroller.alias import get_pwm_chipid
11 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
12
13 GPIO3C_6 = Pin((3, 22))
14 GPIO3C_7 = Pin((3, 23))
15 GPIO3D_0 = Pin((3, 24))
16 GPIO3D_1 = Pin((3, 25))
17 GPIO3D_2 = Pin((3, 26))
18 GPIO3D_3 = Pin((3, 27))
19 GPIO3D_4 = Pin((3, 28))
20 GPIO3D_5 = Pin((3, 29))
21 GPIO3D_6 = Pin((3, 30))
22 GPIO3D_7 = Pin((3, 31))
23 GPIO3B_2 = Pin((3, 10))
24 GPIO3B_5 = Pin((3, 13))
25 GPIO3B_6 = Pin((3, 14))
26 GPIO0B_3 = Pin((0, 11))
27 GPIO0B_4 = Pin((0, 12))
28 GPIO0B_5 = Pin((0, 13))
29 GPIO0B_6 = Pin((0, 14))
30 GPIO0C_0 = Pin((0, 16))
31 GPIO0C_1 = Pin((0, 17))
32 GPIO2D_0 = Pin((2, 24))
33 GPIO2D_1 = Pin((2, 25))
34 GPIO2D_2 = Pin((2, 26))
35 GPIO2D_3 = Pin((2, 27))
36 GPIO4B_6 = Pin((4, 14))
37 GPIO4C_1 = Pin((4, 17))
38 ADC_AIN0 = 37
39 ADC_AIN1 = 40
40
41 # I2C
42 I2C1_SCL = GPIO0B_3
43 I2C1_SDA = GPIO0B_4
44
45 # SPI
46 SPI0_CS_M1 = GPIO2D_2
47 SPI0_SCLK_M1 = GPIO2D_3
48 SPI0_MISO_M1 = GPIO2D_0
49 SPI0_MOSI_M1 = GPIO2D_1
50
51 # UART
52 UART0_TX = GPIO0C_1
53 UART0_RX = GPIO0C_0
54 UART1_TX = GPIO3D_6
55 UART1_RX = GPIO3D_7
56
57 # PWM
58 # PWM0 = GPIO4_C2
59 # PWM1 = GPIO4_C6
60
61 # ordered as i2cId, SCL, SDA
62 i2cPorts = [
63     (1, I2C1_SCL, I2C1_SDA),
64 ]
65
66 # SysFS pwm outputs, pwm channel and pin in first tuple
67 # pwmOuts = (
68 #    ((0, 0), PWM0),
69 #   ((1, 0), PWM1),
70 # )
71
72 # ordered as spiId, sckId, mosiId, misoId
73 spiPorts = ((0, SPI0_SCLK_M1, SPI0_MOSI_M1, SPI0_MISO_M1),)
74
75 # SysFS pwm outputs, pwm channel and pin in first tuple
76 pwmOuts = []
77
78 # ordered as uartId, txId, rxId
79 uartPorts = []
80
81 # SysFS analog inputs, Ordered as analog analogInId, device, and channel
82 analogIns = (
83     (ADC_AIN0, 0, 0),
84     (ADC_AIN1, 0, 0),
85 )
86
87 board = detector.board.id
88 if board in ("ODROID_M1"):
89     alias = get_dts_alias("fe5c0000.i2c")
90     if alias is not None:
91         globals()[alias + "_SCL"] = GPIO3B_5
92         globals()[alias + "_SDA"] = GPIO3B_6
93         i2cPorts.append((int(alias[3]), GPIO3B_5, GPIO3B_6))
94     alias = get_pwm_chipid("fdd70010.pwm")
95     if alias is not None:
96         globals()["PWM" + alias] = GPIO0C_0
97         pwmOuts.append(((int(alias[3]), 0), GPIO0C_0))
98     alias = get_pwm_chipid("fdd70020.pwm")
99     if alias is not None:
100         globals()["PWM" + alias] = GPIO0C_1
101         pwmOuts.append(((int(alias[3]), 0), GPIO0C_1))
102     alias = get_pwm_chipid("fe6f0010.pwm")
103     if alias is not None:
104         globals()["PWM" + alias] = GPIO3B_2
105         pwmOuts.append(((int(alias[3]), 0), GPIO3B_2))
106     alias = get_dts_alias("fdd50000.serial")
107     if alias is not None:
108         globals()[alias + "_TX"] = GPIO0C_1
109         globals()[alias + "_RX"] = GPIO0C_0
110         uartPorts.append((int(alias[3]), GPIO0C_1, GPIO0C_0))
111     alias = get_dts_alias("fe650000.serial")
112     if alias is not None:
113         globals()[alias + "_TX"] = GPIO3D_6
114         globals()[alias + "_RX"] = GPIO3D_7
115         uartPorts.append((int(alias[3]), GPIO3D_6, GPIO3D_7))
116
117
118 i2cPorts = tuple(i2cPorts)
119 pwmOuts = tuple(pwmOuts)
120 uartPorts = tuple(uartPorts)