File Index
Files and directories
Sign in
FILE

pinctrl-sg2042.c

File preview with syntax highlighting.

linux-6.19.14/drivers/pinctrl/sophgo/pinctrl-sg2042.c C
  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
 19static int sg2042_get_pull_up(const struct sophgo_pin *sp, const u32 *psmap)
 20{
 21	return 35000;
 22}
 23
 24static int sg2042_get_pull_down(const struct sophgo_pin *sp, const u32 *psmap)
 25{
 26	return 28000;
 27}
 28
 29static 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
 36static 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
 43static 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
 49static 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
234static 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
626static 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
638static const struct of_device_id sg2042_pinctrl_ids[] = {
639	{ .compatible = "sophgo,sg2042-pinctrl", .data = &sg2042_pindata },
640	{ }
641};
642MODULE_DEVICE_TABLE(of, sg2042_pinctrl_ids);
643
644static 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};
652module_platform_driver(sg2042_pinctrl_driver);
653
654MODULE_DESCRIPTION("Pinctrl driver for the SG2002 series SoC");
655MODULE_LICENSE("GPL");
~/ Read-only file preview.