// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Ice Lake PCH pinctrl/GPIO driver
 *
 * Copyright (C) 2018, 2022 Intel Corporation
 * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 *	    Mika Westerberg <mika.westerberg@linux.intel.com>
 */

#include <linux/acpi.h>
#include <linux/module.h>
#include <linux/platform_device.h>

#include <linux/pinctrl/pinctrl.h>

#include "pinctrl-intel.h"

#define ICL_PAD_OWN	0x020
#define ICL_PADCFGLOCK	0x080
#define ICL_HOSTSW_OWN	0x0b0
#define ICL_GPI_IS	0x100
#define ICL_LP_GPI_IE	0x110
#define ICL_N_GPI_IE	0x120

#define ICL_GPP(r, s, e, g)				\
	{						\
		.reg_num = (r),				\
		.base = (s),				\
		.size = ((e) - (s) + 1),		\
		.gpio_base = (g),			\
	}

#define ICL_COMMUNITY(b, s, e, ie, g)			\
	{						\
		.barno = (b),				\
		.padown_offset = ICL_PAD_OWN,		\
		.padcfglock_offset = ICL_PADCFGLOCK,	\
		.hostown_offset = ICL_HOSTSW_OWN,	\
		.is_offset = ICL_GPI_IS,		\
		.ie_offset = (ie),			\
		.pin_base = (s),			\
		.npins = ((e) - (s) + 1),		\
		.gpps = (g),				\
		.ngpps = ARRAY_SIZE(g),			\
	}

#define ICL_LP_COMMUNITY(b, s, e, g)			\
	ICL_COMMUNITY(b, s, e, ICL_LP_GPI_IE, g)

#define ICL_N_COMMUNITY(b, s, e, g)			\
	ICL_COMMUNITY(b, s, e, ICL_N_GPI_IE, g)

/* Ice Lake-LP */
static const struct pinctrl_pin_desc icllp_pins[] = {
	/* GPP_G */
	PINCTRL_PIN(0, "SD3_CMD"),
	PINCTRL_PIN(1, "SD3_D0"),
	PINCTRL_PIN(2, "SD3_D1"),
	PINCTRL_PIN(3, "SD3_D2"),
	PINCTRL_PIN(4, "SD3_D3"),
	PINCTRL_PIN(5, "SD3_CDB"),
	PINCTRL_PIN(6, "SD3_CLK"),
	PINCTRL_PIN(7, "SD3_WP"),
	/* GPP_B */
	PINCTRL_PIN(8, "CORE_VID_0"),
	PINCTRL_PIN(9, "CORE_VID_1"),
	PINCTRL_PIN(10, "VRALERTB"),
	PINCTRL_PIN(11, "CPU_GP_2"),
	PINCTRL_PIN(12, "CPU_GP_3"),
	PINCTRL_PIN(13, "ISH_I2C0_SDA"),
	PINCTRL_PIN(14, "ISH_I2C0_SCL"),
	PINCTRL_PIN(15, "ISH_I2C1_SDA"),
	PINCTRL_PIN(16, "ISH_I2C1_SCL"),
	PINCTRL_PIN(17, "I2C5_SDA"),
	PINCTRL_PIN(18, "I2C5_SCL"),
	PINCTRL_PIN(19, "PMCALERTB"),
	PINCTRL_PIN(20, "SLP_S0B"),
	PINCTRL_PIN(21, "PLTRSTB"),
	PINCTRL_PIN(22, "SPKR"),
	PINCTRL_PIN(23, "GSPI0_CS0B"),
	PINCTRL_PIN(24, "GSPI0_CLK"),
	PINCTRL_PIN(25, "GSPI0_MISO"),
	PINCTRL_PIN(26, "GSPI0_MOSI"),
	PINCTRL_PIN(27, "GSPI1_CS0B"),
	PINCTRL_PIN(28, "GSPI1_CLK"),
	PINCTRL_PIN(29, "GSPI1_MISO"),
	PINCTRL_PIN(30, "GSPI1_MOSI"),
	PINCTRL_PIN(31, "SML1ALERTB"),
	PINCTRL_PIN(32, "GSPI0_CLK_LOOPBK"),
	PINCTRL_PIN(33, "GSPI1_CLK_LOOPBK"),
	/* GPP_A */
	PINCTRL_PIN(34, "ESPI_IO_0"),
	PINCTRL_PIN(35, "ESPI_IO_1"),
	PINCTRL_PIN(36, "ESPI_IO_2"),
	PINCTRL_PIN(37, "ESPI_IO_3"),
	PINCTRL_PIN(38, "ESPI_CSB"),
	PINCTRL_PIN(39, "ESPI_CLK"),
	PINCTRL_PIN(40, "ESPI_RESETB"),
	PINCTRL_PIN(41, "I2S2_SCLK"),
	PINCTRL_PIN(42, "I2S2_SFRM"),
	PINCTRL_PIN(43, "I2S2_TXD"),
	PINCTRL_PIN(44, "I2S2_RXD"),
	PINCTRL_PIN(45, "SATA_DEVSLP_2"),
	PINCTRL_PIN(46, "SATAXPCIE_1"),
	PINCTRL_PIN(47, "SATAXPCIE_2"),
	PINCTRL_PIN(48, "USB2_OCB_1"),
	PINCTRL_PIN(49, "USB2_OCB_2"),
	PINCTRL_PIN(50, "USB2_OCB_3"),
	PINCTRL_PIN(51, "DDSP_HPD_C"),
	PINCTRL_PIN(52, "DDSP_HPD_B"),
	PINCTRL_PIN(53, "DDSP_HPD_1"),
	PINCTRL_PIN(54, "DDSP_HPD_2"),
	PINCTRL_PIN(55, "I2S5_TXD"),
	PINCTRL_PIN(56, "I2S5_RXD"),
	PINCTRL_PIN(57, "I2S1_SCLK"),
	PINCTRL_PIN(58, "ESPI_CLK_LOOPBK"),
	/* GPP_H */
	PINCTRL_PIN(59, "SD_1P8_SEL"),
	PINCTRL_PIN(60, "SD_PWR_EN_B"),
	PINCTRL_PIN(61, "GPPC_H_2"),
	PINCTRL_PIN(62, "SX_EXIT_HOLDOFFB"),
	PINCTRL_PIN(63, "I2C2_SDA"),
	PINCTRL_PIN(64, "I2C2_SCL"),
	PINCTRL_PIN(65, "I2C3_SDA"),
	PINCTRL_PIN(66, "I2C3_SCL"),
	PINCTRL_PIN(67, "I2C4_SDA"),
	PINCTRL_PIN(68, "I2C4_SCL"),
	PINCTRL_PIN(69, "SRCCLKREQB_4"),
	PINCTRL_PIN(70, "SRCCLKREQB_5"),
	PINCTRL_PIN(71, "M2_SKT2_CFG_0"),
	PINCTRL_PIN(72, "M2_SKT2_CFG_1"),
	PINCTRL_PIN(73, "M2_SKT2_CFG_2"),
	PINCTRL_PIN(74, "M2_SKT2_CFG_3"),
	PINCTRL_PIN(75, "DDPB_CTRLCLK"),
	PINCTRL_PIN(76, "DDPB_CTRLDATA"),
	PINCTRL_PIN(77, "CPU_VCCIO_PWR_GATEB"),
	PINCTRL_PIN(78, "TIME_SYNC_0"),
	PINCTRL_PIN(79, "IMGCLKOUT_1"),
	PINCTRL_PIN(80, "IMGCLKOUT_2"),
	PINCTRL_PIN(81, "IMGCLKOUT_3"),
	PINCTRL_PIN(82, "IMGCLKOUT_4"),
	/* GPP_D */
	PINCTRL_PIN(83, "ISH_GP_0"),
	PINCTRL_PIN(84, "ISH_GP_1"),
	PINCTRL_PIN(85, "ISH_GP_2"),
	PINCTRL_PIN(86, "ISH_GP_3"),
	PINCTRL_PIN(87, "IMGCLKOUT_0"),
	PINCTRL_PIN(88, "SRCCLKREQB_0"),
	PINCTRL_PIN(89, "SRCCLKREQB_1"),
	PINCTRL_PIN(90, "SRCCLKREQB_2"),
	PINCTRL_PIN(91, "SRCCLKREQB_3"),
	PINCTRL_PIN(92, "ISH_SPI_CSB"),
	PINCTRL_PIN(93, "ISH_SPI_CLK"),
	PINCTRL_PIN(94, "ISH_SPI_MISO"),
	PINCTRL_PIN(95, "ISH_SPI_MOSI"),
	PINCTRL_PIN(96, "ISH_UART0_RXD"),
	PINCTRL_PIN(97, "ISH_UART0_TXD"),
	PINCTRL_PIN(98, "ISH_UART0_RTSB"),
	PINCTRL_PIN(99, "ISH_UART0_CTSB"),
	PINCTRL_PIN(100, "ISH_GP_4"),
	PINCTRL_PIN(101, "ISH_GP_5"),
	PINCTRL_PIN(102, "I2S_MCLK"),
	PINCTRL_PIN(103, "GSPI2_CLK_LOOPBK"),
	/* GPP_F */
	PINCTRL_PIN(104, "CNV_BRI_DT"),
	PINCTRL_PIN(105, "CNV_BRI_RSP"),
	PINCTRL_PIN(106, "CNV_RGI_DT"),
	PINCTRL_PIN(107, "CNV_RGI_RSP"),
	PINCTRL_PIN(108, "CNV_RF_RESET_B"),
	PINCTRL_PIN(109, "EMMC_HIP_MON"),
	PINCTRL_PIN(110, "CNV_PA_BLANKING"),
	PINCTRL_PIN(111, "EMMC_CMD"),
	PINCTRL_PIN(112, "EMMC_DATA0"),
	PINCTRL_PIN(113, "EMMC_DATA1"),
	PINCTRL_PIN(114, "EMMC_DATA2"),
	PINCTRL_PIN(115, "EMMC_DATA3"),
	PINCTRL_PIN(116, "EMMC_DATA4"),
	PINCTRL_PIN(117, "EMMC_DATA5"),
	PINCTRL_PIN(118, "EMMC_DATA6"),
	PINCTRL_PIN(119, "EMMC_DATA7"),
	PINCTRL_PIN(120, "EMMC_RCLK"),
	PINCTRL_PIN(121, "EMMC_CLK"),
	PINCTRL_PIN(122, "EMMC_RESETB"),
	PINCTRL_PIN(123, "A4WP_PRESENT"),
	/* vGPIO */
	PINCTRL_PIN(124, "CNV_BTEN"),
	PINCTRL_PIN(125, "CNV_WCEN"),
	PINCTRL_PIN(126, "CNV_BT_HOST_WAKEB"),
	PINCTRL_PIN(127, "CNV_BT_IF_SELECT"),
	PINCTRL_PIN(128, "vCNV_BT_UART_TXD"),
	PINCTRL_PIN(129, "vCNV_BT_UART_RXD"),
	PINCTRL_PIN(130, "vCNV_BT_UART_CTS_B"),
	PINCTRL_PIN(131, "vCNV_BT_UART_RTS_B"),
	PINCTRL_PIN(132, "vCNV_MFUART1_TXD"),
	PINCTRL_PIN(133, "vCNV_MFUART1_RXD"),
	PINCTRL_PIN(134, "vCNV_MFUART1_CTS_B"),
	PINCTRL_PIN(135, "vCNV_MFUART1_RTS_B"),
	PINCTRL_PIN(136, "vUART0_TXD"),
	PINCTRL_PIN(137, "vUART0_RXD"),
	PINCTRL_PIN(138, "vUART0_CTS_B"),
	PINCTRL_PIN(139, "vUART0_RTS_B"),
	PINCTRL_PIN(140, "vISH_UART0_TXD"),
	PINCTRL_PIN(141, "vISH_UART0_RXD"),
	PINCTRL_PIN(142, "vISH_UART0_CTS_B"),
	PINCTRL_PIN(143, "vISH_UART0_RTS_B"),
	PINCTRL_PIN(144, "vCNV_BT_I2S_BCLK"),
	PINCTRL_PIN(145, "vCNV_BT_I2S_WS_SYNC"),
	PINCTRL_PIN(146, "vCNV_BT_I2S_SDO"),
	PINCTRL_PIN(147, "vCNV_BT_I2S_SDI"),
	PINCTRL_PIN(148, "vI2S2_SCLK"),
	PINCTRL_PIN(149, "vI2S2_SFRM"),
	PINCTRL_PIN(150, "vI2S2_TXD"),
	PINCTRL_PIN(151, "vI2S2_RXD"),
	PINCTRL_PIN(152, "vSD3_CD_B"),
	/* GPP_C */
	PINCTRL_PIN(153, "SMBCLK"),
	PINCTRL_PIN(154, "SMBDATA"),
	PINCTRL_PIN(155, "SMBALERTB"),
	PINCTRL_PIN(156, "SML0CLK"),
	PINCTRL_PIN(157, "SML0DATA"),
	PINCTRL_PIN(158, "SML0ALERTB"),
	PINCTRL_PIN(159, "SML1CLK"),
	PINCTRL_PIN(160, "SML1DATA"),
	PINCTRL_PIN(161, "UART0_RXD"),
	PINCTRL_PIN(162, "UART0_TXD"),
	PINCTRL_PIN(163, "UART0_RTSB"),
	PINCTRL_PIN(164, "UART0_CTSB"),
	PINCTRL_PIN(165, "UART1_RXD"),
	PINCTRL_PIN(166, "UART1_TXD"),
	PINCTRL_PIN(167, "UART1_RTSB"),
	PINCTRL_PIN(168, "UART1_CTSB"),
	PINCTRL_PIN(169, "I2C0_SDA"),
	PINCTRL_PIN(170, "I2C0_SCL"),
	PINCTRL_PIN(171, "I2C1_SDA"),
	PINCTRL_PIN(172, "I2C1_SCL"),
	PINCTRL_PIN(173, "UART2_RXD"),
	PINCTRL_PIN(174, "UART2_TXD"),
	PINCTRL_PIN(175, "UART2_RTSB"),
	PINCTRL_PIN(176, "UART2_CTSB"),
	/* HVCMOS */
	PINCTRL_PIN(177, "L_BKLTEN"),
	PINCTRL_PIN(178, "L_BKLTCTL"),
	PINCTRL_PIN(179, "L_VDDEN"),
	PINCTRL_PIN(180, "SYS_PWROK"),
	PINCTRL_PIN(181, "SYS_RESETB"),
	PINCTRL_PIN(182, "MLK_RSTB"),
	/* GPP_E */
	PINCTRL_PIN(183, "SATAXPCIE_0"),
	PINCTRL_PIN(184, "SPI1_IO_2"),
	PINCTRL_PIN(185, "SPI1_IO_3"),
	PINCTRL_PIN(186, "CPU_GP_0"),
	PINCTRL_PIN(187, "SATA_DEVSLP_0"),
	PINCTRL_PIN(188, "SATA_DEVSLP_1"),
	PINCTRL_PIN(189, "GPPC_E_6"),
	PINCTRL_PIN(190, "CPU_GP_1"),
	PINCTRL_PIN(191, "SATA_LEDB"),
	PINCTRL_PIN(192, "USB2_OCB_0"),
	PINCTRL_PIN(193, "SPI1_CSB"),
	PINCTRL_PIN(194, "SPI1_CLK"),
	PINCTRL_PIN(195, "SPI1_MISO_IO_1"),
	PINCTRL_PIN(196, "SPI1_MOSI_IO_0"),
	PINCTRL_PIN(197, "DDSP_HPD_A"),
	PINCTRL_PIN(198, "ISH_GP_6"),
	PINCTRL_PIN(199, "ISH_GP_7"),
	PINCTRL_PIN(200, "DISP_MISC_4"),
	PINCTRL_PIN(201, "DDP1_CTRLCLK"),
	PINCTRL_PIN(202, "DDP1_CTRLDATA"),
	PINCTRL_PIN(203, "DDP2_CTRLCLK"),
	PINCTRL_PIN(204, "DDP2_CTRLDATA"),
	PINCTRL_PIN(205, "DDPA_CTRLCLK"),
	PINCTRL_PIN(206, "DDPA_CTRLDATA"),
	/* JTAG */
	PINCTRL_PIN(207, "JTAG_TDO"),
	PINCTRL_PIN(208, "JTAGX"),
	PINCTRL_PIN(209, "PRDYB"),
	PINCTRL_PIN(210, "PREQB"),
	PINCTRL_PIN(211, "CPU_TRSTB"),
	PINCTRL_PIN(212, "JTAG_TDI"),
	PINCTRL_PIN(213, "JTAG_TMS"),
	PINCTRL_PIN(214, "JTAG_TCK"),
	PINCTRL_PIN(215, "ITP_PMODE"),
	/* GPP_R */
	PINCTRL_PIN(216, "HDA_BCLK"),
	PINCTRL_PIN(217, "HDA_SYNC"),
	PINCTRL_PIN(218, "HDA_SDO"),
	PINCTRL_PIN(219, "HDA_SDI_0"),
	PINCTRL_PIN(220, "HDA_RSTB"),
	PINCTRL_PIN(221, "HDA_SDI_1"),
	PINCTRL_PIN(222, "I2S1_TXD"),
	PINCTRL_PIN(223, "I2S1_RXD"),
	/* GPP_S */
	PINCTRL_PIN(224, "SNDW1_CLK"),
	PINCTRL_PIN(225, "SNDW1_DATA"),
	PINCTRL_PIN(226, "SNDW2_CLK"),
	PINCTRL_PIN(227, "SNDW2_DATA"),
	PINCTRL_PIN(228, "SNDW3_CLK"),
	PINCTRL_PIN(229, "SNDW3_DATA"),
	PINCTRL_PIN(230, "SNDW4_CLK"),
	PINCTRL_PIN(231, "SNDW4_DATA"),
	/* SPI */
	PINCTRL_PIN(232, "SPI0_IO_2"),
	PINCTRL_PIN(233, "SPI0_IO_3"),
	PINCTRL_PIN(234, "SPI0_MOSI_IO_0"),
	PINCTRL_PIN(235, "SPI0_MISO_IO_1"),
	PINCTRL_PIN(236, "SPI0_TPM_CSB"),
	PINCTRL_PIN(237, "SPI0_FLASH_0_CSB"),
	PINCTRL_PIN(238, "SPI0_FLASH_1_CSB"),
	PINCTRL_PIN(239, "SPI0_CLK"),
	PINCTRL_PIN(240, "SPI0_CLK_LOOPBK"),
};

static const struct intel_padgroup icllp_community0_gpps[] = {
	ICL_GPP(0, 0, 7, 0),				/* GPP_G */
	ICL_GPP(1, 8, 33, 32),				/* GPP_B */
	ICL_GPP(2, 34, 58, 64),				/* GPP_A */
};

static const struct intel_padgroup icllp_community1_gpps[] = {
	ICL_GPP(0, 59, 82, 96),				/* GPP_H */
	ICL_GPP(1, 83, 103, 128),			/* GPP_D */
	ICL_GPP(2, 104, 123, 160),			/* GPP_F */
	ICL_GPP(3, 124, 152, 192),			/* vGPIO */
};

static const struct intel_padgroup icllp_community4_gpps[] = {
	ICL_GPP(0, 153, 176, 224),			/* GPP_C */
	ICL_GPP(1, 177, 182, INTEL_GPIO_BASE_NOMAP),	/* HVCMOS */
	ICL_GPP(2, 183, 206, 256),			/* GPP_E */
	ICL_GPP(3, 207, 215, INTEL_GPIO_BASE_NOMAP),	/* JTAG */
};

static const struct intel_padgroup icllp_community5_gpps[] = {
	ICL_GPP(0, 216, 223, 288),			/* GPP_R */
	ICL_GPP(1, 224, 231, 320),			/* GPP_S */
	ICL_GPP(2, 232, 240, INTEL_GPIO_BASE_NOMAP),	/* SPI */
};

static const struct intel_community icllp_communities[] = {
	ICL_LP_COMMUNITY(0, 0, 58, icllp_community0_gpps),
	ICL_LP_COMMUNITY(1, 59, 152, icllp_community1_gpps),
	ICL_LP_COMMUNITY(2, 153, 215, icllp_community4_gpps),
	ICL_LP_COMMUNITY(3, 216, 240, icllp_community5_gpps),
};

static const unsigned int icllp_spi0_pins[] = { 22, 23, 24, 25, 26 };
static const unsigned int icllp_spi0_modes[] = { 3, 1, 1, 1, 1 };
static const unsigned int icllp_spi1_pins[] = { 27, 28, 29, 30, 31 };
static const unsigned int icllp_spi1_modes[] = { 1, 1, 1, 1, 3 };
static const unsigned int icllp_spi2_pins[] = { 92, 93, 94, 95, 98 };
static const unsigned int icllp_spi2_modes[] = { 3, 3, 3, 3, 2 };

static const unsigned int icllp_i2c0_pins[] = { 169, 170 };
static const unsigned int icllp_i2c1_pins[] = { 171, 172 };
static const unsigned int icllp_i2c2_pins[] = { 63, 64 };
static const unsigned int icllp_i2c3_pins[] = { 65, 66 };
static const unsigned int icllp_i2c4_pins[] = { 67, 68 };

static const unsigned int icllp_uart0_pins[] = { 161, 162, 163, 164 };
static const unsigned int icllp_uart1_pins[] = { 165, 166, 167, 168 };
static const unsigned int icllp_uart2_pins[] = { 173, 174, 175, 176 };

static const struct intel_pingroup icllp_groups[] = {
	PIN_GROUP("spi0_grp", icllp_spi0_pins, icllp_spi0_modes),
	PIN_GROUP("spi1_grp", icllp_spi1_pins, icllp_spi1_modes),
	PIN_GROUP("spi2_grp", icllp_spi2_pins, icllp_spi2_modes),
	PIN_GROUP("i2c0_grp", icllp_i2c0_pins, 1),
	PIN_GROUP("i2c1_grp", icllp_i2c1_pins, 1),
	PIN_GROUP("i2c2_grp", icllp_i2c2_pins, 1),
	PIN_GROUP("i2c3_grp", icllp_i2c3_pins, 1),
	PIN_GROUP("i2c4_grp", icllp_i2c4_pins, 1),
	PIN_GROUP("uart0_grp", icllp_uart0_pins, 1),
	PIN_GROUP("uart1_grp", icllp_uart1_pins, 1),
	PIN_GROUP("uart2_grp", icllp_uart2_pins, 1),
};

static const char * const icllp_spi0_groups[] = { "spi0_grp" };
static const char * const icllp_spi1_groups[] = { "spi1_grp" };
static const char * const icllp_spi2_groups[] = { "spi2_grp" };
static const char * const icllp_i2c0_groups[] = { "i2c0_grp" };
static const char * const icllp_i2c1_groups[] = { "i2c1_grp" };
static const char * const icllp_i2c2_groups[] = { "i2c2_grp" };
static const char * const icllp_i2c3_groups[] = { "i2c3_grp" };
static const char * const icllp_i2c4_groups[] = { "i2c4_grp" };
static const char * const icllp_uart0_groups[] = { "uart0_grp" };
static const char * const icllp_uart1_groups[] = { "uart1_grp" };
static const char * const icllp_uart2_groups[] = { "uart2_grp" };

static const struct intel_function icllp_functions[] = {
	FUNCTION("spi0", icllp_spi0_groups),
	FUNCTION("spi1", icllp_spi1_groups),
	FUNCTION("spi2", icllp_spi2_groups),
	FUNCTION("i2c0", icllp_i2c0_groups),
	FUNCTION("i2c1", icllp_i2c1_groups),
	FUNCTION("i2c2", icllp_i2c2_groups),
	FUNCTION("i2c3", icllp_i2c3_groups),
	FUNCTION("i2c4", icllp_i2c4_groups),
	FUNCTION("uart0", icllp_uart0_groups),
	FUNCTION("uart1", icllp_uart1_groups),
	FUNCTION("uart2", icllp_uart2_groups),
};

static const struct intel_pinctrl_soc_data icllp_soc_data = {
	.pins = icllp_pins,
	.npins = ARRAY_SIZE(icllp_pins),
	.groups = icllp_groups,
	.ngroups = ARRAY_SIZE(icllp_groups),
	.functions = icllp_functions,
	.nfunctions = ARRAY_SIZE(icllp_functions),
	.communities = icllp_communities,
	.ncommunities = ARRAY_SIZE(icllp_communities),
};

/* Ice Lake-N */
static const struct pinctrl_pin_desc icln_pins[] = {
	/* SPI */
	PINCTRL_PIN(0, "SPI0_IO_2"),
	PINCTRL_PIN(1, "SPI0_IO_3"),
	PINCTRL_PIN(2, "SPI0_MOSI_IO_0"),
	PINCTRL_PIN(3, "SPI0_MISO_IO_1"),
	PINCTRL_PIN(4, "SPI0_TPM_CSB"),
	PINCTRL_PIN(5, "SPI0_FLASH_0_CSB"),
	PINCTRL_PIN(6, "SPI0_FLASH_1_CSB"),
	PINCTRL_PIN(7, "SPI0_CLK"),
	PINCTRL_PIN(8, "SPI0_CLK_LOOPBK"),
	/* GPP_B */
	PINCTRL_PIN(9, "CORE_VID_0"),
	PINCTRL_PIN(10, "CORE_VID_1"),
	PINCTRL_PIN(11, "VRALERTB"),
	PINCTRL_PIN(12, "CPU_GP_2"),
	PINCTRL_PIN(13, "CPU_GP_3"),
	PINCTRL_PIN(14, "SRCCLKREQB_0"),
	PINCTRL_PIN(15, "SRCCLKREQB_1"),
	PINCTRL_PIN(16, "SRCCLKREQB_2"),
	PINCTRL_PIN(17, "SRCCLKREQB_3"),
	PINCTRL_PIN(18, "SRCCLKREQB_4"),
	PINCTRL_PIN(19, "SRCCLKREQB_5"),
	PINCTRL_PIN(20, "EXT_PWR_GATEB"),
	PINCTRL_PIN(21, "SLP_S0B"),
	PINCTRL_PIN(22, "PLTRSTB"),
	PINCTRL_PIN(23, "SPKR_GSPI0_CS1B"),
	PINCTRL_PIN(24, "GSPI0_CS0B"),
	PINCTRL_PIN(25, "GSPI0_CLK"),
	PINCTRL_PIN(26, "GSPI0_MISO_TBT_LSX3_A"),
	PINCTRL_PIN(27, "GSPI0_MOSI_TBT_LSX3_B"),
	PINCTRL_PIN(28, "GSPI1_CS0B"),
	PINCTRL_PIN(29, "GSPI1_CLK_NFC_CLK"),
	PINCTRL_PIN(30, "GSPI1_MISO_NFC_CLKREQ"),
	PINCTRL_PIN(31, "GSPI1_MOSI"),
	PINCTRL_PIN(32, "GSPI1_CS1B"),
	PINCTRL_PIN(33, "GSPI0_CLK_LOOPBK"),
	PINCTRL_PIN(34, "GSPI1_CLK_LOOPBK"),
	/* GPP_A */
	PINCTRL_PIN(35, "ESPI_IO_0"),
	PINCTRL_PIN(36, "ESPI_IO_1"),
	PINCTRL_PIN(37, "ESPI_IO_2"),
	PINCTRL_PIN(38, "ESPI_IO_3"),
	PINCTRL_PIN(39, "ESPI_CSB"),
	PINCTRL_PIN(40, "ESPI_CLK"),
	PINCTRL_PIN(41, "ESPI_RESETB"),
	PINCTRL_PIN(42, "SMBCLK"),
	PINCTRL_PIN(43, "SMBDATA"),
	PINCTRL_PIN(44, "SMBALERTB"),
	PINCTRL_PIN(45, "CPU_GP_0"),
	PINCTRL_PIN(46, "CPU_GP_1"),
	PINCTRL_PIN(47, "USB2_OCB_1"),
	PINCTRL_PIN(48, "USB2_OCB_2"),
	PINCTRL_PIN(49, "USB2_OCB_3"),
	PINCTRL_PIN(50, "DDSP_HPD_A_TIME_SYNC_0"),
	PINCTRL_PIN(51, "DDSP_HPD_B_TIME_SYNC_1"),
	PINCTRL_PIN(52, "DDSP_HPD_C"),
	PINCTRL_PIN(53, "USB2_OCB_0"),
	PINCTRL_PIN(54, "PCHHOTB"),
	PINCTRL_PIN(55, "ESPI_CLK_LOOPBK"),
	/* GPP_S */
	PINCTRL_PIN(56, "SNDW1_CLK"),
	PINCTRL_PIN(57, "SNDW1_DATA"),
	PINCTRL_PIN(58, "SNDW2_CLK"),
	PINCTRL_PIN(59, "SNDW2_DATA"),
	PINCTRL_PIN(60, "SNDW3_CLK_DMIC_CLK_1"),
	PINCTRL_PIN(61, "SNDW3_DATA_DMIC_DATA_1"),
	PINCTRL_PIN(62, "SNDW4_CLK_DMIC_CLK_0"),
	PINCTRL_PIN(63, "SNDW4_DATA_DMIC_DATA_0"),
	/* GPP_R */
	PINCTRL_PIN(64, "HDA_BCLK"),
	PINCTRL_PIN(65, "HDA_SYNC"),
	PINCTRL_PIN(66, "HDA_SDO"),
	PINCTRL_PIN(67, "HDA_SDI_0"),
	PINCTRL_PIN(68, "HDA_RSTB"),
	PINCTRL_PIN(69, "HDA_SDI_1_I2S1_RXD"),
	PINCTRL_PIN(70, "I2S1_SFRM"),
	PINCTRL_PIN(71, "I2S1_TXD"),
	/* GPP_H */
	PINCTRL_PIN(72, "GPPC_H_0"),
	PINCTRL_PIN(73, "CNV_RF_RESET_B"),
	PINCTRL_PIN(74, "MODEM_CLKREQ"),
	PINCTRL_PIN(75, "SX_EXIT_HOLDOFFB"),
	PINCTRL_PIN(76, "I2C2_SDA"),
	PINCTRL_PIN(77, "I2C2_SCL"),
	PINCTRL_PIN(78, "I2C3_SDA"),
	PINCTRL_PIN(79, "I2C3_SCL"),
	PINCTRL_PIN(80, "I2C4_SDA"),
	PINCTRL_PIN(81, "I2C4_SCL"),
	PINCTRL_PIN(82, "CPU_VCCIO_PWR_GATEB"),
	PINCTRL_PIN(83, "I2S2_SCLK"),
	PINCTRL_PIN(84, "CNV_RF_RESET_B"),
	PINCTRL_PIN(85, "MODEM_CLKREQ"),
	PINCTRL_PIN(86, "I2S2_RXD"),
	PINCTRL_PIN(87, "I2S1_SCLK"),
	PINCTRL_PIN(88, "GPPC_H_16"),
	PINCTRL_PIN(89, "GPPC_H_17"),
	PINCTRL_PIN(90, "GPPC_H_18"),
	PINCTRL_PIN(91, "GPPC_H_19"),
	PINCTRL_PIN(92, "GPPC_H_20"),
	PINCTRL_PIN(93, "GPPC_H_21"),
	PINCTRL_PIN(94, "GPPC_H_22"),
	PINCTRL_PIN(95, "GPPC_H_23"),
	/* GPP_D */
	PINCTRL_PIN(96, "SPI1_CSB_BK_0_SBK_0"),
	PINCTRL_PIN(97, "SPI1_CLK_BK_1_SBK_1"),
	PINCTRL_PIN(98, "SPI1_MISO_IO_1_BK_2_SBK_2"),
	PINCTRL_PIN(99, "SPI1_MOSI_IO_0_BK_3_SBK_3"),
	PINCTRL_PIN(100, "ISH_I2C0_SDA"),
	PINCTRL_PIN(101, "ISH_I2C0_SCL"),
	PINCTRL_PIN(102, "ISH_I2C1_SDA"),
	PINCTRL_PIN(103, "ISH_I2C1_SCL"),
	PINCTRL_PIN(104, "ISH_SPI_CSB_GSPI2_CS0B_TBT_LSX4_A"),
	PINCTRL_PIN(105, "ISH_SPI_CLK_GSPI2_CLK_TBT_LSX4_B"),
	PINCTRL_PIN(106, "ISH_SPI_MISO_GSPI2_MISO_TBT_LSX5_A"),
	PINCTRL_PIN(107, "ISH_SPI_MOSI_GSPI2_MOSI_TBT_LSX5_B"),
	PINCTRL_PIN(108, "ISH_UART0_RXD_I2C4B_SDA"),
	PINCTRL_PIN(109, "ISH_UART0_TXD_I2C4B_SCL"),
	PINCTRL_PIN(110, "ISH_UART0_RTSB_GSPI2_CS1B"),
	PINCTRL_PIN(111, "ISH_UART0_CTSB_CNV_WCEN"),
	PINCTRL_PIN(112, "SPI1_IO_2"),
	PINCTRL_PIN(113, "SPI1_IO_3"),
	PINCTRL_PIN(114, "I2S_MCLK"),
	PINCTRL_PIN(115, "CNV_MFUART2_RXD"),
	PINCTRL_PIN(116, "CNV_MFUART2_TXD"),
	PINCTRL_PIN(117, "CNV_PA_BLANKING"),
	PINCTRL_PIN(118, "I2C5_SDA_ISH_I2C2_SDA"),
	PINCTRL_PIN(119, "I2C5_SCL_ISH_I2C2_SCL"),
	PINCTRL_PIN(120, "GSPI2_CLK_LOOPBK"),
	PINCTRL_PIN(121, "SPI1_CLK_LOOPBK"),
	/* vGPIO */
	PINCTRL_PIN(122, "CNV_BTEN"),
	PINCTRL_PIN(123, "CNV_WCEN"),
	PINCTRL_PIN(124, "CNV_BT_HOST_WAKEB"),
	PINCTRL_PIN(125, "CNV_BT_IF_SELECT"),
	PINCTRL_PIN(126, "vCNV_BT_UART_TXD"),
	PINCTRL_PIN(127, "vCNV_BT_UART_RXD"),
	PINCTRL_PIN(128, "vCNV_BT_UART_CTS_B"),
	PINCTRL_PIN(129, "vCNV_BT_UART_RTS_B"),
	PINCTRL_PIN(130, "vCNV_MFUART1_TXD"),
	PINCTRL_PIN(131, "vCNV_MFUART1_RXD"),
	PINCTRL_PIN(132, "vCNV_MFUART1_CTS_B"),
	PINCTRL_PIN(133, "vCNV_MFUART1_RTS_B"),
	PINCTRL_PIN(134, "vUART0_TXD"),
	PINCTRL_PIN(135, "vUART0_RXD"),
	PINCTRL_PIN(136, "vUART0_CTS_B"),
	PINCTRL_PIN(137, "vUART0_RTS_B"),
	PINCTRL_PIN(138, "vISH_UART0_TXD"),
	PINCTRL_PIN(139, "vISH_UART0_RXD"),
	PINCTRL_PIN(140, "vISH_UART0_CTS_B"),
	PINCTRL_PIN(141, "vISH_UART0_RTS_B"),
	PINCTRL_PIN(142, "vCNV_BT_I2S_BCLK"),
	PINCTRL_PIN(143, "vCNV_BT_I2S_WS_SYNC"),
	PINCTRL_PIN(144, "vCNV_BT_I2S_SDO"),
	PINCTRL_PIN(145, "vCNV_BT_I2S_SDI"),
	PINCTRL_PIN(146, "vI2S2_SCLK"),
	PINCTRL_PIN(147, "vI2S2_SFRM"),
	PINCTRL_PIN(148, "vI2S2_TXD"),
	PINCTRL_PIN(149, "vI2S2_RXD"),
	PINCTRL_PIN(150, "vSD3_CD_B"),
	/* GPP_C */
	PINCTRL_PIN(151, "GPPC_C_0"),
	PINCTRL_PIN(152, "GPPC_C_1"),
	PINCTRL_PIN(153, "GPPC_C_2"),
	PINCTRL_PIN(154, "GPPC_C_3"),
	PINCTRL_PIN(155, "GPPC_C_4"),
	PINCTRL_PIN(156, "GPPC_C_5"),
	PINCTRL_PIN(157, "SUSWARNB_SUSPWRDNACK"),
	PINCTRL_PIN(158, "SUSACKB"),
	PINCTRL_PIN(159, "UART0_RXD"),
	PINCTRL_PIN(160, "UART0_TXD"),
	PINCTRL_PIN(161, "UART0_RTSB"),
	PINCTRL_PIN(162, "UART0_CTSB"),
	PINCTRL_PIN(163, "UART1_RXD_ISH_UART1_RXD"),
	PINCTRL_PIN(164, "UART1_TXD_ISH_UART1_TXD"),
	PINCTRL_PIN(165, "UART1_RTSB_ISH_UART1_RTSB"),
	PINCTRL_PIN(166, "UART1_CTSB_ISH_UART1_CTSB"),
	PINCTRL_PIN(167, "I2C0_SDA"),
	PINCTRL_PIN(168, "I2C0_SCL"),
	PINCTRL_PIN(169, "I2C1_SDA"),
	PINCTRL_PIN(170, "I2C1_SCL"),
	PINCTRL_PIN(171, "UART2_RXD_CNV_MFUART0_RXD"),
	PINCTRL_PIN(172, "UART2_TXD_CNV_MFUART0_TXD"),
	PINCTRL_PIN(173, "UART2_RTSB_CNV_MFUART0_RTS_B"),
	PINCTRL_PIN(174, "UART2_CTSB_CNV_MFUART0_CTS_B"),
	/* HVCMOS */
	PINCTRL_PIN(175, "L_BKLTEN"),
	PINCTRL_PIN(176, "L_BKLTCTL"),
	PINCTRL_PIN(177, "L_VDDEN"),
	PINCTRL_PIN(178, "SYS_PWROK"),
	PINCTRL_PIN(179, "SYS_RESETB"),
	PINCTRL_PIN(180, "MLK_RSTB"),
	/* GPP_E */
	PINCTRL_PIN(181, "ISH_GP_0_IMGCLKOUT_0"),
	PINCTRL_PIN(182, "ISH_GP_1"),
	PINCTRL_PIN(183, "IMGCLKOUT_1"),
	PINCTRL_PIN(184, "ISH_GP_2_SATA_DEVSLP_0"),
	PINCTRL_PIN(185, "IMGCLKOUT_2"),
	PINCTRL_PIN(186, "SATA_LEDB_SPI1_CS1B"),
	PINCTRL_PIN(187, "IMGCLKOUT_3"),
	PINCTRL_PIN(188, "ISH_GP_3_SATA_DEVSLP_1"),
	PINCTRL_PIN(189, "FIVR_DIGPB_0"),
	PINCTRL_PIN(190, "SML0CLK"),
	PINCTRL_PIN(191, "SML0DATA"),
	PINCTRL_PIN(192, "BSSB_LS3_RX"),
	PINCTRL_PIN(193, "BSSB_LS3_TX"),
	PINCTRL_PIN(194, "BSSB_LS0_RX"),
	PINCTRL_PIN(195, "BSSB_LS0_TX"),
	PINCTRL_PIN(196, "BSSB_LS1_RX"),
	PINCTRL_PIN(197, "BSSB_LS1_TX"),
	PINCTRL_PIN(198, "BSSB_LS2_RX"),
	PINCTRL_PIN(199, "BSSB_LS2_TX"),
	PINCTRL_PIN(200, "FIVR_DIGPB_1"),
	PINCTRL_PIN(201, "CNV_BRI_DT"),
	PINCTRL_PIN(202, "CNV_BRI_RSP"),
	PINCTRL_PIN(203, "CNV_RGI_DT"),
	PINCTRL_PIN(204, "CNV_RGI_RSP"),
	/* GPP_G */
	PINCTRL_PIN(205, "SD3_CMD"),
	PINCTRL_PIN(206, "SD3_D0"),
	PINCTRL_PIN(207, "SD3_D1"),
	PINCTRL_PIN(208, "SD3_D2"),
	PINCTRL_PIN(209, "SD3_D3"),
	PINCTRL_PIN(210, "SD3_CDB"),
	PINCTRL_PIN(211, "SD3_CLK"),
	PINCTRL_PIN(212, "SD3_WP"),
};

static const struct intel_padgroup icln_community0_gpps[] = {
	ICL_GPP(0, 0, 8, INTEL_GPIO_BASE_NOMAP),	/* SPI */
	ICL_GPP(1, 9, 34, 32),				/* GPP_B */
	ICL_GPP(2, 35, 55, 64),				/* GPP_A */
	ICL_GPP(3, 56, 63, 96),				/* GPP_S */
	ICL_GPP(4, 64, 71, 128),			/* GPP_R */
};

static const struct intel_padgroup icln_community1_gpps[] = {
	ICL_GPP(0, 72, 95, 160),			/* GPP_H */
	ICL_GPP(1, 96, 121, 192),			/* GPP_D */
	ICL_GPP(2, 122, 150, 224),			/* vGPIO */
	ICL_GPP(3, 151, 174, 256),			/* GPP_C */
};

static const struct intel_padgroup icln_community4_gpps[] = {
	ICL_GPP(0, 175, 180, INTEL_GPIO_BASE_NOMAP),	/* HVCMOS */
	ICL_GPP(1, 181, 204, 288),			/* GPP_E */
};

static const struct intel_padgroup icln_community5_gpps[] = {
	ICL_GPP(0, 205, 212, INTEL_GPIO_BASE_ZERO),	/* GPP_G */
};

static const struct intel_community icln_communities[] = {
	ICL_N_COMMUNITY(0, 0, 71, icln_community0_gpps),
	ICL_N_COMMUNITY(1, 72, 174, icln_community1_gpps),
	ICL_N_COMMUNITY(2, 175, 204, icln_community4_gpps),
	ICL_N_COMMUNITY(3, 205, 212, icln_community5_gpps),
};

static const struct intel_pinctrl_soc_data icln_soc_data = {
	.pins = icln_pins,
	.npins = ARRAY_SIZE(icln_pins),
	.communities = icln_communities,
	.ncommunities = ARRAY_SIZE(icln_communities),
};

static INTEL_PINCTRL_PM_OPS(icl_pinctrl_pm_ops);

static const struct acpi_device_id icl_pinctrl_acpi_match[] = {
	{ "INT3455", (kernel_ulong_t)&icllp_soc_data },
	{ "INT34C3", (kernel_ulong_t)&icln_soc_data },
	{ }
};
MODULE_DEVICE_TABLE(acpi, icl_pinctrl_acpi_match);

static struct platform_driver icl_pinctrl_driver = {
	.probe = intel_pinctrl_probe_by_hid,
	.driver = {
		.name = "icelake-pinctrl",
		.acpi_match_table = icl_pinctrl_acpi_match,
		.pm = &icl_pinctrl_pm_ops,
	},
};

module_platform_driver(icl_pinctrl_driver);

MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
MODULE_DESCRIPTION("Intel Ice Lake PCH pinctrl/GPIO driver");
MODULE_LICENSE("GPL v2");
