// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Meteor Lake PCH pinctrl/GPIO driver
 *
 * Copyright (C) 2022, Intel Corporation
 * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 */

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

#include <linux/pinctrl/pinctrl.h>

#include "pinctrl-intel.h"

#define MTL_P_PAD_OWN		0x0b0
#define MTL_P_PADCFGLOCK	0x110
#define MTL_P_HOSTSW_OWN	0x140
#define MTL_P_GPI_IS		0x200
#define MTL_P_GPI_IE		0x210

#define MTL_S_PAD_OWN		0x0b0
#define MTL_S_PADCFGLOCK	0x0f0
#define MTL_S_HOSTSW_OWN	0x110
#define MTL_S_GPI_IS		0x200
#define MTL_S_GPI_IE		0x210

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

#define MTL_P_COMMUNITY(b, s, e, g)			\
	INTEL_COMMUNITY_GPPS(b, s, e, g, MTL_P)

#define MTL_S_COMMUNITY(b, s, e, g)			\
	INTEL_COMMUNITY_GPPS(b, s, e, g, MTL_S)

/* Meteor Lake-P */
static const struct pinctrl_pin_desc mtlp_pins[] = {
	/* CPU */
	PINCTRL_PIN(0, "PECI"),
	PINCTRL_PIN(1, "UFS_RESET_B"),
	PINCTRL_PIN(2, "VIDSOUT"),
	PINCTRL_PIN(3, "VIDSCK"),
	PINCTRL_PIN(4, "VIDALERT_B"),
	/* GPP_V */
	PINCTRL_PIN(5, "BATLOW_B"),
	PINCTRL_PIN(6, "AC_PRESENT"),
	PINCTRL_PIN(7, "SOC_WAKE_B"),
	PINCTRL_PIN(8, "PWRBTN_B"),
	PINCTRL_PIN(9, "SLP_S3_B"),
	PINCTRL_PIN(10, "SLP_S4_B"),
	PINCTRL_PIN(11, "SLP_A_B"),
	PINCTRL_PIN(12, "GPP_V_7"),
	PINCTRL_PIN(13, "SUSCLK"),
	PINCTRL_PIN(14, "SLP_WLAN_B"),
	PINCTRL_PIN(15, "SLP_S5_B"),
	PINCTRL_PIN(16, "LANPHYPC"),
	PINCTRL_PIN(17, "SLP_LAN_B"),
	PINCTRL_PIN(18, "GPP_V_13"),
	PINCTRL_PIN(19, "WAKE_B"),
	PINCTRL_PIN(20, "GPP_V_15"),
	PINCTRL_PIN(21, "GPP_V_16"),
	PINCTRL_PIN(22, "GPP_V_17"),
	PINCTRL_PIN(23, "GPP_V_18"),
	PINCTRL_PIN(24, "CATERR_B"),
	PINCTRL_PIN(25, "PROCHOT_B"),
	PINCTRL_PIN(26, "THERMTRIP_B"),
	PINCTRL_PIN(27, "DSI_DE_TE_2_GENLOCK_REF"),
	PINCTRL_PIN(28, "DSI_DE_TE_1_DISP_UTILS"),
	/* GPP_C */
	PINCTRL_PIN(29, "SMBCLK"),
	PINCTRL_PIN(30, "SMBDATA"),
	PINCTRL_PIN(31, "SMBALERT_B"),
	PINCTRL_PIN(32, "SML0CLK"),
	PINCTRL_PIN(33, "SML0DATA"),
	PINCTRL_PIN(34, "GPP_C_5"),
	PINCTRL_PIN(35, "GPP_C_6"),
	PINCTRL_PIN(36, "GPP_C_7"),
	PINCTRL_PIN(37, "GPP_C_8"),
	PINCTRL_PIN(38, "GPP_C_9"),
	PINCTRL_PIN(39, "GPP_C_10"),
	PINCTRL_PIN(40, "GPP_C_11"),
	PINCTRL_PIN(41, "GPP_C_12"),
	PINCTRL_PIN(42, "GPP_C_13"),
	PINCTRL_PIN(43, "GPP_C_14"),
	PINCTRL_PIN(44, "GPP_C_15"),
	PINCTRL_PIN(45, "GPP_C_16"),
	PINCTRL_PIN(46, "GPP_C_17"),
	PINCTRL_PIN(47, "GPP_C_18"),
	PINCTRL_PIN(48, "GPP_C_19"),
	PINCTRL_PIN(49, "GPP_C_20"),
	PINCTRL_PIN(50, "GPP_C_21"),
	PINCTRL_PIN(51, "GPP_C_22"),
	PINCTRL_PIN(52, "GPP_C_23"),
	/* GPP_A */
	PINCTRL_PIN(53, "ESPI_IO_0"),
	PINCTRL_PIN(54, "ESPI_IO_1"),
	PINCTRL_PIN(55, "ESPI_IO_2"),
	PINCTRL_PIN(56, "ESPI_IO_3"),
	PINCTRL_PIN(57, "ESPI_CS0_B"),
	PINCTRL_PIN(58, "ESPI_CLK"),
	PINCTRL_PIN(59, "ESPI_RESET_B"),
	PINCTRL_PIN(60, "GPP_A_7"),
	PINCTRL_PIN(61, "GPP_A_8"),
	PINCTRL_PIN(62, "GPP_A_9"),
	PINCTRL_PIN(63, "GPP_A_10"),
	PINCTRL_PIN(64, "GPP_A_11"),
	PINCTRL_PIN(65, "GPP_A_12"),
	PINCTRL_PIN(66, "ESPI_CS1_B"),
	PINCTRL_PIN(67, "ESPI_CS2_B"),
	PINCTRL_PIN(68, "ESPI_CS3_B"),
	PINCTRL_PIN(69, "ESPI_ALERT0_B"),
	PINCTRL_PIN(70, "ESPI_ALERT1_B"),
	PINCTRL_PIN(71, "ESPI_ALERT2_B"),
	PINCTRL_PIN(72, "ESPI_ALERT3_B"),
	PINCTRL_PIN(73, "GPP_A_20"),
	PINCTRL_PIN(74, "GPP_A_21"),
	PINCTRL_PIN(75, "GPP_A_22"),
	PINCTRL_PIN(76, "GPP_A_23"),
	PINCTRL_PIN(77, "ESPI_CLK_LOOPBK"),
	/* GPP_E */
	PINCTRL_PIN(78, "GPP_E_0"),
	PINCTRL_PIN(79, "GPP_E_1"),
	PINCTRL_PIN(80, "GPP_E_2"),
	PINCTRL_PIN(81, "GPP_E_3"),
	PINCTRL_PIN(82, "GPP_E_4"),
	PINCTRL_PIN(83, "GPP_E_5"),
	PINCTRL_PIN(84, "GPP_E_6"),
	PINCTRL_PIN(85, "GPP_E_7"),
	PINCTRL_PIN(86, "GPP_E_8"),
	PINCTRL_PIN(87, "GPP_E_9"),
	PINCTRL_PIN(88, "GPP_E_10"),
	PINCTRL_PIN(89, "GPP_E_11"),
	PINCTRL_PIN(90, "GPP_E_12"),
	PINCTRL_PIN(91, "GPP_E_13"),
	PINCTRL_PIN(92, "GPP_E_14"),
	PINCTRL_PIN(93, "SLP_DRAM_B"),
	PINCTRL_PIN(94, "GPP_E_16"),
	PINCTRL_PIN(95, "GPP_E_17"),
	PINCTRL_PIN(96, "GPP_E_18"),
	PINCTRL_PIN(97, "GPP_E_19"),
	PINCTRL_PIN(98, "GPP_E_20"),
	PINCTRL_PIN(99, "GPP_E_21"),
	PINCTRL_PIN(100, "DNX_FORCE_RELOAD"),
	PINCTRL_PIN(101, "GPP_E_23"),
	PINCTRL_PIN(102, "THC0_GSPI0_CLK_LOOPBK"),
	/* GPP_H */
	PINCTRL_PIN(103, "GPP_H_0"),
	PINCTRL_PIN(104, "GPP_H_1"),
	PINCTRL_PIN(105, "GPP_H_2"),
	PINCTRL_PIN(106, "GPP_H_3"),
	PINCTRL_PIN(107, "GPP_H_4"),
	PINCTRL_PIN(108, "GPP_H_5"),
	PINCTRL_PIN(109, "GPP_H_6"),
	PINCTRL_PIN(110, "GPP_H_7"),
	PINCTRL_PIN(111, "GPP_H_8"),
	PINCTRL_PIN(112, "GPP_H_9"),
	PINCTRL_PIN(113, "GPP_H_10"),
	PINCTRL_PIN(114, "GPP_H_11"),
	PINCTRL_PIN(115, "GPP_H_12"),
	PINCTRL_PIN(116, "CPU_C10_GATE_B"),
	PINCTRL_PIN(117, "GPP_H_14"),
	PINCTRL_PIN(118, "GPP_H_15"),
	PINCTRL_PIN(119, "GPP_H_16"),
	PINCTRL_PIN(120, "GPP_H_17"),
	PINCTRL_PIN(121, "GPP_H_18"),
	PINCTRL_PIN(122, "GPP_H_19"),
	PINCTRL_PIN(123, "GPP_H_20"),
	PINCTRL_PIN(124, "GPP_H_21"),
	PINCTRL_PIN(125, "GPP_H_22"),
	PINCTRL_PIN(126, "GPP_H_23"),
	PINCTRL_PIN(127, "LPI3C1_CLK_LOOPBK"),
	PINCTRL_PIN(128, "I3C0_CLK_LOOPBK"),
	/* GPP_F */
	PINCTRL_PIN(129, "CNV_BRI_DT"),
	PINCTRL_PIN(130, "CNV_BRI_RSP"),
	PINCTRL_PIN(131, "CNV_RGI_DT"),
	PINCTRL_PIN(132, "CNV_RGI_RSP"),
	PINCTRL_PIN(133, "CNV_RF_RESET_B"),
	PINCTRL_PIN(134, "CRF_CLKREQ"),
	PINCTRL_PIN(135, "GPP_F_6"),
	PINCTRL_PIN(136, "FUSA_DIAGTEST_EN"),
	PINCTRL_PIN(137, "FUSA_DIAGTEST_MODE"),
	PINCTRL_PIN(138, "BOOTMPC"),
	PINCTRL_PIN(139, "GPP_F_10"),
	PINCTRL_PIN(140, "GPP_F_11"),
	PINCTRL_PIN(141, "GSXDOUT"),
	PINCTRL_PIN(142, "GSXSLOAD"),
	PINCTRL_PIN(143, "GSXDIN"),
	PINCTRL_PIN(144, "GSXSRESETB"),
	PINCTRL_PIN(145, "GSXCLK"),
	PINCTRL_PIN(146, "GMII_MDC_0"),
	PINCTRL_PIN(147, "GMII_MDIO_0"),
	PINCTRL_PIN(148, "GPP_F_19"),
	PINCTRL_PIN(149, "GPP_F_20"),
	PINCTRL_PIN(150, "GPP_F_21"),
	PINCTRL_PIN(151, "GPP_F_22"),
	PINCTRL_PIN(152, "GPP_F_23"),
	PINCTRL_PIN(153, "THC1_GSPI1_CLK_LOOPBK"),
	PINCTRL_PIN(154, "GSPI0A_CLK_LOOPBK"),
	/* SPI0 */
	PINCTRL_PIN(155, "SPI0_IO_2"),
	PINCTRL_PIN(156, "SPI0_IO_3"),
	PINCTRL_PIN(157, "SPI0_MOSI_IO_0"),
	PINCTRL_PIN(158, "SPI0_MISO_IO_1"),
	PINCTRL_PIN(159, "SPI0_TPM_CS_B"),
	PINCTRL_PIN(160, "SPI0_FLASH_0_CS_B"),
	PINCTRL_PIN(161, "SPI0_FLASH_1_CS_B"),
	PINCTRL_PIN(162, "SPI0_CLK"),
	PINCTRL_PIN(163, "L_BKLTEN"),
	PINCTRL_PIN(164, "L_BKLTCTL"),
	PINCTRL_PIN(165, "L_VDDEN"),
	PINCTRL_PIN(166, "SYS_PWROK"),
	PINCTRL_PIN(167, "SYS_RESET_B"),
	PINCTRL_PIN(168, "MLK_RST_B"),
	PINCTRL_PIN(169, "SPI0_CLK_LOOPBK"),
	/* vGPIO_3 */
	PINCTRL_PIN(170, "ESPI_USB_OCB_0"),
	PINCTRL_PIN(171, "ESPI_USB_OCB_1"),
	PINCTRL_PIN(172, "ESPI_USB_OCB_2"),
	PINCTRL_PIN(173, "ESPI_USB_OCB_3"),
	PINCTRL_PIN(174, "USB_CPU_OCB_0"),
	PINCTRL_PIN(175, "USB_CPU_OCB_1"),
	PINCTRL_PIN(176, "USB_CPU_OCB_2"),
	PINCTRL_PIN(177, "USB_CPU_OCB_3"),
	PINCTRL_PIN(178, "TS0_IN_INT"),
	PINCTRL_PIN(179, "TS1_IN_INT"),
	PINCTRL_PIN(180, "THC0_WOT_INT"),
	PINCTRL_PIN(181, "THC1_WOT_INT"),
	PINCTRL_PIN(182, "THC0_WHC_INT"),
	PINCTRL_PIN(183, "THC1_WHC_INT"),
	/* GPP_S */
	PINCTRL_PIN(184, "GPP_S_0"),
	PINCTRL_PIN(185, "GPP_S_1"),
	PINCTRL_PIN(186, "GPP_S_2"),
	PINCTRL_PIN(187, "GPP_S_3"),
	PINCTRL_PIN(188, "GPP_S_4"),
	PINCTRL_PIN(189, "GPP_S_5"),
	PINCTRL_PIN(190, "GPP_S_6"),
	PINCTRL_PIN(191, "GPP_S_7"),
	/* JTAG */
	PINCTRL_PIN(192, "JTAG_MBPB0"),
	PINCTRL_PIN(193, "JTAG_MBPB1"),
	PINCTRL_PIN(194, "JTAG_MBPB2"),
	PINCTRL_PIN(195, "JTAG_MBPB3"),
	PINCTRL_PIN(196, "JTAG_TDO"),
	PINCTRL_PIN(197, "PRDY_B"),
	PINCTRL_PIN(198, "PREQ_B"),
	PINCTRL_PIN(199, "JTAG_TDI"),
	PINCTRL_PIN(200, "JTAG_TMS"),
	PINCTRL_PIN(201, "JTAG_TCK"),
	PINCTRL_PIN(202, "DBG_PMODE"),
	PINCTRL_PIN(203, "JTAG_TRST_B"),
	/* GPP_B */
	PINCTRL_PIN(204, "ADM_VID_0"),
	PINCTRL_PIN(205, "ADM_VID_1"),
	PINCTRL_PIN(206, "GPP_B_2"),
	PINCTRL_PIN(207, "GPP_B_3"),
	PINCTRL_PIN(208, "GPP_B_4"),
	PINCTRL_PIN(209, "GPP_B_5"),
	PINCTRL_PIN(210, "GPP_B_6"),
	PINCTRL_PIN(211, "GPP_B_7"),
	PINCTRL_PIN(212, "GPP_B_8"),
	PINCTRL_PIN(213, "GPP_B_9"),
	PINCTRL_PIN(214, "GPP_B_10"),
	PINCTRL_PIN(215, "GPP_B_11"),
	PINCTRL_PIN(216, "SLP_S0_B"),
	PINCTRL_PIN(217, "PLTRST_B"),
	PINCTRL_PIN(218, "GPP_B_14"),
	PINCTRL_PIN(219, "GPP_B_15"),
	PINCTRL_PIN(220, "GPP_B_16"),
	PINCTRL_PIN(221, "GPP_B_17"),
	PINCTRL_PIN(222, "GPP_B_18"),
	PINCTRL_PIN(223, "GPP_B_19"),
	PINCTRL_PIN(224, "GPP_B_20"),
	PINCTRL_PIN(225, "GPP_B_21"),
	PINCTRL_PIN(226, "GPP_B_22"),
	PINCTRL_PIN(227, "GPP_B_23"),
	PINCTRL_PIN(228, "ISH_I3C0_CLK_LOOPBK"),
	/* GPP_D */
	PINCTRL_PIN(229, "GPP_D_0"),
	PINCTRL_PIN(230, "GPP_D_1"),
	PINCTRL_PIN(231, "GPP_D_2"),
	PINCTRL_PIN(232, "GPP_D_3"),
	PINCTRL_PIN(233, "GPP_D_4"),
	PINCTRL_PIN(234, "GPP_D_5"),
	PINCTRL_PIN(235, "GPP_D_6"),
	PINCTRL_PIN(236, "GPP_D_7"),
	PINCTRL_PIN(237, "GPP_D_8"),
	PINCTRL_PIN(238, "GPP_D_9"),
	PINCTRL_PIN(239, "HDA_BCLK"),
	PINCTRL_PIN(240, "HDA_SYNC"),
	PINCTRL_PIN(241, "HDA_SDO"),
	PINCTRL_PIN(242, "HDA_SDI_0"),
	PINCTRL_PIN(243, "GPP_D_14"),
	PINCTRL_PIN(244, "GPP_D_15"),
	PINCTRL_PIN(245, "GPP_D_16"),
	PINCTRL_PIN(246, "HDA_RST_B"),
	PINCTRL_PIN(247, "GPP_D_18"),
	PINCTRL_PIN(248, "GPP_D_19"),
	PINCTRL_PIN(249, "GPP_D_20"),
	PINCTRL_PIN(250, "UFS_REFCLK"),
	PINCTRL_PIN(251, "BPKI3C_SDA"),
	PINCTRL_PIN(252, "BPKI3C_SCL"),
	PINCTRL_PIN(253, "BOOTHALT_B"),
	/* vGPIO */
	PINCTRL_PIN(254, "CNV_BTEN"),
	PINCTRL_PIN(255, "CNV_BT_HOST_WAKEB"),
	PINCTRL_PIN(256, "CNV_BT_IF_SELECT"),
	PINCTRL_PIN(257, "vCNV_BT_UART_TXD"),
	PINCTRL_PIN(258, "vCNV_BT_UART_RXD"),
	PINCTRL_PIN(259, "vCNV_BT_UART_CTS_B"),
	PINCTRL_PIN(260, "vCNV_BT_UART_RTS_B"),
	PINCTRL_PIN(261, "vCNV_MFUART1_TXD"),
	PINCTRL_PIN(262, "vCNV_MFUART1_RXD"),
	PINCTRL_PIN(263, "vCNV_MFUART1_CTS_B"),
	PINCTRL_PIN(264, "vCNV_MFUART1_RTS_B"),
	PINCTRL_PIN(265, "vUART0_TXD"),
	PINCTRL_PIN(266, "vUART0_RXD"),
	PINCTRL_PIN(267, "vUART0_CTS_B"),
	PINCTRL_PIN(268, "vUART0_RTS_B"),
	PINCTRL_PIN(269, "vISH_UART0_TXD"),
	PINCTRL_PIN(270, "vISH_UART0_RXD"),
	PINCTRL_PIN(271, "vISH_UART0_CTS_B"),
	PINCTRL_PIN(272, "vISH_UART0_RTS_B"),
	PINCTRL_PIN(273, "vCNV_BT_I2S_BCLK"),
	PINCTRL_PIN(274, "vCNV_BT_I2S_WS_SYNC"),
	PINCTRL_PIN(275, "vCNV_BT_I2S_SDO"),
	PINCTRL_PIN(276, "vCNV_BT_I2S_SDI"),
	PINCTRL_PIN(277, "vI2S2_SCLK"),
	PINCTRL_PIN(278, "vI2S2_SFRM"),
	PINCTRL_PIN(279, "vI2S2_TXD"),
	PINCTRL_PIN(280, "vI2S2_RXD"),
	PINCTRL_PIN(281, "vCNV_BT_I2S_BCLK_2"),
	PINCTRL_PIN(282, "vCNV_BT_I2S_WS_SYNC_2"),
	PINCTRL_PIN(283, "vCNV_BT_I2S_SDO_2"),
	PINCTRL_PIN(284, "vCNV_BT_I2S_SDI_2"),
	PINCTRL_PIN(285, "vI2S2_SCLK_2"),
	PINCTRL_PIN(286, "vI2S2_SFRM_2"),
	PINCTRL_PIN(287, "vI2S2_TXD_2"),
	PINCTRL_PIN(288, "vI2S2_RXD_2"),
};

static const struct intel_padgroup mtlp_community0_gpps[] = {
	MTL_GPP(0, 0, 4, 0),		/* CPU */
	MTL_GPP(1, 5, 28, 32),		/* GPP_V */
	MTL_GPP(2, 29, 52, 64),		/* GPP_C */
};

static const struct intel_padgroup mtlp_community1_gpps[] = {
	MTL_GPP(0, 53, 77, 96),		/* GPP_A */
	MTL_GPP(1, 78, 102, 128),	/* GPP_E */
};

static const struct intel_padgroup mtlp_community3_gpps[] = {
	MTL_GPP(0, 103, 128, 160),	/* GPP_H */
	MTL_GPP(1, 129, 154, 192),	/* GPP_F */
	MTL_GPP(2, 155, 169, 224),	/* SPI0 */
	MTL_GPP(3, 170, 183, 256),	/* vGPIO_3 */
};

static const struct intel_padgroup mtlp_community4_gpps[] = {
	MTL_GPP(0, 184, 191, 288),	/* GPP_S */
	MTL_GPP(1, 192, 203, 320),	/* JTAG */
};

static const struct intel_padgroup mtlp_community5_gpps[] = {
	MTL_GPP(0, 204, 228, 352),	/* GPP_B */
	MTL_GPP(1, 229, 253, 384),	/* GPP_D */
	MTL_GPP(2, 254, 285, 416),	/* vGPIO_0 */
	MTL_GPP(3, 286, 288, 448),	/* vGPIO_1 */
};

static const struct intel_community mtlp_communities[] = {
	MTL_P_COMMUNITY(0, 0, 52, mtlp_community0_gpps),
	MTL_P_COMMUNITY(1, 53, 102, mtlp_community1_gpps),
	MTL_P_COMMUNITY(2, 103, 183, mtlp_community3_gpps),
	MTL_P_COMMUNITY(3, 184, 203, mtlp_community4_gpps),
	MTL_P_COMMUNITY(4, 204, 288, mtlp_community5_gpps),
};

static const struct intel_pinctrl_soc_data mtlp_soc_data = {
	.pins = mtlp_pins,
	.npins = ARRAY_SIZE(mtlp_pins),
	.communities = mtlp_communities,
	.ncommunities = ARRAY_SIZE(mtlp_communities),
};

/* Meteor Lake-S */
static const struct pinctrl_pin_desc mtls_pins[] = {
	/* GPP_A */
	PINCTRL_PIN(0, "DIR_ESPI_IO_0"),
	PINCTRL_PIN(1, "DIR_ESPI_IO_1"),
	PINCTRL_PIN(2, "DIR_ESPI_IO_2"),
	PINCTRL_PIN(3, "DIR_ESPI_IO_3"),
	PINCTRL_PIN(4, "DIR_ESPI_CS0_B"),
	PINCTRL_PIN(5, "DIR_ESPI_CLK"),
	PINCTRL_PIN(6, "DIR_ESPI_RCLK"),
	PINCTRL_PIN(7, "DIR_ESPI_RESET_B"),
	PINCTRL_PIN(8, "SLP_S0_B"),
	PINCTRL_PIN(9, "DMI_PERSTB"),
	PINCTRL_PIN(10, "CATERR_B"),
	PINCTRL_PIN(11, "THERMTRIP_B"),
	PINCTRL_PIN(12, "CPU_C10_GATE_B"),
	PINCTRL_PIN(13, "PS_ONB"),
	PINCTRL_PIN(14, "GPP_SA_14"),
	PINCTRL_PIN(15, "GPP_SA_15"),
	PINCTRL_PIN(16, "GPP_SA_16"),
	PINCTRL_PIN(17, "GPP_SA_17"),
	PINCTRL_PIN(18, "GPP_SA_18"),
	PINCTRL_PIN(19, "GPP_SA_19"),
	PINCTRL_PIN(20, "GPP_SA_20"),
	PINCTRL_PIN(21, "GPP_SA_21"),
	PINCTRL_PIN(22, "FUSA_DIAGTEST_EN"),
	PINCTRL_PIN(23, "FUSA_DIAGTEST_MODE"),
	PINCTRL_PIN(24, "RTCCLKIN"),
	PINCTRL_PIN(25, "RESET_SYNC_B"),
	PINCTRL_PIN(26, "PCH_PWROK"),
	PINCTRL_PIN(27, "DIR_ESPI_CLK_LOOPBACK"),
	/* vGPIO_0 */
	PINCTRL_PIN(28, "LPC_ME_FTPM_ENABLE"),
	PINCTRL_PIN(29, "LPC_DTFUS_CORE_SPITPM_DIS"),
	PINCTRL_PIN(30, "LPC_SPI_STRAP_TOS"),
	PINCTRL_PIN(31, "ITSS_KU1_SHTDWN"),
	PINCTRL_PIN(32, "LPC_PRR_TS_OVR"),
	PINCTRL_PIN(33, "ESPI_PMC_EC_SCI"),
	PINCTRL_PIN(34, "ESPI_PMC_EC_SCI1"),
	PINCTRL_PIN(35, "vGPIO_SPARE0"),
	PINCTRL_PIN(36, "vGPIO_SPARE1"),
	PINCTRL_PIN(37, "vGPIO_SPARE2"),
	PINCTRL_PIN(38, "vGPIO_SPARE3"),
	PINCTRL_PIN(39, "vGPIO_SPARE8"),
	PINCTRL_PIN(40, "vGPIO_SPARE9"),
	PINCTRL_PIN(41, "vGPIO_SPARE10"),
	PINCTRL_PIN(42, "vGPIO_SPARE11"),
	PINCTRL_PIN(43, "vGPIO_SPARE12"),
	PINCTRL_PIN(44, "vGPIO_SPARE13"),
	PINCTRL_PIN(45, "vGPIO_SPARE14"),
	PINCTRL_PIN(46, "vGPIO_SPARE15"),
	/* GPP_C */
	PINCTRL_PIN(47, "GPP_SC_0"),
	PINCTRL_PIN(48, "GPP_SC_1"),
	PINCTRL_PIN(49, "GPP_SC_2"),
	PINCTRL_PIN(50, "GPP_SC_3"),
	PINCTRL_PIN(51, "GPP_SC_4"),
	PINCTRL_PIN(52, "GPP_SC_5"),
	PINCTRL_PIN(53, "GPP_SC_6"),
	PINCTRL_PIN(54, "GPP_SC_7"),
	PINCTRL_PIN(55, "GPP_SC_8"),
	PINCTRL_PIN(56, "GPP_SC_9"),
	PINCTRL_PIN(57, "GPP_SC_10"),
	PINCTRL_PIN(58, "GPP_SC_11"),
	PINCTRL_PIN(59, "GPP_SC_12"),
	PINCTRL_PIN(60, "GPP_SC_13"),
	PINCTRL_PIN(61, "GPP_SC_14"),
	PINCTRL_PIN(62, "GPP_SC_15"),
	PINCTRL_PIN(63, "GPP_SC_16"),
	PINCTRL_PIN(64, "GPP_SC_17"),
	PINCTRL_PIN(65, "GPP_SC_18"),
	PINCTRL_PIN(66, "GPP_SC_19"),
	PINCTRL_PIN(67, "GPP_SC_20"),
	PINCTRL_PIN(68, "GPP_SC_21"),
	PINCTRL_PIN(69, "GPP_SC_22"),
	PINCTRL_PIN(70, "GPP_SC_23"),
	PINCTRL_PIN(71, "GPP_SC_24"),
	PINCTRL_PIN(72, "GPP_SC_25"),
	PINCTRL_PIN(73, "GPP_SC_26"),
	/* GPP_B */
	PINCTRL_PIN(74, "GPP_SB_0"),
	PINCTRL_PIN(75, "GPP_SB_1"),
	PINCTRL_PIN(76, "GPP_SB_2"),
	PINCTRL_PIN(77, "GPP_SB_3"),
	PINCTRL_PIN(78, "GPP_SB_4"),
	PINCTRL_PIN(79, "GPP_SB_5"),
	PINCTRL_PIN(80, "GPP_SB_6"),
	PINCTRL_PIN(81, "GPP_SB_7"),
	PINCTRL_PIN(82, "GPP_SB_8"),
	PINCTRL_PIN(83, "GPP_SB_9"),
	PINCTRL_PIN(84, "GPP_SB_10"),
	PINCTRL_PIN(85, "GPP_SB_11"),
	PINCTRL_PIN(86, "GPP_SB_12"),
	PINCTRL_PIN(87, "GPP_SB_13"),
	PINCTRL_PIN(88, "GPP_SB_14"),
	PINCTRL_PIN(89, "GPP_SB_15"),
	PINCTRL_PIN(90, "GPP_SB_16"),
	PINCTRL_PIN(91, "PROCHOT_B"),
	PINCTRL_PIN(92, "BPKI3C_SDA"),
	PINCTRL_PIN(93, "BPKI3C_SCL"),
	/* vGPIO_3 */
	PINCTRL_PIN(94, "TS0_IN_INT"),
	PINCTRL_PIN(95, "TS1_IN_INT"),
	/* GPP_D */
	PINCTRL_PIN(96, "TIME_SYNC_0"),
	PINCTRL_PIN(97, "TIME_SYNC_1"),
	PINCTRL_PIN(98, "DSI_DE_TE_2_GENLOCK_REF"),
	PINCTRL_PIN(99, "DSI_DE_TE_1_DISP_UTILS"),
	PINCTRL_PIN(100, "DSI_GENLOCK_2"),
	PINCTRL_PIN(101, "DSI_GENLOCK_3"),
	PINCTRL_PIN(102, "SRCCLKREQ2_B"),
	PINCTRL_PIN(103, "SRCCLKREQ3_B"),
	PINCTRL_PIN(104, "GPP_SD_8"),
	PINCTRL_PIN(105, "GPP_SD_9"),
	PINCTRL_PIN(106, "GPP_SD_10"),
	PINCTRL_PIN(107, "GPP_SD_11"),
	PINCTRL_PIN(108, "GPP_SD_12"),
	PINCTRL_PIN(109, "GPP_SD_13"),
	PINCTRL_PIN(110, "GPP_SD_14"),
	PINCTRL_PIN(111, "GPP_SD_15"),
	PINCTRL_PIN(112, "GPP_SD_16"),
	PINCTRL_PIN(113, "GPP_SD_17"),
	PINCTRL_PIN(114, "BOOTHALT_B"),
	PINCTRL_PIN(115, "GPP_SD_19"),
	PINCTRL_PIN(116, "GPP_SD_20"),
	PINCTRL_PIN(117, "AUDCLK"),
	PINCTRL_PIN(118, "AUDIN"),
	PINCTRL_PIN(119, "AUDOUT"),
	/* JTAG_CPU */
	PINCTRL_PIN(120, "PECI"),
	PINCTRL_PIN(121, "VIDSOUT"),
	PINCTRL_PIN(122, "VIDSCK"),
	PINCTRL_PIN(123, "VIDALERT_B"),
	PINCTRL_PIN(124, "JTAG_MBPB0"),
	PINCTRL_PIN(125, "JTAG_MBPB1"),
	PINCTRL_PIN(126, "JTAG_MBPB2"),
	PINCTRL_PIN(127, "JTAG_MBPB3"),
	PINCTRL_PIN(128, "JTAG_TDO"),
	PINCTRL_PIN(129, "PRDY_B"),
	PINCTRL_PIN(130, "PREQ_B"),
	PINCTRL_PIN(131, "JTAG_TDI"),
	PINCTRL_PIN(132, "JTAG_TMS"),
	PINCTRL_PIN(133, "JTAG_TCK"),
	PINCTRL_PIN(134, "DBG_PMODE"),
	PINCTRL_PIN(135, "JTAG_TRST_B"),
	/* vGPIO_4 */
	PINCTRL_PIN(136, "ISCLK_ESPI_XTAL_CLKREQ"),
	PINCTRL_PIN(137, "ESPI_ISCLK_XTAL_CLKACK"),
	PINCTRL_PIN(138, "vGPIO_SPARE4"),
	PINCTRL_PIN(139, "vGPIO_SPARE5"),
	PINCTRL_PIN(140, "vGPIO_SPARE6"),
	PINCTRL_PIN(141, "vGPIO_SPARE7"),
	PINCTRL_PIN(142, "vGPIO_SPARE16"),
	PINCTRL_PIN(143, "vGPIO_SPARE17"),
	PINCTRL_PIN(144, "vGPIO_SPARE18"),
	PINCTRL_PIN(145, "vGPIO_SPARE19"),
	PINCTRL_PIN(146, "vGPIO_SPARE20"),
	PINCTRL_PIN(147, "vGPIO_SPARE21"),
};

static const struct intel_padgroup mtls_community0_gpps[] = {
	MTL_GPP(0, 0, 27, 0),		/* GPP_A */
	MTL_GPP(1, 28, 46, 32),		/* vGPIO_0 */
	MTL_GPP(2, 47, 73, 64),		/* GPP_C */
};

static const struct intel_padgroup mtls_community1_gpps[] = {
	MTL_GPP(0, 74, 93, 96),		/* GPP_B */
	MTL_GPP(1, 94, 95, 128),	/* vGPIO_3 */
	MTL_GPP(2, 96, 119, 160),	/* GPP_D */
};

static const struct intel_padgroup mtls_community3_gpps[] = {
	MTL_GPP(0, 120, 135, 192),	/* JTAG_CPU */
	MTL_GPP(1, 136, 147, 224),	/* vGPIO_4 */
};

static const struct intel_community mtls_communities[] = {
	MTL_S_COMMUNITY(0, 0, 73, mtls_community0_gpps),
	MTL_S_COMMUNITY(1, 74, 119, mtls_community1_gpps),
	MTL_S_COMMUNITY(2, 120, 147, mtls_community3_gpps),
};

static const struct intel_pinctrl_soc_data mtls_soc_data = {
	.pins = mtls_pins,
	.npins = ARRAY_SIZE(mtls_pins),
	.communities = mtls_communities,
	.ncommunities = ARRAY_SIZE(mtls_communities),
};

static const struct acpi_device_id mtl_pinctrl_acpi_match[] = {
	{ "INTC105E", (kernel_ulong_t)&mtlp_soc_data },
	{ "INTC1083", (kernel_ulong_t)&mtlp_soc_data },
	{ "INTC1082", (kernel_ulong_t)&mtls_soc_data },
	{ }
};
MODULE_DEVICE_TABLE(acpi, mtl_pinctrl_acpi_match);

static INTEL_PINCTRL_PM_OPS(mtl_pinctrl_pm_ops);

static struct platform_driver mtl_pinctrl_driver = {
	.probe = intel_pinctrl_probe_by_hid,
	.driver = {
		.name = "meteorlake-pinctrl",
		.acpi_match_table = mtl_pinctrl_acpi_match,
		.pm = &mtl_pinctrl_pm_ops,
	},
};
module_platform_driver(mtl_pinctrl_driver);

MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
MODULE_DESCRIPTION("Intel Meteor Lake PCH pinctrl/GPIO driver");
MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS(PINCTRL_INTEL);
