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

source code of linux/include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h