// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Broxton SoC pinctrl/GPIO driver
 *
 * Copyright (C) 2015, 2016 Intel Corporation
 * Author: Mika Westerberg <mika.westerberg@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 BXT_PAD_OWN	0x020
#define BXT_HOSTSW_OWN	0x080
#define BXT_PADCFGLOCK	0x060
#define BXT_GPI_IE	0x110

#define BXT_COMMUNITY(s, e)				\
	{						\
		.padown_offset = BXT_PAD_OWN,		\
		.padcfglock_offset = BXT_PADCFGLOCK,	\
		.hostown_offset = BXT_HOSTSW_OWN,	\
		.ie_offset = BXT_GPI_IE,		\
		.gpp_size = 32,                         \
		.pin_base = (s),			\
		.npins = ((e) - (s) + 1),		\
	}

/* BXT */
static const struct pinctrl_pin_desc bxt_north_pins[] = {
	PINCTRL_PIN(0, "GPIO_0"),
	PINCTRL_PIN(1, "GPIO_1"),
	PINCTRL_PIN(2, "GPIO_2"),
	PINCTRL_PIN(3, "GPIO_3"),
	PINCTRL_PIN(4, "GPIO_4"),
	PINCTRL_PIN(5, "GPIO_5"),
	PINCTRL_PIN(6, "GPIO_6"),
	PINCTRL_PIN(7, "GPIO_7"),
	PINCTRL_PIN(8, "GPIO_8"),
	PINCTRL_PIN(9, "GPIO_9"),
	PINCTRL_PIN(10, "GPIO_10"),
	PINCTRL_PIN(11, "GPIO_11"),
	PINCTRL_PIN(12, "GPIO_12"),
	PINCTRL_PIN(13, "GPIO_13"),
	PINCTRL_PIN(14, "GPIO_14"),
	PINCTRL_PIN(15, "GPIO_15"),
	PINCTRL_PIN(16, "GPIO_16"),
	PINCTRL_PIN(17, "GPIO_17"),
	PINCTRL_PIN(18, "GPIO_18"),
	PINCTRL_PIN(19, "GPIO_19"),
	PINCTRL_PIN(20, "GPIO_20"),
	PINCTRL_PIN(21, "GPIO_21"),
	PINCTRL_PIN(22, "GPIO_22"),
	PINCTRL_PIN(23, "GPIO_23"),
	PINCTRL_PIN(24, "GPIO_24"),
	PINCTRL_PIN(25, "GPIO_25"),
	PINCTRL_PIN(26, "GPIO_26"),
	PINCTRL_PIN(27, "GPIO_27"),
	PINCTRL_PIN(28, "GPIO_28"),
	PINCTRL_PIN(29, "GPIO_29"),
	PINCTRL_PIN(30, "GPIO_30"),
	PINCTRL_PIN(31, "GPIO_31"),
	PINCTRL_PIN(32, "GPIO_32"),
	PINCTRL_PIN(33, "GPIO_33"),
	PINCTRL_PIN(34, "PWM0"),
	PINCTRL_PIN(35, "PWM1"),
	PINCTRL_PIN(36, "PWM2"),
	PINCTRL_PIN(37, "PWM3"),
	PINCTRL_PIN(38, "LPSS_UART0_RXD"),
	PINCTRL_PIN(39, "LPSS_UART0_TXD"),
	PINCTRL_PIN(40, "LPSS_UART0_RTS_B"),
	PINCTRL_PIN(41, "LPSS_UART0_CTS_B"),
	PINCTRL_PIN(42, "LPSS_UART1_RXD"),
	PINCTRL_PIN(43, "LPSS_UART1_TXD"),
	PINCTRL_PIN(44, "LPSS_UART1_RTS_B"),
	PINCTRL_PIN(45, "LPSS_UART1_CTS_B"),
	PINCTRL_PIN(46, "LPSS_UART2_RXD"),
	PINCTRL_PIN(47, "LPSS_UART2_TXD"),
	PINCTRL_PIN(48, "LPSS_UART2_RTS_B"),
	PINCTRL_PIN(49, "LPSS_UART2_CTS_B"),
	PINCTRL_PIN(50, "ISH_UART0_RXD"),
	PINCTRL_PIN(51, "ISH_UART0_TXT"),
	PINCTRL_PIN(52, "ISH_UART0_RTS_B"),
	PINCTRL_PIN(53, "ISH_UART0_CTS_B"),
	PINCTRL_PIN(54, "ISH_UART1_RXD"),
	PINCTRL_PIN(55, "ISH_UART1_TXT"),
	PINCTRL_PIN(56, "ISH_UART1_RTS_B"),
	PINCTRL_PIN(57, "ISH_UART1_CTS_B"),
	PINCTRL_PIN(58, "ISH_UART2_RXD"),
	PINCTRL_PIN(59, "ISH_UART2_TXD"),
	PINCTRL_PIN(60, "ISH_UART2_RTS_B"),
	PINCTRL_PIN(61, "ISH_UART2_CTS_B"),
	PINCTRL_PIN(62, "GP_CAMERASB00"),
	PINCTRL_PIN(63, "GP_CAMERASB01"),
	PINCTRL_PIN(64, "GP_CAMERASB02"),
	PINCTRL_PIN(65, "GP_CAMERASB03"),
	PINCTRL_PIN(66, "GP_CAMERASB04"),
	PINCTRL_PIN(67, "GP_CAMERASB05"),
	PINCTRL_PIN(68, "GP_CAMERASB06"),
	PINCTRL_PIN(69, "GP_CAMERASB07"),
	PINCTRL_PIN(70, "GP_CAMERASB08"),
	PINCTRL_PIN(71, "GP_CAMERASB09"),
	PINCTRL_PIN(72, "GP_CAMERASB10"),
	PINCTRL_PIN(73, "GP_CAMERASB11"),
	PINCTRL_PIN(74, "TCK"),
	PINCTRL_PIN(75, "TRST_B"),
	PINCTRL_PIN(76, "TMS"),
	PINCTRL_PIN(77, "TDI"),
	PINCTRL_PIN(78, "CX_PMODE"),
	PINCTRL_PIN(79, "CX_PREQ_B"),
	PINCTRL_PIN(80, "JTAGX"),
	PINCTRL_PIN(81, "CX_PRDY_B"),
	PINCTRL_PIN(82, "TDO"),
};

static const unsigned int bxt_north_pwm0_pins[] = { 34 };
static const unsigned int bxt_north_pwm1_pins[] = { 35 };
static const unsigned int bxt_north_pwm2_pins[] = { 36 };
static const unsigned int bxt_north_pwm3_pins[] = { 37 };
static const unsigned int bxt_north_uart0_pins[] = { 38, 39, 40, 41 };
static const unsigned int bxt_north_uart1_pins[] = { 42, 43, 44, 45 };
static const unsigned int bxt_north_uart2_pins[] = { 46, 47, 48, 49 };
static const unsigned int bxt_north_uart0b_pins[] = { 50, 51, 52, 53 };
static const unsigned int bxt_north_uart1b_pins[] = { 54, 55, 56, 57 };
static const unsigned int bxt_north_uart2b_pins[] = { 58, 59, 60, 61 };
static const unsigned int bxt_north_uart3_pins[] = { 58, 59, 60, 61 };

static const struct intel_pingroup bxt_north_groups[] = {
	PIN_GROUP("pwm0_grp", bxt_north_pwm0_pins, 1),
	PIN_GROUP("pwm1_grp", bxt_north_pwm1_pins, 1),
	PIN_GROUP("pwm2_grp", bxt_north_pwm2_pins, 1),
	PIN_GROUP("pwm3_grp", bxt_north_pwm3_pins, 1),
	PIN_GROUP("uart0_grp", bxt_north_uart0_pins, 1),
	PIN_GROUP("uart1_grp", bxt_north_uart1_pins, 1),
	PIN_GROUP("uart2_grp", bxt_north_uart2_pins, 1),
	PIN_GROUP("uart0b_grp", bxt_north_uart0b_pins, 2),
	PIN_GROUP("uart1b_grp", bxt_north_uart1b_pins, 2),
	PIN_GROUP("uart2b_grp", bxt_north_uart2b_pins, 2),
	PIN_GROUP("uart3_grp", bxt_north_uart3_pins, 3),
};

static const char * const bxt_north_pwm0_groups[] = { "pwm0_grp" };
static const char * const bxt_north_pwm1_groups[] = { "pwm1_grp" };
static const char * const bxt_north_pwm2_groups[] = { "pwm2_grp" };
static const char * const bxt_north_pwm3_groups[] = { "pwm3_grp" };
static const char * const bxt_north_uart0_groups[] = {
	"uart0_grp", "uart0b_grp",
};
static const char * const bxt_north_uart1_groups[] = {
	"uart1_grp", "uart1b_grp",
};
static const char * const bxt_north_uart2_groups[] = {
	"uart2_grp", "uart2b_grp",
};
static const char * const bxt_north_uart3_groups[] = { "uart3_grp" };

static const struct intel_function bxt_north_functions[] = {
	FUNCTION("pwm0", bxt_north_pwm0_groups),
	FUNCTION("pwm1", bxt_north_pwm1_groups),
	FUNCTION("pwm2", bxt_north_pwm2_groups),
	FUNCTION("pwm3", bxt_north_pwm3_groups),
	FUNCTION("uart0", bxt_north_uart0_groups),
	FUNCTION("uart1", bxt_north_uart1_groups),
	FUNCTION("uart2", bxt_north_uart2_groups),
	FUNCTION("uart3", bxt_north_uart3_groups),
};

static const struct intel_community bxt_north_communities[] = {
	BXT_COMMUNITY(0, 82),
};

static const struct intel_pinctrl_soc_data bxt_north_soc_data = {
	.uid = "1",
	.pins = bxt_north_pins,
	.npins = ARRAY_SIZE(bxt_north_pins),
	.groups = bxt_north_groups,
	.ngroups = ARRAY_SIZE(bxt_north_groups),
	.functions = bxt_north_functions,
	.nfunctions = ARRAY_SIZE(bxt_north_functions),
	.communities = bxt_north_communities,
	.ncommunities = ARRAY_SIZE(bxt_north_communities),
};

static const struct pinctrl_pin_desc bxt_northwest_pins[] = {
	PINCTRL_PIN(0, "PMC_SPI_FS0"),
	PINCTRL_PIN(1, "PMC_SPI_FS1"),
	PINCTRL_PIN(2, "PMC_SPI_FS2"),
	PINCTRL_PIN(3, "PMC_SPI_RXD"),
	PINCTRL_PIN(4, "PMC_SPI_TXD"),
	PINCTRL_PIN(5, "PMC_SPI_CLK"),
	PINCTRL_PIN(6, "PMC_UART_RXD"),
	PINCTRL_PIN(7, "PMC_UART_TXD"),
	PINCTRL_PIN(8, "PMIC_PWRGOOD"),
	PINCTRL_PIN(9, "PMIC_RESET_B"),
	PINCTRL_PIN(10, "RTC_CLK"),
	PINCTRL_PIN(11, "PMIC_SDWN_B"),
	PINCTRL_PIN(12, "PMIC_BCUDISW2"),
	PINCTRL_PIN(13, "PMIC_BCUDISCRIT"),
	PINCTRL_PIN(14, "PMIC_THERMTRIP_B"),
	PINCTRL_PIN(15, "PMIC_STDBY"),
	PINCTRL_PIN(16, "SVID0_ALERT_B"),
	PINCTRL_PIN(17, "SVID0_DATA"),
	PINCTRL_PIN(18, "SVID0_CLK"),
	PINCTRL_PIN(19, "PMIC_I2C_SCL"),
	PINCTRL_PIN(20, "PMIC_I2C_SDA"),
	PINCTRL_PIN(21, "AVS_I2S1_MCLK"),
	PINCTRL_PIN(22, "AVS_I2S1_BCLK"),
	PINCTRL_PIN(23, "AVS_I2S1_WS_SYNC"),
	PINCTRL_PIN(24, "AVS_I2S1_SDI"),
	PINCTRL_PIN(25, "AVS_I2S1_SDO"),
	PINCTRL_PIN(26, "AVS_M_CLK_A1"),
	PINCTRL_PIN(27, "AVS_M_CLK_B1"),
	PINCTRL_PIN(28, "AVS_M_DATA_1"),
	PINCTRL_PIN(29, "AVS_M_CLK_AB2"),
	PINCTRL_PIN(30, "AVS_M_DATA_2"),
	PINCTRL_PIN(31, "AVS_I2S2_MCLK"),
	PINCTRL_PIN(32, "AVS_I2S2_BCLK"),
	PINCTRL_PIN(33, "AVS_I2S2_WS_SYNC"),
	PINCTRL_PIN(34, "AVS_I2S2_SDI"),
	PINCTRL_PIN(35, "AVS_I2S2_SDOK"),
	PINCTRL_PIN(36, "AVS_I2S3_BCLK"),
	PINCTRL_PIN(37, "AVS_I2S3_WS_SYNC"),
	PINCTRL_PIN(38, "AVS_I2S3_SDI"),
	PINCTRL_PIN(39, "AVS_I2S3_SDO"),
	PINCTRL_PIN(40, "AVS_I2S4_BCLK"),
	PINCTRL_PIN(41, "AVS_I2S4_WS_SYNC"),
	PINCTRL_PIN(42, "AVS_I2S4_SDI"),
	PINCTRL_PIN(43, "AVS_I2S4_SDO"),
	PINCTRL_PIN(44, "PROCHOT_B"),
	PINCTRL_PIN(45, "FST_SPI_CS0_B"),
	PINCTRL_PIN(46, "FST_SPI_CS1_B"),
	PINCTRL_PIN(47, "FST_SPI_MOSI_IO0"),
	PINCTRL_PIN(48, "FST_SPI_MISO_IO1"),
	PINCTRL_PIN(49, "FST_SPI_IO2"),
	PINCTRL_PIN(50, "FST_SPI_IO3"),
	PINCTRL_PIN(51, "FST_SPI_CLK"),
	PINCTRL_PIN(52, "FST_SPI_CLK_FB"),
	PINCTRL_PIN(53, "GP_SSP_0_CLK"),
	PINCTRL_PIN(54, "GP_SSP_0_FS0"),
	PINCTRL_PIN(55, "GP_SSP_0_FS1"),
	PINCTRL_PIN(56, "GP_SSP_0_FS2"),
	PINCTRL_PIN(57, "GP_SSP_0_RXD"),
	PINCTRL_PIN(58, "GP_SSP_0_TXD"),
	PINCTRL_PIN(59, "GP_SSP_1_CLK"),
	PINCTRL_PIN(60, "GP_SSP_1_FS0"),
	PINCTRL_PIN(61, "GP_SSP_1_FS1"),
	PINCTRL_PIN(62, "GP_SSP_1_FS2"),
	PINCTRL_PIN(63, "GP_SSP_1_FS3"),
	PINCTRL_PIN(64, "GP_SSP_1_RXD"),
	PINCTRL_PIN(65, "GP_SSP_1_TXD"),
	PINCTRL_PIN(66, "GP_SSP_2_CLK"),
	PINCTRL_PIN(67, "GP_SSP_2_FS0"),
	PINCTRL_PIN(68, "GP_SSP_2_FS1"),
	PINCTRL_PIN(69, "GP_SSP_2_FS2"),
	PINCTRL_PIN(70, "GP_SSP_2_RXD"),
	PINCTRL_PIN(71, "GP_SSP_2_TXD"),
};

static const unsigned int bxt_northwest_ssp0_pins[] = { 53, 54, 55, 56, 57, 58 };
static const unsigned int bxt_northwest_ssp1_pins[] = {
	59, 60, 61, 62, 63, 64, 65
};
static const unsigned int bxt_northwest_ssp2_pins[] = { 66, 67, 68, 69, 70, 71 };
static const unsigned int bxt_northwest_uart3_pins[] = { 67, 68, 69, 70 };

static const struct intel_pingroup bxt_northwest_groups[] = {
	PIN_GROUP("ssp0_grp", bxt_northwest_ssp0_pins, 1),
	PIN_GROUP("ssp1_grp", bxt_northwest_ssp1_pins, 1),
	PIN_GROUP("ssp2_grp", bxt_northwest_ssp2_pins, 1),
	PIN_GROUP("uart3_grp", bxt_northwest_uart3_pins, 2),
};

static const char * const bxt_northwest_ssp0_groups[] = { "ssp0_grp" };
static const char * const bxt_northwest_ssp1_groups[] = { "ssp1_grp" };
static const char * const bxt_northwest_ssp2_groups[] = { "ssp2_grp" };
static const char * const bxt_northwest_uart3_groups[] = { "uart3_grp" };

static const struct intel_function bxt_northwest_functions[] = {
	FUNCTION("ssp0", bxt_northwest_ssp0_groups),
	FUNCTION("ssp1", bxt_northwest_ssp1_groups),
	FUNCTION("ssp2", bxt_northwest_ssp2_groups),
	FUNCTION("uart3", bxt_northwest_uart3_groups),
};

static const struct intel_community bxt_northwest_communities[] = {
	BXT_COMMUNITY(0, 71),
};

static const struct intel_pinctrl_soc_data bxt_northwest_soc_data = {
	.uid = "2",
	.pins = bxt_northwest_pins,
	.npins = ARRAY_SIZE(bxt_northwest_pins),
	.groups = bxt_northwest_groups,
	.ngroups = ARRAY_SIZE(bxt_northwest_groups),
	.functions = bxt_northwest_functions,
	.nfunctions = ARRAY_SIZE(bxt_northwest_functions),
	.communities = bxt_northwest_communities,
	.ncommunities = ARRAY_SIZE(bxt_northwest_communities),
};

static const struct pinctrl_pin_desc bxt_west_pins[] = {
	PINCTRL_PIN(0, "LPSS_I2C0_SDA"),
	PINCTRL_PIN(1, "LPSS_I2C0_SCL"),
	PINCTRL_PIN(2, "LPSS_I2C1_SDA"),
	PINCTRL_PIN(3, "LPSS_I2C1_SCL"),
	PINCTRL_PIN(4, "LPSS_I2C2_SDA"),
	PINCTRL_PIN(5, "LPSS_I2C2_SCL"),
	PINCTRL_PIN(6, "LPSS_I2C3_SDA"),
	PINCTRL_PIN(7, "LPSS_I2C3_SCL"),
	PINCTRL_PIN(8, "LPSS_I2C4_SDA"),
	PINCTRL_PIN(9, "LPSS_I2C4_SCL"),
	PINCTRL_PIN(10, "LPSS_I2C5_SDA"),
	PINCTRL_PIN(11, "LPSS_I2C5_SCL"),
	PINCTRL_PIN(12, "LPSS_I2C6_SDA"),
	PINCTRL_PIN(13, "LPSS_I2C6_SCL"),
	PINCTRL_PIN(14, "LPSS_I2C7_SDA"),
	PINCTRL_PIN(15, "LPSS_I2C7_SCL"),
	PINCTRL_PIN(16, "ISH_I2C0_SDA"),
	PINCTRL_PIN(17, "ISH_I2C0_SCL"),
	PINCTRL_PIN(18, "ISH_I2C1_SDA"),
	PINCTRL_PIN(19, "ISH_I2C1_SCL"),
	PINCTRL_PIN(20, "ISH_I2C2_SDA"),
	PINCTRL_PIN(21, "ISH_I2C2_SCL"),
	PINCTRL_PIN(22, "ISH_GPIO_0"),
	PINCTRL_PIN(23, "ISH_GPIO_1"),
	PINCTRL_PIN(24, "ISH_GPIO_2"),
	PINCTRL_PIN(25, "ISH_GPIO_3"),
	PINCTRL_PIN(26, "ISH_GPIO_4"),
	PINCTRL_PIN(27, "ISH_GPIO_5"),
	PINCTRL_PIN(28, "ISH_GPIO_6"),
	PINCTRL_PIN(29, "ISH_GPIO_7"),
	PINCTRL_PIN(30, "ISH_GPIO_8"),
	PINCTRL_PIN(31, "ISH_GPIO_9"),
	PINCTRL_PIN(32, "MODEM_CLKREQ"),
	PINCTRL_PIN(33, "DGCLKDBG_PMC_0"),
	PINCTRL_PIN(34, "DGCLKDBG_PMC_1"),
	PINCTRL_PIN(35, "DGCLKDBG_PMC_2"),
	PINCTRL_PIN(36, "DGCLKDBG_ICLK_0"),
	PINCTRL_PIN(37, "DGCLKDBG_ICLK_1"),
	PINCTRL_PIN(38, "OSC_CLK_OUT_0"),
	PINCTRL_PIN(39, "OSC_CLK_OUT_1"),
	PINCTRL_PIN(40, "OSC_CLK_OUT_2"),
	PINCTRL_PIN(41, "OSC_CLK_OUT_3"),
};

static const unsigned int bxt_west_i2c0_pins[] = { 0, 1 };
static const unsigned int bxt_west_i2c1_pins[] = { 2, 3 };
static const unsigned int bxt_west_i2c2_pins[] = { 4, 5 };
static const unsigned int bxt_west_i2c3_pins[] = { 6, 7 };
static const unsigned int bxt_west_i2c4_pins[] = { 8, 9 };
static const unsigned int bxt_west_i2c5_pins[] = { 10, 11 };
static const unsigned int bxt_west_i2c6_pins[] = { 12, 13 };
static const unsigned int bxt_west_i2c7_pins[] = { 14, 15 };
static const unsigned int bxt_west_i2c5b_pins[] = { 16, 17 };
static const unsigned int bxt_west_i2c6b_pins[] = { 18, 19 };
static const unsigned int bxt_west_i2c7b_pins[] = { 20, 21 };

static const struct intel_pingroup bxt_west_groups[] = {
	PIN_GROUP("i2c0_grp", bxt_west_i2c0_pins, 1),
	PIN_GROUP("i2c1_grp", bxt_west_i2c1_pins, 1),
	PIN_GROUP("i2c2_grp", bxt_west_i2c2_pins, 1),
	PIN_GROUP("i2c3_grp", bxt_west_i2c3_pins, 1),
	PIN_GROUP("i2c4_grp", bxt_west_i2c4_pins, 1),
	PIN_GROUP("i2c5_grp", bxt_west_i2c5_pins, 1),
	PIN_GROUP("i2c6_grp", bxt_west_i2c6_pins, 1),
	PIN_GROUP("i2c7_grp", bxt_west_i2c7_pins, 1),
	PIN_GROUP("i2c5b_grp", bxt_west_i2c5b_pins, 2),
	PIN_GROUP("i2c6b_grp", bxt_west_i2c6b_pins, 2),
	PIN_GROUP("i2c7b_grp", bxt_west_i2c7b_pins, 2),
};

static const char * const bxt_west_i2c0_groups[] = { "i2c0_grp" };
static const char * const bxt_west_i2c1_groups[] = { "i2c1_grp" };
static const char * const bxt_west_i2c2_groups[] = { "i2c2_grp" };
static const char * const bxt_west_i2c3_groups[] = { "i2c3_grp" };
static const char * const bxt_west_i2c4_groups[] = { "i2c4_grp" };
static const char * const bxt_west_i2c5_groups[] = { "i2c5_grp", "i2c5b_grp" };
static const char * const bxt_west_i2c6_groups[] = { "i2c6_grp", "i2c6b_grp" };
static const char * const bxt_west_i2c7_groups[] = { "i2c7_grp", "i2c7b_grp" };

static const struct intel_function bxt_west_functions[] = {
	FUNCTION("i2c0", bxt_west_i2c0_groups),
	FUNCTION("i2c1", bxt_west_i2c1_groups),
	FUNCTION("i2c2", bxt_west_i2c2_groups),
	FUNCTION("i2c3", bxt_west_i2c3_groups),
	FUNCTION("i2c4", bxt_west_i2c4_groups),
	FUNCTION("i2c5", bxt_west_i2c5_groups),
	FUNCTION("i2c6", bxt_west_i2c6_groups),
	FUNCTION("i2c7", bxt_west_i2c7_groups),
};

static const struct intel_community bxt_west_communities[] = {
	BXT_COMMUNITY(0, 41),
};

static const struct intel_pinctrl_soc_data bxt_west_soc_data = {
	.uid = "3",
	.pins = bxt_west_pins,
	.npins = ARRAY_SIZE(bxt_west_pins),
	.groups = bxt_west_groups,
	.ngroups = ARRAY_SIZE(bxt_west_groups),
	.functions = bxt_west_functions,
	.nfunctions = ARRAY_SIZE(bxt_west_functions),
	.communities = bxt_west_communities,
	.ncommunities = ARRAY_SIZE(bxt_west_communities),
};

static const struct pinctrl_pin_desc bxt_southwest_pins[] = {
	PINCTRL_PIN(0, "EMMC0_CLK"),
	PINCTRL_PIN(1, "EMMC0_D0"),
	PINCTRL_PIN(2, "EMMC0_D1"),
	PINCTRL_PIN(3, "EMMC0_D2"),
	PINCTRL_PIN(4, "EMMC0_D3"),
	PINCTRL_PIN(5, "EMMC0_D4"),
	PINCTRL_PIN(6, "EMMC0_D5"),
	PINCTRL_PIN(7, "EMMC0_D6"),
	PINCTRL_PIN(8, "EMMC0_D7"),
	PINCTRL_PIN(9, "EMMC0_CMD"),
	PINCTRL_PIN(10, "SDIO_CLK"),
	PINCTRL_PIN(11, "SDIO_D0"),
	PINCTRL_PIN(12, "SDIO_D1"),
	PINCTRL_PIN(13, "SDIO_D2"),
	PINCTRL_PIN(14, "SDIO_D3"),
	PINCTRL_PIN(15, "SDIO_CMD"),
	PINCTRL_PIN(16, "SDCARD_CLK"),
	PINCTRL_PIN(17, "SDCARD_D0"),
	PINCTRL_PIN(18, "SDCARD_D1"),
	PINCTRL_PIN(19, "SDCARD_D2"),
	PINCTRL_PIN(20, "SDCARD_D3"),
	PINCTRL_PIN(21, "SDCARD_CD_B"),
	PINCTRL_PIN(22, "SDCARD_CMD"),
	PINCTRL_PIN(23, "SDCARD_LVL_CLK_FB"),
	PINCTRL_PIN(24, "SDCARD_LVL_CMD_DIR"),
	PINCTRL_PIN(25, "SDCARD_LVL_DAT_DIR"),
	PINCTRL_PIN(26, "EMMC0_STROBE"),
	PINCTRL_PIN(27, "SDIO_PWR_DOWN_B"),
	PINCTRL_PIN(28, "SDCARD_PWR_DOWN_B"),
	PINCTRL_PIN(29, "SDCARD_LVL_SEL"),
	PINCTRL_PIN(30, "SDCARD_LVL_WP"),
};

static const unsigned int bxt_southwest_emmc0_pins[] = {
	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 26,
};
static const unsigned int bxt_southwest_sdio_pins[] = {
	10, 11, 12, 13, 14, 15, 27,
};
static const unsigned int bxt_southwest_sdcard_pins[] = {
	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
};

static const struct intel_pingroup bxt_southwest_groups[] = {
	PIN_GROUP("emmc0_grp", bxt_southwest_emmc0_pins, 1),
	PIN_GROUP("sdio_grp", bxt_southwest_sdio_pins, 1),
	PIN_GROUP("sdcard_grp", bxt_southwest_sdcard_pins, 1),
};

static const char * const bxt_southwest_emmc0_groups[] = { "emmc0_grp" };
static const char * const bxt_southwest_sdio_groups[] = { "sdio_grp" };
static const char * const bxt_southwest_sdcard_groups[] = { "sdcard_grp" };

static const struct intel_function bxt_southwest_functions[] = {
	FUNCTION("emmc0", bxt_southwest_emmc0_groups),
	FUNCTION("sdio", bxt_southwest_sdio_groups),
	FUNCTION("sdcard", bxt_southwest_sdcard_groups),
};

static const struct intel_community bxt_southwest_communities[] = {
	BXT_COMMUNITY(0, 30),
};

static const struct intel_pinctrl_soc_data bxt_southwest_soc_data = {
	.uid = "4",
	.pins = bxt_southwest_pins,
	.npins = ARRAY_SIZE(bxt_southwest_pins),
	.groups = bxt_southwest_groups,
	.ngroups = ARRAY_SIZE(bxt_southwest_groups),
	.functions = bxt_southwest_functions,
	.nfunctions = ARRAY_SIZE(bxt_southwest_functions),
	.communities = bxt_southwest_communities,
	.ncommunities = ARRAY_SIZE(bxt_southwest_communities),
};

static const struct pinctrl_pin_desc bxt_south_pins[] = {
	PINCTRL_PIN(0, "HV_DDI0_DDC_SDA"),
	PINCTRL_PIN(1, "HV_DDI0_DDC_SCL"),
	PINCTRL_PIN(2, "HV_DDI1_DDC_SDA"),
	PINCTRL_PIN(3, "HV_DDI1_DDC_SCL"),
	PINCTRL_PIN(4, "DBI_SDA"),
	PINCTRL_PIN(5, "DBI_SCL"),
	PINCTRL_PIN(6, "PANEL0_VDDEN"),
	PINCTRL_PIN(7, "PANEL0_BKLTEN"),
	PINCTRL_PIN(8, "PANEL0_BKLTCTL"),
	PINCTRL_PIN(9, "PANEL1_VDDEN"),
	PINCTRL_PIN(10, "PANEL1_BKLTEN"),
	PINCTRL_PIN(11, "PANEL1_BKLTCTL"),
	PINCTRL_PIN(12, "DBI_CSX"),
	PINCTRL_PIN(13, "DBI_RESX"),
	PINCTRL_PIN(14, "GP_INTD_DSI_TE1"),
	PINCTRL_PIN(15, "GP_INTD_DSI_TE2"),
	PINCTRL_PIN(16, "USB_OC0_B"),
	PINCTRL_PIN(17, "USB_OC1_B"),
	PINCTRL_PIN(18, "MEX_WAKE0_B"),
	PINCTRL_PIN(19, "MEX_WAKE1_B"),
};

static const struct intel_community bxt_south_communities[] = {
	BXT_COMMUNITY(0, 19),
};

static const struct intel_pinctrl_soc_data bxt_south_soc_data = {
	.uid = "5",
	.pins = bxt_south_pins,
	.npins = ARRAY_SIZE(bxt_south_pins),
	.communities = bxt_south_communities,
	.ncommunities = ARRAY_SIZE(bxt_south_communities),
};

static const struct intel_pinctrl_soc_data *bxt_pinctrl_soc_data[] = {
	&bxt_north_soc_data,
	&bxt_northwest_soc_data,
	&bxt_west_soc_data,
	&bxt_southwest_soc_data,
	&bxt_south_soc_data,
	NULL
};

/* APL */
static const struct pinctrl_pin_desc apl_north_pins[] = {
	PINCTRL_PIN(0, "GPIO_0"),
	PINCTRL_PIN(1, "GPIO_1"),
	PINCTRL_PIN(2, "GPIO_2"),
	PINCTRL_PIN(3, "GPIO_3"),
	PINCTRL_PIN(4, "GPIO_4"),
	PINCTRL_PIN(5, "GPIO_5"),
	PINCTRL_PIN(6, "GPIO_6"),
	PINCTRL_PIN(7, "GPIO_7"),
	PINCTRL_PIN(8, "GPIO_8"),
	PINCTRL_PIN(9, "GPIO_9"),
	PINCTRL_PIN(10, "GPIO_10"),
	PINCTRL_PIN(11, "GPIO_11"),
	PINCTRL_PIN(12, "GPIO_12"),
	PINCTRL_PIN(13, "GPIO_13"),
	PINCTRL_PIN(14, "GPIO_14"),
	PINCTRL_PIN(15, "GPIO_15"),
	PINCTRL_PIN(16, "GPIO_16"),
	PINCTRL_PIN(17, "GPIO_17"),
	PINCTRL_PIN(18, "GPIO_18"),
	PINCTRL_PIN(19, "GPIO_19"),
	PINCTRL_PIN(20, "GPIO_20"),
	PINCTRL_PIN(21, "GPIO_21"),
	PINCTRL_PIN(22, "GPIO_22"),
	PINCTRL_PIN(23, "GPIO_23"),
	PINCTRL_PIN(24, "GPIO_24"),
	PINCTRL_PIN(25, "GPIO_25"),
	PINCTRL_PIN(26, "GPIO_26"),
	PINCTRL_PIN(27, "GPIO_27"),
	PINCTRL_PIN(28, "GPIO_28"),
	PINCTRL_PIN(29, "GPIO_29"),
	PINCTRL_PIN(30, "GPIO_30"),
	PINCTRL_PIN(31, "GPIO_31"),
	PINCTRL_PIN(32, "GPIO_32"),
	PINCTRL_PIN(33, "GPIO_33"),
	PINCTRL_PIN(34, "PWM0"),
	PINCTRL_PIN(35, "PWM1"),
	PINCTRL_PIN(36, "PWM2"),
	PINCTRL_PIN(37, "PWM3"),
	PINCTRL_PIN(38, "LPSS_UART0_RXD"),
	PINCTRL_PIN(39, "LPSS_UART0_TXD"),
	PINCTRL_PIN(40, "LPSS_UART0_RTS_B"),
	PINCTRL_PIN(41, "LPSS_UART0_CTS_B"),
	PINCTRL_PIN(42, "LPSS_UART1_RXD"),
	PINCTRL_PIN(43, "LPSS_UART1_TXD"),
	PINCTRL_PIN(44, "LPSS_UART1_RTS_B"),
	PINCTRL_PIN(45, "LPSS_UART1_CTS_B"),
	PINCTRL_PIN(46, "LPSS_UART2_RXD"),
	PINCTRL_PIN(47, "LPSS_UART2_TXD"),
	PINCTRL_PIN(48, "LPSS_UART2_RTS_B"),
	PINCTRL_PIN(49, "LPSS_UART2_CTS_B"),
	PINCTRL_PIN(50, "GP_CAMERASB00"),
	PINCTRL_PIN(51, "GP_CAMERASB01"),
	PINCTRL_PIN(52, "GP_CAMERASB02"),
	PINCTRL_PIN(53, "GP_CAMERASB03"),
	PINCTRL_PIN(54, "GP_CAMERASB04"),
	PINCTRL_PIN(55, "GP_CAMERASB05"),
	PINCTRL_PIN(56, "GP_CAMERASB06"),
	PINCTRL_PIN(57, "GP_CAMERASB07"),
	PINCTRL_PIN(58, "GP_CAMERASB08"),
	PINCTRL_PIN(59, "GP_CAMERASB09"),
	PINCTRL_PIN(60, "GP_CAMERASB10"),
	PINCTRL_PIN(61, "GP_CAMERASB11"),
	PINCTRL_PIN(62, "TCK"),
	PINCTRL_PIN(63, "TRST_B"),
	PINCTRL_PIN(64, "TMS"),
	PINCTRL_PIN(65, "TDI"),
	PINCTRL_PIN(66, "CX_PMODE"),
	PINCTRL_PIN(67, "CX_PREQ_B"),
	PINCTRL_PIN(68, "JTAGX"),
	PINCTRL_PIN(69, "CX_PRDY_B"),
	PINCTRL_PIN(70, "TDO"),
	PINCTRL_PIN(71, "CNV_BRI_DT"),
	PINCTRL_PIN(72, "CNV_BRI_RSP"),
	PINCTRL_PIN(73, "CNV_RGI_DT"),
	PINCTRL_PIN(74, "CNV_RGI_RSP"),
	PINCTRL_PIN(75, "SVID0_ALERT_B"),
	PINCTRL_PIN(76, "SVID0_DATA"),
	PINCTRL_PIN(77, "SVID0_CLK"),
};

static const unsigned int apl_north_pwm0_pins[] = { 34 };
static const unsigned int apl_north_pwm1_pins[] = { 35 };
static const unsigned int apl_north_pwm2_pins[] = { 36 };
static const unsigned int apl_north_pwm3_pins[] = { 37 };
static const unsigned int apl_north_uart0_pins[] = { 38, 39, 40, 41 };
static const unsigned int apl_north_uart1_pins[] = { 42, 43, 44, 45 };
static const unsigned int apl_north_uart2_pins[] = { 46, 47, 48, 49 };

static const struct intel_pingroup apl_north_groups[] = {
	PIN_GROUP("pwm0_grp", apl_north_pwm0_pins, 1),
	PIN_GROUP("pwm1_grp", apl_north_pwm1_pins, 1),
	PIN_GROUP("pwm2_grp", apl_north_pwm2_pins, 1),
	PIN_GROUP("pwm3_grp", apl_north_pwm3_pins, 1),
	PIN_GROUP("uart0_grp", apl_north_uart0_pins, 1),
	PIN_GROUP("uart1_grp", apl_north_uart1_pins, 1),
	PIN_GROUP("uart2_grp", apl_north_uart2_pins, 1),
};

static const char * const apl_north_pwm0_groups[] = { "pwm0_grp" };
static const char * const apl_north_pwm1_groups[] = { "pwm1_grp" };
static const char * const apl_north_pwm2_groups[] = { "pwm2_grp" };
static const char * const apl_north_pwm3_groups[] = { "pwm3_grp" };
static const char * const apl_north_uart0_groups[] = { "uart0_grp" };
static const char * const apl_north_uart1_groups[] = { "uart1_grp" };
static const char * const apl_north_uart2_groups[] = { "uart2_grp" };

static const struct intel_function apl_north_functions[] = {
	FUNCTION("pwm0", apl_north_pwm0_groups),
	FUNCTION("pwm1", apl_north_pwm1_groups),
	FUNCTION("pwm2", apl_north_pwm2_groups),
	FUNCTION("pwm3", apl_north_pwm3_groups),
	FUNCTION("uart0", apl_north_uart0_groups),
	FUNCTION("uart1", apl_north_uart1_groups),
	FUNCTION("uart2", apl_north_uart2_groups),
};

static const struct intel_community apl_north_communities[] = {
	BXT_COMMUNITY(0, 77),
};

static const struct intel_pinctrl_soc_data apl_north_soc_data = {
	.uid = "1",
	.pins = apl_north_pins,
	.npins = ARRAY_SIZE(apl_north_pins),
	.groups = apl_north_groups,
	.ngroups = ARRAY_SIZE(apl_north_groups),
	.functions = apl_north_functions,
	.nfunctions = ARRAY_SIZE(apl_north_functions),
	.communities = apl_north_communities,
	.ncommunities = ARRAY_SIZE(apl_north_communities),
};

static const struct pinctrl_pin_desc apl_northwest_pins[] = {
	PINCTRL_PIN(0, "HV_DDI0_DDC_SDA"),
	PINCTRL_PIN(1, "HV_DDI0_DDC_SCL"),
	PINCTRL_PIN(2, "HV_DDI1_DDC_SDA"),
	PINCTRL_PIN(3, "HV_DDI1_DDC_SCL"),
	PINCTRL_PIN(4, "DBI_SDA"),
	PINCTRL_PIN(5, "DBI_SCL"),
	PINCTRL_PIN(6, "PANEL0_VDDEN"),
	PINCTRL_PIN(7, "PANEL0_BKLTEN"),
	PINCTRL_PIN(8, "PANEL0_BKLTCTL"),
	PINCTRL_PIN(9, "PANEL1_VDDEN"),
	PINCTRL_PIN(10, "PANEL1_BKLTEN"),
	PINCTRL_PIN(11, "PANEL1_BKLTCTL"),
	PINCTRL_PIN(12, "DBI_CSX"),
	PINCTRL_PIN(13, "DBI_RESX"),
	PINCTRL_PIN(14, "GP_INTD_DSI_TE1"),
	PINCTRL_PIN(15, "GP_INTD_DSI_TE2"),
	PINCTRL_PIN(16, "USB_OC0_B"),
	PINCTRL_PIN(17, "USB_OC1_B"),
	PINCTRL_PIN(18, "PMC_SPI_FS0"),
	PINCTRL_PIN(19, "PMC_SPI_FS1"),
	PINCTRL_PIN(20, "PMC_SPI_FS2"),
	PINCTRL_PIN(21, "PMC_SPI_RXD"),
	PINCTRL_PIN(22, "PMC_SPI_TXD"),
	PINCTRL_PIN(23, "PMC_SPI_CLK"),
	PINCTRL_PIN(24, "PMIC_PWRGOOD"),
	PINCTRL_PIN(25, "PMIC_RESET_B"),
	PINCTRL_PIN(26, "PMIC_SDWN_B"),
	PINCTRL_PIN(27, "PMIC_BCUDISW2"),
	PINCTRL_PIN(28, "PMIC_BCUDISCRIT"),
	PINCTRL_PIN(29, "PMIC_THERMTRIP_B"),
	PINCTRL_PIN(30, "PMIC_STDBY"),
	PINCTRL_PIN(31, "PROCHOT_B"),
	PINCTRL_PIN(32, "PMIC_I2C_SCL"),
	PINCTRL_PIN(33, "PMIC_I2C_SDA"),
	PINCTRL_PIN(34, "AVS_I2S1_MCLK"),
	PINCTRL_PIN(35, "AVS_I2S1_BCLK"),
	PINCTRL_PIN(36, "AVS_I2S1_WS_SYNC"),
	PINCTRL_PIN(37, "AVS_I2S1_SDI"),
	PINCTRL_PIN(38, "AVS_I2S1_SDO"),
	PINCTRL_PIN(39, "AVS_M_CLK_A1"),
	PINCTRL_PIN(40, "AVS_M_CLK_B1"),
	PINCTRL_PIN(41, "AVS_M_DATA_1"),
	PINCTRL_PIN(42, "AVS_M_CLK_AB2"),
	PINCTRL_PIN(43, "AVS_M_DATA_2"),
	PINCTRL_PIN(44, "AVS_I2S2_MCLK"),
	PINCTRL_PIN(45, "AVS_I2S2_BCLK"),
	PINCTRL_PIN(46, "AVS_I2S2_WS_SYNC"),
	PINCTRL_PIN(47, "AVS_I2S2_SDI"),
	PINCTRL_PIN(48, "AVS_I2S2_SDO"),
	PINCTRL_PIN(49, "AVS_I2S3_BCLK"),
	PINCTRL_PIN(50, "AVS_I2S3_WS_SYNC"),
	PINCTRL_PIN(51, "AVS_I2S3_SDI"),
	PINCTRL_PIN(52, "AVS_I2S3_SDO"),
	PINCTRL_PIN(53, "FST_SPI_CS0_B"),
	PINCTRL_PIN(54, "FST_SPI_CS1_B"),
	PINCTRL_PIN(55, "FST_SPI_MOSI_IO0"),
	PINCTRL_PIN(56, "FST_SPI_MISO_IO1"),
	PINCTRL_PIN(57, "FST_SPI_IO2"),
	PINCTRL_PIN(58, "FST_SPI_IO3"),
	PINCTRL_PIN(59, "FST_SPI_CLK"),
	PINCTRL_PIN(60, "FST_SPI_CLK_FB"),
	PINCTRL_PIN(61, "GP_SSP_0_CLK"),
	PINCTRL_PIN(62, "GP_SSP_0_FS0"),
	PINCTRL_PIN(63, "GP_SSP_0_FS1"),
	PINCTRL_PIN(64, "GP_SSP_0_RXD"),
	PINCTRL_PIN(65, "GP_SSP_0_TXD"),
	PINCTRL_PIN(66, "GP_SSP_1_CLK"),
	PINCTRL_PIN(67, "GP_SSP_1_FS0"),
	PINCTRL_PIN(68, "GP_SSP_1_FS1"),
	PINCTRL_PIN(69, "GP_SSP_1_RXD"),
	PINCTRL_PIN(70, "GP_SSP_1_TXD"),
	PINCTRL_PIN(71, "GP_SSP_2_CLK"),
	PINCTRL_PIN(72, "GP_SSP_2_FS0"),
	PINCTRL_PIN(73, "GP_SSP_2_FS1"),
	PINCTRL_PIN(74, "GP_SSP_2_FS2"),
	PINCTRL_PIN(75, "GP_SSP_2_RXD"),
	PINCTRL_PIN(76, "GP_SSP_2_TXD"),
};

static const unsigned int apl_northwest_ssp0_pins[] = { 61, 62, 63, 64, 65 };
static const unsigned int apl_northwest_ssp1_pins[] = { 66, 67, 68, 69, 70 };
static const unsigned int apl_northwest_ssp2_pins[] = { 71, 72, 73, 74, 75, 76 };
static const unsigned int apl_northwest_uart3_pins[] = { 67, 68, 69, 70 };

static const struct intel_pingroup apl_northwest_groups[] = {
	PIN_GROUP("ssp0_grp", apl_northwest_ssp0_pins, 1),
	PIN_GROUP("ssp1_grp", apl_northwest_ssp1_pins, 1),
	PIN_GROUP("ssp2_grp", apl_northwest_ssp2_pins, 1),
	PIN_GROUP("uart3_grp", apl_northwest_uart3_pins, 2),
};

static const char * const apl_northwest_ssp0_groups[] = { "ssp0_grp" };
static const char * const apl_northwest_ssp1_groups[] = { "ssp1_grp" };
static const char * const apl_northwest_ssp2_groups[] = { "ssp2_grp" };
static const char * const apl_northwest_uart3_groups[] = { "uart3_grp" };

static const struct intel_function apl_northwest_functions[] = {
	FUNCTION("ssp0", apl_northwest_ssp0_groups),
	FUNCTION("ssp1", apl_northwest_ssp1_groups),
	FUNCTION("ssp2", apl_northwest_ssp2_groups),
	FUNCTION("uart3", apl_northwest_uart3_groups),
};

static const struct intel_community apl_northwest_communities[] = {
	BXT_COMMUNITY(0, 76),
};

static const struct intel_pinctrl_soc_data apl_northwest_soc_data = {
	.uid = "2",
	.pins = apl_northwest_pins,
	.npins = ARRAY_SIZE(apl_northwest_pins),
	.groups = apl_northwest_groups,
	.ngroups = ARRAY_SIZE(apl_northwest_groups),
	.functions = apl_northwest_functions,
	.nfunctions = ARRAY_SIZE(apl_northwest_functions),
	.communities = apl_northwest_communities,
	.ncommunities = ARRAY_SIZE(apl_northwest_communities),
};

static const struct pinctrl_pin_desc apl_west_pins[] = {
	PINCTRL_PIN(0, "LPSS_I2C0_SDA"),
	PINCTRL_PIN(1, "LPSS_I2C0_SCL"),
	PINCTRL_PIN(2, "LPSS_I2C1_SDA"),
	PINCTRL_PIN(3, "LPSS_I2C1_SCL"),
	PINCTRL_PIN(4, "LPSS_I2C2_SDA"),
	PINCTRL_PIN(5, "LPSS_I2C2_SCL"),
	PINCTRL_PIN(6, "LPSS_I2C3_SDA"),
	PINCTRL_PIN(7, "LPSS_I2C3_SCL"),
	PINCTRL_PIN(8, "LPSS_I2C4_SDA"),
	PINCTRL_PIN(9, "LPSS_I2C4_SCL"),
	PINCTRL_PIN(10, "LPSS_I2C5_SDA"),
	PINCTRL_PIN(11, "LPSS_I2C5_SCL"),
	PINCTRL_PIN(12, "LPSS_I2C6_SDA"),
	PINCTRL_PIN(13, "LPSS_I2C6_SCL"),
	PINCTRL_PIN(14, "LPSS_I2C7_SDA"),
	PINCTRL_PIN(15, "LPSS_I2C7_SCL"),
	PINCTRL_PIN(16, "ISH_GPIO_0"),
	PINCTRL_PIN(17, "ISH_GPIO_1"),
	PINCTRL_PIN(18, "ISH_GPIO_2"),
	PINCTRL_PIN(19, "ISH_GPIO_3"),
	PINCTRL_PIN(20, "ISH_GPIO_4"),
	PINCTRL_PIN(21, "ISH_GPIO_5"),
	PINCTRL_PIN(22, "ISH_GPIO_6"),
	PINCTRL_PIN(23, "ISH_GPIO_7"),
	PINCTRL_PIN(24, "ISH_GPIO_8"),
	PINCTRL_PIN(25, "ISH_GPIO_9"),
	PINCTRL_PIN(26, "PCIE_CLKREQ0_B"),
	PINCTRL_PIN(27, "PCIE_CLKREQ1_B"),
	PINCTRL_PIN(28, "PCIE_CLKREQ2_B"),
	PINCTRL_PIN(29, "PCIE_CLKREQ3_B"),
	PINCTRL_PIN(30, "OSC_CLK_OUT_0"),
	PINCTRL_PIN(31, "OSC_CLK_OUT_1"),
	PINCTRL_PIN(32, "OSC_CLK_OUT_2"),
	PINCTRL_PIN(33, "OSC_CLK_OUT_3"),
	PINCTRL_PIN(34, "OSC_CLK_OUT_4"),
	PINCTRL_PIN(35, "PMU_AC_PRESENT"),
	PINCTRL_PIN(36, "PMU_BATLOW_B"),
	PINCTRL_PIN(37, "PMU_PLTRST_B"),
	PINCTRL_PIN(38, "PMU_PWRBTN_B"),
	PINCTRL_PIN(39, "PMU_RESETBUTTON_B"),
	PINCTRL_PIN(40, "PMU_SLP_S0_B"),
	PINCTRL_PIN(41, "PMU_SLP_S3_B"),
	PINCTRL_PIN(42, "PMU_SLP_S4_B"),
	PINCTRL_PIN(43, "PMU_SUSCLK"),
	PINCTRL_PIN(44, "PMU_WAKE_B"),
	PINCTRL_PIN(45, "SUS_STAT_B"),
	PINCTRL_PIN(46, "SUSPWRDNACK"),
};

static const unsigned int apl_west_i2c0_pins[] = { 0, 1 };
static const unsigned int apl_west_i2c1_pins[] = { 2, 3 };
static const unsigned int apl_west_i2c2_pins[] = { 4, 5 };
static const unsigned int apl_west_i2c3_pins[] = { 6, 7 };
static const unsigned int apl_west_i2c4_pins[] = { 8, 9 };
static const unsigned int apl_west_i2c5_pins[] = { 10, 11 };
static const unsigned int apl_west_i2c6_pins[] = { 12, 13 };
static const unsigned int apl_west_i2c7_pins[] = { 14, 15 };
static const unsigned int apl_west_uart2_pins[] = { 20, 21, 22, 34 };

static const struct intel_pingroup apl_west_groups[] = {
	PIN_GROUP("i2c0_grp", apl_west_i2c0_pins, 1),
	PIN_GROUP("i2c1_grp", apl_west_i2c1_pins, 1),
	PIN_GROUP("i2c2_grp", apl_west_i2c2_pins, 1),
	PIN_GROUP("i2c3_grp", apl_west_i2c3_pins, 1),
	PIN_GROUP("i2c4_grp", apl_west_i2c4_pins, 1),
	PIN_GROUP("i2c5_grp", apl_west_i2c5_pins, 1),
	PIN_GROUP("i2c6_grp", apl_west_i2c6_pins, 1),
	PIN_GROUP("i2c7_grp", apl_west_i2c7_pins, 1),
	PIN_GROUP("uart2_grp", apl_west_uart2_pins, 3),
};

static const char * const apl_west_i2c0_groups[] = { "i2c0_grp" };
static const char * const apl_west_i2c1_groups[] = { "i2c1_grp" };
static const char * const apl_west_i2c2_groups[] = { "i2c2_grp" };
static const char * const apl_west_i2c3_groups[] = { "i2c3_grp" };
static const char * const apl_west_i2c4_groups[] = { "i2c4_grp" };
static const char * const apl_west_i2c5_groups[] = { "i2c5_grp" };
static const char * const apl_west_i2c6_groups[] = { "i2c6_grp" };
static const char * const apl_west_i2c7_groups[] = { "i2c7_grp" };
static const char * const apl_west_uart2_groups[] = { "uart2_grp" };

static const struct intel_function apl_west_functions[] = {
	FUNCTION("i2c0", apl_west_i2c0_groups),
	FUNCTION("i2c1", apl_west_i2c1_groups),
	FUNCTION("i2c2", apl_west_i2c2_groups),
	FUNCTION("i2c3", apl_west_i2c3_groups),
	FUNCTION("i2c4", apl_west_i2c4_groups),
	FUNCTION("i2c5", apl_west_i2c5_groups),
	FUNCTION("i2c6", apl_west_i2c6_groups),
	FUNCTION("i2c7", apl_west_i2c7_groups),
	FUNCTION("uart2", apl_west_uart2_groups),
};

static const struct intel_community apl_west_communities[] = {
	BXT_COMMUNITY(0, 46),
};

static const struct intel_pinctrl_soc_data apl_west_soc_data = {
	.uid = "3",
	.pins = apl_west_pins,
	.npins = ARRAY_SIZE(apl_west_pins),
	.groups = apl_west_groups,
	.ngroups = ARRAY_SIZE(apl_west_groups),
	.functions = apl_west_functions,
	.nfunctions = ARRAY_SIZE(apl_west_functions),
	.communities = apl_west_communities,
	.ncommunities = ARRAY_SIZE(apl_west_communities),
};

static const struct pinctrl_pin_desc apl_southwest_pins[] = {
	PINCTRL_PIN(0, "PCIE_WAKE0_B"),
	PINCTRL_PIN(1, "PCIE_WAKE1_B"),
	PINCTRL_PIN(2, "PCIE_WAKE2_B"),
	PINCTRL_PIN(3, "PCIE_WAKE3_B"),
	PINCTRL_PIN(4, "EMMC0_CLK"),
	PINCTRL_PIN(5, "EMMC0_D0"),
	PINCTRL_PIN(6, "EMMC0_D1"),
	PINCTRL_PIN(7, "EMMC0_D2"),
	PINCTRL_PIN(8, "EMMC0_D3"),
	PINCTRL_PIN(9, "EMMC0_D4"),
	PINCTRL_PIN(10, "EMMC0_D5"),
	PINCTRL_PIN(11, "EMMC0_D6"),
	PINCTRL_PIN(12, "EMMC0_D7"),
	PINCTRL_PIN(13, "EMMC0_CMD"),
	PINCTRL_PIN(14, "SDIO_CLK"),
	PINCTRL_PIN(15, "SDIO_D0"),
	PINCTRL_PIN(16, "SDIO_D1"),
	PINCTRL_PIN(17, "SDIO_D2"),
	PINCTRL_PIN(18, "SDIO_D3"),
	PINCTRL_PIN(19, "SDIO_CMD"),
	PINCTRL_PIN(20, "SDCARD_CLK"),
	PINCTRL_PIN(21, "SDCARD_CLK_FB"),
	PINCTRL_PIN(22, "SDCARD_D0"),
	PINCTRL_PIN(23, "SDCARD_D1"),
	PINCTRL_PIN(24, "SDCARD_D2"),
	PINCTRL_PIN(25, "SDCARD_D3"),
	PINCTRL_PIN(26, "SDCARD_CD_B"),
	PINCTRL_PIN(27, "SDCARD_CMD"),
	PINCTRL_PIN(28, "SDCARD_LVL_WP"),
	PINCTRL_PIN(29, "EMMC0_STROBE"),
	PINCTRL_PIN(30, "SDIO_PWR_DOWN_B"),
	PINCTRL_PIN(31, "SMB_ALERTB"),
	PINCTRL_PIN(32, "SMB_CLK"),
	PINCTRL_PIN(33, "SMB_DATA"),
	PINCTRL_PIN(34, "LPC_ILB_SERIRQ"),
	PINCTRL_PIN(35, "LPC_CLKOUT0"),
	PINCTRL_PIN(36, "LPC_CLKOUT1"),
	PINCTRL_PIN(37, "LPC_AD0"),
	PINCTRL_PIN(38, "LPC_AD1"),
	PINCTRL_PIN(39, "LPC_AD2"),
	PINCTRL_PIN(40, "LPC_AD3"),
	PINCTRL_PIN(41, "LPC_CLKRUNB"),
	PINCTRL_PIN(42, "LPC_FRAMEB"),
};

static const unsigned int apl_southwest_emmc0_pins[] = {
	4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 29,
};
static const unsigned int apl_southwest_sdio_pins[] = {
	14, 15, 16, 17, 18, 19, 30,
};
static const unsigned int apl_southwest_sdcard_pins[] = {
	20, 21, 22, 23, 24, 25, 26, 27, 28,
};
static const unsigned int apl_southwest_i2c7_pins[] = { 32, 33 };

static const struct intel_pingroup apl_southwest_groups[] = {
	PIN_GROUP("emmc0_grp", apl_southwest_emmc0_pins, 1),
	PIN_GROUP("sdio_grp", apl_southwest_sdio_pins, 1),
	PIN_GROUP("sdcard_grp", apl_southwest_sdcard_pins, 1),
	PIN_GROUP("i2c7_grp", apl_southwest_i2c7_pins, 2),
};

static const char * const apl_southwest_emmc0_groups[] = { "emmc0_grp" };
static const char * const apl_southwest_sdio_groups[] = { "sdio_grp" };
static const char * const apl_southwest_sdcard_groups[] = { "sdcard_grp" };
static const char * const apl_southwest_i2c7_groups[] = { "i2c7_grp" };

static const struct intel_function apl_southwest_functions[] = {
	FUNCTION("emmc0", apl_southwest_emmc0_groups),
	FUNCTION("sdio", apl_southwest_sdio_groups),
	FUNCTION("sdcard", apl_southwest_sdcard_groups),
	FUNCTION("i2c7", apl_southwest_i2c7_groups),
};

static const struct intel_community apl_southwest_communities[] = {
	BXT_COMMUNITY(0, 42),
};

static const struct intel_pinctrl_soc_data apl_southwest_soc_data = {
	.uid = "4",
	.pins = apl_southwest_pins,
	.npins = ARRAY_SIZE(apl_southwest_pins),
	.groups = apl_southwest_groups,
	.ngroups = ARRAY_SIZE(apl_southwest_groups),
	.functions = apl_southwest_functions,
	.nfunctions = ARRAY_SIZE(apl_southwest_functions),
	.communities = apl_southwest_communities,
	.ncommunities = ARRAY_SIZE(apl_southwest_communities),
};

static const struct intel_pinctrl_soc_data *apl_pinctrl_soc_data[] = {
	&apl_north_soc_data,
	&apl_northwest_soc_data,
	&apl_west_soc_data,
	&apl_southwest_soc_data,
	NULL
};

static const struct acpi_device_id bxt_pinctrl_acpi_match[] = {
	{ "INT3452", (kernel_ulong_t)apl_pinctrl_soc_data },
	{ "INT34D1", (kernel_ulong_t)bxt_pinctrl_soc_data },
	{ }
};
MODULE_DEVICE_TABLE(acpi, bxt_pinctrl_acpi_match);

static const struct platform_device_id bxt_pinctrl_platform_ids[] = {
	{ "apollolake-pinctrl", (kernel_ulong_t)apl_pinctrl_soc_data },
	{ "broxton-pinctrl", (kernel_ulong_t)bxt_pinctrl_soc_data },
	{ }
};

static INTEL_PINCTRL_PM_OPS(bxt_pinctrl_pm_ops);

static struct platform_driver bxt_pinctrl_driver = {
	.probe = intel_pinctrl_probe_by_uid,
	.driver = {
		.name = "broxton-pinctrl",
		.acpi_match_table = bxt_pinctrl_acpi_match,
		.pm = &bxt_pinctrl_pm_ops,
	},
	.id_table = bxt_pinctrl_platform_ids,
};

static int __init bxt_pinctrl_init(void)
{
	return platform_driver_register(&bxt_pinctrl_driver);
}
subsys_initcall(bxt_pinctrl_init);

static void __exit bxt_pinctrl_exit(void)
{
	platform_driver_unregister(&bxt_pinctrl_driver);
}
module_exit(bxt_pinctrl_exit);

MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
MODULE_DESCRIPTION("Intel Broxton SoC pinctrl/GPIO driver");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:broxton-pinctrl");
