brintos

brintos / linux-shallow public Read only

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