1 # SPDX-FileCopyrightText: 2022 MrPanc0 for Adafruit Industries
2 # SPDX-FileCopyrightText: 2023 Steve Jeong for Hardkernel
4 # SPDX-License-Identifier: MIT
6 """A Pin class for use with Rockchip RK3568B2."""
8 from adafruit_blinka.agnostic import detector
9 from adafruit_blinka.microcontroller.alias import get_dts_alias, get_pwm_chipid
10 from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
12 GPIO3C_6 = Pin((3, 22))
13 GPIO3C_7 = Pin((3, 23))
14 GPIO3D_0 = Pin((3, 24))
15 GPIO3D_1 = Pin((3, 25))
16 GPIO3D_2 = Pin((3, 26))
17 GPIO3D_3 = Pin((3, 27))
18 GPIO3D_4 = Pin((3, 28))
19 GPIO3D_5 = Pin((3, 29))
20 GPIO3D_6 = Pin((3, 30))
21 GPIO3D_7 = Pin((3, 31))
22 GPIO3B_2 = Pin((3, 10))
23 GPIO3B_5 = Pin((3, 13))
24 GPIO3B_6 = Pin((3, 14))
25 GPIO0B_3 = Pin((0, 11))
26 GPIO0B_4 = Pin((0, 12))
27 GPIO0B_5 = Pin((0, 13))
28 GPIO0B_6 = Pin((0, 14))
29 GPIO0C_0 = Pin((0, 16))
30 GPIO0C_1 = Pin((0, 17))
31 GPIO2D_0 = Pin((2, 24))
32 GPIO2D_1 = Pin((2, 25))
33 GPIO2D_2 = Pin((2, 26))
34 GPIO2D_3 = Pin((2, 27))
35 GPIO4B_6 = Pin((4, 14))
36 GPIO4C_1 = Pin((4, 17))
46 SPI0_SCLK_M1 = GPIO2D_3
47 SPI0_MISO_M1 = GPIO2D_0
48 SPI0_MOSI_M1 = GPIO2D_1
60 # ordered as i2cId, SCL, SDA
62 (1, I2C1_SCL, I2C1_SDA),
65 # SysFS pwm outputs, pwm channel and pin in first tuple
71 # ordered as spiId, sckId, mosiId, misoId
72 spiPorts = ((0, SPI0_SCLK_M1, SPI0_MOSI_M1, SPI0_MISO_M1),)
74 # SysFS pwm outputs, pwm channel and pin in first tuple
77 # ordered as uartId, txId, rxId
80 # SysFS analog inputs, Ordered as analog analogInId, device, and channel
86 board = detector.board.id
87 if board in ("ODROID_M1"):
88 alias = get_dts_alias("fe5c0000.i2c")
90 globals()[alias + "_SCL"] = GPIO3B_5
91 globals()[alias + "_SDA"] = GPIO3B_6
92 i2cPorts.append((int(alias[-1]), GPIO3B_5, GPIO3B_6))
93 alias = get_pwm_chipid("fdd70010.pwm")
95 globals()["PWM" + alias] = GPIO0C_0
96 pwmOuts.append(((int(alias[-1]), 0), GPIO0C_0))
97 alias = get_pwm_chipid("fdd70020.pwm")
99 globals()["PWM" + alias] = GPIO0C_1
100 pwmOuts.append(((int(alias[-1]), 0), GPIO0C_1))
101 alias = get_pwm_chipid("fe6f0010.pwm")
102 if alias is not None:
103 globals()["PWM" + alias] = GPIO3B_2
104 pwmOuts.append(((int(alias[-1]), 0), GPIO3B_2))
105 alias = get_dts_alias("fdd50000.serial")
106 if alias is not None:
107 globals()[alias + "_TX"] = GPIO0C_1
108 globals()[alias + "_RX"] = GPIO0C_0
109 uartPorts.append((int(alias[-1]), GPIO0C_1, GPIO0C_0))
110 alias = get_dts_alias("fe650000.serial")
111 if alias is not None:
112 globals()[alias + "_TX"] = GPIO3D_6
113 globals()[alias + "_RX"] = GPIO3D_7
114 uartPorts.append((int(alias[-1]), GPIO3D_6, GPIO3D_7))
117 i2cPorts = tuple(i2cPorts)
118 pwmOuts = tuple(pwmOuts)
119 uartPorts = tuple(uartPorts)