1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Sophgo SG2000 SoC pinctrl driver.
4  *
5  * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com>
6  *
7  * This file is generated from vendor pinout definition.
8  */
9 
10 #include <linux/module.h>
11 #include <linux/platform_device.h>
12 #include <linux/of.h>
13 
14 #include <linux/pinctrl/pinctrl.h>
15 #include <linux/pinctrl/pinmux.h>
16 
17 #include <dt-bindings/pinctrl/pinctrl-sg2000.h>
18 
19 #include "pinctrl-cv18xx.h"
20 
21 enum SG2000_POWER_DOMAIN {
22 	VDD18A_EPHY		= 0,
23 	VDD18A_MIPI		= 1,
24 	VDDIO18_1		= 2,
25 	VDDIO_EMMC		= 3,
26 	VDDIO_RTC		= 4,
27 	VDDIO_SD0		= 5,
28 	VDDIO_SD1		= 6,
29 	VDDIO_VIVO		= 7
30 };
31 
32 static const char *const sg2000_power_domain_desc[] = {
33 	[VDD18A_EPHY]		= "VDD18A_EPHY",
34 	[VDD18A_MIPI]		= "VDD18A_MIPI",
35 	[VDDIO18_1]		= "VDDIO18_1",
36 	[VDDIO_EMMC]		= "VDDIO_EMMC",
37 	[VDDIO_RTC]		= "VDDIO_RTC",
38 	[VDDIO_SD0]		= "VDDIO_SD0",
39 	[VDDIO_SD1]		= "VDDIO_SD1",
40 	[VDDIO_VIVO]		= "VDDIO_VIVO",
41 };
42 
sg2000_get_pull_up(const struct sophgo_pin * sp,const u32 * psmap)43 static int sg2000_get_pull_up(const struct sophgo_pin *sp, const u32 *psmap)
44 {
45 	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
46 	u32 pstate = psmap[pin->power_domain];
47 	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
48 
49 	if (type == IO_TYPE_1V8_ONLY)
50 		return 79000;
51 
52 	if (type == IO_TYPE_1V8_OR_3V3) {
53 		if (pstate == PIN_POWER_STATE_1V8)
54 			return 60000;
55 		if (pstate == PIN_POWER_STATE_3V3)
56 			return 60000;
57 
58 		return -EINVAL;
59 	}
60 
61 	return -ENOTSUPP;
62 }
63 
sg2000_get_pull_down(const struct sophgo_pin * sp,const u32 * psmap)64 static int sg2000_get_pull_down(const struct sophgo_pin *sp, const u32 *psmap)
65 {
66 	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
67 	u32 pstate = psmap[pin->power_domain];
68 	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
69 
70 	if (type == IO_TYPE_1V8_ONLY)
71 		return 87000;
72 
73 	if (type == IO_TYPE_1V8_OR_3V3) {
74 		if (pstate == PIN_POWER_STATE_1V8)
75 			return 61000;
76 		if (pstate == PIN_POWER_STATE_3V3)
77 			return 62000;
78 
79 		return -EINVAL;
80 	}
81 
82 	return -ENOTSUPP;
83 }
84 
85 static const u32 sg2000_1v8_oc_map[] = {
86 	12800,
87 	25300,
88 	37400,
89 	49000
90 };
91 
92 static const u32 sg2000_18od33_1v8_oc_map[] = {
93 	7800,
94 	11700,
95 	15500,
96 	19200,
97 	23000,
98 	26600,
99 	30200,
100 	33700
101 };
102 
103 static const u32 sg2000_18od33_3v3_oc_map[] = {
104 	5500,
105 	8200,
106 	10800,
107 	13400,
108 	16100,
109 	18700,
110 	21200,
111 	23700
112 };
113 
114 static const u32 sg2000_eth_oc_map[] = {
115 	15700,
116 	17800
117 };
118 
sg2000_get_oc_map(const struct sophgo_pin * sp,const u32 * psmap,const u32 ** map)119 static int sg2000_get_oc_map(const struct sophgo_pin *sp, const u32 *psmap,
120 			     const u32 **map)
121 {
122 	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
123 	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
124 	u32 pstate = psmap[pin->power_domain];
125 
126 	if (type == IO_TYPE_1V8_ONLY) {
127 		*map = sg2000_1v8_oc_map;
128 		return ARRAY_SIZE(sg2000_1v8_oc_map);
129 	}
130 
131 	if (type == IO_TYPE_1V8_OR_3V3) {
132 		if (pstate == PIN_POWER_STATE_1V8) {
133 			*map = sg2000_18od33_1v8_oc_map;
134 			return ARRAY_SIZE(sg2000_18od33_1v8_oc_map);
135 		} else if (pstate == PIN_POWER_STATE_3V3) {
136 			*map = sg2000_18od33_3v3_oc_map;
137 			return ARRAY_SIZE(sg2000_18od33_3v3_oc_map);
138 		}
139 	}
140 
141 	if (type == IO_TYPE_ETH) {
142 		*map = sg2000_eth_oc_map;
143 		return ARRAY_SIZE(sg2000_eth_oc_map);
144 	}
145 
146 	return -ENOTSUPP;
147 }
148 
149 static const u32 sg2000_1v8_schmitt_map[] = {
150 	0,
151 	970000,
152 	1040000
153 };
154 
155 static const u32 sg2000_18od33_1v8_schmitt_map[] = {
156 	0,
157 	1070000
158 };
159 
160 static const u32 sg2000_18od33_3v3_schmitt_map[] = {
161 	0,
162 	1100000
163 };
164 
sg2000_get_schmitt_map(const struct sophgo_pin * sp,const u32 * psmap,const u32 ** map)165 static int sg2000_get_schmitt_map(const struct sophgo_pin *sp, const u32 *psmap,
166 				  const u32 **map)
167 {
168 	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
169 	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
170 	u32 pstate = psmap[pin->power_domain];
171 
172 	if (type == IO_TYPE_1V8_ONLY) {
173 		*map = sg2000_1v8_schmitt_map;
174 		return ARRAY_SIZE(sg2000_1v8_schmitt_map);
175 	}
176 
177 	if (type == IO_TYPE_1V8_OR_3V3) {
178 		if (pstate == PIN_POWER_STATE_1V8) {
179 			*map = sg2000_18od33_1v8_schmitt_map;
180 			return ARRAY_SIZE(sg2000_18od33_1v8_schmitt_map);
181 		} else if (pstate == PIN_POWER_STATE_3V3) {
182 			*map = sg2000_18od33_3v3_schmitt_map;
183 			return ARRAY_SIZE(sg2000_18od33_3v3_schmitt_map);
184 		}
185 	}
186 
187 	return -ENOTSUPP;
188 }
189 
190 static const struct sophgo_vddio_cfg_ops sg2000_vddio_cfg_ops = {
191 	.get_pull_up		= sg2000_get_pull_up,
192 	.get_pull_down		= sg2000_get_pull_down,
193 	.get_oc_map		= sg2000_get_oc_map,
194 	.get_schmitt_map	= sg2000_get_schmitt_map,
195 };
196 
197 static const struct pinctrl_pin_desc sg2000_pins[] = {
198 	PINCTRL_PIN(PIN_MIPI_TXM4,	"MIPI_TXM4"),
199 	PINCTRL_PIN(PIN_MIPIRX0N,	"MIPIRX0N"),
200 	PINCTRL_PIN(PIN_MIPIRX3P,	"MIPIRX3P"),
201 	PINCTRL_PIN(PIN_MIPIRX4P,	"MIPIRX4P"),
202 	PINCTRL_PIN(PIN_VIVO_D2,	"VIVO_D2"),
203 	PINCTRL_PIN(PIN_VIVO_D3,	"VIVO_D3"),
204 	PINCTRL_PIN(PIN_VIVO_D10,	"VIVO_D10"),
205 	PINCTRL_PIN(PIN_USB_VBUS_DET,	"USB_VBUS_DET"),
206 	PINCTRL_PIN(PIN_MIPI_TXP3,	"MIPI_TXP3"),
207 	PINCTRL_PIN(PIN_MIPI_TXM3,	"MIPI_TXM3"),
208 	PINCTRL_PIN(PIN_MIPI_TXP4,	"MIPI_TXP4"),
209 	PINCTRL_PIN(PIN_MIPIRX0P,	"MIPIRX0P"),
210 	PINCTRL_PIN(PIN_MIPIRX1N,	"MIPIRX1N"),
211 	PINCTRL_PIN(PIN_MIPIRX2N,	"MIPIRX2N"),
212 	PINCTRL_PIN(PIN_MIPIRX4N,	"MIPIRX4N"),
213 	PINCTRL_PIN(PIN_MIPIRX5N,	"MIPIRX5N"),
214 	PINCTRL_PIN(PIN_VIVO_D1,	"VIVO_D1"),
215 	PINCTRL_PIN(PIN_VIVO_D5,	"VIVO_D5"),
216 	PINCTRL_PIN(PIN_VIVO_D7,	"VIVO_D7"),
217 	PINCTRL_PIN(PIN_VIVO_D9,	"VIVO_D9"),
218 	PINCTRL_PIN(PIN_USB_ID,		"USB_ID"),
219 	PINCTRL_PIN(PIN_ETH_RXM,	"ETH_RXM"),
220 	PINCTRL_PIN(PIN_MIPI_TXP2,	"MIPI_TXP2"),
221 	PINCTRL_PIN(PIN_MIPI_TXM2,	"MIPI_TXM2"),
222 	PINCTRL_PIN(PIN_CAM_PD0,	"CAM_PD0"),
223 	PINCTRL_PIN(PIN_CAM_MCLK0,	"CAM_MCLK0"),
224 	PINCTRL_PIN(PIN_MIPIRX1P,	"MIPIRX1P"),
225 	PINCTRL_PIN(PIN_MIPIRX2P,	"MIPIRX2P"),
226 	PINCTRL_PIN(PIN_MIPIRX3N,	"MIPIRX3N"),
227 	PINCTRL_PIN(PIN_MIPIRX5P,	"MIPIRX5P"),
228 	PINCTRL_PIN(PIN_VIVO_CLK,	"VIVO_CLK"),
229 	PINCTRL_PIN(PIN_VIVO_D6,	"VIVO_D6"),
230 	PINCTRL_PIN(PIN_VIVO_D8,	"VIVO_D8"),
231 	PINCTRL_PIN(PIN_USB_VBUS_EN,	"USB_VBUS_EN"),
232 	PINCTRL_PIN(PIN_ETH_RXP,	"ETH_RXP"),
233 	PINCTRL_PIN(PIN_GPIO_RTX,	"GPIO_RTX"),
234 	PINCTRL_PIN(PIN_MIPI_TXP1,	"MIPI_TXP1"),
235 	PINCTRL_PIN(PIN_MIPI_TXM1,	"MIPI_TXM1"),
236 	PINCTRL_PIN(PIN_CAM_MCLK1,	"CAM_MCLK1"),
237 	PINCTRL_PIN(PIN_IIC3_SCL,	"IIC3_SCL"),
238 	PINCTRL_PIN(PIN_VIVO_D4,	"VIVO_D4"),
239 	PINCTRL_PIN(PIN_ETH_TXM,	"ETH_TXM"),
240 	PINCTRL_PIN(PIN_ETH_TXP,	"ETH_TXP"),
241 	PINCTRL_PIN(PIN_MIPI_TXP0,	"MIPI_TXP0"),
242 	PINCTRL_PIN(PIN_MIPI_TXM0,	"MIPI_TXM0"),
243 	PINCTRL_PIN(PIN_CAM_PD1,	"CAM_PD1"),
244 	PINCTRL_PIN(PIN_CAM_RST0,	"CAM_RST0"),
245 	PINCTRL_PIN(PIN_VIVO_D0,	"VIVO_D0"),
246 	PINCTRL_PIN(PIN_ADC1,		"ADC1"),
247 	PINCTRL_PIN(PIN_ADC2,		"ADC2"),
248 	PINCTRL_PIN(PIN_ADC3,		"ADC3"),
249 	PINCTRL_PIN(PIN_AUD_AOUTL,	"AUD_AOUTL"),
250 	PINCTRL_PIN(PIN_IIC3_SDA,	"IIC3_SDA"),
251 	PINCTRL_PIN(PIN_SD1_D2,		"SD1_D2"),
252 	PINCTRL_PIN(PIN_AUD_AOUTR,	"AUD_AOUTR"),
253 	PINCTRL_PIN(PIN_SD1_D3,		"SD1_D3"),
254 	PINCTRL_PIN(PIN_SD1_CLK,	"SD1_CLK"),
255 	PINCTRL_PIN(PIN_SD1_CMD,	"SD1_CMD"),
256 	PINCTRL_PIN(PIN_AUD_AINL_MIC,	"AUD_AINL_MIC"),
257 	PINCTRL_PIN(PIN_RSTN,		"RSTN"),
258 	PINCTRL_PIN(PIN_PWM0_BUCK,	"PWM0_BUCK"),
259 	PINCTRL_PIN(PIN_SD1_D1,		"SD1_D1"),
260 	PINCTRL_PIN(PIN_SD1_D0,		"SD1_D0"),
261 	PINCTRL_PIN(PIN_AUD_AINR_MIC,	"AUD_AINR_MIC"),
262 	PINCTRL_PIN(PIN_IIC2_SCL,	"IIC2_SCL"),
263 	PINCTRL_PIN(PIN_IIC2_SDA,	"IIC2_SDA"),
264 	PINCTRL_PIN(PIN_SD0_CD,		"SD0_CD"),
265 	PINCTRL_PIN(PIN_SD0_D1,		"SD0_D1"),
266 	PINCTRL_PIN(PIN_UART2_RX,	"UART2_RX"),
267 	PINCTRL_PIN(PIN_UART2_CTS,	"UART2_CTS"),
268 	PINCTRL_PIN(PIN_UART2_TX,	"UART2_TX"),
269 	PINCTRL_PIN(PIN_SD0_CLK,	"SD0_CLK"),
270 	PINCTRL_PIN(PIN_SD0_D0,		"SD0_D0"),
271 	PINCTRL_PIN(PIN_SD0_CMD,	"SD0_CMD"),
272 	PINCTRL_PIN(PIN_CLK32K,		"CLK32K"),
273 	PINCTRL_PIN(PIN_UART2_RTS,	"UART2_RTS"),
274 	PINCTRL_PIN(PIN_SD0_D3,		"SD0_D3"),
275 	PINCTRL_PIN(PIN_SD0_D2,		"SD0_D2"),
276 	PINCTRL_PIN(PIN_UART0_RX,	"UART0_RX"),
277 	PINCTRL_PIN(PIN_UART0_TX,	"UART0_TX"),
278 	PINCTRL_PIN(PIN_JTAG_CPU_TRST,	"JTAG_CPU_TRST"),
279 	PINCTRL_PIN(PIN_PWR_ON,		"PWR_ON"),
280 	PINCTRL_PIN(PIN_PWR_GPIO2,	"PWR_GPIO2"),
281 	PINCTRL_PIN(PIN_PWR_GPIO0,	"PWR_GPIO0"),
282 	PINCTRL_PIN(PIN_CLK25M,		"CLK25M"),
283 	PINCTRL_PIN(PIN_SD0_PWR_EN,	"SD0_PWR_EN"),
284 	PINCTRL_PIN(PIN_SPK_EN,		"SPK_EN"),
285 	PINCTRL_PIN(PIN_JTAG_CPU_TCK,	"JTAG_CPU_TCK"),
286 	PINCTRL_PIN(PIN_JTAG_CPU_TMS,	"JTAG_CPU_TMS"),
287 	PINCTRL_PIN(PIN_PWR_WAKEUP1,	"PWR_WAKEUP1"),
288 	PINCTRL_PIN(PIN_PWR_WAKEUP0,	"PWR_WAKEUP0"),
289 	PINCTRL_PIN(PIN_PWR_GPIO1,	"PWR_GPIO1"),
290 	PINCTRL_PIN(PIN_EMMC_DAT3,	"EMMC_DAT3"),
291 	PINCTRL_PIN(PIN_EMMC_DAT0,	"EMMC_DAT0"),
292 	PINCTRL_PIN(PIN_EMMC_DAT2,	"EMMC_DAT2"),
293 	PINCTRL_PIN(PIN_EMMC_RSTN,	"EMMC_RSTN"),
294 	PINCTRL_PIN(PIN_AUX0,		"AUX0"),
295 	PINCTRL_PIN(PIN_IIC0_SDA,	"IIC0_SDA"),
296 	PINCTRL_PIN(PIN_PWR_SEQ3,	"PWR_SEQ3"),
297 	PINCTRL_PIN(PIN_PWR_VBAT_DET,	"PWR_VBAT_DET"),
298 	PINCTRL_PIN(PIN_PWR_SEQ1,	"PWR_SEQ1"),
299 	PINCTRL_PIN(PIN_PWR_BUTTON1,	"PWR_BUTTON1"),
300 	PINCTRL_PIN(PIN_EMMC_DAT1,	"EMMC_DAT1"),
301 	PINCTRL_PIN(PIN_EMMC_CMD,	"EMMC_CMD"),
302 	PINCTRL_PIN(PIN_EMMC_CLK,	"EMMC_CLK"),
303 	PINCTRL_PIN(PIN_IIC0_SCL,	"IIC0_SCL"),
304 	PINCTRL_PIN(PIN_GPIO_ZQ,	"GPIO_ZQ"),
305 	PINCTRL_PIN(PIN_PWR_RSTN,	"PWR_RSTN"),
306 	PINCTRL_PIN(PIN_PWR_SEQ2,	"PWR_SEQ2"),
307 	PINCTRL_PIN(PIN_XTAL_XIN,	"XTAL_XIN"),
308 };
309 
310 static const struct cv1800_pin sg2000_pin_data[ARRAY_SIZE(sg2000_pins)] = {
311 	CV1800_GENERAL_PIN(PIN_MIPI_TXM4, VDD18A_MIPI,
312 			   IO_TYPE_1V8_ONLY,
313 			   CV1800_PINCONF_AREA_SYS, 0x194, 7,
314 			   CV1800_PINCONF_AREA_SYS, 0xc60),
315 	CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_MIPI,
316 			   IO_TYPE_1V8_ONLY,
317 			   CV1800_PINCONF_AREA_SYS, 0x18c, 7,
318 			   CV1800_PINCONF_AREA_SYS, 0xc58),
319 	CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3P, VDD18A_MIPI,
320 				 IO_TYPE_1V8_ONLY,
321 				 CV1800_PINCONF_AREA_SYS, 0x178, 7,
322 				 CV1800_PINCONF_AREA_SYS, 0x118, 7,
323 				 CV1800_PINCONF_AREA_SYS, 0xc44),
324 	CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4P, VDD18A_MIPI,
325 				 IO_TYPE_1V8_ONLY,
326 				 CV1800_PINCONF_AREA_SYS, 0x170, 7,
327 				 CV1800_PINCONF_AREA_SYS, 0x11c, 7,
328 				 CV1800_PINCONF_AREA_SYS, 0xc3c),
329 	CV1800_GENERAL_PIN(PIN_VIVO_D2, VDDIO_VIVO,
330 			   IO_TYPE_1V8_OR_3V3,
331 			   CV1800_PINCONF_AREA_SYS, 0x154, 7,
332 			   CV1800_PINCONF_AREA_SYS, 0xc20),
333 	CV1800_GENERAL_PIN(PIN_VIVO_D3, VDDIO_VIVO,
334 			   IO_TYPE_1V8_OR_3V3,
335 			   CV1800_PINCONF_AREA_SYS, 0x150, 7,
336 			   CV1800_PINCONF_AREA_SYS, 0xc1c),
337 	CV1800_GENERAL_PIN(PIN_VIVO_D10, VDDIO_VIVO,
338 			   IO_TYPE_1V8_OR_3V3,
339 			   CV1800_PINCONF_AREA_SYS, 0x134, 7,
340 			   CV1800_PINCONF_AREA_SYS, 0xc00),
341 	CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDDIO18_1,
342 			   IO_TYPE_1V8_ONLY,
343 			   CV1800_PINCONF_AREA_SYS, 0x108, 5,
344 			   CV1800_PINCONF_AREA_SYS, 0x820),
345 	CV1800_GENERAL_PIN(PIN_MIPI_TXP3, VDD18A_MIPI,
346 			   IO_TYPE_1V8_ONLY,
347 			   CV1800_PINCONF_AREA_SYS, 0x1a0, 7,
348 			   CV1800_PINCONF_AREA_SYS, 0xc6c),
349 	CV1800_GENERAL_PIN(PIN_MIPI_TXM3, VDD18A_MIPI,
350 			   IO_TYPE_1V8_ONLY,
351 			   CV1800_PINCONF_AREA_SYS, 0x19c, 7,
352 			   CV1800_PINCONF_AREA_SYS, 0xc68),
353 	CV1800_GENERAL_PIN(PIN_MIPI_TXP4, VDD18A_MIPI,
354 			   IO_TYPE_1V8_ONLY,
355 			   CV1800_PINCONF_AREA_SYS, 0x198, 7,
356 			   CV1800_PINCONF_AREA_SYS, 0xc64),
357 	CV1800_GENERAL_PIN(PIN_MIPIRX0P, VDD18A_MIPI,
358 			   IO_TYPE_1V8_ONLY,
359 			   CV1800_PINCONF_AREA_SYS, 0x190, 7,
360 			   CV1800_PINCONF_AREA_SYS, 0xc5c),
361 	CV1800_GENERAL_PIN(PIN_MIPIRX1N, VDD18A_MIPI,
362 			   IO_TYPE_1V8_ONLY,
363 			   CV1800_PINCONF_AREA_SYS, 0x184, 7,
364 			   CV1800_PINCONF_AREA_SYS, 0xc50),
365 	CV1800_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_MIPI,
366 			   IO_TYPE_1V8_ONLY,
367 			   CV1800_PINCONF_AREA_SYS, 0x17c, 7,
368 			   CV1800_PINCONF_AREA_SYS, 0xc48),
369 	CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4N, VDD18A_MIPI,
370 				 IO_TYPE_1V8_ONLY,
371 				 CV1800_PINCONF_AREA_SYS, 0x16c, 7,
372 				 CV1800_PINCONF_AREA_SYS, 0x120, 7,
373 				 CV1800_PINCONF_AREA_SYS, 0xc38),
374 	CV1800_GENERAL_PIN(PIN_MIPIRX5N, VDD18A_MIPI,
375 			   IO_TYPE_1V8_ONLY,
376 			   CV1800_PINCONF_AREA_SYS, 0x164, 7,
377 			   CV1800_PINCONF_AREA_SYS, 0xc30),
378 	CV1800_GENERAL_PIN(PIN_VIVO_D1, VDDIO_VIVO,
379 			   IO_TYPE_1V8_OR_3V3,
380 			   CV1800_PINCONF_AREA_SYS, 0x158, 7,
381 			   CV1800_PINCONF_AREA_SYS, 0xc24),
382 	CV1800_GENERAL_PIN(PIN_VIVO_D5, VDDIO_VIVO,
383 			   IO_TYPE_1V8_OR_3V3,
384 			   CV1800_PINCONF_AREA_SYS, 0x148, 7,
385 			   CV1800_PINCONF_AREA_SYS, 0xc14),
386 	CV1800_GENERAL_PIN(PIN_VIVO_D7, VDDIO_VIVO,
387 			   IO_TYPE_1V8_OR_3V3,
388 			   CV1800_PINCONF_AREA_SYS, 0x140, 7,
389 			   CV1800_PINCONF_AREA_SYS, 0xc0c),
390 	CV1800_GENERAL_PIN(PIN_VIVO_D9, VDDIO_VIVO,
391 			   IO_TYPE_1V8_OR_3V3,
392 			   CV1800_PINCONF_AREA_SYS, 0x138, 7,
393 			   CV1800_PINCONF_AREA_SYS, 0xc04),
394 	CV1800_GENERAL_PIN(PIN_USB_ID, VDDIO18_1,
395 			   IO_TYPE_1V8_ONLY,
396 			   CV1800_PINCONF_AREA_SYS, 0x0fc, 3,
397 			   CV1800_PINCONF_AREA_SYS, 0x814),
398 	CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_EPHY,
399 			IO_TYPE_ETH,
400 			CV1800_PINCONF_AREA_SYS, 0x130, 7),
401 	CV1800_GENERAL_PIN(PIN_MIPI_TXP2, VDD18A_MIPI,
402 			   IO_TYPE_1V8_ONLY,
403 			   CV1800_PINCONF_AREA_SYS, 0x1a8, 7,
404 			   CV1800_PINCONF_AREA_SYS, 0xc74),
405 	CV1800_GENERAL_PIN(PIN_MIPI_TXM2, VDD18A_MIPI,
406 			   IO_TYPE_1V8_ONLY,
407 			   CV1800_PINCONF_AREA_SYS, 0x1a4, 7,
408 			   CV1800_PINCONF_AREA_SYS, 0xc70),
409 	CV1800_GENERAL_PIN(PIN_CAM_PD0, VDD18A_MIPI,
410 			   IO_TYPE_1V8_ONLY,
411 			   CV1800_PINCONF_AREA_SYS, 0x004, 4,
412 			   CV1800_PINCONF_AREA_SYS, 0xb04),
413 	CV1800_GENERAL_PIN(PIN_CAM_MCLK0, VDD18A_MIPI,
414 			   IO_TYPE_1V8_ONLY,
415 			   CV1800_PINCONF_AREA_SYS, 0x000, 3,
416 			   CV1800_PINCONF_AREA_SYS, 0xb00),
417 	CV1800_GENERAL_PIN(PIN_MIPIRX1P, VDD18A_MIPI,
418 			   IO_TYPE_1V8_ONLY,
419 			   CV1800_PINCONF_AREA_SYS, 0x188, 7,
420 			   CV1800_PINCONF_AREA_SYS, 0xc54),
421 	CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_MIPI,
422 			   IO_TYPE_1V8_ONLY,
423 			   CV1800_PINCONF_AREA_SYS, 0x180, 7,
424 			   CV1800_PINCONF_AREA_SYS, 0xc4c),
425 	CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3N, VDD18A_MIPI,
426 				 IO_TYPE_1V8_ONLY,
427 				 CV1800_PINCONF_AREA_SYS, 0x174, 7,
428 				 CV1800_PINCONF_AREA_SYS, 0x114, 7,
429 				 CV1800_PINCONF_AREA_SYS, 0xc40),
430 	CV1800_GENERAL_PIN(PIN_MIPIRX5P, VDD18A_MIPI,
431 			   IO_TYPE_1V8_ONLY,
432 			   CV1800_PINCONF_AREA_SYS, 0x168, 7,
433 			   CV1800_PINCONF_AREA_SYS, 0xc34),
434 	CV1800_GENERAL_PIN(PIN_VIVO_CLK, VDDIO_VIVO,
435 			   IO_TYPE_1V8_OR_3V3,
436 			   CV1800_PINCONF_AREA_SYS, 0x160, 7,
437 			   CV1800_PINCONF_AREA_SYS, 0xc2c),
438 	CV1800_GENERAL_PIN(PIN_VIVO_D6, VDDIO_VIVO,
439 			   IO_TYPE_1V8_OR_3V3,
440 			   CV1800_PINCONF_AREA_SYS, 0x144, 7,
441 			   CV1800_PINCONF_AREA_SYS, 0xc10),
442 	CV1800_GENERAL_PIN(PIN_VIVO_D8, VDDIO_VIVO,
443 			   IO_TYPE_1V8_OR_3V3,
444 			   CV1800_PINCONF_AREA_SYS, 0x13c, 7,
445 			   CV1800_PINCONF_AREA_SYS, 0xc08),
446 	CV1800_GENERAL_PIN(PIN_USB_VBUS_EN, VDDIO18_1,
447 			   IO_TYPE_1V8_ONLY,
448 			   CV1800_PINCONF_AREA_SYS, 0x100, 3,
449 			   CV1800_PINCONF_AREA_SYS, 0x818),
450 	CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_EPHY,
451 			IO_TYPE_ETH,
452 			CV1800_PINCONF_AREA_SYS, 0x12c, 7),
453 	CV1800_GENERAL_PIN(PIN_GPIO_RTX, VDDIO18_1,
454 			   IO_TYPE_1V8_ONLY,
455 			   CV1800_PINCONF_AREA_SYS, 0x1cc, 5,
456 			   CV1800_PINCONF_AREA_SYS, 0xc8c),
457 	CV1800_GENERAL_PIN(PIN_MIPI_TXP1, VDD18A_MIPI,
458 			   IO_TYPE_1V8_ONLY,
459 			   CV1800_PINCONF_AREA_SYS, 0x1b0, 7,
460 			   CV1800_PINCONF_AREA_SYS, 0xc7c),
461 	CV1800_GENERAL_PIN(PIN_MIPI_TXM1, VDD18A_MIPI,
462 			   IO_TYPE_1V8_ONLY,
463 			   CV1800_PINCONF_AREA_SYS, 0x1ac, 7,
464 			   CV1800_PINCONF_AREA_SYS, 0xc78),
465 	CV1800_GENERAL_PIN(PIN_CAM_MCLK1, VDD18A_MIPI,
466 			   IO_TYPE_1V8_ONLY,
467 			   CV1800_PINCONF_AREA_SYS, 0x00c, 4,
468 			   CV1800_PINCONF_AREA_SYS, 0xb0c),
469 	CV1800_GENERAL_PIN(PIN_IIC3_SCL, VDD18A_MIPI,
470 			   IO_TYPE_1V8_ONLY,
471 			   CV1800_PINCONF_AREA_SYS, 0x014, 3,
472 			   CV1800_PINCONF_AREA_SYS, 0xb14),
473 	CV1800_GENERAL_PIN(PIN_VIVO_D4, VDDIO_VIVO,
474 			   IO_TYPE_1V8_OR_3V3,
475 			   CV1800_PINCONF_AREA_SYS, 0x14c, 7,
476 			   CV1800_PINCONF_AREA_SYS, 0xc18),
477 	CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_EPHY,
478 			IO_TYPE_ETH,
479 			CV1800_PINCONF_AREA_SYS, 0x128, 7),
480 	CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_EPHY,
481 			IO_TYPE_ETH,
482 			CV1800_PINCONF_AREA_SYS, 0x124, 7),
483 	CV1800_GENERAL_PIN(PIN_MIPI_TXP0, VDD18A_MIPI,
484 			   IO_TYPE_1V8_ONLY,
485 			   CV1800_PINCONF_AREA_SYS, 0x1b8, 7,
486 			   CV1800_PINCONF_AREA_SYS, 0xc84),
487 	CV1800_GENERAL_PIN(PIN_MIPI_TXM0, VDD18A_MIPI,
488 			   IO_TYPE_1V8_ONLY,
489 			   CV1800_PINCONF_AREA_SYS, 0x1b4, 7,
490 			   CV1800_PINCONF_AREA_SYS, 0xc80),
491 	CV1800_GENERAL_PIN(PIN_CAM_PD1, VDD18A_MIPI,
492 			   IO_TYPE_1V8_ONLY,
493 			   CV1800_PINCONF_AREA_SYS, 0x010, 6,
494 			   CV1800_PINCONF_AREA_SYS, 0xb10),
495 	CV1800_GENERAL_PIN(PIN_CAM_RST0, VDD18A_MIPI,
496 			   IO_TYPE_1V8_ONLY,
497 			   CV1800_PINCONF_AREA_SYS, 0x008, 6,
498 			   CV1800_PINCONF_AREA_SYS, 0xb08),
499 	CV1800_GENERAL_PIN(PIN_VIVO_D0, VDDIO_VIVO,
500 			   IO_TYPE_1V8_OR_3V3,
501 			   CV1800_PINCONF_AREA_SYS, 0x15c, 7,
502 			   CV1800_PINCONF_AREA_SYS, 0xc28),
503 	CV1800_GENERAL_PIN(PIN_ADC1, VDDIO18_1,
504 			   IO_TYPE_1V8_ONLY,
505 			   CV1800_PINCONF_AREA_SYS, 0x0f8, 4,
506 			   CV1800_PINCONF_AREA_SYS, 0x810),
507 	CV1800_GENERAL_PIN(PIN_ADC2, VDDIO18_1,
508 			   IO_TYPE_1V8_ONLY,
509 			   CV1800_PINCONF_AREA_SYS, 0x0f4, 7,
510 			   CV1800_PINCONF_AREA_SYS, 0x80c),
511 	CV1800_GENERAL_PIN(PIN_ADC3, VDDIO18_1,
512 			   IO_TYPE_1V8_ONLY,
513 			   CV1800_PINCONF_AREA_SYS, 0x0f0, 7,
514 			   CV1800_PINCONF_AREA_SYS, 0x808),
515 	CV1800_FUNC_PIN(PIN_AUD_AOUTL, VDD18A_MIPI,
516 			IO_TYPE_AUDIO,
517 			CV1800_PINCONF_AREA_SYS, 0x1c4, 5),
518 	CV1800_GENERAL_PIN(PIN_IIC3_SDA, VDD18A_MIPI,
519 			   IO_TYPE_1V8_ONLY,
520 			   CV1800_PINCONF_AREA_SYS, 0x018, 3,
521 			   CV1800_PINCONF_AREA_SYS, 0xb18),
522 	CV1800_GENERAL_PIN(PIN_SD1_D2, VDDIO_SD1,
523 			   IO_TYPE_1V8_OR_3V3,
524 			   CV1800_PINCONF_AREA_SYS, 0x0d4, 7,
525 			   CV1800_PINCONF_AREA_RTC, 0x05c),
526 	CV1800_FUNC_PIN(PIN_AUD_AOUTR, VDD18A_MIPI,
527 			IO_TYPE_AUDIO,
528 			CV1800_PINCONF_AREA_SYS, 0x1c8, 6),
529 	CV1800_GENERAL_PIN(PIN_SD1_D3, VDDIO_SD1,
530 			   IO_TYPE_1V8_OR_3V3,
531 			   CV1800_PINCONF_AREA_SYS, 0x0d0, 7,
532 			   CV1800_PINCONF_AREA_RTC, 0x058),
533 	CV1800_GENERAL_PIN(PIN_SD1_CLK, VDDIO_SD1,
534 			   IO_TYPE_1V8_OR_3V3,
535 			   CV1800_PINCONF_AREA_SYS, 0x0e4, 7,
536 			   CV1800_PINCONF_AREA_RTC, 0x06c),
537 	CV1800_GENERAL_PIN(PIN_SD1_CMD, VDDIO_SD1,
538 			   IO_TYPE_1V8_OR_3V3,
539 			   CV1800_PINCONF_AREA_SYS, 0x0e0, 7,
540 			   CV1800_PINCONF_AREA_RTC, 0x068),
541 	CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_MIPI,
542 			IO_TYPE_AUDIO,
543 			CV1800_PINCONF_AREA_SYS, 0x1bc, 5),
544 	CV1800_GENERAL_PIN(PIN_RSTN, VDDIO18_1,
545 			   IO_TYPE_1V8_ONLY,
546 			   CV1800_PINCONF_AREA_SYS, 0x0e8, 0,
547 			   CV1800_PINCONF_AREA_SYS, 0x800),
548 	CV1800_GENERAL_PIN(PIN_PWM0_BUCK, VDDIO18_1,
549 			   IO_TYPE_1V8_ONLY,
550 			   CV1800_PINCONF_AREA_SYS, 0x0ec, 3,
551 			   CV1800_PINCONF_AREA_SYS, 0x804),
552 	CV1800_GENERAL_PIN(PIN_SD1_D1, VDDIO_SD1,
553 			   IO_TYPE_1V8_OR_3V3,
554 			   CV1800_PINCONF_AREA_SYS, 0x0d8, 7,
555 			   CV1800_PINCONF_AREA_RTC, 0x060),
556 	CV1800_GENERAL_PIN(PIN_SD1_D0, VDDIO_SD1,
557 			   IO_TYPE_1V8_OR_3V3,
558 			   CV1800_PINCONF_AREA_SYS, 0x0dc, 7,
559 			   CV1800_PINCONF_AREA_RTC, 0x064),
560 	CV1800_FUNC_PIN(PIN_AUD_AINR_MIC, VDD18A_MIPI,
561 			IO_TYPE_AUDIO,
562 			CV1800_PINCONF_AREA_SYS, 0x1c0, 6),
563 	CV1800_GENERAL_PIN(PIN_IIC2_SCL, VDDIO_RTC,
564 			   IO_TYPE_1V8_ONLY,
565 			   CV1800_PINCONF_AREA_SYS, 0x0b8, 7,
566 			   CV1800_PINCONF_AREA_RTC, 0x040),
567 	CV1800_GENERAL_PIN(PIN_IIC2_SDA, VDDIO_RTC,
568 			   IO_TYPE_1V8_ONLY,
569 			   CV1800_PINCONF_AREA_SYS, 0x0bc, 7,
570 			   CV1800_PINCONF_AREA_RTC, 0x044),
571 	CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_EMMC,
572 			   IO_TYPE_1V8_OR_3V3,
573 			   CV1800_PINCONF_AREA_SYS, 0x034, 3,
574 			   CV1800_PINCONF_AREA_SYS, 0x900),
575 	CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0,
576 			   IO_TYPE_1V8_OR_3V3,
577 			   CV1800_PINCONF_AREA_SYS, 0x028, 7,
578 			   CV1800_PINCONF_AREA_SYS, 0xa0c),
579 	CV1800_GENERAL_PIN(PIN_UART2_RX, VDDIO_RTC,
580 			   IO_TYPE_1V8_ONLY,
581 			   CV1800_PINCONF_AREA_SYS, 0x0c8, 7,
582 			   CV1800_PINCONF_AREA_RTC, 0x050),
583 	CV1800_GENERAL_PIN(PIN_UART2_CTS, VDDIO_RTC,
584 			   IO_TYPE_1V8_ONLY,
585 			   CV1800_PINCONF_AREA_SYS, 0x0cc, 7,
586 			   CV1800_PINCONF_AREA_RTC, 0x054),
587 	CV1800_GENERAL_PIN(PIN_UART2_TX, VDDIO_RTC,
588 			   IO_TYPE_1V8_ONLY,
589 			   CV1800_PINCONF_AREA_SYS, 0x0c0, 7,
590 			   CV1800_PINCONF_AREA_RTC, 0x048),
591 	CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0,
592 			   IO_TYPE_1V8_OR_3V3,
593 			   CV1800_PINCONF_AREA_SYS, 0x01c, 7,
594 			   CV1800_PINCONF_AREA_SYS, 0xa00),
595 	CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0,
596 			   IO_TYPE_1V8_OR_3V3,
597 			   CV1800_PINCONF_AREA_SYS, 0x024, 7,
598 			   CV1800_PINCONF_AREA_SYS, 0xa08),
599 	CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0,
600 			   IO_TYPE_1V8_OR_3V3,
601 			   CV1800_PINCONF_AREA_SYS, 0x020, 7,
602 			   CV1800_PINCONF_AREA_SYS, 0xa04),
603 	CV1800_GENERAL_PIN(PIN_CLK32K, VDDIO_RTC,
604 			   IO_TYPE_1V8_ONLY,
605 			   CV1800_PINCONF_AREA_SYS, 0x0b0, 7,
606 			   CV1800_PINCONF_AREA_RTC, 0x038),
607 	CV1800_GENERAL_PIN(PIN_UART2_RTS, VDDIO_RTC,
608 			   IO_TYPE_1V8_ONLY,
609 			   CV1800_PINCONF_AREA_SYS, 0x0c4, 7,
610 			   CV1800_PINCONF_AREA_RTC, 0x04c),
611 	CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0,
612 			   IO_TYPE_1V8_OR_3V3,
613 			   CV1800_PINCONF_AREA_SYS, 0x030, 7,
614 			   CV1800_PINCONF_AREA_SYS, 0xa14),
615 	CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0,
616 			   IO_TYPE_1V8_OR_3V3,
617 			   CV1800_PINCONF_AREA_SYS, 0x02c, 7,
618 			   CV1800_PINCONF_AREA_SYS, 0xa10),
619 	CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_EMMC,
620 			   IO_TYPE_1V8_OR_3V3,
621 			   CV1800_PINCONF_AREA_SYS, 0x044, 7,
622 			   CV1800_PINCONF_AREA_SYS, 0x910),
623 	CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_EMMC,
624 			   IO_TYPE_1V8_OR_3V3,
625 			   CV1800_PINCONF_AREA_SYS, 0x040, 7,
626 			   CV1800_PINCONF_AREA_SYS, 0x90c),
627 	CV1800_GENERAL_PIN(PIN_JTAG_CPU_TRST, VDDIO_EMMC,
628 			   IO_TYPE_1V8_OR_3V3,
629 			   CV1800_PINCONF_AREA_SYS, 0x06c, 6,
630 			   CV1800_PINCONF_AREA_SYS, 0x938),
631 	CV1800_GENERAL_PIN(PIN_PWR_ON, VDDIO_RTC,
632 			   IO_TYPE_1V8_ONLY,
633 			   CV1800_PINCONF_AREA_SYS, 0x09c, 7,
634 			   CV1800_PINCONF_AREA_RTC, 0x024),
635 	CV1800_GENERAL_PIN(PIN_PWR_GPIO2, VDDIO_RTC,
636 			   IO_TYPE_1V8_ONLY,
637 			   CV1800_PINCONF_AREA_SYS, 0x0ac, 7,
638 			   CV1800_PINCONF_AREA_RTC, 0x034),
639 	CV1800_GENERAL_PIN(PIN_PWR_GPIO0, VDDIO_RTC,
640 			   IO_TYPE_1V8_ONLY,
641 			   CV1800_PINCONF_AREA_SYS, 0x0a4, 4,
642 			   CV1800_PINCONF_AREA_RTC, 0x02c),
643 	CV1800_GENERAL_PIN(PIN_CLK25M, VDDIO_RTC,
644 			   IO_TYPE_1V8_ONLY,
645 			   CV1800_PINCONF_AREA_SYS, 0x0b4, 7,
646 			   CV1800_PINCONF_AREA_RTC, 0x03c),
647 	CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_EMMC,
648 			   IO_TYPE_1V8_OR_3V3,
649 			   CV1800_PINCONF_AREA_SYS, 0x038, 3,
650 			   CV1800_PINCONF_AREA_SYS, 0x904),
651 	CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_EMMC,
652 			   IO_TYPE_1V8_OR_3V3,
653 			   CV1800_PINCONF_AREA_SYS, 0x03c, 3,
654 			   CV1800_PINCONF_AREA_SYS, 0x908),
655 	CV1800_GENERAL_PIN(PIN_JTAG_CPU_TCK, VDDIO_EMMC,
656 			   IO_TYPE_1V8_OR_3V3,
657 			   CV1800_PINCONF_AREA_SYS, 0x068, 7,
658 			   CV1800_PINCONF_AREA_SYS, 0x934),
659 	CV1800_GENERAL_PIN(PIN_JTAG_CPU_TMS, VDDIO_EMMC,
660 			   IO_TYPE_1V8_OR_3V3,
661 			   CV1800_PINCONF_AREA_SYS, 0x064, 7,
662 			   CV1800_PINCONF_AREA_SYS, 0x930),
663 	CV1800_GENERAL_PIN(PIN_PWR_WAKEUP1, VDDIO_RTC,
664 			   IO_TYPE_1V8_ONLY,
665 			   CV1800_PINCONF_AREA_SYS, 0x094, 7,
666 			   CV1800_PINCONF_AREA_RTC, 0x01c),
667 	CV1800_GENERAL_PIN(PIN_PWR_WAKEUP0, VDDIO_RTC,
668 			   IO_TYPE_1V8_ONLY,
669 			   CV1800_PINCONF_AREA_SYS, 0x090, 7,
670 			   CV1800_PINCONF_AREA_RTC, 0x018),
671 	CV1800_GENERAL_PIN(PIN_PWR_GPIO1, VDDIO_RTC,
672 			   IO_TYPE_1V8_ONLY,
673 			   CV1800_PINCONF_AREA_SYS, 0x0a8, 7,
674 			   CV1800_PINCONF_AREA_RTC, 0x030),
675 	CV1800_GENERAL_PIN(PIN_EMMC_DAT3, VDDIO_EMMC,
676 			   IO_TYPE_1V8_OR_3V3,
677 			   CV1800_PINCONF_AREA_SYS, 0x058, 3,
678 			   CV1800_PINCONF_AREA_SYS, 0x924),
679 	CV1800_GENERAL_PIN(PIN_EMMC_DAT0, VDDIO_EMMC,
680 			   IO_TYPE_1V8_OR_3V3,
681 			   CV1800_PINCONF_AREA_SYS, 0x054, 3,
682 			   CV1800_PINCONF_AREA_SYS, 0x920),
683 	CV1800_GENERAL_PIN(PIN_EMMC_DAT2, VDDIO_EMMC,
684 			   IO_TYPE_1V8_OR_3V3,
685 			   CV1800_PINCONF_AREA_SYS, 0x04c, 3,
686 			   CV1800_PINCONF_AREA_SYS, 0x918),
687 	CV1800_GENERAL_PIN(PIN_EMMC_RSTN, VDDIO_EMMC,
688 			   IO_TYPE_1V8_OR_3V3,
689 			   CV1800_PINCONF_AREA_SYS, 0x048, 4,
690 			   CV1800_PINCONF_AREA_SYS, 0x914),
691 	CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_EMMC,
692 			   IO_TYPE_1V8_OR_3V3,
693 			   CV1800_PINCONF_AREA_SYS, 0x078, 7,
694 			   CV1800_PINCONF_AREA_SYS, 0x944),
695 	CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_EMMC,
696 			   IO_TYPE_1V8_OR_3V3,
697 			   CV1800_PINCONF_AREA_SYS, 0x074, 7,
698 			   CV1800_PINCONF_AREA_SYS, 0x940),
699 	CV1800_GENERAL_PIN(PIN_PWR_SEQ3, VDDIO_RTC,
700 			   IO_TYPE_1V8_ONLY,
701 			   CV1800_PINCONF_AREA_SYS, 0x08c, 3,
702 			   CV1800_PINCONF_AREA_RTC, 0x010),
703 	CV1800_GENERAL_PIN(PIN_PWR_VBAT_DET, VDDIO_RTC,
704 			   IO_TYPE_1V8_ONLY,
705 			   CV1800_PINCONF_AREA_SYS, 0x07c, 0,
706 			   CV1800_PINCONF_AREA_RTC, 0x000),
707 	CV1800_GENERAL_PIN(PIN_PWR_SEQ1, VDDIO_RTC,
708 			   IO_TYPE_1V8_ONLY,
709 			   CV1800_PINCONF_AREA_SYS, 0x084, 3,
710 			   CV1800_PINCONF_AREA_RTC, 0x008),
711 	CV1800_GENERAL_PIN(PIN_PWR_BUTTON1, VDDIO_RTC,
712 			   IO_TYPE_1V8_ONLY,
713 			   CV1800_PINCONF_AREA_SYS, 0x098, 7,
714 			   CV1800_PINCONF_AREA_RTC, 0x020),
715 	CV1800_GENERAL_PIN(PIN_EMMC_DAT1, VDDIO_EMMC,
716 			   IO_TYPE_1V8_OR_3V3,
717 			   CV1800_PINCONF_AREA_SYS, 0x060, 3,
718 			   CV1800_PINCONF_AREA_SYS, 0x92c),
719 	CV1800_GENERAL_PIN(PIN_EMMC_CMD, VDDIO_EMMC,
720 			   IO_TYPE_1V8_OR_3V3,
721 			   CV1800_PINCONF_AREA_SYS, 0x05c, 3,
722 			   CV1800_PINCONF_AREA_SYS, 0x928),
723 	CV1800_GENERAL_PIN(PIN_EMMC_CLK, VDDIO_EMMC,
724 			   IO_TYPE_1V8_OR_3V3,
725 			   CV1800_PINCONF_AREA_SYS, 0x050, 3,
726 			   CV1800_PINCONF_AREA_SYS, 0x91c),
727 	CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_EMMC,
728 			   IO_TYPE_1V8_OR_3V3,
729 			   CV1800_PINCONF_AREA_SYS, 0x070, 7,
730 			   CV1800_PINCONF_AREA_SYS, 0x93c),
731 	CV1800_GENERAL_PIN(PIN_GPIO_ZQ, VDDIO_RTC,
732 			   IO_TYPE_1V8_ONLY,
733 			   CV1800_PINCONF_AREA_SYS, 0x1d0, 4,
734 			   CV1800_PINCONF_AREA_RTC, 0x0e0),
735 	CV1800_GENERAL_PIN(PIN_PWR_RSTN, VDDIO_RTC,
736 			   IO_TYPE_1V8_ONLY,
737 			   CV1800_PINCONF_AREA_SYS, 0x080, 0,
738 			   CV1800_PINCONF_AREA_RTC, 0x004),
739 	CV1800_GENERAL_PIN(PIN_PWR_SEQ2, VDDIO_RTC,
740 			   IO_TYPE_1V8_ONLY,
741 			   CV1800_PINCONF_AREA_SYS, 0x088, 3,
742 			   CV1800_PINCONF_AREA_RTC, 0x00c),
743 	CV1800_GENERAL_PIN(PIN_XTAL_XIN, VDDIO_RTC,
744 			   IO_TYPE_1V8_ONLY,
745 			   CV1800_PINCONF_AREA_SYS, 0x0a0, 0,
746 			   CV1800_PINCONF_AREA_RTC, 0x028),
747 };
748 
749 static const struct sophgo_pinctrl_data sg2000_pindata = {
750 	.pins		= sg2000_pins,
751 	.pindata	= sg2000_pin_data,
752 	.pdnames	= sg2000_power_domain_desc,
753 	.vddio_ops	= &sg2000_vddio_cfg_ops,
754 	.cfg_ops	= &cv1800_cfg_ops,
755 	.pctl_ops	= &cv1800_pctrl_ops,
756 	.pmx_ops	= &cv1800_pmx_ops,
757 	.pconf_ops	= &cv1800_pconf_ops,
758 	.npins		= ARRAY_SIZE(sg2000_pins),
759 	.npds		= ARRAY_SIZE(sg2000_power_domain_desc),
760 	.pinsize	= sizeof(struct cv1800_pin),
761 };
762 
763 static const struct of_device_id sg2000_pinctrl_ids[] = {
764 	{ .compatible = "sophgo,sg2000-pinctrl", .data = &sg2000_pindata },
765 	{ }
766 };
767 MODULE_DEVICE_TABLE(of, sg2000_pinctrl_ids);
768 
769 static struct platform_driver sg2000_pinctrl_driver = {
770 	.probe	= sophgo_pinctrl_probe,
771 	.driver	= {
772 		.name			= "sg2000-pinctrl",
773 		.suppress_bind_attrs	= true,
774 		.of_match_table		= sg2000_pinctrl_ids,
775 	},
776 };
777 module_platform_driver(sg2000_pinctrl_driver);
778 
779 MODULE_DESCRIPTION("Pinctrl driver for the SG2000 series SoC");
780 MODULE_LICENSE("GPL");
781