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