// SPDX-License-Identifier: GPL-2.0
/*
 * Sophgo SG2002 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-sg2002.h>

#include "pinctrl-cv18xx.h"

enum SG2002_POWER_DOMAIN {
	VDD18A_MIPI		= 0,
	VDD18A_USB_PLL_ETH	= 1,
	VDDIO_RTC		= 2,
	VDDIO_SD0_EMMC		= 3,
	VDDIO_SD1		= 4
};

static const char *const sg2002_power_domain_desc[] = {
	[VDD18A_MIPI]		= "VDD18A_MIPI",
	[VDD18A_USB_PLL_ETH]	= "VDD18A_USB_PLL_ETH",
	[VDDIO_RTC]		= "VDDIO_RTC",
	[VDDIO_SD0_EMMC]	= "VDDIO_SD0_EMMC",
	[VDDIO_SD1]		= "VDDIO_SD1",
};

static int sg2002_get_pull_up(const struct sophgo_pin *sp, const u32 *psmap)
{
	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
	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 sg2002_get_pull_down(const struct sophgo_pin *sp, const u32 *psmap)
{
	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
	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 sg2002_1v8_oc_map[] = {
	12800,
	25300,
	37400,
	49000
};

static const u32 sg2002_18od33_1v8_oc_map[] = {
	7800,
	11700,
	15500,
	19200,
	23000,
	26600,
	30200,
	33700
};

static const u32 sg2002_18od33_3v3_oc_map[] = {
	5500,
	8200,
	10800,
	13400,
	16100,
	18700,
	21200,
	23700
};

static const u32 sg2002_eth_oc_map[] = {
	15700,
	17800
};

static int sg2002_get_oc_map(const struct sophgo_pin *sp, const u32 *psmap,
			     const u32 **map)
{
	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
	u32 pstate = psmap[pin->power_domain];

	if (type == IO_TYPE_1V8_ONLY) {
		*map = sg2002_1v8_oc_map;
		return ARRAY_SIZE(sg2002_1v8_oc_map);
	}

	if (type == IO_TYPE_1V8_OR_3V3) {
		if (pstate == PIN_POWER_STATE_1V8) {
			*map = sg2002_18od33_1v8_oc_map;
			return ARRAY_SIZE(sg2002_18od33_1v8_oc_map);
		} else if (pstate == PIN_POWER_STATE_3V3) {
			*map = sg2002_18od33_3v3_oc_map;
			return ARRAY_SIZE(sg2002_18od33_3v3_oc_map);
		}
	}

	if (type == IO_TYPE_ETH) {
		*map = sg2002_eth_oc_map;
		return ARRAY_SIZE(sg2002_eth_oc_map);
	}

	return -ENOTSUPP;
}

static const u32 sg2002_1v8_schmitt_map[] = {
	0,
	970000,
	1040000
};

static const u32 sg2002_18od33_1v8_schmitt_map[] = {
	0,
	1070000
};

static const u32 sg2002_18od33_3v3_schmitt_map[] = {
	0,
	1100000
};

static int sg2002_get_schmitt_map(const struct sophgo_pin *sp, const u32 *psmap,
				  const u32 **map)
{
	const struct cv1800_pin *pin = sophgo_to_cv1800_pin(sp);
	enum cv1800_pin_io_type type = cv1800_pin_io_type(pin);
	u32 pstate = psmap[pin->power_domain];

	if (type == IO_TYPE_1V8_ONLY) {
		*map = sg2002_1v8_schmitt_map;
		return ARRAY_SIZE(sg2002_1v8_schmitt_map);
	}

	if (type == IO_TYPE_1V8_OR_3V3) {
		if (pstate == PIN_POWER_STATE_1V8) {
			*map = sg2002_18od33_1v8_schmitt_map;
			return ARRAY_SIZE(sg2002_18od33_1v8_schmitt_map);
		} else if (pstate == PIN_POWER_STATE_3V3) {
			*map = sg2002_18od33_3v3_schmitt_map;
			return ARRAY_SIZE(sg2002_18od33_3v3_schmitt_map);
		}
	}

	return -ENOTSUPP;
}

static const struct sophgo_vddio_cfg_ops sg2002_vddio_cfg_ops = {
	.get_pull_up		= sg2002_get_pull_up,
	.get_pull_down		= sg2002_get_pull_down,
	.get_oc_map		= sg2002_get_oc_map,
	.get_schmitt_map	= sg2002_get_schmitt_map,
};

static const struct pinctrl_pin_desc sg2002_pins[] = {
	PINCTRL_PIN(PIN_AUD_AINL_MIC,	"AUD_AINL_MIC"),
	PINCTRL_PIN(PIN_AUD_AOUTR,	"AUD_AOUTR"),
	PINCTRL_PIN(PIN_SD0_CLK,	"SD0_CLK"),
	PINCTRL_PIN(PIN_SD0_CMD,	"SD0_CMD"),
	PINCTRL_PIN(PIN_SD0_D0,		"SD0_D0"),
	PINCTRL_PIN(PIN_SD0_D1,		"SD0_D1"),
	PINCTRL_PIN(PIN_SD0_D2,		"SD0_D2"),
	PINCTRL_PIN(PIN_SD0_D3,		"SD0_D3"),
	PINCTRL_PIN(PIN_SD0_CD,		"SD0_CD"),
	PINCTRL_PIN(PIN_SD0_PWR_EN,	"SD0_PWR_EN"),
	PINCTRL_PIN(PIN_SPK_EN,		"SPK_EN"),
	PINCTRL_PIN(PIN_UART0_TX,	"UART0_TX"),
	PINCTRL_PIN(PIN_UART0_RX,	"UART0_RX"),
	PINCTRL_PIN(PIN_EMMC_DAT2,	"EMMC_DAT2"),
	PINCTRL_PIN(PIN_EMMC_CLK,	"EMMC_CLK"),
	PINCTRL_PIN(PIN_EMMC_DAT0,	"EMMC_DAT0"),
	PINCTRL_PIN(PIN_EMMC_DAT3,	"EMMC_DAT3"),
	PINCTRL_PIN(PIN_EMMC_CMD,	"EMMC_CMD"),
	PINCTRL_PIN(PIN_EMMC_DAT1,	"EMMC_DAT1"),
	PINCTRL_PIN(PIN_JTAG_CPU_TMS,	"JTAG_CPU_TMS"),
	PINCTRL_PIN(PIN_JTAG_CPU_TCK,	"JTAG_CPU_TCK"),
	PINCTRL_PIN(PIN_IIC0_SCL,	"IIC0_SCL"),
	PINCTRL_PIN(PIN_IIC0_SDA,	"IIC0_SDA"),
	PINCTRL_PIN(PIN_AUX0,		"AUX0"),
	PINCTRL_PIN(PIN_GPIO_ZQ,	"GPIO_ZQ"),
	PINCTRL_PIN(PIN_PWR_VBAT_DET,	"PWR_VBAT_DET"),
	PINCTRL_PIN(PIN_PWR_RSTN,	"PWR_RSTN"),
	PINCTRL_PIN(PIN_PWR_SEQ1,	"PWR_SEQ1"),
	PINCTRL_PIN(PIN_PWR_SEQ2,	"PWR_SEQ2"),
	PINCTRL_PIN(PIN_PWR_WAKEUP0,	"PWR_WAKEUP0"),
	PINCTRL_PIN(PIN_PWR_BUTTON1,	"PWR_BUTTON1"),
	PINCTRL_PIN(PIN_XTAL_XIN,	"XTAL_XIN"),
	PINCTRL_PIN(PIN_PWR_GPIO0,	"PWR_GPIO0"),
	PINCTRL_PIN(PIN_PWR_GPIO1,	"PWR_GPIO1"),
	PINCTRL_PIN(PIN_PWR_GPIO2,	"PWR_GPIO2"),
	PINCTRL_PIN(PIN_SD1_D3,		"SD1_D3"),
	PINCTRL_PIN(PIN_SD1_D2,		"SD1_D2"),
	PINCTRL_PIN(PIN_SD1_D1,		"SD1_D1"),
	PINCTRL_PIN(PIN_SD1_D0,		"SD1_D0"),
	PINCTRL_PIN(PIN_SD1_CMD,	"SD1_CMD"),
	PINCTRL_PIN(PIN_SD1_CLK,	"SD1_CLK"),
	PINCTRL_PIN(PIN_PWM0_BUCK,	"PWM0_BUCK"),
	PINCTRL_PIN(PIN_ADC1,		"ADC1"),
	PINCTRL_PIN(PIN_USB_VBUS_DET,	"USB_VBUS_DET"),
	PINCTRL_PIN(PIN_ETH_TXP,	"ETH_TXP"),
	PINCTRL_PIN(PIN_ETH_TXM,	"ETH_TXM"),
	PINCTRL_PIN(PIN_ETH_RXP,	"ETH_RXP"),
	PINCTRL_PIN(PIN_ETH_RXM,	"ETH_RXM"),
	PINCTRL_PIN(PIN_GPIO_RTX,	"GPIO_RTX"),
	PINCTRL_PIN(PIN_MIPIRX4N,	"MIPIRX4N"),
	PINCTRL_PIN(PIN_MIPIRX4P,	"MIPIRX4P"),
	PINCTRL_PIN(PIN_MIPIRX3N,	"MIPIRX3N"),
	PINCTRL_PIN(PIN_MIPIRX3P,	"MIPIRX3P"),
	PINCTRL_PIN(PIN_MIPIRX2N,	"MIPIRX2N"),
	PINCTRL_PIN(PIN_MIPIRX2P,	"MIPIRX2P"),
	PINCTRL_PIN(PIN_MIPIRX1N,	"MIPIRX1N"),
	PINCTRL_PIN(PIN_MIPIRX1P,	"MIPIRX1P"),
	PINCTRL_PIN(PIN_MIPIRX0N,	"MIPIRX0N"),
	PINCTRL_PIN(PIN_MIPIRX0P,	"MIPIRX0P"),
	PINCTRL_PIN(PIN_MIPI_TXM2,	"MIPI_TXM2"),
	PINCTRL_PIN(PIN_MIPI_TXP2,	"MIPI_TXP2"),
	PINCTRL_PIN(PIN_MIPI_TXM1,	"MIPI_TXM1"),
	PINCTRL_PIN(PIN_MIPI_TXP1,	"MIPI_TXP1"),
	PINCTRL_PIN(PIN_MIPI_TXM0,	"MIPI_TXM0"),
	PINCTRL_PIN(PIN_MIPI_TXP0,	"MIPI_TXP0"),
};

static const struct cv1800_pin sg2002_pin_data[ARRAY_SIZE(sg2002_pins)] = {
	CV1800_FUNC_PIN(PIN_AUD_AINL_MIC, VDD18A_MIPI,
			IO_TYPE_AUDIO,
			CV1800_PINCONF_AREA_SYS, 0x1bc, 5),
	CV1800_FUNC_PIN(PIN_AUD_AOUTR, VDD18A_MIPI,
			IO_TYPE_AUDIO,
			CV1800_PINCONF_AREA_SYS, 0x1c8, 6),
	CV1800_GENERAL_PIN(PIN_SD0_CLK, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x01c, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa00),
	CV1800_GENERAL_PIN(PIN_SD0_CMD, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x020, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa04),
	CV1800_GENERAL_PIN(PIN_SD0_D0, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x024, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa08),
	CV1800_GENERAL_PIN(PIN_SD0_D1, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x028, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa0c),
	CV1800_GENERAL_PIN(PIN_SD0_D2, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x02c, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa10),
	CV1800_GENERAL_PIN(PIN_SD0_D3, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x030, 7,
			   CV1800_PINCONF_AREA_SYS, 0xa14),
	CV1800_GENERAL_PIN(PIN_SD0_CD, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x034, 3,
			   CV1800_PINCONF_AREA_SYS, 0x900),
	CV1800_GENERAL_PIN(PIN_SD0_PWR_EN, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x038, 3,
			   CV1800_PINCONF_AREA_SYS, 0x904),
	CV1800_GENERAL_PIN(PIN_SPK_EN, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x03c, 3,
			   CV1800_PINCONF_AREA_SYS, 0x908),
	CV1800_GENERAL_PIN(PIN_UART0_TX, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x040, 7,
			   CV1800_PINCONF_AREA_SYS, 0x90c),
	CV1800_GENERAL_PIN(PIN_UART0_RX, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x044, 7,
			   CV1800_PINCONF_AREA_SYS, 0x910),
	CV1800_GENERAL_PIN(PIN_EMMC_DAT2, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x04c, 3,
			   CV1800_PINCONF_AREA_SYS, 0x918),
	CV1800_GENERAL_PIN(PIN_EMMC_CLK, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x050, 3,
			   CV1800_PINCONF_AREA_SYS, 0x91c),
	CV1800_GENERAL_PIN(PIN_EMMC_DAT0, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x054, 3,
			   CV1800_PINCONF_AREA_SYS, 0x920),
	CV1800_GENERAL_PIN(PIN_EMMC_DAT3, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x058, 3,
			   CV1800_PINCONF_AREA_SYS, 0x924),
	CV1800_GENERAL_PIN(PIN_EMMC_CMD, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x05c, 3,
			   CV1800_PINCONF_AREA_SYS, 0x928),
	CV1800_GENERAL_PIN(PIN_EMMC_DAT1, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x060, 3,
			   CV1800_PINCONF_AREA_SYS, 0x92c),
	CV1800_GENERAL_PIN(PIN_JTAG_CPU_TMS, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x064, 7,
			   CV1800_PINCONF_AREA_SYS, 0x930),
	CV1800_GENERAL_PIN(PIN_JTAG_CPU_TCK, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x068, 7,
			   CV1800_PINCONF_AREA_SYS, 0x934),
	CV1800_GENERAL_PIN(PIN_IIC0_SCL, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x070, 7,
			   CV1800_PINCONF_AREA_SYS, 0x93c),
	CV1800_GENERAL_PIN(PIN_IIC0_SDA, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x074, 7,
			   CV1800_PINCONF_AREA_SYS, 0x940),
	CV1800_GENERAL_PIN(PIN_AUX0, VDDIO_SD0_EMMC,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x078, 7,
			   CV1800_PINCONF_AREA_SYS, 0x944),
	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_VBAT_DET, VDDIO_RTC,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x07c, 0,
			   CV1800_PINCONF_AREA_RTC, 0x000),
	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_SEQ1, VDDIO_RTC,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x084, 3,
			   CV1800_PINCONF_AREA_RTC, 0x008),
	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_PWR_WAKEUP0, VDDIO_RTC,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x090, 7,
			   CV1800_PINCONF_AREA_RTC, 0x018),
	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_XTAL_XIN, VDDIO_RTC,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x0a0, 0,
			   CV1800_PINCONF_AREA_RTC, 0x028),
	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_PWR_GPIO1, VDDIO_RTC,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x0a8, 7,
			   CV1800_PINCONF_AREA_RTC, 0x030),
	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_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_D2, VDDIO_SD1,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x0d4, 7,
			   CV1800_PINCONF_AREA_RTC, 0x05c),
	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_GENERAL_PIN(PIN_SD1_CMD, VDDIO_SD1,
			   IO_TYPE_1V8_OR_3V3,
			   CV1800_PINCONF_AREA_SYS, 0x0e0, 7,
			   CV1800_PINCONF_AREA_RTC, 0x068),
	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_PWM0_BUCK, VDD18A_USB_PLL_ETH,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x0ec, 3,
			   CV1800_PINCONF_AREA_SYS, 0x804),
	CV1800_GENERAL_PIN(PIN_ADC1, VDD18A_USB_PLL_ETH,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x0f8, 4,
			   CV1800_PINCONF_AREA_SYS, 0x810),
	CV1800_GENERAL_PIN(PIN_USB_VBUS_DET, VDD18A_USB_PLL_ETH,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x108, 5,
			   CV1800_PINCONF_AREA_SYS, 0x820),
	CV1800_FUNC_PIN(PIN_ETH_TXP, VDD18A_USB_PLL_ETH,
			IO_TYPE_ETH,
			CV1800_PINCONF_AREA_SYS, 0x124, 7),
	CV1800_FUNC_PIN(PIN_ETH_TXM, VDD18A_USB_PLL_ETH,
			IO_TYPE_ETH,
			CV1800_PINCONF_AREA_SYS, 0x128, 7),
	CV1800_FUNC_PIN(PIN_ETH_RXP, VDD18A_USB_PLL_ETH,
			IO_TYPE_ETH,
			CV1800_PINCONF_AREA_SYS, 0x12c, 7),
	CV1800_FUNC_PIN(PIN_ETH_RXM, VDD18A_USB_PLL_ETH,
			IO_TYPE_ETH,
			CV1800_PINCONF_AREA_SYS, 0x130, 7),
	CV1800_GENERAL_PIN(PIN_GPIO_RTX, VDD18A_USB_PLL_ETH,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x1cc, 5,
			   CV1800_PINCONF_AREA_SYS, 0xc8c),
	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_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_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_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_GENERAL_PIN(PIN_MIPIRX2N, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x17c, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc48),
	CV1800_GENERAL_PIN(PIN_MIPIRX2P, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x180, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc4c),
	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_MIPIRX1P, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x188, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc54),
	CV1800_GENERAL_PIN(PIN_MIPIRX0N, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x18c, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc58),
	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_MIPI_TXM2, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x1a4, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc70),
	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_TXM1, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x1ac, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc78),
	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_TXM0, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x1b4, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc80),
	CV1800_GENERAL_PIN(PIN_MIPI_TXP0, VDD18A_MIPI,
			   IO_TYPE_1V8_ONLY,
			   CV1800_PINCONF_AREA_SYS, 0x1b8, 7,
			   CV1800_PINCONF_AREA_SYS, 0xc84),
};

static const struct sophgo_pinctrl_data sg2002_pindata = {
	.pins		= sg2002_pins,
	.pindata	= sg2002_pin_data,
	.pdnames	= sg2002_power_domain_desc,
	.vddio_ops	= &sg2002_vddio_cfg_ops,
	.cfg_ops	= &cv1800_cfg_ops,
	.pctl_ops	= &cv1800_pctrl_ops,
	.pmx_ops	= &cv1800_pmx_ops,
	.pconf_ops	= &cv1800_pconf_ops,
	.npins		= ARRAY_SIZE(sg2002_pins),
	.npds		= ARRAY_SIZE(sg2002_power_domain_desc),
	.pinsize	= sizeof(struct cv1800_pin),
};

static const struct of_device_id sg2002_pinctrl_ids[] = {
	{ .compatible = "sophgo,sg2002-pinctrl", .data = &sg2002_pindata },
	{ }
};
MODULE_DEVICE_TABLE(of, sg2002_pinctrl_ids);

static struct platform_driver sg2002_pinctrl_driver = {
	.probe	= sophgo_pinctrl_probe,
	.driver	= {
		.name			= "sg2002-pinctrl",
		.suppress_bind_attrs	= true,
		.of_match_table		= sg2002_pinctrl_ids,
	},
};
module_platform_driver(sg2002_pinctrl_driver);

MODULE_DESCRIPTION("Pinctrl driver for the SG2002 series SoC");
MODULE_LICENSE("GPL");
