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