463 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Sophgo CV1800B 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-cv1800b.h>18 19#include "pinctrl-cv18xx.h"20 21enum CV1800B_POWER_DOMAIN {22 VDD18A_AUD = 0,23 VDD18A_USB_PLL_ETH_CSI = 1,24 VDD33A_ETH_USB_SD1 = 2,25 VDDIO_RTC = 3,26 VDDIO_SD0_SPI = 427};28 29static const char *const cv1800b_power_domain_desc[] = {30 [VDD18A_AUD] = "VDD18A_AUD",31 [VDD18A_USB_PLL_ETH_CSI] = "VDD18A_USB_PLL_ETH_CSI",32 [VDD33A_ETH_USB_SD1] = "VDD33A_ETH_USB_SD1",33 [VDDIO_RTC] = "VDDIO_RTC",34 [VDDIO_SD0_SPI] = "VDDIO_SD0_SPI",35};36 37static int cv1800b_get_pull_up(struct cv1800_pin *pin, const u32 *psmap)38{39 u32 pstate = psmap[pin->power_domain];40 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);41 42 if (type == IO_TYPE_1V8_ONLY)43 return 79000;44 45 if (type == IO_TYPE_1V8_OR_3V3) {46 if (pstate == PIN_POWER_STATE_1V8)47 return 60000;48 if (pstate == PIN_POWER_STATE_3V3)49 return 60000;50 51 return -EINVAL;52 }53 54 return -ENOTSUPP;55}56 57static int cv1800b_get_pull_down(struct cv1800_pin *pin, const u32 *psmap)58{59 u32 pstate = psmap[pin->power_domain];60 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);61 62 if (type == IO_TYPE_1V8_ONLY)63 return 87000;64 65 if (type == IO_TYPE_1V8_OR_3V3) {66 if (pstate == PIN_POWER_STATE_1V8)67 return 61000;68 if (pstate == PIN_POWER_STATE_3V3)69 return 62000;70 71 return -EINVAL;72 }73 74 return -ENOTSUPP;75}76 77static const u32 cv1800b_1v8_oc_map[] = {78 12800,79 25300,80 37400,81 4900082};83 84static const u32 cv1800b_18od33_1v8_oc_map[] = {85 7800,86 11700,87 15500,88 19200,89 23000,90 26600,91 30200,92 3370093};94 95static const u32 cv1800b_18od33_3v3_oc_map[] = {96 5500,97 8200,98 10800,99 13400,100 16100,101 18700,102 21200,103 23700104};105 106static const u32 cv1800b_eth_oc_map[] = {107 15700,108 17800109};110 111static int cv1800b_get_oc_map(struct cv1800_pin *pin, const u32 *psmap,112 const u32 **map)113{114 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);115 u32 pstate = psmap[pin->power_domain];116 117 if (type == IO_TYPE_1V8_ONLY) {118 *map = cv1800b_1v8_oc_map;119 return ARRAY_SIZE(cv1800b_1v8_oc_map);120 }121 122 if (type == IO_TYPE_1V8_OR_3V3) {123 if (pstate == PIN_POWER_STATE_1V8) {124 *map = cv1800b_18od33_1v8_oc_map;125 return ARRAY_SIZE(cv1800b_18od33_1v8_oc_map);126 } else if (pstate == PIN_POWER_STATE_3V3) {127 *map = cv1800b_18od33_3v3_oc_map;128 return ARRAY_SIZE(cv1800b_18od33_3v3_oc_map);129 }130 }131 132 if (type == IO_TYPE_ETH) {133 *map = cv1800b_eth_oc_map;134 return ARRAY_SIZE(cv1800b_eth_oc_map);135 }136 137 return -ENOTSUPP;138}139 140static const u32 cv1800b_1v8_schmitt_map[] = {141 0,142 970000,143 1040000144};145 146static const u32 cv1800b_18od33_1v8_schmitt_map[] = {147 0,148 1070000149};150 151static const u32 cv1800b_18od33_3v3_schmitt_map[] = {152 0,153 1100000154};155 156static int cv1800b_get_schmitt_map(struct cv1800_pin *pin, const u32 *psmap,157 const u32 **map)158{159 enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);160 u32 pstate = psmap[pin->power_domain];161 162 if (type == IO_TYPE_1V8_ONLY) {163 *map = cv1800b_1v8_schmitt_map;164 return ARRAY_SIZE(cv1800b_1v8_schmitt_map);165 }166 167 if (type == IO_TYPE_1V8_OR_3V3) {168 if (pstate == PIN_POWER_STATE_1V8) {169 *map = cv1800b_18od33_1v8_schmitt_map;170 return ARRAY_SIZE(cv1800b_18od33_1v8_schmitt_map);171 } else if (pstate == PIN_POWER_STATE_3V3) {172 *map = cv1800b_18od33_3v3_schmitt_map;173 return ARRAY_SIZE(cv1800b_18od33_3v3_schmitt_map);174 }175 }176 177 return -ENOTSUPP;178}179 180static const struct cv1800_vddio_cfg_ops cv1800b_vddio_cfg_ops = {181 .get_pull_up = cv1800b_get_pull_up,182 .get_pull_down = cv1800b_get_pull_down,183 .get_oc_map = cv1800b_get_oc_map,184 .get_schmitt_map = cv1800b_get_schmitt_map,185};186 187static const struct pinctrl_pin_desc cv1800b_pins[] = {188 PINCTRL_PIN(PIN_AUD_AOUTR, "AUD_AOUTR"),189 PINCTRL_PIN(PIN_SD0_CLK, "SD0_CLK"),190 PINCTRL_PIN(PIN_SD0_CMD, "SD0_CMD"),191 PINCTRL_PIN(PIN_SD0_D0, "SD0_D0"),192 PINCTRL_PIN(PIN_SD0_D1, "SD0_D1"),193 PINCTRL_PIN(PIN_SD0_D2, "SD0_D2"),194 PINCTRL_PIN(PIN_SD0_D3, "SD0_D3"),195 PINCTRL_PIN(PIN_SD0_CD, "SD0_CD"),196 PINCTRL_PIN(PIN_SD0_PWR_EN, "SD0_PWR_EN"),197 PINCTRL_PIN(PIN_SPK_EN, "SPK_EN"),198 PINCTRL_PIN(PIN_UART0_TX, "UART0_TX"),199 PINCTRL_PIN(PIN_UART0_RX, "UART0_RX"),200 PINCTRL_PIN(PIN_SPINOR_HOLD_X, "SPINOR_HOLD_X"),201 PINCTRL_PIN(PIN_SPINOR_SCK, "SPINOR_SCK"),202 PINCTRL_PIN(PIN_SPINOR_MOSI, "SPINOR_MOSI"),203 PINCTRL_PIN(PIN_SPINOR_WP_X, "SPINOR_WP_X"),204 PINCTRL_PIN(PIN_SPINOR_MISO, "SPINOR_MISO"),205 PINCTRL_PIN(PIN_SPINOR_CS_X, "SPINOR_CS_X"),206 PINCTRL_PIN(PIN_IIC0_SCL, "IIC0_SCL"),207 PINCTRL_PIN(PIN_IIC0_SDA, "IIC0_SDA"),208 PINCTRL_PIN(PIN_AUX0, "AUX0"),209 PINCTRL_PIN(PIN_PWR_VBAT_DET, "PWR_VBAT_DET"),210 PINCTRL_PIN(PIN_PWR_SEQ2, "PWR_SEQ2"),211 PINCTRL_PIN(PIN_XTAL_XIN, "XTAL_XIN"),212 PINCTRL_PIN(PIN_SD1_GPIO0, "SD1_GPIO0"),213 PINCTRL_PIN(PIN_SD1_GPIO1, "SD1_GPIO1"),214 PINCTRL_PIN(PIN_SD1_D3, "SD1_D3"),215 PINCTRL_PIN(PIN_SD1_D2, "SD1_D2"),216 PINCTRL_PIN(PIN_SD1_D1, "SD1_D1"),217 PINCTRL_PIN(PIN_SD1_D0, "SD1_D0"),218 PINCTRL_PIN(PIN_SD1_CMD, "SD1_CMD"),219 PINCTRL_PIN(PIN_SD1_CLK, "SD1_CLK"),220 PINCTRL_PIN(PIN_ADC1, "ADC1"),221 PINCTRL_PIN(PIN_USB_VBUS_DET, "USB_VBUS_DET"),222 PINCTRL_PIN(PIN_ETH_TXP, "ETH_TXP"),223 PINCTRL_PIN(PIN_ETH_TXM, "ETH_TXM"),224 PINCTRL_PIN(PIN_ETH_RXP, "ETH_RXP"),225 PINCTRL_PIN(PIN_ETH_RXM, "ETH_RXM"),226 PINCTRL_PIN(PIN_MIPIRX4N, "MIPIRX4N"),227 PINCTRL_PIN(PIN_MIPIRX4P, "MIPIRX4P"),228 PINCTRL_PIN(PIN_MIPIRX3N, "MIPIRX3N"),229 PINCTRL_PIN(PIN_MIPIRX3P, "MIPIRX3P"),230 PINCTRL_PIN(PIN_MIPIRX2N, "MIPIRX2N"),231 PINCTRL_PIN(PIN_MIPIRX2P, "MIPIRX2P"),232 PINCTRL_PIN(PIN_MIPIRX1N, "MIPIRX1N"),233 PINCTRL_PIN(PIN_MIPIRX1P, "MIPIRX1P"),234 PINCTRL_PIN(PIN_MIPIRX0N, "MIPIRX0N"),235 PINCTRL_PIN(PIN_MIPIRX0P, "MIPIRX0P"),236 PINCTRL_PIN(PIN_AUD_AINL_MIC, "AUD_AINL_MIC"),237};238 239static const struct cv1800_pin cv1800b_pin_data[ARRAY_SIZE(cv1800b_pins)] = {240 CV1800_FUNC_PIN(PIN_AUD_AOUTR, VDD18A_AUD,241 IO_TYPE_AUDIO,242 CV1800_PINCONF_AREA_SYS, 0x12c, 6),243 CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0_SPI,244 IO_TYPE_1V8_OR_3V3,245 CV1800_PINCONF_AREA_SYS, 0x000, 7,246 CV1800_PINCONF_AREA_SYS, 0xa00),247 CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0_SPI,248 IO_TYPE_1V8_OR_3V3,249 CV1800_PINCONF_AREA_SYS, 0x004, 7,250 CV1800_PINCONF_AREA_SYS, 0xa04),251 CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0_SPI,252 IO_TYPE_1V8_OR_3V3,253 CV1800_PINCONF_AREA_SYS, 0x008, 7,254 CV1800_PINCONF_AREA_SYS, 0xa08),255 CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0_SPI,256 IO_TYPE_1V8_OR_3V3,257 CV1800_PINCONF_AREA_SYS, 0x00c, 7,258 CV1800_PINCONF_AREA_SYS, 0xa0c),259 CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0_SPI,260 IO_TYPE_1V8_OR_3V3,261 CV1800_PINCONF_AREA_SYS, 0x010, 7,262 CV1800_PINCONF_AREA_SYS, 0xa10),263 CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0_SPI,264 IO_TYPE_1V8_OR_3V3,265 CV1800_PINCONF_AREA_SYS, 0x014, 7,266 CV1800_PINCONF_AREA_SYS, 0xa14),267 CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_SD0_SPI,268 IO_TYPE_1V8_OR_3V3,269 CV1800_PINCONF_AREA_SYS, 0x018, 3,270 CV1800_PINCONF_AREA_SYS, 0x900),271 CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_SD0_SPI,272 IO_TYPE_1V8_OR_3V3,273 CV1800_PINCONF_AREA_SYS, 0x01c, 3,274 CV1800_PINCONF_AREA_SYS, 0x904),275 CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_SD0_SPI,276 IO_TYPE_1V8_OR_3V3,277 CV1800_PINCONF_AREA_SYS, 0x020, 3,278 CV1800_PINCONF_AREA_SYS, 0x908),279 CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_SD0_SPI,280 IO_TYPE_1V8_OR_3V3,281 CV1800_PINCONF_AREA_SYS, 0x024, 7,282 CV1800_PINCONF_AREA_SYS, 0x90c),283 CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_SD0_SPI,284 IO_TYPE_1V8_OR_3V3,285 CV1800_PINCONF_AREA_SYS, 0x028, 7,286 CV1800_PINCONF_AREA_SYS, 0x910),287 CV1800_GENERAL_PIN(PIN_SPINOR_HOLD_X, VDDIO_SD0_SPI,288 IO_TYPE_1V8_OR_3V3,289 CV1800_PINCONF_AREA_SYS, 0x02c, 3,290 CV1800_PINCONF_AREA_SYS, 0x914),291 CV1800_GENERAL_PIN(PIN_SPINOR_SCK, VDDIO_SD0_SPI,292 IO_TYPE_1V8_OR_3V3,293 CV1800_PINCONF_AREA_SYS, 0x030, 3,294 CV1800_PINCONF_AREA_SYS, 0x918),295 CV1800_GENERAL_PIN(PIN_SPINOR_MOSI, VDDIO_SD0_SPI,296 IO_TYPE_1V8_OR_3V3,297 CV1800_PINCONF_AREA_SYS, 0x034, 3,298 CV1800_PINCONF_AREA_SYS, 0x91c),299 CV1800_GENERAL_PIN(PIN_SPINOR_WP_X, VDDIO_SD0_SPI,300 IO_TYPE_1V8_OR_3V3,301 CV1800_PINCONF_AREA_SYS, 0x038, 3,302 CV1800_PINCONF_AREA_SYS, 0x920),303 CV1800_GENERAL_PIN(PIN_SPINOR_MISO, VDDIO_SD0_SPI,304 IO_TYPE_1V8_OR_3V3,305 CV1800_PINCONF_AREA_SYS, 0x03c, 3,306 CV1800_PINCONF_AREA_SYS, 0x924),307 CV1800_GENERAL_PIN(PIN_SPINOR_CS_X, VDDIO_SD0_SPI,308 IO_TYPE_1V8_OR_3V3,309 CV1800_PINCONF_AREA_SYS, 0x040, 3,310 CV1800_PINCONF_AREA_SYS, 0x928),311 CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_SD0_SPI,312 IO_TYPE_1V8_OR_3V3,313 CV1800_PINCONF_AREA_SYS, 0x04c, 7,314 CV1800_PINCONF_AREA_SYS, 0x934),315 CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_SD0_SPI,316 IO_TYPE_1V8_OR_3V3,317 CV1800_PINCONF_AREA_SYS, 0x050, 7,318 CV1800_PINCONF_AREA_SYS, 0x938),319 CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_SD0_SPI,320 IO_TYPE_1V8_OR_3V3,321 CV1800_PINCONF_AREA_SYS, 0x054, 7,322 CV1800_PINCONF_AREA_SYS, 0x93c),323 CV1800_GENERAL_PIN(PIN_PWR_VBAT_DET, VDDIO_RTC,324 IO_TYPE_1V8_ONLY,325 CV1800_PINCONF_AREA_SYS, 0x05c, 0,326 CV1800_PINCONF_AREA_RTC, 0x004),327 CV1800_GENERAL_PIN(PIN_PWR_SEQ2, VDDIO_RTC,328 IO_TYPE_1V8_ONLY,329 CV1800_PINCONF_AREA_SYS, 0x068, 3,330 CV1800_PINCONF_AREA_RTC, 0x010),331 CV1800_GENERAL_PIN(PIN_XTAL_XIN, VDDIO_RTC,332 IO_TYPE_1V8_ONLY,333 CV1800_PINCONF_AREA_SYS, 0x074, 0,334 CV1800_PINCONF_AREA_RTC, 0x020),335 CV1800_GENERAL_PIN(PIN_SD1_GPIO0, VDD33A_ETH_USB_SD1,336 IO_TYPE_1V8_OR_3V3,337 CV1800_PINCONF_AREA_SYS, 0x088, 7,338 CV1800_PINCONF_AREA_RTC, 0x034),339 CV1800_GENERAL_PIN(PIN_SD1_GPIO1, VDD33A_ETH_USB_SD1,340 IO_TYPE_1V8_OR_3V3,341 CV1800_PINCONF_AREA_SYS, 0x084, 7,342 CV1800_PINCONF_AREA_RTC, 0x030),343 CV1800_GENERAL_PIN(PIN_SD1_D3, VDD33A_ETH_USB_SD1,344 IO_TYPE_1V8_OR_3V3,345 CV1800_PINCONF_AREA_SYS, 0x08c, 7,346 CV1800_PINCONF_AREA_RTC, 0x038),347 CV1800_GENERAL_PIN(PIN_SD1_D2, VDD33A_ETH_USB_SD1,348 IO_TYPE_1V8_OR_3V3,349 CV1800_PINCONF_AREA_SYS, 0x090, 7,350 CV1800_PINCONF_AREA_RTC, 0x03c),351 CV1800_GENERAL_PIN(PIN_SD1_D1, VDD33A_ETH_USB_SD1,352 IO_TYPE_1V8_OR_3V3,353 CV1800_PINCONF_AREA_SYS, 0x094, 7,354 CV1800_PINCONF_AREA_RTC, 0x040),355 CV1800_GENERAL_PIN(PIN_SD1_D0, VDD33A_ETH_USB_SD1,356 IO_TYPE_1V8_OR_3V3,357 CV1800_PINCONF_AREA_SYS, 0x098, 7,358 CV1800_PINCONF_AREA_RTC, 0x044),359 CV1800_GENERAL_PIN(PIN_SD1_CMD, VDD33A_ETH_USB_SD1,360 IO_TYPE_1V8_OR_3V3,361 CV1800_PINCONF_AREA_SYS, 0x09c, 7,362 CV1800_PINCONF_AREA_RTC, 0x048),363 CV1800_GENERAL_PIN(PIN_SD1_CLK, VDD33A_ETH_USB_SD1,364 IO_TYPE_1V8_OR_3V3,365 CV1800_PINCONF_AREA_SYS, 0x0a0, 7,366 CV1800_PINCONF_AREA_RTC, 0x04c),367 CV1800_GENERAL_PIN(PIN_ADC1, VDD18A_USB_PLL_ETH_CSI,368 IO_TYPE_1V8_ONLY,369 CV1800_PINCONF_AREA_SYS, 0x0a8, 6,370 CV1800_PINCONF_AREA_SYS, 0x804),371 CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDD18A_USB_PLL_ETH_CSI,372 IO_TYPE_1V8_ONLY,373 CV1800_PINCONF_AREA_SYS, 0x0ac, 6,374 CV1800_PINCONF_AREA_SYS, 0x808),375 CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_USB_PLL_ETH_CSI,376 IO_TYPE_ETH,377 CV1800_PINCONF_AREA_SYS, 0x0c0, 7),378 CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_USB_PLL_ETH_CSI,379 IO_TYPE_ETH,380 CV1800_PINCONF_AREA_SYS, 0x0c4, 7),381 CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_USB_PLL_ETH_CSI,382 IO_TYPE_ETH,383 CV1800_PINCONF_AREA_SYS, 0x0c8, 7),384 CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_USB_PLL_ETH_CSI,385 IO_TYPE_ETH,386 CV1800_PINCONF_AREA_SYS, 0x0cc, 7),387 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4N, VDD18A_USB_PLL_ETH_CSI,388 IO_TYPE_1V8_ONLY,389 CV1800_PINCONF_AREA_SYS, 0x0d4, 7,390 CV1800_PINCONF_AREA_SYS, 0x0bc, 7,391 CV1800_PINCONF_AREA_SYS, 0xc04),392 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4P, VDD18A_USB_PLL_ETH_CSI,393 IO_TYPE_1V8_ONLY,394 CV1800_PINCONF_AREA_SYS, 0x0d8, 7,395 CV1800_PINCONF_AREA_SYS, 0x0b8, 7,396 CV1800_PINCONF_AREA_SYS, 0xc08),397 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3N, VDD18A_USB_PLL_ETH_CSI,398 IO_TYPE_1V8_ONLY,399 CV1800_PINCONF_AREA_SYS, 0x0dc, 7,400 CV1800_PINCONF_AREA_SYS, 0x0b0, 7,401 CV1800_PINCONF_AREA_SYS, 0xc0c),402 CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3P, VDD18A_USB_PLL_ETH_CSI,403 IO_TYPE_1V8_ONLY,404 CV1800_PINCONF_AREA_SYS, 0x0e0, 7,405 CV1800_PINCONF_AREA_SYS, 0x0b4, 7,406 CV1800_PINCONF_AREA_SYS, 0xc10),407 CV1800_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_USB_PLL_ETH_CSI,408 IO_TYPE_1V8_ONLY,409 CV1800_PINCONF_AREA_SYS, 0x0e4, 7,410 CV1800_PINCONF_AREA_SYS, 0xc14),411 CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_USB_PLL_ETH_CSI,412 IO_TYPE_1V8_ONLY,413 CV1800_PINCONF_AREA_SYS, 0x0e8, 7,414 CV1800_PINCONF_AREA_SYS, 0xc18),415 CV1800_GENERAL_PIN(PIN_MIPIRX1N, VDD18A_USB_PLL_ETH_CSI,416 IO_TYPE_1V8_ONLY,417 CV1800_PINCONF_AREA_SYS, 0x0ec, 7,418 CV1800_PINCONF_AREA_SYS, 0xc1c),419 CV1800_GENERAL_PIN(PIN_MIPIRX1P, VDD18A_USB_PLL_ETH_CSI,420 IO_TYPE_1V8_ONLY,421 CV1800_PINCONF_AREA_SYS, 0x0f0, 7,422 CV1800_PINCONF_AREA_SYS, 0xc20),423 CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_USB_PLL_ETH_CSI,424 IO_TYPE_1V8_ONLY,425 CV1800_PINCONF_AREA_SYS, 0x0f4, 7,426 CV1800_PINCONF_AREA_SYS, 0xc24),427 CV1800_GENERAL_PIN(PIN_MIPIRX0P, VDD18A_USB_PLL_ETH_CSI,428 IO_TYPE_1V8_ONLY,429 CV1800_PINCONF_AREA_SYS, 0x0f8, 7,430 CV1800_PINCONF_AREA_SYS, 0xc28),431 CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_AUD,432 IO_TYPE_AUDIO,433 CV1800_PINCONF_AREA_SYS, 0x120, 5),434};435 436static const struct cv1800_pinctrl_data cv1800b_pindata = {437 .pins = cv1800b_pins,438 .pindata = cv1800b_pin_data,439 .pdnames = cv1800b_power_domain_desc,440 .vddio_ops = &cv1800b_vddio_cfg_ops,441 .npins = ARRAY_SIZE(cv1800b_pins),442 .npd = ARRAY_SIZE(cv1800b_power_domain_desc),443};444 445static const struct of_device_id cv1800b_pinctrl_ids[] = {446 { .compatible = "sophgo,cv1800b-pinctrl", .data = &cv1800b_pindata },447 { }448};449MODULE_DEVICE_TABLE(of, cv1800b_pinctrl_ids);450 451static struct platform_driver cv1800b_pinctrl_driver = {452 .probe = cv1800_pinctrl_probe,453 .driver = {454 .name = "cv1800b-pinctrl",455 .suppress_bind_attrs = true,456 .of_match_table = cv1800b_pinctrl_ids,457 },458};459module_platform_driver(cv1800b_pinctrl_driver);460 461MODULE_DESCRIPTION("Pinctrl driver for the CV1800B series SoC");462MODULE_LICENSE("GPL");463