| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Sophgo SG2000 SoC pinctrl driver. |
| * |
| * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com> |
| * |
| * This file is generated from vendor pinout definition. |
| */ |
| |
| #include <linux/module.h> |
| #include <linux/platform_device.h> |
| #include <linux/of.h> |
| |
| #include <linux/pinctrl/pinctrl.h> |
| #include <linux/pinctrl/pinmux.h> |
| |
| #include <dt-bindings/pinctrl/pinctrl-sg2000.h> |
| |
| #include "pinctrl-cv18xx.h" |
| |
| enum SG2000_POWER_DOMAIN { |
| VDD18A_EPHY = 0, |
| VDD18A_MIPI = 1, |
| VDDIO18_1 = 2, |
| VDDIO_EMMC = 3, |
| VDDIO_RTC = 4, |
| VDDIO_SD0 = 5, |
| VDDIO_SD1 = 6, |
| VDDIO_VIVO = 7 |
| }; |
| |
| static const char *const sg2000_power_domain_desc[] = { |
| [VDD18A_EPHY] = "VDD18A_EPHY", |
| [VDD18A_MIPI] = "VDD18A_MIPI", |
| [VDDIO18_1] = "VDDIO18_1", |
| [VDDIO_EMMC] = "VDDIO_EMMC", |
| [VDDIO_RTC] = "VDDIO_RTC", |
| [VDDIO_SD0] = "VDDIO_SD0", |
| [VDDIO_SD1] = "VDDIO_SD1", |
| [VDDIO_VIVO] = "VDDIO_VIVO", |
| }; |
| |
| static int sg2000_get_pull_up(struct cv1800_pin *pin, const u32 *psmap) |
| { |
| u32 pstate = psmap[pin->power_domain]; |
| enum cv1800_pin_io_type type = cv1800_pin_io_type(pin); |
| |
| if (type == IO_TYPE_1V8_ONLY) |
| return 79000; |
| |
| if (type == IO_TYPE_1V8_OR_3V3) { |
| if (pstate == PIN_POWER_STATE_1V8) |
| return 60000; |
| if (pstate == PIN_POWER_STATE_3V3) |
| return 60000; |
| |
| return -EINVAL; |
| } |
| |
| return -ENOTSUPP; |
| } |
| |
| static int sg2000_get_pull_down(struct cv1800_pin *pin, const u32 *psmap) |
| { |
| u32 pstate = psmap[pin->power_domain]; |
| enum cv1800_pin_io_type type = cv1800_pin_io_type(pin); |
| |
| if (type == IO_TYPE_1V8_ONLY) |
| return 87000; |
| |
| if (type == IO_TYPE_1V8_OR_3V3) { |
| if (pstate == PIN_POWER_STATE_1V8) |
| return 61000; |
| if (pstate == PIN_POWER_STATE_3V3) |
| return 62000; |
| |
| return -EINVAL; |
| } |
| |
| return -ENOTSUPP; |
| } |
| |
| static const u32 sg2000_1v8_oc_map[] = { |
| 12800, |
| 25300, |
| 37400, |
| 49000 |
| }; |
| |
| static const u32 sg2000_18od33_1v8_oc_map[] = { |
| 7800, |
| 11700, |
| 15500, |
| 19200, |
| 23000, |
| 26600, |
| 30200, |
| 33700 |
| }; |
| |
| static const u32 sg2000_18od33_3v3_oc_map[] = { |
| 5500, |
| 8200, |
| 10800, |
| 13400, |
| 16100, |
| 18700, |
| 21200, |
| 23700 |
| }; |
| |
| static const u32 sg2000_eth_oc_map[] = { |
| 15700, |
| 17800 |
| }; |
| |
| static int sg2000_get_oc_map(struct cv1800_pin *pin, const u32 *psmap, |
| const u32 **map) |
| { |
| enum cv1800_pin_io_type type = cv1800_pin_io_type(pin); |
| u32 pstate = psmap[pin->power_domain]; |
| |
| if (type == IO_TYPE_1V8_ONLY) { |
| *map = sg2000_1v8_oc_map; |
| return ARRAY_SIZE(sg2000_1v8_oc_map); |
| } |
| |
| if (type == IO_TYPE_1V8_OR_3V3) { |
| if (pstate == PIN_POWER_STATE_1V8) { |
| *map = sg2000_18od33_1v8_oc_map; |
| return ARRAY_SIZE(sg2000_18od33_1v8_oc_map); |
| } else if (pstate == PIN_POWER_STATE_3V3) { |
| *map = sg2000_18od33_3v3_oc_map; |
| return ARRAY_SIZE(sg2000_18od33_3v3_oc_map); |
| } |
| } |
| |
| if (type == IO_TYPE_ETH) { |
| *map = sg2000_eth_oc_map; |
| return ARRAY_SIZE(sg2000_eth_oc_map); |
| } |
| |
| return -ENOTSUPP; |
| } |
| |
| static const u32 sg2000_1v8_schmitt_map[] = { |
| 0, |
| 970000, |
| 1040000 |
| }; |
| |
| static const u32 sg2000_18od33_1v8_schmitt_map[] = { |
| 0, |
| 1070000 |
| }; |
| |
| static const u32 sg2000_18od33_3v3_schmitt_map[] = { |
| 0, |
| 1100000 |
| }; |
| |
| static int sg2000_get_schmitt_map(struct cv1800_pin *pin, const u32 *psmap, |
| const u32 **map) |
| { |
| enum cv1800_pin_io_type type = cv1800_pin_io_type(pin); |
| u32 pstate = psmap[pin->power_domain]; |
| |
| if (type == IO_TYPE_1V8_ONLY) { |
| *map = sg2000_1v8_schmitt_map; |
| return ARRAY_SIZE(sg2000_1v8_schmitt_map); |
| } |
| |
| if (type == IO_TYPE_1V8_OR_3V3) { |
| if (pstate == PIN_POWER_STATE_1V8) { |
| *map = sg2000_18od33_1v8_schmitt_map; |
| return ARRAY_SIZE(sg2000_18od33_1v8_schmitt_map); |
| } else if (pstate == PIN_POWER_STATE_3V3) { |
| *map = sg2000_18od33_3v3_schmitt_map; |
| return ARRAY_SIZE(sg2000_18od33_3v3_schmitt_map); |
| } |
| } |
| |
| return -ENOTSUPP; |
| } |
| |
| static const struct cv1800_vddio_cfg_ops sg2000_vddio_cfg_ops = { |
| .get_pull_up = sg2000_get_pull_up, |
| .get_pull_down = sg2000_get_pull_down, |
| .get_oc_map = sg2000_get_oc_map, |
| .get_schmitt_map = sg2000_get_schmitt_map, |
| }; |
| |
| static const struct pinctrl_pin_desc sg2000_pins[] = { |
| PINCTRL_PIN(PIN_MIPI_TXM4, "MIPI_TXM4"), |
| PINCTRL_PIN(PIN_MIPIRX0N, "MIPIRX0N"), |
| PINCTRL_PIN(PIN_MIPIRX3P, "MIPIRX3P"), |
| PINCTRL_PIN(PIN_MIPIRX4P, "MIPIRX4P"), |
| PINCTRL_PIN(PIN_VIVO_D2, "VIVO_D2"), |
| PINCTRL_PIN(PIN_VIVO_D3, "VIVO_D3"), |
| PINCTRL_PIN(PIN_VIVO_D10, "VIVO_D10"), |
| PINCTRL_PIN(PIN_USB_VBUS_DET, "USB_VBUS_DET"), |
| PINCTRL_PIN(PIN_MIPI_TXP3, "MIPI_TXP3"), |
| PINCTRL_PIN(PIN_MIPI_TXM3, "MIPI_TXM3"), |
| PINCTRL_PIN(PIN_MIPI_TXP4, "MIPI_TXP4"), |
| PINCTRL_PIN(PIN_MIPIRX0P, "MIPIRX0P"), |
| PINCTRL_PIN(PIN_MIPIRX1N, "MIPIRX1N"), |
| PINCTRL_PIN(PIN_MIPIRX2N, "MIPIRX2N"), |
| PINCTRL_PIN(PIN_MIPIRX4N, "MIPIRX4N"), |
| PINCTRL_PIN(PIN_MIPIRX5N, "MIPIRX5N"), |
| PINCTRL_PIN(PIN_VIVO_D1, "VIVO_D1"), |
| PINCTRL_PIN(PIN_VIVO_D5, "VIVO_D5"), |
| PINCTRL_PIN(PIN_VIVO_D7, "VIVO_D7"), |
| PINCTRL_PIN(PIN_VIVO_D9, "VIVO_D9"), |
| PINCTRL_PIN(PIN_USB_ID, "USB_ID"), |
| PINCTRL_PIN(PIN_ETH_RXM, "ETH_RXM"), |
| PINCTRL_PIN(PIN_MIPI_TXP2, "MIPI_TXP2"), |
| PINCTRL_PIN(PIN_MIPI_TXM2, "MIPI_TXM2"), |
| PINCTRL_PIN(PIN_CAM_PD0, "CAM_PD0"), |
| PINCTRL_PIN(PIN_CAM_MCLK0, "CAM_MCLK0"), |
| PINCTRL_PIN(PIN_MIPIRX1P, "MIPIRX1P"), |
| PINCTRL_PIN(PIN_MIPIRX2P, "MIPIRX2P"), |
| PINCTRL_PIN(PIN_MIPIRX3N, "MIPIRX3N"), |
| PINCTRL_PIN(PIN_MIPIRX5P, "MIPIRX5P"), |
| PINCTRL_PIN(PIN_VIVO_CLK, "VIVO_CLK"), |
| PINCTRL_PIN(PIN_VIVO_D6, "VIVO_D6"), |
| PINCTRL_PIN(PIN_VIVO_D8, "VIVO_D8"), |
| PINCTRL_PIN(PIN_USB_VBUS_EN, "USB_VBUS_EN"), |
| PINCTRL_PIN(PIN_ETH_RXP, "ETH_RXP"), |
| PINCTRL_PIN(PIN_GPIO_RTX, "GPIO_RTX"), |
| PINCTRL_PIN(PIN_MIPI_TXP1, "MIPI_TXP1"), |
| PINCTRL_PIN(PIN_MIPI_TXM1, "MIPI_TXM1"), |
| PINCTRL_PIN(PIN_CAM_MCLK1, "CAM_MCLK1"), |
| PINCTRL_PIN(PIN_IIC3_SCL, "IIC3_SCL"), |
| PINCTRL_PIN(PIN_VIVO_D4, "VIVO_D4"), |
| PINCTRL_PIN(PIN_ETH_TXM, "ETH_TXM"), |
| PINCTRL_PIN(PIN_ETH_TXP, "ETH_TXP"), |
| PINCTRL_PIN(PIN_MIPI_TXP0, "MIPI_TXP0"), |
| PINCTRL_PIN(PIN_MIPI_TXM0, "MIPI_TXM0"), |
| PINCTRL_PIN(PIN_CAM_PD1, "CAM_PD1"), |
| PINCTRL_PIN(PIN_CAM_RST0, "CAM_RST0"), |
| PINCTRL_PIN(PIN_VIVO_D0, "VIVO_D0"), |
| PINCTRL_PIN(PIN_ADC1, "ADC1"), |
| PINCTRL_PIN(PIN_ADC2, "ADC2"), |
| PINCTRL_PIN(PIN_ADC3, "ADC3"), |
| PINCTRL_PIN(PIN_AUD_AOUTL, "AUD_AOUTL"), |
| PINCTRL_PIN(PIN_IIC3_SDA, "IIC3_SDA"), |
| PINCTRL_PIN(PIN_SD1_D2, "SD1_D2"), |
| PINCTRL_PIN(PIN_AUD_AOUTR, "AUD_AOUTR"), |
| PINCTRL_PIN(PIN_SD1_D3, "SD1_D3"), |
| PINCTRL_PIN(PIN_SD1_CLK, "SD1_CLK"), |
| PINCTRL_PIN(PIN_SD1_CMD, "SD1_CMD"), |
| PINCTRL_PIN(PIN_AUD_AINL_MIC, "AUD_AINL_MIC"), |
| PINCTRL_PIN(PIN_RSTN, "RSTN"), |
| PINCTRL_PIN(PIN_PWM0_BUCK, "PWM0_BUCK"), |
| PINCTRL_PIN(PIN_SD1_D1, "SD1_D1"), |
| PINCTRL_PIN(PIN_SD1_D0, "SD1_D0"), |
| PINCTRL_PIN(PIN_AUD_AINR_MIC, "AUD_AINR_MIC"), |
| PINCTRL_PIN(PIN_IIC2_SCL, "IIC2_SCL"), |
| PINCTRL_PIN(PIN_IIC2_SDA, "IIC2_SDA"), |
| PINCTRL_PIN(PIN_SD0_CD, "SD0_CD"), |
| PINCTRL_PIN(PIN_SD0_D1, "SD0_D1"), |
| PINCTRL_PIN(PIN_UART2_RX, "UART2_RX"), |
| PINCTRL_PIN(PIN_UART2_CTS, "UART2_CTS"), |
| PINCTRL_PIN(PIN_UART2_TX, "UART2_TX"), |
| PINCTRL_PIN(PIN_SD0_CLK, "SD0_CLK"), |
| PINCTRL_PIN(PIN_SD0_D0, "SD0_D0"), |
| PINCTRL_PIN(PIN_SD0_CMD, "SD0_CMD"), |
| PINCTRL_PIN(PIN_CLK32K, "CLK32K"), |
| PINCTRL_PIN(PIN_UART2_RTS, "UART2_RTS"), |
| PINCTRL_PIN(PIN_SD0_D3, "SD0_D3"), |
| PINCTRL_PIN(PIN_SD0_D2, "SD0_D2"), |
| PINCTRL_PIN(PIN_UART0_RX, "UART0_RX"), |
| PINCTRL_PIN(PIN_UART0_TX, "UART0_TX"), |
| PINCTRL_PIN(PIN_JTAG_CPU_TRST, "JTAG_CPU_TRST"), |
| PINCTRL_PIN(PIN_PWR_ON, "PWR_ON"), |
| PINCTRL_PIN(PIN_PWR_GPIO2, "PWR_GPIO2"), |
| PINCTRL_PIN(PIN_PWR_GPIO0, "PWR_GPIO0"), |
| PINCTRL_PIN(PIN_CLK25M, "CLK25M"), |
| PINCTRL_PIN(PIN_SD0_PWR_EN, "SD0_PWR_EN"), |
| PINCTRL_PIN(PIN_SPK_EN, "SPK_EN"), |
| PINCTRL_PIN(PIN_JTAG_CPU_TCK, "JTAG_CPU_TCK"), |
| PINCTRL_PIN(PIN_JTAG_CPU_TMS, "JTAG_CPU_TMS"), |
| PINCTRL_PIN(PIN_PWR_WAKEUP1, "PWR_WAKEUP1"), |
| PINCTRL_PIN(PIN_PWR_WAKEUP0, "PWR_WAKEUP0"), |
| PINCTRL_PIN(PIN_PWR_GPIO1, "PWR_GPIO1"), |
| PINCTRL_PIN(PIN_EMMC_DAT3, "EMMC_DAT3"), |
| PINCTRL_PIN(PIN_EMMC_DAT0, "EMMC_DAT0"), |
| PINCTRL_PIN(PIN_EMMC_DAT2, "EMMC_DAT2"), |
| PINCTRL_PIN(PIN_EMMC_RSTN, "EMMC_RSTN"), |
| PINCTRL_PIN(PIN_AUX0, "AUX0"), |
| PINCTRL_PIN(PIN_IIC0_SDA, "IIC0_SDA"), |
| PINCTRL_PIN(PIN_PWR_SEQ3, "PWR_SEQ3"), |
| PINCTRL_PIN(PIN_PWR_VBAT_DET, "PWR_VBAT_DET"), |
| PINCTRL_PIN(PIN_PWR_SEQ1, "PWR_SEQ1"), |
| PINCTRL_PIN(PIN_PWR_BUTTON1, "PWR_BUTTON1"), |
| PINCTRL_PIN(PIN_EMMC_DAT1, "EMMC_DAT1"), |
| PINCTRL_PIN(PIN_EMMC_CMD, "EMMC_CMD"), |
| PINCTRL_PIN(PIN_EMMC_CLK, "EMMC_CLK"), |
| PINCTRL_PIN(PIN_IIC0_SCL, "IIC0_SCL"), |
| PINCTRL_PIN(PIN_GPIO_ZQ, "GPIO_ZQ"), |
| PINCTRL_PIN(PIN_PWR_RSTN, "PWR_RSTN"), |
| PINCTRL_PIN(PIN_PWR_SEQ2, "PWR_SEQ2"), |
| PINCTRL_PIN(PIN_XTAL_XIN, "XTAL_XIN"), |
| }; |
| |
| static const struct cv1800_pin sg2000_pin_data[ARRAY_SIZE(sg2000_pins)] = { |
| CV1800_GENERAL_PIN(PIN_MIPI_TXM4, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x194, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc60), |
| CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x18c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc58), |
| CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x178, 7, |
| CV1800_PINCONF_AREA_SYS, 0x118, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc44), |
| CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x170, 7, |
| CV1800_PINCONF_AREA_SYS, 0x11c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc3c), |
| CV1800_GENERAL_PIN(PIN_VIVO_D2, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x154, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc20), |
| CV1800_GENERAL_PIN(PIN_VIVO_D3, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x150, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc1c), |
| CV1800_GENERAL_PIN(PIN_VIVO_D10, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x134, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc00), |
| CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x108, 5, |
| CV1800_PINCONF_AREA_SYS, 0x820), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXP3, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1a0, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc6c), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXM3, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x19c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc68), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXP4, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x198, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc64), |
| CV1800_GENERAL_PIN(PIN_MIPIRX0P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x190, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc5c), |
| CV1800_GENERAL_PIN(PIN_MIPIRX1N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x184, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc50), |
| CV1800_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x17c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc48), |
| CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX4N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x16c, 7, |
| CV1800_PINCONF_AREA_SYS, 0x120, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc38), |
| CV1800_GENERAL_PIN(PIN_MIPIRX5N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x164, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc30), |
| CV1800_GENERAL_PIN(PIN_VIVO_D1, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x158, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc24), |
| CV1800_GENERAL_PIN(PIN_VIVO_D5, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x148, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc14), |
| CV1800_GENERAL_PIN(PIN_VIVO_D7, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x140, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc0c), |
| CV1800_GENERAL_PIN(PIN_VIVO_D9, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x138, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc04), |
| CV1800_GENERAL_PIN(PIN_USB_ID, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0fc, 3, |
| CV1800_PINCONF_AREA_SYS, 0x814), |
| CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_EPHY, |
| IO_TYPE_ETH, |
| CV1800_PINCONF_AREA_SYS, 0x130, 7), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXP2, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1a8, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc74), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXM2, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1a4, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc70), |
| CV1800_GENERAL_PIN(PIN_CAM_PD0, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x004, 4, |
| CV1800_PINCONF_AREA_SYS, 0xb04), |
| CV1800_GENERAL_PIN(PIN_CAM_MCLK0, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x000, 3, |
| CV1800_PINCONF_AREA_SYS, 0xb00), |
| CV1800_GENERAL_PIN(PIN_MIPIRX1P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x188, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc54), |
| CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x180, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc4c), |
| CV1800_GENERATE_PIN_MUX2(PIN_MIPIRX3N, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x174, 7, |
| CV1800_PINCONF_AREA_SYS, 0x114, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc40), |
| CV1800_GENERAL_PIN(PIN_MIPIRX5P, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x168, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc34), |
| CV1800_GENERAL_PIN(PIN_VIVO_CLK, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x160, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc2c), |
| CV1800_GENERAL_PIN(PIN_VIVO_D6, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x144, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc10), |
| CV1800_GENERAL_PIN(PIN_VIVO_D8, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x13c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc08), |
| CV1800_GENERAL_PIN(PIN_USB_VBUS_EN, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x100, 3, |
| CV1800_PINCONF_AREA_SYS, 0x818), |
| CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_EPHY, |
| IO_TYPE_ETH, |
| CV1800_PINCONF_AREA_SYS, 0x12c, 7), |
| CV1800_GENERAL_PIN(PIN_GPIO_RTX, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1cc, 5, |
| CV1800_PINCONF_AREA_SYS, 0xc8c), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXP1, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1b0, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc7c), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXM1, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1ac, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc78), |
| CV1800_GENERAL_PIN(PIN_CAM_MCLK1, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x00c, 4, |
| CV1800_PINCONF_AREA_SYS, 0xb0c), |
| CV1800_GENERAL_PIN(PIN_IIC3_SCL, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x014, 3, |
| CV1800_PINCONF_AREA_SYS, 0xb14), |
| CV1800_GENERAL_PIN(PIN_VIVO_D4, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x14c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc18), |
| CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_EPHY, |
| IO_TYPE_ETH, |
| CV1800_PINCONF_AREA_SYS, 0x128, 7), |
| CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_EPHY, |
| IO_TYPE_ETH, |
| CV1800_PINCONF_AREA_SYS, 0x124, 7), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXP0, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1b8, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc84), |
| CV1800_GENERAL_PIN(PIN_MIPI_TXM0, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1b4, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc80), |
| CV1800_GENERAL_PIN(PIN_CAM_PD1, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x010, 6, |
| CV1800_PINCONF_AREA_SYS, 0xb10), |
| CV1800_GENERAL_PIN(PIN_CAM_RST0, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x008, 6, |
| CV1800_PINCONF_AREA_SYS, 0xb08), |
| CV1800_GENERAL_PIN(PIN_VIVO_D0, VDDIO_VIVO, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x15c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xc28), |
| CV1800_GENERAL_PIN(PIN_ADC1, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0f8, 4, |
| CV1800_PINCONF_AREA_SYS, 0x810), |
| CV1800_GENERAL_PIN(PIN_ADC2, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0f4, 7, |
| CV1800_PINCONF_AREA_SYS, 0x80c), |
| CV1800_GENERAL_PIN(PIN_ADC3, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0f0, 7, |
| CV1800_PINCONF_AREA_SYS, 0x808), |
| CV1800_FUNC_PIN(PIN_AUD_AOUTL, VDD18A_MIPI, |
| IO_TYPE_AUDIO, |
| CV1800_PINCONF_AREA_SYS, 0x1c4, 5), |
| CV1800_GENERAL_PIN(PIN_IIC3_SDA, VDD18A_MIPI, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x018, 3, |
| CV1800_PINCONF_AREA_SYS, 0xb18), |
| CV1800_GENERAL_PIN(PIN_SD1_D2, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0d4, 7, |
| CV1800_PINCONF_AREA_RTC, 0x05c), |
| CV1800_FUNC_PIN(PIN_AUD_AOUTR, VDD18A_MIPI, |
| IO_TYPE_AUDIO, |
| CV1800_PINCONF_AREA_SYS, 0x1c8, 6), |
| CV1800_GENERAL_PIN(PIN_SD1_D3, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0d0, 7, |
| CV1800_PINCONF_AREA_RTC, 0x058), |
| CV1800_GENERAL_PIN(PIN_SD1_CLK, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0e4, 7, |
| CV1800_PINCONF_AREA_RTC, 0x06c), |
| CV1800_GENERAL_PIN(PIN_SD1_CMD, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0e0, 7, |
| CV1800_PINCONF_AREA_RTC, 0x068), |
| CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_MIPI, |
| IO_TYPE_AUDIO, |
| CV1800_PINCONF_AREA_SYS, 0x1bc, 5), |
| CV1800_GENERAL_PIN(PIN_RSTN, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0e8, 0, |
| CV1800_PINCONF_AREA_SYS, 0x800), |
| CV1800_GENERAL_PIN(PIN_PWM0_BUCK, VDDIO18_1, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0ec, 3, |
| CV1800_PINCONF_AREA_SYS, 0x804), |
| CV1800_GENERAL_PIN(PIN_SD1_D1, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0d8, 7, |
| CV1800_PINCONF_AREA_RTC, 0x060), |
| CV1800_GENERAL_PIN(PIN_SD1_D0, VDDIO_SD1, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x0dc, 7, |
| CV1800_PINCONF_AREA_RTC, 0x064), |
| CV1800_FUNC_PIN(PIN_AUD_AINR_MIC, VDD18A_MIPI, |
| IO_TYPE_AUDIO, |
| CV1800_PINCONF_AREA_SYS, 0x1c0, 6), |
| CV1800_GENERAL_PIN(PIN_IIC2_SCL, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0b8, 7, |
| CV1800_PINCONF_AREA_RTC, 0x040), |
| CV1800_GENERAL_PIN(PIN_IIC2_SDA, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0bc, 7, |
| CV1800_PINCONF_AREA_RTC, 0x044), |
| CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x034, 3, |
| CV1800_PINCONF_AREA_SYS, 0x900), |
| CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x028, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa0c), |
| CV1800_GENERAL_PIN(PIN_UART2_RX, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0c8, 7, |
| CV1800_PINCONF_AREA_RTC, 0x050), |
| CV1800_GENERAL_PIN(PIN_UART2_CTS, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0cc, 7, |
| CV1800_PINCONF_AREA_RTC, 0x054), |
| CV1800_GENERAL_PIN(PIN_UART2_TX, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0c0, 7, |
| CV1800_PINCONF_AREA_RTC, 0x048), |
| CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x01c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa00), |
| CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x024, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa08), |
| CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x020, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa04), |
| CV1800_GENERAL_PIN(PIN_CLK32K, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0b0, 7, |
| CV1800_PINCONF_AREA_RTC, 0x038), |
| CV1800_GENERAL_PIN(PIN_UART2_RTS, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0c4, 7, |
| CV1800_PINCONF_AREA_RTC, 0x04c), |
| CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x030, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa14), |
| CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x02c, 7, |
| CV1800_PINCONF_AREA_SYS, 0xa10), |
| CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x044, 7, |
| CV1800_PINCONF_AREA_SYS, 0x910), |
| CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x040, 7, |
| CV1800_PINCONF_AREA_SYS, 0x90c), |
| CV1800_GENERAL_PIN(PIN_JTAG_CPU_TRST, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x06c, 6, |
| CV1800_PINCONF_AREA_SYS, 0x938), |
| CV1800_GENERAL_PIN(PIN_PWR_ON, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x09c, 7, |
| CV1800_PINCONF_AREA_RTC, 0x024), |
| CV1800_GENERAL_PIN(PIN_PWR_GPIO2, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0ac, 7, |
| CV1800_PINCONF_AREA_RTC, 0x034), |
| CV1800_GENERAL_PIN(PIN_PWR_GPIO0, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0a4, 4, |
| CV1800_PINCONF_AREA_RTC, 0x02c), |
| CV1800_GENERAL_PIN(PIN_CLK25M, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0b4, 7, |
| CV1800_PINCONF_AREA_RTC, 0x03c), |
| CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x038, 3, |
| CV1800_PINCONF_AREA_SYS, 0x904), |
| CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x03c, 3, |
| CV1800_PINCONF_AREA_SYS, 0x908), |
| CV1800_GENERAL_PIN(PIN_JTAG_CPU_TCK, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x068, 7, |
| CV1800_PINCONF_AREA_SYS, 0x934), |
| CV1800_GENERAL_PIN(PIN_JTAG_CPU_TMS, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x064, 7, |
| CV1800_PINCONF_AREA_SYS, 0x930), |
| CV1800_GENERAL_PIN(PIN_PWR_WAKEUP1, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x094, 7, |
| CV1800_PINCONF_AREA_RTC, 0x01c), |
| CV1800_GENERAL_PIN(PIN_PWR_WAKEUP0, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x090, 7, |
| CV1800_PINCONF_AREA_RTC, 0x018), |
| CV1800_GENERAL_PIN(PIN_PWR_GPIO1, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0a8, 7, |
| CV1800_PINCONF_AREA_RTC, 0x030), |
| CV1800_GENERAL_PIN(PIN_EMMC_DAT3, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x058, 3, |
| CV1800_PINCONF_AREA_SYS, 0x924), |
| CV1800_GENERAL_PIN(PIN_EMMC_DAT0, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x054, 3, |
| CV1800_PINCONF_AREA_SYS, 0x920), |
| CV1800_GENERAL_PIN(PIN_EMMC_DAT2, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x04c, 3, |
| CV1800_PINCONF_AREA_SYS, 0x918), |
| CV1800_GENERAL_PIN(PIN_EMMC_RSTN, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x048, 4, |
| CV1800_PINCONF_AREA_SYS, 0x914), |
| CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x078, 7, |
| CV1800_PINCONF_AREA_SYS, 0x944), |
| CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x074, 7, |
| CV1800_PINCONF_AREA_SYS, 0x940), |
| CV1800_GENERAL_PIN(PIN_PWR_SEQ3, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x08c, 3, |
| CV1800_PINCONF_AREA_RTC, 0x010), |
| CV1800_GENERAL_PIN(PIN_PWR_VBAT_DET, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x07c, 0, |
| CV1800_PINCONF_AREA_RTC, 0x000), |
| CV1800_GENERAL_PIN(PIN_PWR_SEQ1, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x084, 3, |
| CV1800_PINCONF_AREA_RTC, 0x008), |
| CV1800_GENERAL_PIN(PIN_PWR_BUTTON1, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x098, 7, |
| CV1800_PINCONF_AREA_RTC, 0x020), |
| CV1800_GENERAL_PIN(PIN_EMMC_DAT1, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x060, 3, |
| CV1800_PINCONF_AREA_SYS, 0x92c), |
| CV1800_GENERAL_PIN(PIN_EMMC_CMD, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x05c, 3, |
| CV1800_PINCONF_AREA_SYS, 0x928), |
| CV1800_GENERAL_PIN(PIN_EMMC_CLK, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x050, 3, |
| CV1800_PINCONF_AREA_SYS, 0x91c), |
| CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_EMMC, |
| IO_TYPE_1V8_OR_3V3, |
| CV1800_PINCONF_AREA_SYS, 0x070, 7, |
| CV1800_PINCONF_AREA_SYS, 0x93c), |
| CV1800_GENERAL_PIN(PIN_GPIO_ZQ, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x1d0, 4, |
| CV1800_PINCONF_AREA_RTC, 0x0e0), |
| CV1800_GENERAL_PIN(PIN_PWR_RSTN, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x080, 0, |
| CV1800_PINCONF_AREA_RTC, 0x004), |
| CV1800_GENERAL_PIN(PIN_PWR_SEQ2, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x088, 3, |
| CV1800_PINCONF_AREA_RTC, 0x00c), |
| CV1800_GENERAL_PIN(PIN_XTAL_XIN, VDDIO_RTC, |
| IO_TYPE_1V8_ONLY, |
| CV1800_PINCONF_AREA_SYS, 0x0a0, 0, |
| CV1800_PINCONF_AREA_RTC, 0x028), |
| }; |
| |
| static const struct cv1800_pinctrl_data sg2000_pindata = { |
| .pins = sg2000_pins, |
| .pindata = sg2000_pin_data, |
| .pdnames = sg2000_power_domain_desc, |
| .vddio_ops = &sg2000_vddio_cfg_ops, |
| .npins = ARRAY_SIZE(sg2000_pins), |
| .npd = ARRAY_SIZE(sg2000_power_domain_desc), |
| }; |
| |
| static const struct of_device_id sg2000_pinctrl_ids[] = { |
| { .compatible = "sophgo,sg2000-pinctrl", .data = &sg2000_pindata }, |
| { } |
| }; |
| MODULE_DEVICE_TABLE(of, sg2000_pinctrl_ids); |
| |
| static struct platform_driver sg2000_pinctrl_driver = { |
| .probe = cv1800_pinctrl_probe, |
| .driver = { |
| .name = "sg2000-pinctrl", |
| .suppress_bind_attrs = true, |
| .of_match_table = sg2000_pinctrl_ids, |
| }, |
| }; |
| module_platform_driver(sg2000_pinctrl_driver); |
| |
| MODULE_DESCRIPTION("Pinctrl driver for the SG2000 series SoC"); |
| MODULE_LICENSE("GPL"); |