1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Sophgo SG2042 SoC pinctrl driver.
4  *
5  * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com>
6  */
7 
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/of.h>
11 
12 #include <linux/pinctrl/pinctrl.h>
13 #include <linux/pinctrl/pinmux.h>
14 
15 #include <dt-bindings/pinctrl/pinctrl-sg2042.h>
16 
17 #include "pinctrl-sg2042.h"
18 
sg2042_get_pull_up(const struct sophgo_pin * sp,const u32 * psmap)19 static int sg2042_get_pull_up(const struct sophgo_pin *sp, const u32 *psmap)
20 {
21 	return 35000;
22 }
23 
sg2042_get_pull_down(const struct sophgo_pin * sp,const u32 * psmap)24 static int sg2042_get_pull_down(const struct sophgo_pin *sp, const u32 *psmap)
25 {
26 	return 28000;
27 }
28 
29 static const u32 sg2042_oc_map[] = {
30 	5400,  8100,  10700, 13400,
31 	16100, 18800, 21400, 24100,
32 	26800, 29400, 32100, 34800,
33 	37400, 40100, 42800, 45400
34 };
35 
sg2042_get_oc_map(const struct sophgo_pin * sp,const u32 * psmap,const u32 ** map)36 static int sg2042_get_oc_map(const struct sophgo_pin *sp, const u32 *psmap,
37 			     const u32 **map)
38 {
39 	*map = sg2042_oc_map;
40 	return ARRAY_SIZE(sg2042_oc_map);
41 }
42 
43 static const struct sophgo_vddio_cfg_ops sg2042_vddio_cfg_ops = {
44 	.get_pull_up		= sg2042_get_pull_up,
45 	.get_pull_down		= sg2042_get_pull_down,
46 	.get_oc_map		= sg2042_get_oc_map,
47 };
48 
49 static const struct pinctrl_pin_desc sg2042_pins[] = {
50 	PINCTRL_PIN(PIN_LPC_LCLK,		"lpc_lclk"),
51 	PINCTRL_PIN(PIN_LPC_LFRAME,		"lpc_lframe"),
52 	PINCTRL_PIN(PIN_LPC_LAD0,		"lpc_lad0"),
53 	PINCTRL_PIN(PIN_LPC_LAD1,		"lpc_lad1"),
54 	PINCTRL_PIN(PIN_LPC_LAD2,		"lpc_lad2"),
55 	PINCTRL_PIN(PIN_LPC_LAD3,		"lpc_lad3"),
56 	PINCTRL_PIN(PIN_LPC_LDRQ0,		"lpc_ldrq0"),
57 	PINCTRL_PIN(PIN_LPC_LDRQ1,		"lpc_ldrq1"),
58 	PINCTRL_PIN(PIN_LPC_SERIRQ,		"lpc_serirq"),
59 	PINCTRL_PIN(PIN_LPC_CLKRUN,		"lpc_clkrun"),
60 	PINCTRL_PIN(PIN_LPC_LPME,		"lpc_lpme"),
61 	PINCTRL_PIN(PIN_LPC_LPCPD,		"lpc_lpcpd"),
62 	PINCTRL_PIN(PIN_LPC_LSMI,		"lpc_lsmi"),
63 	PINCTRL_PIN(PIN_PCIE0_L0_RESET,		"pcie0_l0_reset"),
64 	PINCTRL_PIN(PIN_PCIE0_L1_RESET,		"pcie0_l1_reset"),
65 	PINCTRL_PIN(PIN_PCIE0_L0_WAKEUP,	"pcie0_l0_wakeup"),
66 	PINCTRL_PIN(PIN_PCIE0_L1_WAKEUP,	"pcie0_l1_wakeup"),
67 	PINCTRL_PIN(PIN_PCIE0_L0_CLKREQ_IN,	"pcie0_l0_clkreq_in"),
68 	PINCTRL_PIN(PIN_PCIE0_L1_CLKREQ_IN,	"pcie0_l1_clkreq_in"),
69 	PINCTRL_PIN(PIN_PCIE1_L0_RESET,		"pcie1_l0_reset"),
70 	PINCTRL_PIN(PIN_PCIE1_L1_RESET,		"pcie1_l1_reset"),
71 	PINCTRL_PIN(PIN_PCIE1_L0_WAKEUP,	"pcie1_l0_wakeup"),
72 	PINCTRL_PIN(PIN_PCIE1_L1_WAKEUP,	"pcie1_l1_wakeup"),
73 	PINCTRL_PIN(PIN_PCIE1_L0_CLKREQ_IN,	"pcie1_l0_clkreq_in"),
74 	PINCTRL_PIN(PIN_PCIE1_L1_CLKREQ_IN,	"pcie1_l1_clkreq_in"),
75 	PINCTRL_PIN(PIN_SPIF0_CLK_SEL1,		"spif0_clk_sel1"),
76 	PINCTRL_PIN(PIN_SPIF0_CLK_SEL0,		"spif0_clk_sel0"),
77 	PINCTRL_PIN(PIN_SPIF0_WP,		"spif0_wp"),
78 	PINCTRL_PIN(PIN_SPIF0_HOLD,		"spif0_hold"),
79 	PINCTRL_PIN(PIN_SPIF0_SDI,		"spif0_sdi"),
80 	PINCTRL_PIN(PIN_SPIF0_CS,		"spif0_cs"),
81 	PINCTRL_PIN(PIN_SPIF0_SCK,		"spif0_sck"),
82 	PINCTRL_PIN(PIN_SPIF0_SDO,		"spif0_sdo"),
83 	PINCTRL_PIN(PIN_SPIF1_CLK_SEL1,		"spif1_clk_sel1"),
84 	PINCTRL_PIN(PIN_SPIF1_CLK_SEL0,		"spif1_clk_sel0"),
85 	PINCTRL_PIN(PIN_SPIF1_WP,		"spif1_wp"),
86 	PINCTRL_PIN(PIN_SPIF1_HOLD,		"spif1_hold"),
87 	PINCTRL_PIN(PIN_SPIF1_SDI,		"spif1_sdi"),
88 	PINCTRL_PIN(PIN_SPIF1_CS,		"spif1_cs"),
89 	PINCTRL_PIN(PIN_SPIF1_SCK,		"spif1_sck"),
90 	PINCTRL_PIN(PIN_SPIF1_SDO,		"spif1_sdo"),
91 	PINCTRL_PIN(PIN_EMMC_WP,		"emmc_wp"),
92 	PINCTRL_PIN(PIN_EMMC_CD,		"emmc_cd"),
93 	PINCTRL_PIN(PIN_EMMC_RST,		"emmc_rst"),
94 	PINCTRL_PIN(PIN_EMMC_PWR_EN,		"emmc_pwr_en"),
95 	PINCTRL_PIN(PIN_SDIO_CD,		"sdio_cd"),
96 	PINCTRL_PIN(PIN_SDIO_WP,		"sdio_wp"),
97 	PINCTRL_PIN(PIN_SDIO_RST,		"sdio_rst"),
98 	PINCTRL_PIN(PIN_SDIO_PWR_EN,		"sdio_pwr_en"),
99 	PINCTRL_PIN(PIN_RGMII0_TXD0,		"rgmii0_txd0"),
100 	PINCTRL_PIN(PIN_RGMII0_TXD1,		"rgmii0_txd1"),
101 	PINCTRL_PIN(PIN_RGMII0_TXD2,		"rgmii0_txd2"),
102 	PINCTRL_PIN(PIN_RGMII0_TXD3,		"rgmii0_txd3"),
103 	PINCTRL_PIN(PIN_RGMII0_TXCTRL,		"rgmii0_txctrl"),
104 	PINCTRL_PIN(PIN_RGMII0_RXD0,		"rgmii0_rxd0"),
105 	PINCTRL_PIN(PIN_RGMII0_RXD1,		"rgmii0_rxd1"),
106 	PINCTRL_PIN(PIN_RGMII0_RXD2,		"rgmii0_rxd2"),
107 	PINCTRL_PIN(PIN_RGMII0_RXD3,		"rgmii0_rxd3"),
108 	PINCTRL_PIN(PIN_RGMII0_RXCTRL,		"rgmii0_rxctrl"),
109 	PINCTRL_PIN(PIN_RGMII0_TXC,		"rgmii0_txc"),
110 	PINCTRL_PIN(PIN_RGMII0_RXC,		"rgmii0_rxc"),
111 	PINCTRL_PIN(PIN_RGMII0_REFCLKO,		"rgmii0_refclko"),
112 	PINCTRL_PIN(PIN_RGMII0_IRQ,		"rgmii0_irq"),
113 	PINCTRL_PIN(PIN_RGMII0_MDC,		"rgmii0_mdc"),
114 	PINCTRL_PIN(PIN_RGMII0_MDIO,		"rgmii0_mdio"),
115 	PINCTRL_PIN(PIN_PWM0,			"pwm0"),
116 	PINCTRL_PIN(PIN_PWM1,			"pwm1"),
117 	PINCTRL_PIN(PIN_PWM2,			"pwm2"),
118 	PINCTRL_PIN(PIN_PWM3,			"pwm3"),
119 	PINCTRL_PIN(PIN_FAN0,			"fan0"),
120 	PINCTRL_PIN(PIN_FAN1,			"fan1"),
121 	PINCTRL_PIN(PIN_FAN2,			"fan2"),
122 	PINCTRL_PIN(PIN_FAN3,			"fan3"),
123 	PINCTRL_PIN(PIN_IIC0_SDA,		"iic0_sda"),
124 	PINCTRL_PIN(PIN_IIC0_SCL,		"iic0_scl"),
125 	PINCTRL_PIN(PIN_IIC1_SDA,		"iic1_sda"),
126 	PINCTRL_PIN(PIN_IIC1_SCL,		"iic1_scl"),
127 	PINCTRL_PIN(PIN_IIC2_SDA,		"iic2_sda"),
128 	PINCTRL_PIN(PIN_IIC2_SCL,		"iic2_scl"),
129 	PINCTRL_PIN(PIN_IIC3_SDA,		"iic3_sda"),
130 	PINCTRL_PIN(PIN_IIC3_SCL,		"iic3_scl"),
131 	PINCTRL_PIN(PIN_UART0_TX,		"uart0_tx"),
132 	PINCTRL_PIN(PIN_UART0_RX,		"uart0_rx"),
133 	PINCTRL_PIN(PIN_UART0_RTS,		"uart0_rts"),
134 	PINCTRL_PIN(PIN_UART0_CTS,		"uart0_cts"),
135 	PINCTRL_PIN(PIN_UART1_TX,		"uart1_tx"),
136 	PINCTRL_PIN(PIN_UART1_RX,		"uart1_rx"),
137 	PINCTRL_PIN(PIN_UART1_RTS,		"uart1_rts"),
138 	PINCTRL_PIN(PIN_UART1_CTS,		"uart1_cts"),
139 	PINCTRL_PIN(PIN_UART2_TX,		"uart2_tx"),
140 	PINCTRL_PIN(PIN_UART2_RX,		"uart2_rx"),
141 	PINCTRL_PIN(PIN_UART2_RTS,		"uart2_rts"),
142 	PINCTRL_PIN(PIN_UART2_CTS,		"uart2_cts"),
143 	PINCTRL_PIN(PIN_UART3_TX,		"uart3_tx"),
144 	PINCTRL_PIN(PIN_UART3_RX,		"uart3_rx"),
145 	PINCTRL_PIN(PIN_UART3_RTS,		"uart3_rts"),
146 	PINCTRL_PIN(PIN_UART3_CTS,		"uart3_cts"),
147 	PINCTRL_PIN(PIN_SPI0_CS0,		"spi0_cs0"),
148 	PINCTRL_PIN(PIN_SPI0_CS1,		"spi0_cs1"),
149 	PINCTRL_PIN(PIN_SPI0_SDI,		"spi0_sdi"),
150 	PINCTRL_PIN(PIN_SPI0_SDO,		"spi0_sdo"),
151 	PINCTRL_PIN(PIN_SPI0_SCK,		"spi0_sck"),
152 	PINCTRL_PIN(PIN_SPI1_CS0,		"spi1_cs0"),
153 	PINCTRL_PIN(PIN_SPI1_CS1,		"spi1_cs1"),
154 	PINCTRL_PIN(PIN_SPI1_SDI,		"spi1_sdi"),
155 	PINCTRL_PIN(PIN_SPI1_SDO,		"spi1_sdo"),
156 	PINCTRL_PIN(PIN_SPI1_SCK,		"spi1_sck"),
157 	PINCTRL_PIN(PIN_JTAG0_TDO,		"jtag0_tdo"),
158 	PINCTRL_PIN(PIN_JTAG0_TCK,		"jtag0_tck"),
159 	PINCTRL_PIN(PIN_JTAG0_TDI,		"jtag0_tdi"),
160 	PINCTRL_PIN(PIN_JTAG0_TMS,		"jtag0_tms"),
161 	PINCTRL_PIN(PIN_JTAG0_TRST,		"jtag0_trst"),
162 	PINCTRL_PIN(PIN_JTAG0_SRST,		"jtag0_srst"),
163 	PINCTRL_PIN(PIN_JTAG1_TDO,		"jtag1_tdo"),
164 	PINCTRL_PIN(PIN_JTAG1_TCK,		"jtag1_tck"),
165 	PINCTRL_PIN(PIN_JTAG1_TDI,		"jtag1_tdi"),
166 	PINCTRL_PIN(PIN_JTAG1_TMS,		"jtag1_tms"),
167 	PINCTRL_PIN(PIN_JTAG1_TRST,		"jtag1_trst"),
168 	PINCTRL_PIN(PIN_JTAG1_SRST,		"jtag1_srst"),
169 	PINCTRL_PIN(PIN_JTAG2_TDO,		"jtag2_tdo"),
170 	PINCTRL_PIN(PIN_JTAG2_TCK,		"jtag2_tck"),
171 	PINCTRL_PIN(PIN_JTAG2_TDI,		"jtag2_tdi"),
172 	PINCTRL_PIN(PIN_JTAG2_TMS,		"jtag2_tms"),
173 	PINCTRL_PIN(PIN_JTAG2_TRST,		"jtag2_trst"),
174 	PINCTRL_PIN(PIN_JTAG2_SRST,		"jtag2_srst"),
175 	PINCTRL_PIN(PIN_GPIO0,			"gpio0"),
176 	PINCTRL_PIN(PIN_GPIO1,			"gpio1"),
177 	PINCTRL_PIN(PIN_GPIO2,			"gpio2"),
178 	PINCTRL_PIN(PIN_GPIO3,			"gpio3"),
179 	PINCTRL_PIN(PIN_GPIO4,			"gpio4"),
180 	PINCTRL_PIN(PIN_GPIO5,			"gpio5"),
181 	PINCTRL_PIN(PIN_GPIO6,			"gpio6"),
182 	PINCTRL_PIN(PIN_GPIO7,			"gpio7"),
183 	PINCTRL_PIN(PIN_GPIO8,			"gpio8"),
184 	PINCTRL_PIN(PIN_GPIO9,			"gpio9"),
185 	PINCTRL_PIN(PIN_GPIO10,			"gpio10"),
186 	PINCTRL_PIN(PIN_GPIO11,			"gpio11"),
187 	PINCTRL_PIN(PIN_GPIO12,			"gpio12"),
188 	PINCTRL_PIN(PIN_GPIO13,			"gpio13"),
189 	PINCTRL_PIN(PIN_GPIO14,			"gpio14"),
190 	PINCTRL_PIN(PIN_GPIO15,			"gpio15"),
191 	PINCTRL_PIN(PIN_GPIO16,			"gpio16"),
192 	PINCTRL_PIN(PIN_GPIO17,			"gpio17"),
193 	PINCTRL_PIN(PIN_GPIO18,			"gpio18"),
194 	PINCTRL_PIN(PIN_GPIO19,			"gpio19"),
195 	PINCTRL_PIN(PIN_GPIO20,			"gpio20"),
196 	PINCTRL_PIN(PIN_GPIO21,			"gpio21"),
197 	PINCTRL_PIN(PIN_GPIO22,			"gpio22"),
198 	PINCTRL_PIN(PIN_GPIO23,			"gpio23"),
199 	PINCTRL_PIN(PIN_GPIO24,			"gpio24"),
200 	PINCTRL_PIN(PIN_GPIO25,			"gpio25"),
201 	PINCTRL_PIN(PIN_GPIO26,			"gpio26"),
202 	PINCTRL_PIN(PIN_GPIO27,			"gpio27"),
203 	PINCTRL_PIN(PIN_GPIO28,			"gpio28"),
204 	PINCTRL_PIN(PIN_GPIO29,			"gpio29"),
205 	PINCTRL_PIN(PIN_GPIO30,			"gpio30"),
206 	PINCTRL_PIN(PIN_GPIO31,			"gpio31"),
207 	PINCTRL_PIN(PIN_MODE_SEL0,		"mode_sel0"),
208 	PINCTRL_PIN(PIN_MODE_SEL1,		"mode_sel1"),
209 	PINCTRL_PIN(PIN_MODE_SEL2,		"mode_sel2"),
210 	PINCTRL_PIN(PIN_BOOT_SEL0,		"boot_sel0"),
211 	PINCTRL_PIN(PIN_BOOT_SEL1,		"boot_sel1"),
212 	PINCTRL_PIN(PIN_BOOT_SEL2,		"boot_sel2"),
213 	PINCTRL_PIN(PIN_BOOT_SEL3,		"boot_sel3"),
214 	PINCTRL_PIN(PIN_BOOT_SEL4,		"boot_sel4"),
215 	PINCTRL_PIN(PIN_BOOT_SEL5,		"boot_sel5"),
216 	PINCTRL_PIN(PIN_BOOT_SEL6,		"boot_sel6"),
217 	PINCTRL_PIN(PIN_BOOT_SEL7,		"boot_sel7"),
218 	PINCTRL_PIN(PIN_MULTI_SCKT,		"multi_sckt"),
219 	PINCTRL_PIN(PIN_SCKT_ID0,		"sckt_id0"),
220 	PINCTRL_PIN(PIN_SCKT_ID1,		"sckt_id1"),
221 	PINCTRL_PIN(PIN_PLL_CLK_IN_MAIN,	"pll_clk_in_main"),
222 	PINCTRL_PIN(PIN_PLL_CLK_IN_DDR_L,	"pll_clk_in_ddr_l"),
223 	PINCTRL_PIN(PIN_PLL_CLK_IN_DDR_R,	"pll_clk_in_ddr_r"),
224 	PINCTRL_PIN(PIN_XTAL_32K,		"xtal_32k"),
225 	PINCTRL_PIN(PIN_SYS_RST,		"sys_rst"),
226 	PINCTRL_PIN(PIN_PWR_BUTTON,		"pwr_button"),
227 	PINCTRL_PIN(PIN_TEST_EN,		"test_en"),
228 	PINCTRL_PIN(PIN_TEST_MODE_MBIST,	"test_mode_mbist"),
229 	PINCTRL_PIN(PIN_TEST_MODE_SCAN,		"test_mode_scan"),
230 	PINCTRL_PIN(PIN_TEST_MODE_BSD,		"test_mode_bsd"),
231 	PINCTRL_PIN(PIN_BISR_BYP,		"bisr_byp"),
232 };
233 
234 static const struct sg2042_pin sg2042_pin_data[ARRAY_SIZE(sg2042_pins)] = {
235 	SG2042_GENERAL_PIN(PIN_LPC_LCLK, 0x000,
236 			   PIN_FLAG_ONLY_ONE_PULL),
237 	SG2042_GENERAL_PIN(PIN_LPC_LFRAME, 0x000,
238 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
239 	SG2042_GENERAL_PIN(PIN_LPC_LAD0, 0x004,
240 			   PIN_FLAG_ONLY_ONE_PULL),
241 	SG2042_GENERAL_PIN(PIN_LPC_LAD1, 0x004,
242 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
243 	SG2042_GENERAL_PIN(PIN_LPC_LAD2, 0x008,
244 			   PIN_FLAG_ONLY_ONE_PULL),
245 	SG2042_GENERAL_PIN(PIN_LPC_LAD3, 0x008,
246 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
247 	SG2042_GENERAL_PIN(PIN_LPC_LDRQ0, 0x00c,
248 			   PIN_FLAG_ONLY_ONE_PULL),
249 	SG2042_GENERAL_PIN(PIN_LPC_LDRQ1, 0x00c,
250 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
251 	SG2042_GENERAL_PIN(PIN_LPC_SERIRQ, 0x010,
252 			   PIN_FLAG_ONLY_ONE_PULL),
253 	SG2042_GENERAL_PIN(PIN_LPC_CLKRUN, 0x010,
254 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
255 	SG2042_GENERAL_PIN(PIN_LPC_LPME, 0x014,
256 			   PIN_FLAG_ONLY_ONE_PULL),
257 	SG2042_GENERAL_PIN(PIN_LPC_LPCPD, 0x014,
258 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
259 	SG2042_GENERAL_PIN(PIN_LPC_LSMI, 0x018,
260 			   PIN_FLAG_ONLY_ONE_PULL),
261 	SG2042_GENERAL_PIN(PIN_PCIE0_L0_RESET, 0x018,
262 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
263 	SG2042_GENERAL_PIN(PIN_PCIE0_L1_RESET, 0x01c,
264 			   PIN_FLAG_ONLY_ONE_PULL),
265 	SG2042_GENERAL_PIN(PIN_PCIE0_L0_WAKEUP, 0x01c,
266 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
267 	SG2042_GENERAL_PIN(PIN_PCIE0_L1_WAKEUP, 0x020,
268 			   PIN_FLAG_ONLY_ONE_PULL),
269 	SG2042_GENERAL_PIN(PIN_PCIE0_L0_CLKREQ_IN, 0x020,
270 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
271 	SG2042_GENERAL_PIN(PIN_PCIE0_L1_CLKREQ_IN, 0x024,
272 			   PIN_FLAG_ONLY_ONE_PULL),
273 	SG2042_GENERAL_PIN(PIN_PCIE1_L0_RESET, 0x024,
274 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
275 	SG2042_GENERAL_PIN(PIN_PCIE1_L1_RESET, 0x028,
276 			   PIN_FLAG_ONLY_ONE_PULL),
277 	SG2042_GENERAL_PIN(PIN_PCIE1_L0_WAKEUP, 0x028,
278 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
279 	SG2042_GENERAL_PIN(PIN_PCIE1_L1_WAKEUP, 0x02c,
280 			   PIN_FLAG_ONLY_ONE_PULL),
281 	SG2042_GENERAL_PIN(PIN_PCIE1_L0_CLKREQ_IN, 0x02c,
282 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
283 	SG2042_GENERAL_PIN(PIN_PCIE1_L1_CLKREQ_IN, 0x030,
284 			   PIN_FLAG_ONLY_ONE_PULL),
285 	SG2042_GENERAL_PIN(PIN_SPIF0_CLK_SEL1, 0x030,
286 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
287 	SG2042_GENERAL_PIN(PIN_SPIF0_CLK_SEL0, 0x034,
288 			   PIN_FLAG_ONLY_ONE_PULL),
289 	SG2042_GENERAL_PIN(PIN_SPIF0_WP, 0x034,
290 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
291 	SG2042_GENERAL_PIN(PIN_SPIF0_HOLD, 0x038,
292 			   PIN_FLAG_ONLY_ONE_PULL),
293 	SG2042_GENERAL_PIN(PIN_SPIF0_SDI, 0x038,
294 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
295 	SG2042_GENERAL_PIN(PIN_SPIF0_CS, 0x03c,
296 			   PIN_FLAG_ONLY_ONE_PULL),
297 	SG2042_GENERAL_PIN(PIN_SPIF0_SCK, 0x03c,
298 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
299 	SG2042_GENERAL_PIN(PIN_SPIF0_SDO, 0x040,
300 			   PIN_FLAG_ONLY_ONE_PULL),
301 	SG2042_GENERAL_PIN(PIN_SPIF1_CLK_SEL1, 0x040,
302 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
303 	SG2042_GENERAL_PIN(PIN_SPIF1_CLK_SEL0, 0x044,
304 			   PIN_FLAG_ONLY_ONE_PULL),
305 	SG2042_GENERAL_PIN(PIN_SPIF1_WP, 0x044,
306 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
307 	SG2042_GENERAL_PIN(PIN_SPIF1_HOLD, 0x048,
308 			   PIN_FLAG_ONLY_ONE_PULL),
309 	SG2042_GENERAL_PIN(PIN_SPIF1_SDI, 0x048,
310 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
311 	SG2042_GENERAL_PIN(PIN_SPIF1_CS, 0x04c,
312 			   PIN_FLAG_ONLY_ONE_PULL),
313 	SG2042_GENERAL_PIN(PIN_SPIF1_SCK, 0x04c,
314 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
315 	SG2042_GENERAL_PIN(PIN_SPIF1_SDO, 0x050,
316 			   PIN_FLAG_ONLY_ONE_PULL),
317 	SG2042_GENERAL_PIN(PIN_EMMC_WP, 0x050,
318 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
319 	SG2042_GENERAL_PIN(PIN_EMMC_CD, 0x054,
320 			   PIN_FLAG_ONLY_ONE_PULL),
321 	SG2042_GENERAL_PIN(PIN_EMMC_RST, 0x054,
322 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
323 	SG2042_GENERAL_PIN(PIN_EMMC_PWR_EN, 0x058,
324 			   PIN_FLAG_ONLY_ONE_PULL),
325 	SG2042_GENERAL_PIN(PIN_SDIO_CD, 0x058,
326 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
327 	SG2042_GENERAL_PIN(PIN_SDIO_WP, 0x05c,
328 			   PIN_FLAG_ONLY_ONE_PULL),
329 	SG2042_GENERAL_PIN(PIN_SDIO_RST, 0x05c,
330 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
331 	SG2042_GENERAL_PIN(PIN_SDIO_PWR_EN, 0x060,
332 			   PIN_FLAG_ONLY_ONE_PULL),
333 	SG2042_GENERAL_PIN(PIN_RGMII0_TXD0, 0x060,
334 			   PIN_FLAG_WRITE_HIGH),
335 	SG2042_GENERAL_PIN(PIN_RGMII0_TXD1, 0x064,
336 			   PIN_FLAG_DEFAULT),
337 	SG2042_GENERAL_PIN(PIN_RGMII0_TXD2, 0x064,
338 			   PIN_FLAG_WRITE_HIGH),
339 	SG2042_GENERAL_PIN(PIN_RGMII0_TXD3, 0x068,
340 			   PIN_FLAG_DEFAULT),
341 	SG2042_GENERAL_PIN(PIN_RGMII0_TXCTRL, 0x068,
342 			   PIN_FLAG_WRITE_HIGH),
343 	SG2042_GENERAL_PIN(PIN_RGMII0_RXD0, 0x06c,
344 			   PIN_FLAG_DEFAULT),
345 	SG2042_GENERAL_PIN(PIN_RGMII0_RXD1, 0x06c,
346 			   PIN_FLAG_WRITE_HIGH),
347 	SG2042_GENERAL_PIN(PIN_RGMII0_RXD2, 0x070,
348 			   PIN_FLAG_DEFAULT),
349 	SG2042_GENERAL_PIN(PIN_RGMII0_RXD3, 0x070,
350 			   PIN_FLAG_WRITE_HIGH),
351 	SG2042_GENERAL_PIN(PIN_RGMII0_RXCTRL, 0x074,
352 			   PIN_FLAG_DEFAULT),
353 	SG2042_GENERAL_PIN(PIN_RGMII0_TXC, 0x074,
354 			   PIN_FLAG_WRITE_HIGH),
355 	SG2042_GENERAL_PIN(PIN_RGMII0_RXC, 0x078,
356 			   PIN_FLAG_DEFAULT),
357 	SG2042_GENERAL_PIN(PIN_RGMII0_REFCLKO, 0x078,
358 			   PIN_FLAG_WRITE_HIGH),
359 	SG2042_GENERAL_PIN(PIN_RGMII0_IRQ, 0x07c,
360 			   PIN_FLAG_DEFAULT),
361 	SG2042_GENERAL_PIN(PIN_RGMII0_MDC, 0x07c,
362 			   PIN_FLAG_WRITE_HIGH),
363 	SG2042_GENERAL_PIN(PIN_RGMII0_MDIO, 0x080,
364 			   PIN_FLAG_DEFAULT),
365 	SG2042_GENERAL_PIN(PIN_PWM0, 0x080,
366 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
367 	SG2042_GENERAL_PIN(PIN_PWM1, 0x084,
368 			   PIN_FLAG_ONLY_ONE_PULL),
369 	SG2042_GENERAL_PIN(PIN_PWM2, 0x084,
370 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
371 	SG2042_GENERAL_PIN(PIN_PWM3, 0x088,
372 			   PIN_FLAG_ONLY_ONE_PULL),
373 	SG2042_GENERAL_PIN(PIN_FAN0, 0x088,
374 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
375 	SG2042_GENERAL_PIN(PIN_FAN1, 0x08c,
376 			   PIN_FLAG_ONLY_ONE_PULL),
377 	SG2042_GENERAL_PIN(PIN_FAN2, 0x08c,
378 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
379 	SG2042_GENERAL_PIN(PIN_FAN3, 0x090,
380 			   PIN_FLAG_ONLY_ONE_PULL),
381 	SG2042_GENERAL_PIN(PIN_IIC0_SDA, 0x090,
382 			   PIN_FLAG_WRITE_HIGH),
383 	SG2042_GENERAL_PIN(PIN_IIC0_SCL, 0x094,
384 			   PIN_FLAG_DEFAULT),
385 	SG2042_GENERAL_PIN(PIN_IIC1_SDA, 0x094,
386 			   PIN_FLAG_WRITE_HIGH),
387 	SG2042_GENERAL_PIN(PIN_IIC1_SCL, 0x098,
388 			   PIN_FLAG_DEFAULT),
389 	SG2042_GENERAL_PIN(PIN_IIC2_SDA, 0x098,
390 			   PIN_FLAG_WRITE_HIGH),
391 	SG2042_GENERAL_PIN(PIN_IIC2_SCL, 0x09c,
392 			   PIN_FLAG_DEFAULT),
393 	SG2042_GENERAL_PIN(PIN_IIC3_SDA, 0x09c,
394 			   PIN_FLAG_WRITE_HIGH),
395 	SG2042_GENERAL_PIN(PIN_IIC3_SCL, 0x0a0,
396 			   PIN_FLAG_DEFAULT),
397 	SG2042_GENERAL_PIN(PIN_UART0_TX, 0x0a0,
398 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
399 	SG2042_GENERAL_PIN(PIN_UART0_RX, 0x0a4,
400 			   PIN_FLAG_ONLY_ONE_PULL),
401 	SG2042_GENERAL_PIN(PIN_UART0_RTS, 0x0a4,
402 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
403 	SG2042_GENERAL_PIN(PIN_UART0_CTS, 0x0a8,
404 			   PIN_FLAG_ONLY_ONE_PULL),
405 	SG2042_GENERAL_PIN(PIN_UART1_TX, 0x0a8,
406 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
407 	SG2042_GENERAL_PIN(PIN_UART1_RX, 0x0ac,
408 			   PIN_FLAG_ONLY_ONE_PULL),
409 	SG2042_GENERAL_PIN(PIN_UART1_RTS, 0x0ac,
410 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
411 	SG2042_GENERAL_PIN(PIN_UART1_CTS, 0x0b0,
412 			   PIN_FLAG_ONLY_ONE_PULL),
413 	SG2042_GENERAL_PIN(PIN_UART2_TX, 0x0b0,
414 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
415 	SG2042_GENERAL_PIN(PIN_UART2_RX, 0x0b4,
416 			   PIN_FLAG_ONLY_ONE_PULL),
417 	SG2042_GENERAL_PIN(PIN_UART2_RTS, 0x0b4,
418 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
419 	SG2042_GENERAL_PIN(PIN_UART2_CTS, 0x0b8,
420 			   PIN_FLAG_ONLY_ONE_PULL),
421 	SG2042_GENERAL_PIN(PIN_UART3_TX, 0x0b8,
422 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
423 	SG2042_GENERAL_PIN(PIN_UART3_RX, 0x0bc,
424 			   PIN_FLAG_ONLY_ONE_PULL),
425 	SG2042_GENERAL_PIN(PIN_UART3_RTS, 0x0bc,
426 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
427 	SG2042_GENERAL_PIN(PIN_UART3_CTS, 0x0c0,
428 			   PIN_FLAG_ONLY_ONE_PULL),
429 	SG2042_GENERAL_PIN(PIN_SPI0_CS0, 0x0c0,
430 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
431 	SG2042_GENERAL_PIN(PIN_SPI0_CS1, 0x0c4,
432 			   PIN_FLAG_ONLY_ONE_PULL),
433 	SG2042_GENERAL_PIN(PIN_SPI0_SDI, 0x0c4,
434 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
435 	SG2042_GENERAL_PIN(PIN_SPI0_SDO, 0x0c8,
436 			   PIN_FLAG_ONLY_ONE_PULL),
437 	SG2042_GENERAL_PIN(PIN_SPI0_SCK, 0x0c8,
438 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
439 	SG2042_GENERAL_PIN(PIN_SPI1_CS0, 0x0cc,
440 			   PIN_FLAG_ONLY_ONE_PULL),
441 	SG2042_GENERAL_PIN(PIN_SPI1_CS1, 0x0cc,
442 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
443 	SG2042_GENERAL_PIN(PIN_SPI1_SDI, 0x0d0,
444 			   PIN_FLAG_ONLY_ONE_PULL),
445 	SG2042_GENERAL_PIN(PIN_SPI1_SDO, 0x0d0,
446 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
447 	SG2042_GENERAL_PIN(PIN_SPI1_SCK, 0x0d4,
448 			   PIN_FLAG_ONLY_ONE_PULL),
449 	SG2042_GENERAL_PIN(PIN_JTAG0_TDO, 0x0d4,
450 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
451 	SG2042_GENERAL_PIN(PIN_JTAG0_TCK, 0x0d8,
452 			   PIN_FLAG_ONLY_ONE_PULL),
453 	SG2042_GENERAL_PIN(PIN_JTAG0_TDI, 0x0d8,
454 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
455 	SG2042_GENERAL_PIN(PIN_JTAG0_TMS, 0x0dc,
456 			   PIN_FLAG_ONLY_ONE_PULL),
457 	SG2042_GENERAL_PIN(PIN_JTAG0_TRST, 0x0dc,
458 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
459 	SG2042_GENERAL_PIN(PIN_JTAG0_SRST, 0x0e0,
460 			   PIN_FLAG_ONLY_ONE_PULL),
461 	SG2042_GENERAL_PIN(PIN_JTAG1_TDO, 0x0e0,
462 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
463 	SG2042_GENERAL_PIN(PIN_JTAG1_TCK, 0x0e4,
464 			   PIN_FLAG_ONLY_ONE_PULL),
465 	SG2042_GENERAL_PIN(PIN_JTAG1_TDI, 0x0e4,
466 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
467 	SG2042_GENERAL_PIN(PIN_JTAG1_TMS, 0x0e8,
468 			   PIN_FLAG_ONLY_ONE_PULL),
469 	SG2042_GENERAL_PIN(PIN_JTAG1_TRST, 0x0e8,
470 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
471 	SG2042_GENERAL_PIN(PIN_JTAG1_SRST, 0x0ec,
472 			   PIN_FLAG_ONLY_ONE_PULL),
473 	SG2042_GENERAL_PIN(PIN_JTAG2_TDO, 0x0ec,
474 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
475 	SG2042_GENERAL_PIN(PIN_JTAG2_TCK, 0x0f0,
476 			   PIN_FLAG_ONLY_ONE_PULL),
477 	SG2042_GENERAL_PIN(PIN_JTAG2_TDI, 0x0f0,
478 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
479 	SG2042_GENERAL_PIN(PIN_JTAG2_TMS, 0x0f4,
480 			   PIN_FLAG_ONLY_ONE_PULL),
481 	SG2042_GENERAL_PIN(PIN_JTAG2_TRST, 0x0f4,
482 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
483 	SG2042_GENERAL_PIN(PIN_JTAG2_SRST, 0x0f8,
484 			   PIN_FLAG_ONLY_ONE_PULL),
485 	SG2042_GENERAL_PIN(PIN_GPIO0, 0x0f8,
486 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
487 	SG2042_GENERAL_PIN(PIN_GPIO1, 0x0fc,
488 			   PIN_FLAG_ONLY_ONE_PULL),
489 	SG2042_GENERAL_PIN(PIN_GPIO2, 0x0fc,
490 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
491 	SG2042_GENERAL_PIN(PIN_GPIO3, 0x100,
492 			   PIN_FLAG_ONLY_ONE_PULL),
493 	SG2042_GENERAL_PIN(PIN_GPIO4, 0x100,
494 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
495 	SG2042_GENERAL_PIN(PIN_GPIO5, 0x104,
496 			   PIN_FLAG_ONLY_ONE_PULL),
497 	SG2042_GENERAL_PIN(PIN_GPIO6, 0x104,
498 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
499 	SG2042_GENERAL_PIN(PIN_GPIO7, 0x108,
500 			   PIN_FLAG_ONLY_ONE_PULL),
501 	SG2042_GENERAL_PIN(PIN_GPIO8, 0x108,
502 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
503 	SG2042_GENERAL_PIN(PIN_GPIO9, 0x10c,
504 			   PIN_FLAG_ONLY_ONE_PULL),
505 	SG2042_GENERAL_PIN(PIN_GPIO10, 0x10c,
506 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
507 	SG2042_GENERAL_PIN(PIN_GPIO11, 0x110,
508 			   PIN_FLAG_ONLY_ONE_PULL),
509 	SG2042_GENERAL_PIN(PIN_GPIO12, 0x110,
510 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
511 	SG2042_GENERAL_PIN(PIN_GPIO13, 0x114,
512 			   PIN_FLAG_ONLY_ONE_PULL),
513 	SG2042_GENERAL_PIN(PIN_GPIO14, 0x114,
514 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
515 	SG2042_GENERAL_PIN(PIN_GPIO15, 0x118,
516 			   PIN_FLAG_ONLY_ONE_PULL),
517 	SG2042_GENERAL_PIN(PIN_GPIO16, 0x118,
518 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
519 	SG2042_GENERAL_PIN(PIN_GPIO17, 0x11c,
520 			   PIN_FLAG_ONLY_ONE_PULL),
521 	SG2042_GENERAL_PIN(PIN_GPIO18, 0x11c,
522 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
523 	SG2042_GENERAL_PIN(PIN_GPIO19, 0x120,
524 			   PIN_FLAG_ONLY_ONE_PULL),
525 	SG2042_GENERAL_PIN(PIN_GPIO20, 0x120,
526 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
527 	SG2042_GENERAL_PIN(PIN_GPIO21, 0x124,
528 			   PIN_FLAG_ONLY_ONE_PULL),
529 	SG2042_GENERAL_PIN(PIN_GPIO22, 0x124,
530 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
531 	SG2042_GENERAL_PIN(PIN_GPIO23, 0x128,
532 			   PIN_FLAG_ONLY_ONE_PULL),
533 	SG2042_GENERAL_PIN(PIN_GPIO24, 0x128,
534 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
535 	SG2042_GENERAL_PIN(PIN_GPIO25, 0x12c,
536 			   PIN_FLAG_ONLY_ONE_PULL),
537 	SG2042_GENERAL_PIN(PIN_GPIO26, 0x12c,
538 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
539 	SG2042_GENERAL_PIN(PIN_GPIO27, 0x130,
540 			   PIN_FLAG_ONLY_ONE_PULL),
541 	SG2042_GENERAL_PIN(PIN_GPIO28, 0x130,
542 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
543 	SG2042_GENERAL_PIN(PIN_GPIO29, 0x134,
544 			   PIN_FLAG_ONLY_ONE_PULL),
545 	SG2042_GENERAL_PIN(PIN_GPIO30, 0x134,
546 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL),
547 	SG2042_GENERAL_PIN(PIN_GPIO31, 0x138,
548 			   PIN_FLAG_ONLY_ONE_PULL),
549 	SG2042_GENERAL_PIN(PIN_MODE_SEL0, 0x138,
550 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
551 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
552 	SG2042_GENERAL_PIN(PIN_MODE_SEL1, 0x13c,
553 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
554 			   PIN_FLAG_NO_OEX_EN),
555 	SG2042_GENERAL_PIN(PIN_MODE_SEL2, 0x13c,
556 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
557 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
558 	SG2042_GENERAL_PIN(PIN_BOOT_SEL0, 0x140,
559 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
560 			   PIN_FLAG_NO_OEX_EN),
561 	SG2042_GENERAL_PIN(PIN_BOOT_SEL1, 0x140,
562 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
563 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
564 	SG2042_GENERAL_PIN(PIN_BOOT_SEL2, 0x144,
565 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
566 			   PIN_FLAG_NO_OEX_EN),
567 	SG2042_GENERAL_PIN(PIN_BOOT_SEL3, 0x144,
568 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
569 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
570 	SG2042_GENERAL_PIN(PIN_BOOT_SEL4, 0x148,
571 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
572 			   PIN_FLAG_NO_OEX_EN),
573 	SG2042_GENERAL_PIN(PIN_BOOT_SEL5, 0x148,
574 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
575 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
576 	SG2042_GENERAL_PIN(PIN_BOOT_SEL6, 0x14c,
577 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
578 			   PIN_FLAG_NO_OEX_EN),
579 	SG2042_GENERAL_PIN(PIN_BOOT_SEL7, 0x14c,
580 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
581 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
582 	SG2042_GENERAL_PIN(PIN_MULTI_SCKT, 0x150,
583 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
584 			   PIN_FLAG_NO_OEX_EN),
585 	SG2042_GENERAL_PIN(PIN_SCKT_ID0, 0x150,
586 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
587 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
588 	SG2042_GENERAL_PIN(PIN_SCKT_ID1, 0x154,
589 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
590 			   PIN_FLAG_NO_OEX_EN),
591 	SG2042_GENERAL_PIN(PIN_PLL_CLK_IN_MAIN, 0x154,
592 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
593 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
594 	SG2042_GENERAL_PIN(PIN_PLL_CLK_IN_DDR_L, 0x158,
595 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
596 			   PIN_FLAG_NO_OEX_EN),
597 	SG2042_GENERAL_PIN(PIN_PLL_CLK_IN_DDR_R, 0x158,
598 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
599 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
600 	SG2042_GENERAL_PIN(PIN_XTAL_32K, 0x15c,
601 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
602 			   PIN_FLAG_NO_OEX_EN),
603 	SG2042_GENERAL_PIN(PIN_SYS_RST, 0x15c,
604 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
605 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
606 	SG2042_GENERAL_PIN(PIN_PWR_BUTTON, 0x160,
607 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
608 			   PIN_FLAG_NO_OEX_EN),
609 	SG2042_GENERAL_PIN(PIN_TEST_EN, 0x160,
610 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
611 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
612 	SG2042_GENERAL_PIN(PIN_TEST_MODE_MBIST, 0x164,
613 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
614 			   PIN_FLAG_NO_OEX_EN),
615 	SG2042_GENERAL_PIN(PIN_TEST_MODE_SCAN, 0x164,
616 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
617 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
618 	SG2042_GENERAL_PIN(PIN_TEST_MODE_BSD, 0x168,
619 			   PIN_FLAG_ONLY_ONE_PULL | PIN_FLAG_NO_PINMUX |
620 			   PIN_FLAG_NO_OEX_EN),
621 	SG2042_GENERAL_PIN(PIN_BISR_BYP, 0x168,
622 			   PIN_FLAG_WRITE_HIGH | PIN_FLAG_ONLY_ONE_PULL |
623 			   PIN_FLAG_NO_PINMUX | PIN_FLAG_NO_OEX_EN),
624 };
625 
626 static const struct sophgo_pinctrl_data sg2042_pindata = {
627 	.pins		= sg2042_pins,
628 	.pindata	= sg2042_pin_data,
629 	.vddio_ops	= &sg2042_vddio_cfg_ops,
630 	.cfg_ops	= &sg2042_cfg_ops,
631 	.pctl_ops	= &sg2042_pctrl_ops,
632 	.pmx_ops	= &sg2042_pmx_ops,
633 	.pconf_ops	= &sg2042_pconf_ops,
634 	.npins		= ARRAY_SIZE(sg2042_pins),
635 	.pinsize	= sizeof(struct sg2042_pin),
636 };
637 
638 static const struct of_device_id sg2042_pinctrl_ids[] = {
639 	{ .compatible = "sophgo,sg2042-pinctrl", .data = &sg2042_pindata },
640 	{ }
641 };
642 MODULE_DEVICE_TABLE(of, sg2042_pinctrl_ids);
643 
644 static struct platform_driver sg2042_pinctrl_driver = {
645 	.probe	= sophgo_pinctrl_probe,
646 	.driver	= {
647 		.name			= "sg2042-pinctrl",
648 		.suppress_bind_attrs	= true,
649 		.of_match_table		= sg2042_pinctrl_ids,
650 	},
651 };
652 module_platform_driver(sg2042_pinctrl_driver);
653 
654 MODULE_DESCRIPTION("Pinctrl driver for the SG2002 series SoC");
655 MODULE_LICENSE("GPL");
656