1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Copyright (C) 2017 Sanechips Technology Co., Ltd.
4*4882a593Smuzhiyun * Copyright 2017 Linaro Ltd.
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun #include <linux/module.h>
8*4882a593Smuzhiyun #include <linux/of.h>
9*4882a593Smuzhiyun #include <linux/of_address.h>
10*4882a593Smuzhiyun #include <linux/of_device.h>
11*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
12*4882a593Smuzhiyun #include <linux/platform_device.h>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun #include "pinctrl-zx.h"
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun #define TOP_REG0 0x00
17*4882a593Smuzhiyun #define TOP_REG1 0x04
18*4882a593Smuzhiyun #define TOP_REG2 0x08
19*4882a593Smuzhiyun #define TOP_REG3 0x0c
20*4882a593Smuzhiyun #define TOP_REG4 0x10
21*4882a593Smuzhiyun #define TOP_REG5 0x14
22*4882a593Smuzhiyun #define TOP_REG6 0x18
23*4882a593Smuzhiyun #define TOP_REG7 0x1c
24*4882a593Smuzhiyun #define TOP_REG8 0x20
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun /*
27*4882a593Smuzhiyun * The pin numbering starts from AON pins with reserved ones included,
28*4882a593Smuzhiyun * so that register data like offset and bit position for AON pins can
29*4882a593Smuzhiyun * be calculated from pin number.
30*4882a593Smuzhiyun */
31*4882a593Smuzhiyun enum zx296718_pin {
32*4882a593Smuzhiyun /* aon_pmm_reg_0 */
33*4882a593Smuzhiyun I2C3_SCL = 0,
34*4882a593Smuzhiyun I2C3_SDA = 1,
35*4882a593Smuzhiyun AON_RESERVED0 = 2,
36*4882a593Smuzhiyun AON_RESERVED1 = 3,
37*4882a593Smuzhiyun SEC_EN = 4,
38*4882a593Smuzhiyun UART0_RXD = 5,
39*4882a593Smuzhiyun UART0_TXD = 6,
40*4882a593Smuzhiyun IR_IN = 7,
41*4882a593Smuzhiyun SPI0_CLK = 8,
42*4882a593Smuzhiyun SPI0_CS = 9,
43*4882a593Smuzhiyun SPI0_TXD = 10,
44*4882a593Smuzhiyun SPI0_RXD = 11,
45*4882a593Smuzhiyun KEY_COL0 = 12,
46*4882a593Smuzhiyun KEY_COL1 = 13,
47*4882a593Smuzhiyun KEY_COL2 = 14,
48*4882a593Smuzhiyun KEY_ROW0 = 15,
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun /* aon_pmm_reg_1 */
51*4882a593Smuzhiyun KEY_ROW1 = 16,
52*4882a593Smuzhiyun KEY_ROW2 = 17,
53*4882a593Smuzhiyun HDMI_SCL = 18,
54*4882a593Smuzhiyun HDMI_SDA = 19,
55*4882a593Smuzhiyun JTAG_TCK = 20,
56*4882a593Smuzhiyun JTAG_TRSTN = 21,
57*4882a593Smuzhiyun JTAG_TMS = 22,
58*4882a593Smuzhiyun JTAG_TDI = 23,
59*4882a593Smuzhiyun JTAG_TDO = 24,
60*4882a593Smuzhiyun I2C0_SCL = 25,
61*4882a593Smuzhiyun I2C0_SDA = 26,
62*4882a593Smuzhiyun I2C1_SCL = 27,
63*4882a593Smuzhiyun I2C1_SDA = 28,
64*4882a593Smuzhiyun AON_RESERVED2 = 29,
65*4882a593Smuzhiyun AON_RESERVED3 = 30,
66*4882a593Smuzhiyun AON_RESERVED4 = 31,
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun /* aon_pmm_reg_2 */
69*4882a593Smuzhiyun SPI1_CLK = 32,
70*4882a593Smuzhiyun SPI1_CS = 33,
71*4882a593Smuzhiyun SPI1_TXD = 34,
72*4882a593Smuzhiyun SPI1_RXD = 35,
73*4882a593Smuzhiyun AON_RESERVED5 = 36,
74*4882a593Smuzhiyun AON_RESERVED6 = 37,
75*4882a593Smuzhiyun AUDIO_DET = 38,
76*4882a593Smuzhiyun SPDIF_OUT = 39,
77*4882a593Smuzhiyun HDMI_CEC = 40,
78*4882a593Smuzhiyun HDMI_HPD = 41,
79*4882a593Smuzhiyun GMAC_25M_OUT = 42,
80*4882a593Smuzhiyun BOOT_SEL0 = 43,
81*4882a593Smuzhiyun BOOT_SEL1 = 44,
82*4882a593Smuzhiyun BOOT_SEL2 = 45,
83*4882a593Smuzhiyun DEEP_SLEEP_OUT_N = 46,
84*4882a593Smuzhiyun AON_RESERVED7 = 47,
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun /* top_pmm_reg_0 */
87*4882a593Smuzhiyun GMII_GTX_CLK = 48,
88*4882a593Smuzhiyun GMII_TX_CLK = 49,
89*4882a593Smuzhiyun GMII_TXD0 = 50,
90*4882a593Smuzhiyun GMII_TXD1 = 51,
91*4882a593Smuzhiyun GMII_TXD2 = 52,
92*4882a593Smuzhiyun GMII_TXD3 = 53,
93*4882a593Smuzhiyun GMII_TXD4 = 54,
94*4882a593Smuzhiyun GMII_TXD5 = 55,
95*4882a593Smuzhiyun GMII_TXD6 = 56,
96*4882a593Smuzhiyun GMII_TXD7 = 57,
97*4882a593Smuzhiyun GMII_TX_ER = 58,
98*4882a593Smuzhiyun GMII_TX_EN = 59,
99*4882a593Smuzhiyun GMII_RX_CLK = 60,
100*4882a593Smuzhiyun GMII_RXD0 = 61,
101*4882a593Smuzhiyun GMII_RXD1 = 62,
102*4882a593Smuzhiyun GMII_RXD2 = 63,
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun /* top_pmm_reg_1 */
105*4882a593Smuzhiyun GMII_RXD3 = 64,
106*4882a593Smuzhiyun GMII_RXD4 = 65,
107*4882a593Smuzhiyun GMII_RXD5 = 66,
108*4882a593Smuzhiyun GMII_RXD6 = 67,
109*4882a593Smuzhiyun GMII_RXD7 = 68,
110*4882a593Smuzhiyun GMII_RX_ER = 69,
111*4882a593Smuzhiyun GMII_RX_DV = 70,
112*4882a593Smuzhiyun GMII_COL = 71,
113*4882a593Smuzhiyun GMII_CRS = 72,
114*4882a593Smuzhiyun GMII_MDC = 73,
115*4882a593Smuzhiyun GMII_MDIO = 74,
116*4882a593Smuzhiyun SDIO1_CLK = 75,
117*4882a593Smuzhiyun SDIO1_CMD = 76,
118*4882a593Smuzhiyun SDIO1_DATA0 = 77,
119*4882a593Smuzhiyun SDIO1_DATA1 = 78,
120*4882a593Smuzhiyun SDIO1_DATA2 = 79,
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun /* top_pmm_reg_2 */
123*4882a593Smuzhiyun SDIO1_DATA3 = 80,
124*4882a593Smuzhiyun SDIO1_CD = 81,
125*4882a593Smuzhiyun SDIO1_WP = 82,
126*4882a593Smuzhiyun USIM1_CD = 83,
127*4882a593Smuzhiyun USIM1_CLK = 84,
128*4882a593Smuzhiyun USIM1_RST = 85,
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun /* top_pmm_reg_3 */
131*4882a593Smuzhiyun USIM1_DATA = 86,
132*4882a593Smuzhiyun SDIO0_CLK = 87,
133*4882a593Smuzhiyun SDIO0_CMD = 88,
134*4882a593Smuzhiyun SDIO0_DATA0 = 89,
135*4882a593Smuzhiyun SDIO0_DATA1 = 90,
136*4882a593Smuzhiyun SDIO0_DATA2 = 91,
137*4882a593Smuzhiyun SDIO0_DATA3 = 92,
138*4882a593Smuzhiyun SDIO0_CD = 93,
139*4882a593Smuzhiyun SDIO0_WP = 94,
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun /* top_pmm_reg_4 */
142*4882a593Smuzhiyun TSI0_DATA0 = 95,
143*4882a593Smuzhiyun SPINOR_CLK = 96,
144*4882a593Smuzhiyun TSI2_DATA = 97,
145*4882a593Smuzhiyun TSI2_CLK = 98,
146*4882a593Smuzhiyun TSI2_SYNC = 99,
147*4882a593Smuzhiyun TSI2_VALID = 100,
148*4882a593Smuzhiyun SPINOR_CS = 101,
149*4882a593Smuzhiyun SPINOR_DQ0 = 102,
150*4882a593Smuzhiyun SPINOR_DQ1 = 103,
151*4882a593Smuzhiyun SPINOR_DQ2 = 104,
152*4882a593Smuzhiyun SPINOR_DQ3 = 105,
153*4882a593Smuzhiyun VGA_HS = 106,
154*4882a593Smuzhiyun VGA_VS = 107,
155*4882a593Smuzhiyun TSI3_DATA = 108,
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun /* top_pmm_reg_5 */
158*4882a593Smuzhiyun TSI3_CLK = 109,
159*4882a593Smuzhiyun TSI3_SYNC = 110,
160*4882a593Smuzhiyun TSI3_VALID = 111,
161*4882a593Smuzhiyun I2S1_WS = 112,
162*4882a593Smuzhiyun I2S1_BCLK = 113,
163*4882a593Smuzhiyun I2S1_MCLK = 114,
164*4882a593Smuzhiyun I2S1_DIN0 = 115,
165*4882a593Smuzhiyun I2S1_DOUT0 = 116,
166*4882a593Smuzhiyun SPI3_CLK = 117,
167*4882a593Smuzhiyun SPI3_CS = 118,
168*4882a593Smuzhiyun SPI3_TXD = 119,
169*4882a593Smuzhiyun NAND_LDO_MS18_SEL = 120,
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun /* top_pmm_reg_6 */
172*4882a593Smuzhiyun SPI3_RXD = 121,
173*4882a593Smuzhiyun I2S0_MCLK = 122,
174*4882a593Smuzhiyun I2S0_BCLK = 123,
175*4882a593Smuzhiyun I2S0_WS = 124,
176*4882a593Smuzhiyun I2S0_DIN0 = 125,
177*4882a593Smuzhiyun I2S0_DOUT0 = 126,
178*4882a593Smuzhiyun I2C5_SCL = 127,
179*4882a593Smuzhiyun I2C5_SDA = 128,
180*4882a593Smuzhiyun SPI2_CLK = 129,
181*4882a593Smuzhiyun SPI2_CS = 130,
182*4882a593Smuzhiyun SPI2_TXD = 131,
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun /* top_pmm_reg_7 */
185*4882a593Smuzhiyun SPI2_RXD = 132,
186*4882a593Smuzhiyun NAND_WP_N = 133,
187*4882a593Smuzhiyun NAND_PAGE_SIZE0 = 134,
188*4882a593Smuzhiyun NAND_PAGE_SIZE1 = 135,
189*4882a593Smuzhiyun NAND_ADDR_CYCLE = 136,
190*4882a593Smuzhiyun NAND_RB0 = 137,
191*4882a593Smuzhiyun NAND_RB1 = 138,
192*4882a593Smuzhiyun NAND_RB2 = 139,
193*4882a593Smuzhiyun NAND_RB3 = 140,
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun /* top_pmm_reg_8 */
196*4882a593Smuzhiyun GMAC_125M_IN = 141,
197*4882a593Smuzhiyun GMAC_50M_OUT = 142,
198*4882a593Smuzhiyun SPINOR_SSCLK_LOOPBACK = 143,
199*4882a593Smuzhiyun SPINOR_SDIO1CLK_LOOPBACK = 144,
200*4882a593Smuzhiyun };
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun static const struct pinctrl_pin_desc zx296718_pins[] = {
203*4882a593Smuzhiyun /* aon_pmm_reg_0 */
204*4882a593Smuzhiyun AON_PIN(I2C3_SCL, TOP_REG2, 18, 2, 0x48, 0,
205*4882a593Smuzhiyun AON_MUX(0x0, "ANMI"), /* anmi */
206*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio29 */
207*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin0 */
208*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int4 */
209*4882a593Smuzhiyun TOP_MUX(0x0, "I2C3"), /* scl */
210*4882a593Smuzhiyun TOP_MUX(0x1, "SPI2"), /* txd */
211*4882a593Smuzhiyun TOP_MUX(0x2, "I2S1")), /* din0 */
212*4882a593Smuzhiyun AON_PIN(I2C3_SDA, TOP_REG2, 20, 2, 0x48, 9,
213*4882a593Smuzhiyun AON_MUX(0x0, "WD"), /* rst_b */
214*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio30 */
215*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin1 */
216*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int5 */
217*4882a593Smuzhiyun TOP_MUX(0x0, "I2C3"), /* sda */
218*4882a593Smuzhiyun TOP_MUX(0x1, "SPI2"), /* rxd */
219*4882a593Smuzhiyun TOP_MUX(0x2, "I2S0")), /* mclk */
220*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED0),
221*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED1),
222*4882a593Smuzhiyun AON_PIN(SEC_EN, TOP_REG3, 5, 1, 0x50, 0,
223*4882a593Smuzhiyun AON_MUX(0x0, "SEC"), /* en */
224*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio28 */
225*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin3 */
226*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int7 */
227*4882a593Smuzhiyun TOP_MUX(0x0, "I2C2"), /* sda */
228*4882a593Smuzhiyun TOP_MUX(0x1, "SPI2")), /* cs */
229*4882a593Smuzhiyun AON_PIN(UART0_RXD, 0, 0, 0, 0x50, 9,
230*4882a593Smuzhiyun AON_MUX(0x0, "UART0"), /* rxd */
231*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio20 */
232*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin34 */
233*4882a593Smuzhiyun AON_PIN(UART0_TXD, 0, 0, 0, 0x50, 18,
234*4882a593Smuzhiyun AON_MUX(0x0, "UART0"), /* txd */
235*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio21 */
236*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin32 */
237*4882a593Smuzhiyun AON_PIN(IR_IN, 0, 0, 0, 0x64, 0,
238*4882a593Smuzhiyun AON_MUX(0x0, "IR"), /* in */
239*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio0 */
240*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin27 */
241*4882a593Smuzhiyun AON_PIN(SPI0_CLK, TOP_REG3, 16, 1, 0x64, 9,
242*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int0 */
243*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio23 */
244*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin5 */
245*4882a593Smuzhiyun AON_MUX(0x3, "PCU"), /* test6 */
246*4882a593Smuzhiyun TOP_MUX(0x0, "SPI0"), /* clk */
247*4882a593Smuzhiyun TOP_MUX(0x1, "ISP")), /* flash_trig */
248*4882a593Smuzhiyun AON_PIN(SPI0_CS, TOP_REG3, 17, 1, 0x64, 18,
249*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int1 */
250*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio24 */
251*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin6 */
252*4882a593Smuzhiyun AON_MUX(0x3, "PCU"), /* test0 */
253*4882a593Smuzhiyun TOP_MUX(0x0, "SPI0"), /* cs */
254*4882a593Smuzhiyun TOP_MUX(0x1, "ISP")), /* prelight_trig */
255*4882a593Smuzhiyun AON_PIN(SPI0_TXD, TOP_REG3, 18, 1, 0x68, 0,
256*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int2 */
257*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio25 */
258*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin7 */
259*4882a593Smuzhiyun AON_MUX(0x3, "PCU"), /* test1 */
260*4882a593Smuzhiyun TOP_MUX(0x0, "SPI0"), /* txd */
261*4882a593Smuzhiyun TOP_MUX(0x1, "ISP")), /* shutter_trig */
262*4882a593Smuzhiyun AON_PIN(SPI0_RXD, TOP_REG3, 19, 1, 0x68, 9,
263*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int3 */
264*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio26 */
265*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin8 */
266*4882a593Smuzhiyun AON_MUX(0x3, "PCU"), /* test2 */
267*4882a593Smuzhiyun TOP_MUX(0x0, "SPI0"), /* rxd */
268*4882a593Smuzhiyun TOP_MUX(0x1, "ISP")), /* shutter_open */
269*4882a593Smuzhiyun AON_PIN(KEY_COL0, TOP_REG3, 20, 1, 0x68, 18,
270*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* col0 */
271*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio5 */
272*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin9 */
273*4882a593Smuzhiyun AON_MUX(0x3, "PCU"), /* test3 */
274*4882a593Smuzhiyun TOP_MUX(0x0, "UART3"), /* rxd */
275*4882a593Smuzhiyun TOP_MUX(0x1, "I2S0")), /* din1 */
276*4882a593Smuzhiyun AON_PIN(KEY_COL1, TOP_REG3, 21, 2, 0x6c, 0,
277*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* col1 */
278*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio6 */
279*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin10 */
280*4882a593Smuzhiyun TOP_MUX(0x0, "UART3"), /* txd */
281*4882a593Smuzhiyun TOP_MUX(0x1, "I2S0"), /* din2 */
282*4882a593Smuzhiyun TOP_MUX(0x2, "VGA")), /* scl */
283*4882a593Smuzhiyun AON_PIN(KEY_COL2, TOP_REG3, 23, 2, 0x6c, 9,
284*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* col2 */
285*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio7 */
286*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin11 */
287*4882a593Smuzhiyun TOP_MUX(0x0, "PWM"), /* out1 */
288*4882a593Smuzhiyun TOP_MUX(0x1, "I2S0"), /* din3 */
289*4882a593Smuzhiyun TOP_MUX(0x2, "VGA")), /* sda */
290*4882a593Smuzhiyun AON_PIN(KEY_ROW0, 0, 0, 0, 0x6c, 18,
291*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* row0 */
292*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio8 */
293*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin33 */
294*4882a593Smuzhiyun AON_MUX(0x3, "WD")), /* rst_b */
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun /* aon_pmm_reg_1 */
297*4882a593Smuzhiyun AON_PIN(KEY_ROW1, TOP_REG3, 25, 2, 0x70, 0,
298*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* row1 */
299*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio9 */
300*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin12 */
301*4882a593Smuzhiyun TOP_MUX(0x0, "LCD"), /* port0 lcd_te */
302*4882a593Smuzhiyun TOP_MUX(0x1, "I2S0"), /* dout2 */
303*4882a593Smuzhiyun TOP_MUX(0x2, "PWM"), /* out2 */
304*4882a593Smuzhiyun TOP_MUX(0x3, "VGA")), /* hs1 */
305*4882a593Smuzhiyun AON_PIN(KEY_ROW2, TOP_REG3, 27, 2, 0x70, 9,
306*4882a593Smuzhiyun AON_MUX(0x0, "KEY"), /* row2 */
307*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio10 */
308*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin13 */
309*4882a593Smuzhiyun TOP_MUX(0x0, "LCD"), /* port1 lcd_te */
310*4882a593Smuzhiyun TOP_MUX(0x1, "I2S0"), /* dout3 */
311*4882a593Smuzhiyun TOP_MUX(0x2, "PWM"), /* out3 */
312*4882a593Smuzhiyun TOP_MUX(0x3, "VGA")), /* vs1 */
313*4882a593Smuzhiyun AON_PIN(HDMI_SCL, TOP_REG3, 29, 1, 0x70, 18,
314*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test7 */
315*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio3 */
316*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin14 */
317*4882a593Smuzhiyun TOP_MUX(0x0, "HDMI"), /* scl */
318*4882a593Smuzhiyun TOP_MUX(0x1, "UART3")), /* rxd */
319*4882a593Smuzhiyun AON_PIN(HDMI_SDA, TOP_REG3, 30, 1, 0x74, 0,
320*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test8 */
321*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio4 */
322*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin15 */
323*4882a593Smuzhiyun TOP_MUX(0x0, "HDMI"), /* sda */
324*4882a593Smuzhiyun TOP_MUX(0x1, "UART3")), /* txd */
325*4882a593Smuzhiyun AON_PIN(JTAG_TCK, TOP_REG7, 3, 1, 0x78, 18,
326*4882a593Smuzhiyun AON_MUX(0x0, "JTAG"), /* tck */
327*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio11 */
328*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin22 */
329*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int4 */
330*4882a593Smuzhiyun TOP_MUX(0x0, "SPI4"), /* clk */
331*4882a593Smuzhiyun TOP_MUX(0x1, "UART1")), /* rxd */
332*4882a593Smuzhiyun AON_PIN(JTAG_TRSTN, TOP_REG7, 4, 1, 0xac, 0,
333*4882a593Smuzhiyun AON_MUX(0x0, "JTAG"), /* trstn */
334*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio12 */
335*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin23 */
336*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int5 */
337*4882a593Smuzhiyun TOP_MUX(0x0, "SPI4"), /* cs */
338*4882a593Smuzhiyun TOP_MUX(0x1, "UART1")), /* txd */
339*4882a593Smuzhiyun AON_PIN(JTAG_TMS, TOP_REG7, 5, 1, 0xac, 9,
340*4882a593Smuzhiyun AON_MUX(0x0, "JTAG"), /* tms */
341*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio13 */
342*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin24 */
343*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int6 */
344*4882a593Smuzhiyun TOP_MUX(0x0, "SPI4"), /* txd */
345*4882a593Smuzhiyun TOP_MUX(0x1, "UART2")), /* rxd */
346*4882a593Smuzhiyun AON_PIN(JTAG_TDI, TOP_REG7, 6, 1, 0xac, 18,
347*4882a593Smuzhiyun AON_MUX(0x0, "JTAG"), /* tdi */
348*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio14 */
349*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin25 */
350*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int7 */
351*4882a593Smuzhiyun TOP_MUX(0x0, "SPI4"), /* rxd */
352*4882a593Smuzhiyun TOP_MUX(0x1, "UART2")), /* txd */
353*4882a593Smuzhiyun AON_PIN(JTAG_TDO, 0, 0, 0, 0xb0, 0,
354*4882a593Smuzhiyun AON_MUX(0x0, "JTAG"), /* tdo */
355*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio15 */
356*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin26 */
357*4882a593Smuzhiyun AON_PIN(I2C0_SCL, 0, 0, 0, 0xb0, 9,
358*4882a593Smuzhiyun AON_MUX(0x0, "I2C0"), /* scl */
359*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio16 */
360*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin28 */
361*4882a593Smuzhiyun AON_PIN(I2C0_SDA, 0, 0, 0, 0xb0, 18,
362*4882a593Smuzhiyun AON_MUX(0x0, "I2C0"), /* sda */
363*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio17 */
364*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin29 */
365*4882a593Smuzhiyun AON_PIN(I2C1_SCL, TOP_REG8, 4, 1, 0xb4, 0,
366*4882a593Smuzhiyun AON_MUX(0x0, "I2C1"), /* scl */
367*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio18 */
368*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin30 */
369*4882a593Smuzhiyun TOP_MUX(0x0, "LCD")), /* port0 lcd_te */
370*4882a593Smuzhiyun AON_PIN(I2C1_SDA, TOP_REG8, 5, 1, 0xb4, 9,
371*4882a593Smuzhiyun AON_MUX(0x0, "I2C1"), /* sda */
372*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio19 */
373*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin31 */
374*4882a593Smuzhiyun TOP_MUX(0x0, "LCD")), /* port1 lcd_te */
375*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED2),
376*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED3),
377*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED4),
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun /* aon_pmm_reg_2 */
380*4882a593Smuzhiyun AON_PIN(SPI1_CLK, TOP_REG2, 6, 3, 0x40, 9,
381*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int0 */
382*4882a593Smuzhiyun AON_MUX(0x1, "PCU"), /* test12 */
383*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin39 */
384*4882a593Smuzhiyun TOP_MUX(0x0, "SPI1"), /* clk */
385*4882a593Smuzhiyun TOP_MUX(0x1, "PCM"), /* clk */
386*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio35 */
387*4882a593Smuzhiyun TOP_MUX(0x3, "I2C4"), /* scl */
388*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* mclk */
389*4882a593Smuzhiyun TOP_MUX(0x5, "ISP")), /* flash_trig */
390*4882a593Smuzhiyun AON_PIN(SPI1_CS, TOP_REG2, 9, 3, 0x40, 18,
391*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int1 */
392*4882a593Smuzhiyun AON_MUX(0x1, "PCU"), /* test13 */
393*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin40 */
394*4882a593Smuzhiyun TOP_MUX(0x0, "SPI1"), /* cs */
395*4882a593Smuzhiyun TOP_MUX(0x1, "PCM"), /* fs */
396*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio36 */
397*4882a593Smuzhiyun TOP_MUX(0x3, "I2C4"), /* sda */
398*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* bclk */
399*4882a593Smuzhiyun TOP_MUX(0x5, "ISP")), /* prelight_trig */
400*4882a593Smuzhiyun AON_PIN(SPI1_TXD, TOP_REG2, 12, 3, 0x44, 0,
401*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int2 */
402*4882a593Smuzhiyun AON_MUX(0x1, "PCU"), /* test14 */
403*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin41 */
404*4882a593Smuzhiyun TOP_MUX(0x0, "SPI1"), /* txd */
405*4882a593Smuzhiyun TOP_MUX(0x1, "PCM"), /* txd */
406*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio37 */
407*4882a593Smuzhiyun TOP_MUX(0x3, "UART5"), /* rxd */
408*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* ws */
409*4882a593Smuzhiyun TOP_MUX(0x5, "ISP")), /* shutter_trig */
410*4882a593Smuzhiyun AON_PIN(SPI1_RXD, TOP_REG2, 15, 3, 0x44, 9,
411*4882a593Smuzhiyun AON_MUX(0x0, "EXT_INT"), /* int3 */
412*4882a593Smuzhiyun AON_MUX(0x1, "PCU"), /* test15 */
413*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin42 */
414*4882a593Smuzhiyun TOP_MUX(0x0, "SPI1"), /* rxd */
415*4882a593Smuzhiyun TOP_MUX(0x1, "PCM"), /* rxd */
416*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio38 */
417*4882a593Smuzhiyun TOP_MUX(0x3, "UART5"), /* txd */
418*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* dout0 */
419*4882a593Smuzhiyun TOP_MUX(0x5, "ISP")), /* shutter_open */
420*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED5),
421*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED6),
422*4882a593Smuzhiyun AON_PIN(AUDIO_DET, TOP_REG3, 3, 2, 0x48, 18,
423*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test4 */
424*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio27 */
425*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin2 */
426*4882a593Smuzhiyun AON_MUX(0x3, "EXT_INT"), /* int16 */
427*4882a593Smuzhiyun TOP_MUX(0x0, "AUDIO"), /* detect */
428*4882a593Smuzhiyun TOP_MUX(0x1, "I2C2"), /* scl */
429*4882a593Smuzhiyun TOP_MUX(0x2, "SPI2")), /* clk */
430*4882a593Smuzhiyun AON_PIN(SPDIF_OUT, TOP_REG3, 14, 2, 0x78, 9,
431*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test5 */
432*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio22 */
433*4882a593Smuzhiyun AON_MUX(0x2, "nonAON"), /* pin4 */
434*4882a593Smuzhiyun TOP_MUX(0x0, "SPDIF"), /* out */
435*4882a593Smuzhiyun TOP_MUX(0x1, "PWM"), /* out0 */
436*4882a593Smuzhiyun TOP_MUX(0x2, "ISP")), /* fl_trig */
437*4882a593Smuzhiyun AON_PIN(HDMI_CEC, 0, 0, 0, 0x74, 9,
438*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test9 */
439*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio1 */
440*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin16 */
441*4882a593Smuzhiyun AON_PIN(HDMI_HPD, 0, 0, 0, 0x74, 18,
442*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test10 */
443*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio2 */
444*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin17 */
445*4882a593Smuzhiyun AON_PIN(GMAC_25M_OUT, 0, 0, 0, 0x78, 0,
446*4882a593Smuzhiyun AON_MUX(0x0, "PCU"), /* test11 */
447*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio31 */
448*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin43 */
449*4882a593Smuzhiyun AON_PIN(BOOT_SEL0, 0, 0, 0, 0xc0, 9,
450*4882a593Smuzhiyun AON_MUX(0x0, "BOOT"), /* sel0 */
451*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio18 */
452*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin18 */
453*4882a593Smuzhiyun AON_PIN(BOOT_SEL1, 0, 0, 0, 0xc0, 18,
454*4882a593Smuzhiyun AON_MUX(0x0, "BOOT"), /* sel1 */
455*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio19 */
456*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin19 */
457*4882a593Smuzhiyun AON_PIN(BOOT_SEL2, 0, 0, 0, 0xc4, 0,
458*4882a593Smuzhiyun AON_MUX(0x0, "BOOT"), /* sel2 */
459*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio20 */
460*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin20 */
461*4882a593Smuzhiyun AON_PIN(DEEP_SLEEP_OUT_N, 0, 0, 0, 0xc4, 9,
462*4882a593Smuzhiyun AON_MUX(0x0, "DEEPSLP"), /* deep sleep out_n */
463*4882a593Smuzhiyun AON_MUX(0x1, "AGPIO"), /* agpio21 */
464*4882a593Smuzhiyun AON_MUX(0x2, "nonAON")), /* pin21 */
465*4882a593Smuzhiyun ZX_RESERVED(AON_RESERVED7),
466*4882a593Smuzhiyun
467*4882a593Smuzhiyun /* top_pmm_reg_0 */
468*4882a593Smuzhiyun TOP_PIN(GMII_GTX_CLK, TOP_REG0, 0, 2, 0x10, 0,
469*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* gtx_clk */
470*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* clk */
471*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio0 */
472*4882a593Smuzhiyun TOP_PIN(GMII_TX_CLK, TOP_REG0, 2, 2, 0x10, 9,
473*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* tx_clk */
474*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* vs */
475*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio1 */
476*4882a593Smuzhiyun TOP_PIN(GMII_TXD0, TOP_REG0, 4, 2, 0x10, 18,
477*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd0 */
478*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* hs */
479*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio2 */
480*4882a593Smuzhiyun TOP_PIN(GMII_TXD1, TOP_REG0, 6, 2, 0x14, 0,
481*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd1 */
482*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d0 */
483*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio3 */
484*4882a593Smuzhiyun TOP_PIN(GMII_TXD2, TOP_REG0, 8, 2, 0x14, 9,
485*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd2 */
486*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d1 */
487*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio4 */
488*4882a593Smuzhiyun TOP_PIN(GMII_TXD3, TOP_REG0, 10, 2, 0x14, 18,
489*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd3 */
490*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d2 */
491*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio5 */
492*4882a593Smuzhiyun TOP_PIN(GMII_TXD4, TOP_REG0, 12, 2, 0x18, 0,
493*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd4 */
494*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d3 */
495*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio6 */
496*4882a593Smuzhiyun TOP_PIN(GMII_TXD5, TOP_REG0, 14, 2, 0x18, 9,
497*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd5 */
498*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d4 */
499*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio7 */
500*4882a593Smuzhiyun TOP_PIN(GMII_TXD6, TOP_REG0, 16, 2, 0x18, 18,
501*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd6 */
502*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d5 */
503*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio8 */
504*4882a593Smuzhiyun TOP_PIN(GMII_TXD7, TOP_REG0, 18, 2, 0x1c, 0,
505*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* txd7 */
506*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d6 */
507*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio9 */
508*4882a593Smuzhiyun TOP_PIN(GMII_TX_ER, TOP_REG0, 20, 2, 0x1c, 9,
509*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* tx_er */
510*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d7 */
511*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio10 */
512*4882a593Smuzhiyun TOP_PIN(GMII_TX_EN, TOP_REG0, 22, 2, 0x1c, 18,
513*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* tx_en */
514*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d8 */
515*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio11 */
516*4882a593Smuzhiyun TOP_PIN(GMII_RX_CLK, TOP_REG0, 24, 2, 0x20, 0,
517*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rx_clk */
518*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d9 */
519*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio12 */
520*4882a593Smuzhiyun TOP_PIN(GMII_RXD0, TOP_REG0, 26, 2, 0x20, 9,
521*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd0 */
522*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d10 */
523*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio13 */
524*4882a593Smuzhiyun TOP_PIN(GMII_RXD1, TOP_REG0, 28, 2, 0x20, 18,
525*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd1 */
526*4882a593Smuzhiyun TOP_MUX(0x1, "DVI0"), /* d11 */
527*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio14 */
528*4882a593Smuzhiyun TOP_PIN(GMII_RXD2, TOP_REG0, 30, 2, 0x24, 0,
529*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd2 */
530*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* clk */
531*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio15 */
532*4882a593Smuzhiyun
533*4882a593Smuzhiyun /* top_pmm_reg_1 */
534*4882a593Smuzhiyun TOP_PIN(GMII_RXD3, TOP_REG1, 0, 2, 0x24, 9,
535*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd3 */
536*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* hs */
537*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio16 */
538*4882a593Smuzhiyun TOP_PIN(GMII_RXD4, TOP_REG1, 2, 2, 0x24, 18,
539*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd4 */
540*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* vs */
541*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio17 */
542*4882a593Smuzhiyun TOP_PIN(GMII_RXD5, TOP_REG1, 4, 2, 0x28, 0,
543*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd5 */
544*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d0 */
545*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio18 */
546*4882a593Smuzhiyun TOP_MUX(0x3, "TSI0")), /* dat0 */
547*4882a593Smuzhiyun TOP_PIN(GMII_RXD6, TOP_REG1, 6, 2, 0x28, 9,
548*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd6 */
549*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d1 */
550*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio19 */
551*4882a593Smuzhiyun TOP_MUX(0x3, "TSI0")), /* clk */
552*4882a593Smuzhiyun TOP_PIN(GMII_RXD7, TOP_REG1, 8, 2, 0x28, 18,
553*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rxd7 */
554*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d2 */
555*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio20 */
556*4882a593Smuzhiyun TOP_MUX(0x3, "TSI0")), /* sync */
557*4882a593Smuzhiyun TOP_PIN(GMII_RX_ER, TOP_REG1, 10, 2, 0x2c, 0,
558*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rx_er */
559*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d3 */
560*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio21 */
561*4882a593Smuzhiyun TOP_MUX(0x3, "TSI0")), /* valid */
562*4882a593Smuzhiyun TOP_PIN(GMII_RX_DV, TOP_REG1, 12, 2, 0x2c, 9,
563*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* rx_dv */
564*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d4 */
565*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio22 */
566*4882a593Smuzhiyun TOP_MUX(0x3, "TSI1")), /* dat0 */
567*4882a593Smuzhiyun TOP_PIN(GMII_COL, TOP_REG1, 14, 2, 0x2c, 18,
568*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* col */
569*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d5 */
570*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio23 */
571*4882a593Smuzhiyun TOP_MUX(0x3, "TSI1")), /* clk */
572*4882a593Smuzhiyun TOP_PIN(GMII_CRS, TOP_REG1, 16, 2, 0x30, 0,
573*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* crs */
574*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d6 */
575*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio24 */
576*4882a593Smuzhiyun TOP_MUX(0x3, "TSI1")), /* sync */
577*4882a593Smuzhiyun TOP_PIN(GMII_MDC, TOP_REG1, 18, 2, 0x30, 9,
578*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* mdc */
579*4882a593Smuzhiyun TOP_MUX(0x1, "DVI1"), /* d7 */
580*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio25 */
581*4882a593Smuzhiyun TOP_MUX(0x3, "TSI1")), /* valid */
582*4882a593Smuzhiyun TOP_PIN(GMII_MDIO, TOP_REG1, 20, 1, 0x30, 18,
583*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* mdio */
584*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio26 */
585*4882a593Smuzhiyun TOP_PIN(SDIO1_CLK, TOP_REG1, 21, 2, 0x34, 18,
586*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* clk */
587*4882a593Smuzhiyun TOP_MUX(0x1, "USIM0"), /* clk */
588*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio27 */
589*4882a593Smuzhiyun TOP_MUX(0x3, "SPINOR")), /* clk */
590*4882a593Smuzhiyun TOP_PIN(SDIO1_CMD, TOP_REG1, 23, 2, 0x38, 0,
591*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* cmd */
592*4882a593Smuzhiyun TOP_MUX(0x1, "USIM0"), /* cd */
593*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio28 */
594*4882a593Smuzhiyun TOP_MUX(0x3, "SPINOR")), /* cs */
595*4882a593Smuzhiyun TOP_PIN(SDIO1_DATA0, TOP_REG1, 25, 2, 0x38, 9,
596*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* dat0 */
597*4882a593Smuzhiyun TOP_MUX(0x1, "USIM0"), /* rst */
598*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio29 */
599*4882a593Smuzhiyun TOP_MUX(0x3, "SPINOR")), /* dq0 */
600*4882a593Smuzhiyun TOP_PIN(SDIO1_DATA1, TOP_REG1, 27, 2, 0x38, 18,
601*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* dat1 */
602*4882a593Smuzhiyun TOP_MUX(0x1, "USIM0"), /* data */
603*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio30 */
604*4882a593Smuzhiyun TOP_MUX(0x3, "SPINOR")), /* dq1 */
605*4882a593Smuzhiyun TOP_PIN(SDIO1_DATA2, TOP_REG1, 29, 2, 0x3c, 0,
606*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* dat2 */
607*4882a593Smuzhiyun TOP_MUX(0x1, "BGPIO"), /* gpio31 */
608*4882a593Smuzhiyun TOP_MUX(0x2, "SPINOR")), /* dq2 */
609*4882a593Smuzhiyun
610*4882a593Smuzhiyun /* top_pmm_reg_2 */
611*4882a593Smuzhiyun TOP_PIN(SDIO1_DATA3, TOP_REG2, 0, 2, 0x3c, 9,
612*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* dat3 */
613*4882a593Smuzhiyun TOP_MUX(0x1, "BGPIO"), /* gpio32 */
614*4882a593Smuzhiyun TOP_MUX(0x2, "SPINOR")), /* dq3 */
615*4882a593Smuzhiyun TOP_PIN(SDIO1_CD, TOP_REG2, 2, 2, 0x3c, 18,
616*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* cd */
617*4882a593Smuzhiyun TOP_MUX(0x1, "BGPIO"), /* gpio33 */
618*4882a593Smuzhiyun TOP_MUX(0x2, "ISP")), /* fl_trig */
619*4882a593Smuzhiyun TOP_PIN(SDIO1_WP, TOP_REG2, 4, 2, 0x40, 0,
620*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO1"), /* wp */
621*4882a593Smuzhiyun TOP_MUX(0x1, "BGPIO"), /* gpio34 */
622*4882a593Smuzhiyun TOP_MUX(0x2, "ISP")), /* ref_clk */
623*4882a593Smuzhiyun TOP_PIN(USIM1_CD, TOP_REG2, 22, 3, 0x44, 18,
624*4882a593Smuzhiyun TOP_MUX(0x0, "USIM1"), /* cd */
625*4882a593Smuzhiyun TOP_MUX(0x1, "UART4"), /* rxd */
626*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio39 */
627*4882a593Smuzhiyun TOP_MUX(0x3, "SPI3"), /* clk */
628*4882a593Smuzhiyun TOP_MUX(0x4, "I2S0"), /* bclk */
629*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d8 */
630*4882a593Smuzhiyun TOP_PIN(USIM1_CLK, TOP_REG2, 25, 3, 0x4c, 18,
631*4882a593Smuzhiyun TOP_MUX(0x0, "USIM1"), /* clk */
632*4882a593Smuzhiyun TOP_MUX(0x1, "UART4"), /* txd */
633*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio40 */
634*4882a593Smuzhiyun TOP_MUX(0x3, "SPI3"), /* cs */
635*4882a593Smuzhiyun TOP_MUX(0x4, "I2S0"), /* ws */
636*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d9 */
637*4882a593Smuzhiyun TOP_PIN(USIM1_RST, TOP_REG2, 28, 3, 0x4c, 0,
638*4882a593Smuzhiyun TOP_MUX(0x0, "USIM1"), /* rst */
639*4882a593Smuzhiyun TOP_MUX(0x1, "UART4"), /* cts */
640*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio41 */
641*4882a593Smuzhiyun TOP_MUX(0x3, "SPI3"), /* txd */
642*4882a593Smuzhiyun TOP_MUX(0x4, "I2S0"), /* dout0 */
643*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d10 */
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun /* top_pmm_reg_3 */
646*4882a593Smuzhiyun TOP_PIN(USIM1_DATA, TOP_REG3, 0, 3, 0x4c, 9,
647*4882a593Smuzhiyun TOP_MUX(0x0, "USIM1"), /* dat */
648*4882a593Smuzhiyun TOP_MUX(0x1, "UART4"), /* rst */
649*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio42 */
650*4882a593Smuzhiyun TOP_MUX(0x3, "SPI3"), /* rxd */
651*4882a593Smuzhiyun TOP_MUX(0x4, "I2S0"), /* din0 */
652*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d11 */
653*4882a593Smuzhiyun TOP_PIN(SDIO0_CLK, TOP_REG3, 6, 1, 0x58, 0,
654*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* clk */
655*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio43 */
656*4882a593Smuzhiyun TOP_PIN(SDIO0_CMD, TOP_REG3, 7, 1, 0x58, 9,
657*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* cmd */
658*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio44 */
659*4882a593Smuzhiyun TOP_PIN(SDIO0_DATA0, TOP_REG3, 8, 1, 0x58, 18,
660*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* dat0 */
661*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio45 */
662*4882a593Smuzhiyun TOP_PIN(SDIO0_DATA1, TOP_REG3, 9, 1, 0x5c, 0,
663*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* dat1 */
664*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio46 */
665*4882a593Smuzhiyun TOP_PIN(SDIO0_DATA2, TOP_REG3, 10, 1, 0x5c, 9,
666*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* dat2 */
667*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio47 */
668*4882a593Smuzhiyun TOP_PIN(SDIO0_DATA3, TOP_REG3, 11, 1, 0x5c, 18,
669*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* dat3 */
670*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio48 */
671*4882a593Smuzhiyun TOP_PIN(SDIO0_CD, TOP_REG3, 12, 1, 0x60, 0,
672*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* cd */
673*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio49 */
674*4882a593Smuzhiyun TOP_PIN(SDIO0_WP, TOP_REG3, 13, 1, 0x60, 9,
675*4882a593Smuzhiyun TOP_MUX(0x0, "SDIO0"), /* wp */
676*4882a593Smuzhiyun TOP_MUX(0x1, "GPIO")), /* gpio50 */
677*4882a593Smuzhiyun
678*4882a593Smuzhiyun /* top_pmm_reg_4 */
679*4882a593Smuzhiyun TOP_PIN(TSI0_DATA0, TOP_REG4, 0, 2, 0x60, 18,
680*4882a593Smuzhiyun TOP_MUX(0x0, "TSI0"), /* dat0 */
681*4882a593Smuzhiyun TOP_MUX(0x1, "LCD"), /* clk */
682*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO")), /* gpio51 */
683*4882a593Smuzhiyun TOP_PIN(SPINOR_CLK, TOP_REG4, 2, 2, 0xa8, 18,
684*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* clk */
685*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat1 */
686*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat0 */
687*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio52 */
688*4882a593Smuzhiyun TOP_PIN(TSI2_DATA, TOP_REG4, 4, 2, 0x7c, 0,
689*4882a593Smuzhiyun TOP_MUX(0x0, "TSI2"), /* dat */
690*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat2 */
691*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat1 */
692*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio53 */
693*4882a593Smuzhiyun TOP_PIN(TSI2_CLK, TOP_REG4, 6, 2, 0x7c, 9,
694*4882a593Smuzhiyun TOP_MUX(0x0, "TSI2"), /* clk */
695*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat3 */
696*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat2 */
697*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio54 */
698*4882a593Smuzhiyun TOP_PIN(TSI2_SYNC, TOP_REG4, 8, 2, 0x7c, 18,
699*4882a593Smuzhiyun TOP_MUX(0x0, "TSI2"), /* sync */
700*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat4 */
701*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat3 */
702*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio55 */
703*4882a593Smuzhiyun TOP_PIN(TSI2_VALID, TOP_REG4, 10, 2, 0x80, 0,
704*4882a593Smuzhiyun TOP_MUX(0x0, "TSI2"), /* valid */
705*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat5 */
706*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat4 */
707*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio56 */
708*4882a593Smuzhiyun TOP_PIN(SPINOR_CS, TOP_REG4, 12, 2, 0x80, 9,
709*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* cs */
710*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat6 */
711*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat5 */
712*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio57 */
713*4882a593Smuzhiyun TOP_PIN(SPINOR_DQ0, TOP_REG4, 14, 2, 0x80, 18,
714*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* dq0 */
715*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* dat7 */
716*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat6 */
717*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio58 */
718*4882a593Smuzhiyun TOP_PIN(SPINOR_DQ1, TOP_REG4, 16, 2, 0x84, 0,
719*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* dq1 */
720*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* clk */
721*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat7 */
722*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio59 */
723*4882a593Smuzhiyun TOP_PIN(SPINOR_DQ2, TOP_REG4, 18, 2, 0x84, 9,
724*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* dq2 */
725*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* sync */
726*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat8 */
727*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio60 */
728*4882a593Smuzhiyun TOP_PIN(SPINOR_DQ3, TOP_REG4, 20, 2, 0x84, 18,
729*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR"), /* dq3 */
730*4882a593Smuzhiyun TOP_MUX(0x1, "TSI0"), /* valid */
731*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat9 */
732*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio61 */
733*4882a593Smuzhiyun TOP_PIN(VGA_HS, TOP_REG4, 22, 3, 0x88, 0,
734*4882a593Smuzhiyun TOP_MUX(0x0, "VGA"), /* hs */
735*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat0 */
736*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat10 */
737*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio62 */
738*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* din1 */
739*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* clk */
740*4882a593Smuzhiyun TOP_PIN(VGA_VS, TOP_REG4, 25, 3, 0x88, 9,
741*4882a593Smuzhiyun TOP_MUX(0x0, "VGA"), /* vs0 */
742*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat1 */
743*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat11 */
744*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio63 */
745*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* din2 */
746*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* vs */
747*4882a593Smuzhiyun TOP_PIN(TSI3_DATA, TOP_REG4, 28, 3, 0x88, 18,
748*4882a593Smuzhiyun TOP_MUX(0x0, "TSI3"), /* dat */
749*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat2 */
750*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat12 */
751*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio64 */
752*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* din3 */
753*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* hs */
754*4882a593Smuzhiyun
755*4882a593Smuzhiyun /* top_pmm_reg_5 */
756*4882a593Smuzhiyun TOP_PIN(TSI3_CLK, TOP_REG5, 0, 3, 0x8c, 0,
757*4882a593Smuzhiyun TOP_MUX(0x0, "TSI3"), /* clk */
758*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat3 */
759*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat13 */
760*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio65 */
761*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* dout1 */
762*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d0 */
763*4882a593Smuzhiyun TOP_PIN(TSI3_SYNC, TOP_REG5, 3, 3, 0x8c, 9,
764*4882a593Smuzhiyun TOP_MUX(0x0, "TSI3"), /* sync */
765*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat4 */
766*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat14 */
767*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio66 */
768*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* dout2 */
769*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d1 */
770*4882a593Smuzhiyun TOP_PIN(TSI3_VALID, TOP_REG5, 6, 3, 0x8c, 18,
771*4882a593Smuzhiyun TOP_MUX(0x0, "TSI3"), /* valid */
772*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat5 */
773*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat15 */
774*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio67 */
775*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1"), /* dout3 */
776*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d2 */
777*4882a593Smuzhiyun TOP_PIN(I2S1_WS, TOP_REG5, 9, 3, 0x90, 0,
778*4882a593Smuzhiyun TOP_MUX(0x0, "I2S1"), /* ws */
779*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat6 */
780*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat16 */
781*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio68 */
782*4882a593Smuzhiyun TOP_MUX(0x4, "VGA"), /* scl */
783*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d3 */
784*4882a593Smuzhiyun TOP_PIN(I2S1_BCLK, TOP_REG5, 12, 3, 0x90, 9,
785*4882a593Smuzhiyun TOP_MUX(0x0, "I2S1"), /* bclk */
786*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* dat7 */
787*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat17 */
788*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio69 */
789*4882a593Smuzhiyun TOP_MUX(0x4, "VGA"), /* sda */
790*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI0")), /* d4 */
791*4882a593Smuzhiyun TOP_PIN(I2S1_MCLK, TOP_REG5, 15, 2, 0x90, 18,
792*4882a593Smuzhiyun TOP_MUX(0x0, "I2S1"), /* mclk */
793*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* clk */
794*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat18 */
795*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio70 */
796*4882a593Smuzhiyun TOP_PIN(I2S1_DIN0, TOP_REG5, 17, 2, 0x94, 0,
797*4882a593Smuzhiyun TOP_MUX(0x0, "I2S1"), /* din0 */
798*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* sync */
799*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat19 */
800*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio71 */
801*4882a593Smuzhiyun TOP_PIN(I2S1_DOUT0, TOP_REG5, 19, 2, 0x94, 9,
802*4882a593Smuzhiyun TOP_MUX(0x0, "I2S1"), /* dout0 */
803*4882a593Smuzhiyun TOP_MUX(0x1, "TSI1"), /* valid */
804*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat20 */
805*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio72 */
806*4882a593Smuzhiyun TOP_PIN(SPI3_CLK, TOP_REG5, 21, 3, 0x94, 18,
807*4882a593Smuzhiyun TOP_MUX(0x0, "SPI3"), /* clk */
808*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* clk */
809*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat21 */
810*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio73 */
811*4882a593Smuzhiyun TOP_MUX(0x4, "UART5"), /* rxd */
812*4882a593Smuzhiyun TOP_MUX(0x5, "PCM"), /* fs */
813*4882a593Smuzhiyun TOP_MUX(0x6, "I2S0"), /* din1 */
814*4882a593Smuzhiyun TOP_MUX(0x7, "B_DVI0")), /* d5 */
815*4882a593Smuzhiyun TOP_PIN(SPI3_CS, TOP_REG5, 24, 3, 0x98, 0,
816*4882a593Smuzhiyun TOP_MUX(0x0, "SPI3"), /* cs */
817*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat0 */
818*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat22 */
819*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio74 */
820*4882a593Smuzhiyun TOP_MUX(0x4, "UART5"), /* txd */
821*4882a593Smuzhiyun TOP_MUX(0x5, "PCM"), /* clk */
822*4882a593Smuzhiyun TOP_MUX(0x6, "I2S0"), /* din2 */
823*4882a593Smuzhiyun TOP_MUX(0x7, "B_DVI0")), /* d6 */
824*4882a593Smuzhiyun TOP_PIN(SPI3_TXD, TOP_REG5, 27, 3, 0x98, 9,
825*4882a593Smuzhiyun TOP_MUX(0x0, "SPI3"), /* txd */
826*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat1 */
827*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* dat23 */
828*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio75 */
829*4882a593Smuzhiyun TOP_MUX(0x4, "UART5"), /* cts */
830*4882a593Smuzhiyun TOP_MUX(0x5, "PCM"), /* txd */
831*4882a593Smuzhiyun TOP_MUX(0x6, "I2S0"), /* din3 */
832*4882a593Smuzhiyun TOP_MUX(0x7, "B_DVI0")), /* d7 */
833*4882a593Smuzhiyun TOP_PIN(NAND_LDO_MS18_SEL, TOP_REG5, 30, 1, 0xe4, 0,
834*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* ldo_ms18_sel */
835*4882a593Smuzhiyun TOP_MUX(0x1, "BGPIO")), /* gpio99 */
836*4882a593Smuzhiyun
837*4882a593Smuzhiyun /* top_pmm_reg_6 */
838*4882a593Smuzhiyun TOP_PIN(SPI3_RXD, TOP_REG6, 0, 3, 0x98, 18,
839*4882a593Smuzhiyun TOP_MUX(0x0, "SPI3"), /* rxd */
840*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat2 */
841*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* stvu_vsync */
842*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio76 */
843*4882a593Smuzhiyun TOP_MUX(0x4, "UART5"), /* rts */
844*4882a593Smuzhiyun TOP_MUX(0x5, "PCM"), /* rxd */
845*4882a593Smuzhiyun TOP_MUX(0x6, "I2S0"), /* dout1 */
846*4882a593Smuzhiyun TOP_MUX(0x7, "B_DVI1")), /* clk */
847*4882a593Smuzhiyun TOP_PIN(I2S0_MCLK, TOP_REG6, 3, 3, 0x9c, 0,
848*4882a593Smuzhiyun TOP_MUX(0x0, "I2S0"), /* mclk */
849*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat3 */
850*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* stvd */
851*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio77 */
852*4882a593Smuzhiyun TOP_MUX(0x4, "USIM0"), /* cd */
853*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* vs */
854*4882a593Smuzhiyun TOP_PIN(I2S0_BCLK, TOP_REG6, 6, 3, 0x9c, 9,
855*4882a593Smuzhiyun TOP_MUX(0x0, "I2S0"), /* bclk */
856*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat4 */
857*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* sthl_hsync */
858*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio78 */
859*4882a593Smuzhiyun TOP_MUX(0x4, "USIM0"), /* clk */
860*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* hs */
861*4882a593Smuzhiyun TOP_PIN(I2S0_WS, TOP_REG6, 9, 3, 0x9c, 18,
862*4882a593Smuzhiyun TOP_MUX(0x0, "I2S0"), /* ws */
863*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat5 */
864*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* sthr */
865*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio79 */
866*4882a593Smuzhiyun TOP_MUX(0x4, "USIM0"), /* rst */
867*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d0 */
868*4882a593Smuzhiyun TOP_PIN(I2S0_DIN0, TOP_REG6, 12, 3, 0xa0, 0,
869*4882a593Smuzhiyun TOP_MUX(0x0, "I2S0"), /* din0 */
870*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat6 */
871*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* oev_dataen */
872*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio80 */
873*4882a593Smuzhiyun TOP_MUX(0x4, "USIM0"), /* dat */
874*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d1 */
875*4882a593Smuzhiyun TOP_PIN(I2S0_DOUT0, TOP_REG6, 15, 2, 0xa0, 9,
876*4882a593Smuzhiyun TOP_MUX(0x0, "I2S0"), /* dout0 */
877*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* dat7 */
878*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* ckv */
879*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio81 */
880*4882a593Smuzhiyun TOP_PIN(I2C5_SCL, TOP_REG6, 17, 3, 0xa0, 18,
881*4882a593Smuzhiyun TOP_MUX(0x0, "I2C5"), /* scl */
882*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* sync */
883*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* ld */
884*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio82 */
885*4882a593Smuzhiyun TOP_MUX(0x4, "PWM"), /* out2 */
886*4882a593Smuzhiyun TOP_MUX(0x5, "I2S0"), /* dout2 */
887*4882a593Smuzhiyun TOP_MUX(0x6, "B_DVI1")), /* d2 */
888*4882a593Smuzhiyun TOP_PIN(I2C5_SDA, TOP_REG6, 20, 3, 0xa4, 0,
889*4882a593Smuzhiyun TOP_MUX(0x0, "I2C5"), /* sda */
890*4882a593Smuzhiyun TOP_MUX(0x1, "TSO1"), /* vld */
891*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* pol */
892*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio83 */
893*4882a593Smuzhiyun TOP_MUX(0x4, "PWM"), /* out3 */
894*4882a593Smuzhiyun TOP_MUX(0x5, "I2S0"), /* dout3 */
895*4882a593Smuzhiyun TOP_MUX(0x6, "B_DVI1")), /* d3 */
896*4882a593Smuzhiyun TOP_PIN(SPI2_CLK, TOP_REG6, 23, 3, 0xa4, 9,
897*4882a593Smuzhiyun TOP_MUX(0x0, "SPI2"), /* clk */
898*4882a593Smuzhiyun TOP_MUX(0x1, "TSO0"), /* clk */
899*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* degsl */
900*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio84 */
901*4882a593Smuzhiyun TOP_MUX(0x4, "I2C4"), /* scl */
902*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d4 */
903*4882a593Smuzhiyun TOP_PIN(SPI2_CS, TOP_REG6, 26, 3, 0xa4, 18,
904*4882a593Smuzhiyun TOP_MUX(0x0, "SPI2"), /* cs */
905*4882a593Smuzhiyun TOP_MUX(0x1, "TSO0"), /* data */
906*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* rev */
907*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio85 */
908*4882a593Smuzhiyun TOP_MUX(0x4, "I2C4"), /* sda */
909*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d5 */
910*4882a593Smuzhiyun TOP_PIN(SPI2_TXD, TOP_REG6, 29, 3, 0xa8, 0,
911*4882a593Smuzhiyun TOP_MUX(0x0, "SPI2"), /* txd */
912*4882a593Smuzhiyun TOP_MUX(0x1, "TSO0"), /* sync */
913*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* u_d */
914*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio86 */
915*4882a593Smuzhiyun TOP_MUX(0x4, "I2C4"), /* scl */
916*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d6 */
917*4882a593Smuzhiyun
918*4882a593Smuzhiyun /* top_pmm_reg_7 */
919*4882a593Smuzhiyun TOP_PIN(SPI2_RXD, TOP_REG7, 0, 3, 0xa8, 9,
920*4882a593Smuzhiyun TOP_MUX(0x0, "SPI2"), /* rxd */
921*4882a593Smuzhiyun TOP_MUX(0x1, "TSO0"), /* vld */
922*4882a593Smuzhiyun TOP_MUX(0x2, "LCD"), /* r_l */
923*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio87 */
924*4882a593Smuzhiyun TOP_MUX(0x4, "I2C3"), /* sda */
925*4882a593Smuzhiyun TOP_MUX(0x5, "B_DVI1")), /* d7 */
926*4882a593Smuzhiyun TOP_PIN(NAND_WP_N, TOP_REG7, 7, 3, 0x54, 9,
927*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* wp */
928*4882a593Smuzhiyun TOP_MUX(0x1, "PWM"), /* out2 */
929*4882a593Smuzhiyun TOP_MUX(0x2, "SPI2"), /* clk */
930*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio88 */
931*4882a593Smuzhiyun TOP_MUX(0x4, "TSI0"), /* dat0 */
932*4882a593Smuzhiyun TOP_MUX(0x5, "I2S1")), /* din1 */
933*4882a593Smuzhiyun TOP_PIN(NAND_PAGE_SIZE0, TOP_REG7, 10, 3, 0xb8, 0,
934*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* boot_pagesize0 */
935*4882a593Smuzhiyun TOP_MUX(0x1, "PWM"), /* out3 */
936*4882a593Smuzhiyun TOP_MUX(0x2, "SPI2"), /* cs */
937*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio89 */
938*4882a593Smuzhiyun TOP_MUX(0x4, "TSI0"), /* clk */
939*4882a593Smuzhiyun TOP_MUX(0x5, "I2S1")), /* din2 */
940*4882a593Smuzhiyun TOP_PIN(NAND_PAGE_SIZE1, TOP_REG7, 13, 3, 0xb8, 9,
941*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* boot_pagesize1 */
942*4882a593Smuzhiyun TOP_MUX(0x1, "I2C4"), /* scl */
943*4882a593Smuzhiyun TOP_MUX(0x2, "SPI2"), /* txd */
944*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio90 */
945*4882a593Smuzhiyun TOP_MUX(0x4, "TSI0"), /* sync */
946*4882a593Smuzhiyun TOP_MUX(0x5, "I2S1")), /* din3 */
947*4882a593Smuzhiyun TOP_PIN(NAND_ADDR_CYCLE, TOP_REG7, 16, 3, 0xb8, 18,
948*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* boot_addr_cycles */
949*4882a593Smuzhiyun TOP_MUX(0x1, "I2C4"), /* sda */
950*4882a593Smuzhiyun TOP_MUX(0x2, "SPI2"), /* rxd */
951*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio91 */
952*4882a593Smuzhiyun TOP_MUX(0x4, "TSI0"), /* valid */
953*4882a593Smuzhiyun TOP_MUX(0x5, "I2S1")), /* dout1 */
954*4882a593Smuzhiyun TOP_PIN(NAND_RB0, TOP_REG7, 19, 3, 0xbc, 0,
955*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* rdy_busy0 */
956*4882a593Smuzhiyun TOP_MUX(0x1, "I2C2"), /* scl */
957*4882a593Smuzhiyun TOP_MUX(0x2, "USIM0"), /* cd */
958*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio92 */
959*4882a593Smuzhiyun TOP_MUX(0x4, "TSI1")), /* data0 */
960*4882a593Smuzhiyun TOP_PIN(NAND_RB1, TOP_REG7, 22, 3, 0xbc, 9,
961*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* rdy_busy1 */
962*4882a593Smuzhiyun TOP_MUX(0x1, "I2C2"), /* sda */
963*4882a593Smuzhiyun TOP_MUX(0x2, "USIM0"), /* clk */
964*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio93 */
965*4882a593Smuzhiyun TOP_MUX(0x4, "TSI1")), /* clk */
966*4882a593Smuzhiyun TOP_PIN(NAND_RB2, TOP_REG7, 25, 3, 0xbc, 18,
967*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* rdy_busy2 */
968*4882a593Smuzhiyun TOP_MUX(0x1, "UART5"), /* rxd */
969*4882a593Smuzhiyun TOP_MUX(0x2, "USIM0"), /* rst */
970*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio94 */
971*4882a593Smuzhiyun TOP_MUX(0x4, "TSI1"), /* sync */
972*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1")), /* dout2 */
973*4882a593Smuzhiyun TOP_PIN(NAND_RB3, TOP_REG7, 28, 3, 0x54, 18,
974*4882a593Smuzhiyun TOP_MUX(0x0, "NAND"), /* rdy_busy3 */
975*4882a593Smuzhiyun TOP_MUX(0x1, "UART5"), /* txd */
976*4882a593Smuzhiyun TOP_MUX(0x2, "USIM0"), /* dat */
977*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO"), /* gpio95 */
978*4882a593Smuzhiyun TOP_MUX(0x4, "TSI1"), /* valid */
979*4882a593Smuzhiyun TOP_MUX(0x4, "I2S1")), /* dout3 */
980*4882a593Smuzhiyun
981*4882a593Smuzhiyun /* top_pmm_reg_8 */
982*4882a593Smuzhiyun TOP_PIN(GMAC_125M_IN, TOP_REG8, 0, 2, 0x34, 0,
983*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* 125m_in */
984*4882a593Smuzhiyun TOP_MUX(0x1, "USB2"), /* 0_drvvbus */
985*4882a593Smuzhiyun TOP_MUX(0x2, "ISP"), /* ref_clk */
986*4882a593Smuzhiyun TOP_MUX(0x3, "BGPIO")), /* gpio96 */
987*4882a593Smuzhiyun TOP_PIN(GMAC_50M_OUT, TOP_REG8, 2, 2, 0x34, 9,
988*4882a593Smuzhiyun TOP_MUX(0x0, "GMII"), /* 50m_out */
989*4882a593Smuzhiyun TOP_MUX(0x1, "USB2"), /* 1_drvvbus */
990*4882a593Smuzhiyun TOP_MUX(0x2, "BGPIO"), /* gpio97 */
991*4882a593Smuzhiyun TOP_MUX(0x3, "USB2")), /* 0_drvvbus */
992*4882a593Smuzhiyun TOP_PIN(SPINOR_SSCLK_LOOPBACK, TOP_REG8, 6, 1, 0xc8, 9,
993*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR")), /* sdio1_clk_i */
994*4882a593Smuzhiyun TOP_PIN(SPINOR_SDIO1CLK_LOOPBACK, TOP_REG8, 7, 1, 0xc8, 18,
995*4882a593Smuzhiyun TOP_MUX(0x0, "SPINOR")), /* ssclk_i */
996*4882a593Smuzhiyun };
997*4882a593Smuzhiyun
998*4882a593Smuzhiyun static struct zx_pinctrl_soc_info zx296718_pinctrl_info = {
999*4882a593Smuzhiyun .pins = zx296718_pins,
1000*4882a593Smuzhiyun .npins = ARRAY_SIZE(zx296718_pins),
1001*4882a593Smuzhiyun };
1002*4882a593Smuzhiyun
zx296718_pinctrl_probe(struct platform_device * pdev)1003*4882a593Smuzhiyun static int zx296718_pinctrl_probe(struct platform_device *pdev)
1004*4882a593Smuzhiyun {
1005*4882a593Smuzhiyun return zx_pinctrl_init(pdev, &zx296718_pinctrl_info);
1006*4882a593Smuzhiyun }
1007*4882a593Smuzhiyun
1008*4882a593Smuzhiyun static const struct of_device_id zx296718_pinctrl_match[] = {
1009*4882a593Smuzhiyun { .compatible = "zte,zx296718-pmm", },
1010*4882a593Smuzhiyun {}
1011*4882a593Smuzhiyun };
1012*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, zx296718_pinctrl_match);
1013*4882a593Smuzhiyun
1014*4882a593Smuzhiyun static struct platform_driver zx296718_pinctrl_driver = {
1015*4882a593Smuzhiyun .probe = zx296718_pinctrl_probe,
1016*4882a593Smuzhiyun .driver = {
1017*4882a593Smuzhiyun .name = "zx296718-pinctrl",
1018*4882a593Smuzhiyun .of_match_table = zx296718_pinctrl_match,
1019*4882a593Smuzhiyun },
1020*4882a593Smuzhiyun };
1021*4882a593Smuzhiyun builtin_platform_driver(zx296718_pinctrl_driver);
1022*4882a593Smuzhiyun
1023*4882a593Smuzhiyun MODULE_DESCRIPTION("ZTE ZX296718 pinctrl driver");
1024*4882a593Smuzhiyun MODULE_LICENSE("GPL");
1025