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