]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/allwinner/h618/pin.py
Merge pull request #1005 from makermelissa/libgpiod-fix
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / allwinner / h618 / pin.py
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 ]