1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2 /*
3  * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
4  */
5 
6 #ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__
7 #define __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__
8 
9 #define PAD_GPIO_OFFSET		0
10 #define PAD_FUNC_SHARE_OFFSET	64
11 #define PAD_GPIO(x)		(PAD_GPIO_OFFSET + (x))
12 #define PAD_FUNC_SHARE(x)	(PAD_FUNC_SHARE_OFFSET + (x))
13 
14 /*
15  * GPIOMUX bits:
16  *  | 31 - 24 | 23 - 16 | 15 - 8 |     7    |     6    |  5 - 0  |
17  *  |  dout   |  doen   |  din   | dout rev | doen rev | gpio nr |
18  *
19  * dout:     output signal
20  * doen:     output enable signal
21  * din:      optional input signal, 0xff = none
22  * dout rev: output signal reverse bit
23  * doen rev: output enable signal reverse bit
24  * gpio nr:  gpio number, 0 - 63
25  */
26 #define GPIOMUX(n, dout, doen, din) ( \
27 		(((dout) & 0x80000000) >> (31 - 7)) | (((dout) & 0xff) << 24) | \
28 		(((doen) & 0x80000000) >> (31 - 6)) | (((doen) & 0xff) << 16) | \
29 		(((din) & 0xff) << 8) | \
30 		((n) & 0x3f))
31 
32 #define GPO_REVERSE				0x80000000
33 
34 #define GPO_LOW					0
35 #define GPO_HIGH				1
36 #define GPO_ENABLE				0
37 #define GPO_DISABLE				1
38 #define GPO_CLK_GMAC_PAPHYREF			2
39 #define GPO_JTAG_TDO				3
40 #define GPO_JTAG_TDO_OEN			4
41 #define GPO_DMIC_CLK_OUT			5
42 #define GPO_DSP_JTDOEN_PAD			6
43 #define GPO_DSP_JTDO_PAD			7
44 #define GPO_I2C0_PAD_SCK_OE			8
45 #define GPO_I2C0_PAD_SCK_OEN			(GPO_I2C0_PAD_SCK_OE | GPO_REVERSE)
46 #define GPO_I2C0_PAD_SDA_OE			9
47 #define GPO_I2C0_PAD_SDA_OEN			(GPO_I2C0_PAD_SDA_OE | GPO_REVERSE)
48 #define GPO_I2C1_PAD_SCK_OE			10
49 #define GPO_I2C1_PAD_SCK_OEN			(GPO_I2C1_PAD_SCK_OE | GPO_REVERSE)
50 #define GPO_I2C1_PAD_SDA_OE			11
51 #define GPO_I2C1_PAD_SDA_OEN			(GPO_I2C1_PAD_SDA_OE | GPO_REVERSE)
52 #define GPO_I2C2_PAD_SCK_OE			12
53 #define GPO_I2C2_PAD_SCK_OEN			(GPO_I2C2_PAD_SCK_OE | GPO_REVERSE)
54 #define GPO_I2C2_PAD_SDA_OE			13
55 #define GPO_I2C2_PAD_SDA_OEN			(GPO_I2C2_PAD_SDA_OE | GPO_REVERSE)
56 #define GPO_I2C3_PAD_SCK_OE			14
57 #define GPO_I2C3_PAD_SCK_OEN			(GPO_I2C3_PAD_SCK_OE | GPO_REVERSE)
58 #define GPO_I2C3_PAD_SDA_OE			15
59 #define GPO_I2C3_PAD_SDA_OEN			(GPO_I2C3_PAD_SDA_OE | GPO_REVERSE)
60 #define GPO_I2SRX_BCLK_OUT			16
61 #define GPO_I2SRX_BCLK_OUT_OEN			17
62 #define GPO_I2SRX_LRCK_OUT			18
63 #define GPO_I2SRX_LRCK_OUT_OEN			19
64 #define GPO_I2SRX_MCLK_OUT			20
65 #define GPO_I2STX_BCLK_OUT			21
66 #define GPO_I2STX_BCLK_OUT_OEN			22
67 #define GPO_I2STX_LRCK_OUT			23
68 #define GPO_I2STX_LRCK_OUT_OEN			24
69 #define GPO_I2STX_MCLK_OUT			25
70 #define GPO_I2STX_SDOUT0			26
71 #define GPO_I2STX_SDOUT1			27
72 #define GPO_LCD_PAD_CSM_N			28
73 #define GPO_PWM_PAD_OE_N_BIT0			29
74 #define GPO_PWM_PAD_OE_N_BIT1			30
75 #define GPO_PWM_PAD_OE_N_BIT2			31
76 #define GPO_PWM_PAD_OE_N_BIT3			32
77 #define GPO_PWM_PAD_OE_N_BIT4			33
78 #define GPO_PWM_PAD_OE_N_BIT5			34
79 #define GPO_PWM_PAD_OE_N_BIT6			35
80 #define GPO_PWM_PAD_OE_N_BIT7			36
81 #define GPO_PWM_PAD_OUT_BIT0			37
82 #define GPO_PWM_PAD_OUT_BIT1			38
83 #define GPO_PWM_PAD_OUT_BIT2			39
84 #define GPO_PWM_PAD_OUT_BIT3			40
85 #define GPO_PWM_PAD_OUT_BIT4			41
86 #define GPO_PWM_PAD_OUT_BIT5			42
87 #define GPO_PWM_PAD_OUT_BIT6			43
88 #define GPO_PWM_PAD_OUT_BIT7			44
89 #define GPO_PWMDAC_LEFT_OUT			45
90 #define GPO_PWMDAC_RIGHT_OUT			46
91 #define GPO_QSPI_CSN1_OUT			47
92 #define GPO_QSPI_CSN2_OUT			48
93 #define GPO_QSPI_CSN3_OUT			49
94 #define GPO_REGISTER23_SCFG_CMSENSOR_RST0	50
95 #define GPO_REGISTER23_SCFG_CMSENSOR_RST1	51
96 #define GPO_REGISTER32_SCFG_GMAC_PHY_RSTN	52
97 #define GPO_SDIO0_PAD_CARD_POWER_EN		53
98 #define GPO_SDIO0_PAD_CCLK_OUT			54
99 #define GPO_SDIO0_PAD_CCMD_OE			55
100 #define GPO_SDIO0_PAD_CCMD_OEN			(GPO_SDIO0_PAD_CCMD_OE | GPO_REVERSE)
101 #define GPO_SDIO0_PAD_CCMD_OUT			56
102 #define GPO_SDIO0_PAD_CDATA_OE_BIT0		57
103 #define GPO_SDIO0_PAD_CDATA_OEN_BIT0		(GPO_SDIO0_PAD_CDATA_OE_BIT0 | GPO_REVERSE)
104 #define GPO_SDIO0_PAD_CDATA_OE_BIT1		58
105 #define GPO_SDIO0_PAD_CDATA_OEN_BIT1		(GPO_SDIO0_PAD_CDATA_OE_BIT1 | GPO_REVERSE)
106 #define GPO_SDIO0_PAD_CDATA_OE_BIT2		59
107 #define GPO_SDIO0_PAD_CDATA_OEN_BIT2		(GPO_SDIO0_PAD_CDATA_OE_BIT2 | GPO_REVERSE)
108 #define GPO_SDIO0_PAD_CDATA_OE_BIT3		60
109 #define GPO_SDIO0_PAD_CDATA_OEN_BIT3		(GPO_SDIO0_PAD_CDATA_OE_BIT3 | GPO_REVERSE)
110 #define GPO_SDIO0_PAD_CDATA_OE_BIT4		61
111 #define GPO_SDIO0_PAD_CDATA_OEN_BIT4		(GPO_SDIO0_PAD_CDATA_OE_BIT4 | GPO_REVERSE)
112 #define GPO_SDIO0_PAD_CDATA_OE_BIT5		62
113 #define GPO_SDIO0_PAD_CDATA_OEN_BIT5		(GPO_SDIO0_PAD_CDATA_OE_BIT5 | GPO_REVERSE)
114 #define GPO_SDIO0_PAD_CDATA_OE_BIT6		63
115 #define GPO_SDIO0_PAD_CDATA_OEN_BIT6		(GPO_SDIO0_PAD_CDATA_OE_BIT6 | GPO_REVERSE)
116 #define GPO_SDIO0_PAD_CDATA_OE_BIT7		64
117 #define GPO_SDIO0_PAD_CDATA_OEN_BIT7		(GPO_SDIO0_PAD_CDATA_OE_BIT7 | GPO_REVERSE)
118 #define GPO_SDIO0_PAD_CDATA_OUT_BIT0		65
119 #define GPO_SDIO0_PAD_CDATA_OUT_BIT1		66
120 #define GPO_SDIO0_PAD_CDATA_OUT_BIT2		67
121 #define GPO_SDIO0_PAD_CDATA_OUT_BIT3		68
122 #define GPO_SDIO0_PAD_CDATA_OUT_BIT4		69
123 #define GPO_SDIO0_PAD_CDATA_OUT_BIT5		70
124 #define GPO_SDIO0_PAD_CDATA_OUT_BIT6		71
125 #define GPO_SDIO0_PAD_CDATA_OUT_BIT7		72
126 #define GPO_SDIO0_PAD_RST_N			73
127 #define GPO_SDIO1_PAD_CARD_POWER_EN		74
128 #define GPO_SDIO1_PAD_CCLK_OUT			75
129 #define GPO_SDIO1_PAD_CCMD_OE			76
130 #define GPO_SDIO1_PAD_CCMD_OEN			(GPO_SDIO1_PAD_CCMD_OE | GPO_REVERSE)
131 #define GPO_SDIO1_PAD_CCMD_OUT			77
132 #define GPO_SDIO1_PAD_CDATA_OE_BIT0		78
133 #define GPO_SDIO1_PAD_CDATA_OEN_BIT0		(GPO_SDIO1_PAD_CDATA_OE_BIT0 | GPO_REVERSE)
134 #define GPO_SDIO1_PAD_CDATA_OE_BIT1		79
135 #define GPO_SDIO1_PAD_CDATA_OEN_BIT1		(GPO_SDIO1_PAD_CDATA_OE_BIT1 | GPO_REVERSE)
136 #define GPO_SDIO1_PAD_CDATA_OE_BIT2		80
137 #define GPO_SDIO1_PAD_CDATA_OEN_BIT2		(GPO_SDIO1_PAD_CDATA_OE_BIT2 | GPO_REVERSE)
138 #define GPO_SDIO1_PAD_CDATA_OE_BIT3		81
139 #define GPO_SDIO1_PAD_CDATA_OEN_BIT3		(GPO_SDIO1_PAD_CDATA_OE_BIT3 | GPO_REVERSE)
140 #define GPO_SDIO1_PAD_CDATA_OE_BIT4		82
141 #define GPO_SDIO1_PAD_CDATA_OEN_BIT4		(GPO_SDIO1_PAD_CDATA_OE_BIT4 | GPO_REVERSE)
142 #define GPO_SDIO1_PAD_CDATA_OE_BIT5		83
143 #define GPO_SDIO1_PAD_CDATA_OEN_BIT5		(GPO_SDIO1_PAD_CDATA_OE_BIT5 | GPO_REVERSE)
144 #define GPO_SDIO1_PAD_CDATA_OE_BIT6		84
145 #define GPO_SDIO1_PAD_CDATA_OEN_BIT6		(GPO_SDIO1_PAD_CDATA_OE_BIT6 | GPO_REVERSE)
146 #define GPO_SDIO1_PAD_CDATA_OE_BIT7		85
147 #define GPO_SDIO1_PAD_CDATA_OEN_BIT7		(GPO_SDIO1_PAD_CDATA_OE_BIT7 | GPO_REVERSE)
148 #define GPO_SDIO1_PAD_CDATA_OUT_BIT0		86
149 #define GPO_SDIO1_PAD_CDATA_OUT_BIT1		87
150 #define GPO_SDIO1_PAD_CDATA_OUT_BIT2		88
151 #define GPO_SDIO1_PAD_CDATA_OUT_BIT3		89
152 #define GPO_SDIO1_PAD_CDATA_OUT_BIT4		90
153 #define GPO_SDIO1_PAD_CDATA_OUT_BIT5		91
154 #define GPO_SDIO1_PAD_CDATA_OUT_BIT6		92
155 #define GPO_SDIO1_PAD_CDATA_OUT_BIT7		93
156 #define GPO_SDIO1_PAD_RST_N			94
157 #define GPO_SPDIF_TX_SDOUT			95
158 #define GPO_SPDIF_TX_SDOUT_OEN			96
159 #define GPO_SPI0_PAD_OE_N			97
160 #define GPO_SPI0_PAD_SCK_OUT			98
161 #define GPO_SPI0_PAD_SS_0_N			99
162 #define GPO_SPI0_PAD_SS_1_N			100
163 #define GPO_SPI0_PAD_TXD			101
164 #define GPO_SPI1_PAD_OE_N			102
165 #define GPO_SPI1_PAD_SCK_OUT			103
166 #define GPO_SPI1_PAD_SS_0_N			104
167 #define GPO_SPI1_PAD_SS_1_N			105
168 #define GPO_SPI1_PAD_TXD			106
169 #define GPO_SPI2_PAD_OE_N			107
170 #define GPO_SPI2_PAD_SCK_OUT			108
171 #define GPO_SPI2_PAD_SS_0_N			109
172 #define GPO_SPI2_PAD_SS_1_N			110
173 #define GPO_SPI2_PAD_TXD			111
174 #define GPO_SPI2AHB_PAD_OE_N_BIT0		112
175 #define GPO_SPI2AHB_PAD_OE_N_BIT1		113
176 #define GPO_SPI2AHB_PAD_OE_N_BIT2		114
177 #define GPO_SPI2AHB_PAD_OE_N_BIT3		115
178 #define GPO_SPI2AHB_PAD_TXD_BIT0		116
179 #define GPO_SPI2AHB_PAD_TXD_BIT1		117
180 #define GPO_SPI2AHB_PAD_TXD_BIT2		118
181 #define GPO_SPI2AHB_PAD_TXD_BIT3		119
182 #define GPO_SPI3_PAD_OE_N			120
183 #define GPO_SPI3_PAD_SCK_OUT			121
184 #define GPO_SPI3_PAD_SS_0_N			122
185 #define GPO_SPI3_PAD_SS_1_N			123
186 #define GPO_SPI3_PAD_TXD			124
187 #define GPO_UART0_PAD_DTRN			125
188 #define GPO_UART0_PAD_RTSN			126
189 #define GPO_UART0_PAD_SOUT			127
190 #define GPO_UART1_PAD_SOUT			128
191 #define GPO_UART2_PAD_DTR_N			129
192 #define GPO_UART2_PAD_RTS_N			130
193 #define GPO_UART2_PAD_SOUT			131
194 #define GPO_UART3_PAD_SOUT			132
195 #define GPO_USB_DRV_BUS				133
196 
197 #define GPI_CPU_JTAG_TCK			0
198 #define GPI_CPU_JTAG_TDI			1
199 #define GPI_CPU_JTAG_TMS			2
200 #define GPI_CPU_JTAG_TRST			3
201 #define GPI_DMIC_SDIN_BIT0			4
202 #define GPI_DMIC_SDIN_BIT1			5
203 #define GPI_DSP_JTCK_PAD			6
204 #define GPI_DSP_JTDI_PAD			7
205 #define GPI_DSP_JTMS_PAD			8
206 #define GPI_DSP_TRST_PAD			9
207 #define GPI_I2C0_PAD_SCK_IN			10
208 #define GPI_I2C0_PAD_SDA_IN			11
209 #define GPI_I2C1_PAD_SCK_IN			12
210 #define GPI_I2C1_PAD_SDA_IN			13
211 #define GPI_I2C2_PAD_SCK_IN			14
212 #define GPI_I2C2_PAD_SDA_IN			15
213 #define GPI_I2C3_PAD_SCK_IN			16
214 #define GPI_I2C3_PAD_SDA_IN			17
215 #define GPI_I2SRX_BCLK_IN			18
216 #define GPI_I2SRX_LRCK_IN			19
217 #define GPI_I2SRX_SDIN_BIT0			20
218 #define GPI_I2SRX_SDIN_BIT1			21
219 #define GPI_I2SRX_SDIN_BIT2			22
220 #define GPI_I2STX_BCLK_IN			23
221 #define GPI_I2STX_LRCK_IN			24
222 #define GPI_SDIO0_PAD_CARD_DETECT_N		25
223 #define GPI_SDIO0_PAD_CARD_WRITE_PRT		26
224 #define GPI_SDIO0_PAD_CCMD_IN			27
225 #define GPI_SDIO0_PAD_CDATA_IN_BIT0		28
226 #define GPI_SDIO0_PAD_CDATA_IN_BIT1		29
227 #define GPI_SDIO0_PAD_CDATA_IN_BIT2		30
228 #define GPI_SDIO0_PAD_CDATA_IN_BIT3		31
229 #define GPI_SDIO0_PAD_CDATA_IN_BIT4		32
230 #define GPI_SDIO0_PAD_CDATA_IN_BIT5		33
231 #define GPI_SDIO0_PAD_CDATA_IN_BIT6		34
232 #define GPI_SDIO0_PAD_CDATA_IN_BIT7		35
233 #define GPI_SDIO1_PAD_CARD_DETECT_N		36
234 #define GPI_SDIO1_PAD_CARD_WRITE_PRT		37
235 #define GPI_SDIO1_PAD_CCMD_IN			38
236 #define GPI_SDIO1_PAD_CDATA_IN_BIT0		39
237 #define GPI_SDIO1_PAD_CDATA_IN_BIT1		40
238 #define GPI_SDIO1_PAD_CDATA_IN_BIT2		41
239 #define GPI_SDIO1_PAD_CDATA_IN_BIT3		42
240 #define GPI_SDIO1_PAD_CDATA_IN_BIT4		43
241 #define GPI_SDIO1_PAD_CDATA_IN_BIT5		44
242 #define GPI_SDIO1_PAD_CDATA_IN_BIT6		45
243 #define GPI_SDIO1_PAD_CDATA_IN_BIT7		46
244 #define GPI_SPDIF_RX_SDIN			47
245 #define GPI_SPI0_PAD_RXD			48
246 #define GPI_SPI0_PAD_SS_IN_N			49
247 #define GPI_SPI1_PAD_RXD			50
248 #define GPI_SPI1_PAD_SS_IN_N			51
249 #define GPI_SPI2_PAD_RXD			52
250 #define GPI_SPI2_PAD_SS_IN_N			53
251 #define GPI_SPI2AHB_PAD_RXD_BIT0		54
252 #define GPI_SPI2AHB_PAD_RXD_BIT1		55
253 #define GPI_SPI2AHB_PAD_RXD_BIT2		56
254 #define GPI_SPI2AHB_PAD_RXD_BIT3		57
255 #define GPI_SPI2AHB_PAD_SS_N			58
256 #define GPI_SPI2AHB_SLV_SCLKIN			59
257 #define GPI_SPI3_PAD_RXD			60
258 #define GPI_SPI3_PAD_SS_IN_N			61
259 #define GPI_UART0_PAD_CTSN			62
260 #define GPI_UART0_PAD_DCDN			63
261 #define GPI_UART0_PAD_DSRN			64
262 #define GPI_UART0_PAD_RIN			65
263 #define GPI_UART0_PAD_SIN			66
264 #define GPI_UART1_PAD_SIN			67
265 #define GPI_UART2_PAD_CTS_N			68
266 #define GPI_UART2_PAD_DCD_N			69
267 #define GPI_UART2_PAD_DSR_N			70
268 #define GPI_UART2_PAD_RI_N			71
269 #define GPI_UART2_PAD_SIN			72
270 #define GPI_UART3_PAD_SIN			73
271 #define GPI_USB_OVER_CURRENT			74
272 
273 #define GPI_NONE				0xff
274 
275 #endif /* __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__ */
276