// 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/pm.h>

#include <linux/pinctrl/pinctrl.h>

#include "pinctrl-intel.h"

#define ICL_LP_PAD_OWN		0x020
#define ICL_LP_PADCFGLOCK	0x080
#define ICL_LP_HOSTSW_OWN	0x0b0
#define ICL_LP_GPI_IS		0x100
#define ICL_LP_GPI_IE		0x110

#define ICL_N_PAD_OWN		0x020
#define ICL_N_PADCFGLOCK	0x080
#define ICL_N_HOSTSW_OWN	0x0b0
#define ICL_N_GPI_IS		0x100
#define ICL_N_GPI_IE		0x120

#define ICL_LP_COMMUNITY(b, s, e, g)			\
	INTEL_COMMUNITY_GPPS(b, s, e, g, ICL_LP)

#define ICL_N_COMMUNITY(b, s, e, g)			\
	INTEL_COMMUNITY_GPPS(b, s, e, g, ICL_N)

/* 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[] = {
	INTEL_GPP(0, 0, 7, 0),				/* GPP_G */
	INTEL_GPP(1, 8, 33, 32),			/* GPP_B */
	INTEL_GPP(2, 34, 58, 64),			/* GPP_A */
};

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

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

static const struct intel_padgroup icllp_community5_gpps[] = {
	INTEL_GPP(0, 216, 223, 288),			/* GPP_R */
	INTEL_GPP(1, 224, 231, 320),			/* GPP_S */
	INTEL_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[] = {
	INTEL_GPP(0, 0, 8, INTEL_GPIO_BASE_NOMAP),	/* SPI */
	INTEL_GPP(1, 9, 34, 32),			/* GPP_B */
	INTEL_GPP(2, 35, 55, 64),			/* GPP_A */
	INTEL_GPP(3, 56, 63, 96),			/* GPP_S */
	INTEL_GPP(4, 64, 71, 128),			/* GPP_R */
};

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

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

static const struct intel_padgroup icln_community5_gpps[] = {
	INTEL_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 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 = pm_sleep_ptr(&intel_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");
MODULE_IMPORT_NS("PINCTRL_INTEL");
