cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-broxton.c (36259B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Intel Broxton SoC pinctrl/GPIO driver
      4 *
      5 * Copyright (C) 2015, 2016 Intel Corporation
      6 * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
      7 */
      8
      9#include <linux/mod_devicetable.h>
     10#include <linux/module.h>
     11#include <linux/platform_device.h>
     12
     13#include <linux/pinctrl/pinctrl.h>
     14
     15#include "pinctrl-intel.h"
     16
     17#define BXT_PAD_OWN	0x020
     18#define BXT_PADCFGLOCK	0x060
     19#define BXT_HOSTSW_OWN	0x080
     20#define BXT_GPI_IS	0x100
     21#define BXT_GPI_IE	0x110
     22
     23#define BXT_COMMUNITY(s, e)				\
     24	{						\
     25		.padown_offset = BXT_PAD_OWN,		\
     26		.padcfglock_offset = BXT_PADCFGLOCK,	\
     27		.hostown_offset = BXT_HOSTSW_OWN,	\
     28		.is_offset = BXT_GPI_IS,		\
     29		.ie_offset = BXT_GPI_IE,		\
     30		.gpp_size = 32,                         \
     31		.pin_base = (s),			\
     32		.npins = ((e) - (s) + 1),		\
     33	}
     34
     35/* BXT */
     36static const struct pinctrl_pin_desc bxt_north_pins[] = {
     37	PINCTRL_PIN(0, "GPIO_0"),
     38	PINCTRL_PIN(1, "GPIO_1"),
     39	PINCTRL_PIN(2, "GPIO_2"),
     40	PINCTRL_PIN(3, "GPIO_3"),
     41	PINCTRL_PIN(4, "GPIO_4"),
     42	PINCTRL_PIN(5, "GPIO_5"),
     43	PINCTRL_PIN(6, "GPIO_6"),
     44	PINCTRL_PIN(7, "GPIO_7"),
     45	PINCTRL_PIN(8, "GPIO_8"),
     46	PINCTRL_PIN(9, "GPIO_9"),
     47	PINCTRL_PIN(10, "GPIO_10"),
     48	PINCTRL_PIN(11, "GPIO_11"),
     49	PINCTRL_PIN(12, "GPIO_12"),
     50	PINCTRL_PIN(13, "GPIO_13"),
     51	PINCTRL_PIN(14, "GPIO_14"),
     52	PINCTRL_PIN(15, "GPIO_15"),
     53	PINCTRL_PIN(16, "GPIO_16"),
     54	PINCTRL_PIN(17, "GPIO_17"),
     55	PINCTRL_PIN(18, "GPIO_18"),
     56	PINCTRL_PIN(19, "GPIO_19"),
     57	PINCTRL_PIN(20, "GPIO_20"),
     58	PINCTRL_PIN(21, "GPIO_21"),
     59	PINCTRL_PIN(22, "GPIO_22"),
     60	PINCTRL_PIN(23, "GPIO_23"),
     61	PINCTRL_PIN(24, "GPIO_24"),
     62	PINCTRL_PIN(25, "GPIO_25"),
     63	PINCTRL_PIN(26, "GPIO_26"),
     64	PINCTRL_PIN(27, "GPIO_27"),
     65	PINCTRL_PIN(28, "GPIO_28"),
     66	PINCTRL_PIN(29, "GPIO_29"),
     67	PINCTRL_PIN(30, "GPIO_30"),
     68	PINCTRL_PIN(31, "GPIO_31"),
     69	PINCTRL_PIN(32, "GPIO_32"),
     70	PINCTRL_PIN(33, "GPIO_33"),
     71	PINCTRL_PIN(34, "PWM0"),
     72	PINCTRL_PIN(35, "PWM1"),
     73	PINCTRL_PIN(36, "PWM2"),
     74	PINCTRL_PIN(37, "PWM3"),
     75	PINCTRL_PIN(38, "LPSS_UART0_RXD"),
     76	PINCTRL_PIN(39, "LPSS_UART0_TXD"),
     77	PINCTRL_PIN(40, "LPSS_UART0_RTS_B"),
     78	PINCTRL_PIN(41, "LPSS_UART0_CTS_B"),
     79	PINCTRL_PIN(42, "LPSS_UART1_RXD"),
     80	PINCTRL_PIN(43, "LPSS_UART1_TXD"),
     81	PINCTRL_PIN(44, "LPSS_UART1_RTS_B"),
     82	PINCTRL_PIN(45, "LPSS_UART1_CTS_B"),
     83	PINCTRL_PIN(46, "LPSS_UART2_RXD"),
     84	PINCTRL_PIN(47, "LPSS_UART2_TXD"),
     85	PINCTRL_PIN(48, "LPSS_UART2_RTS_B"),
     86	PINCTRL_PIN(49, "LPSS_UART2_CTS_B"),
     87	PINCTRL_PIN(50, "ISH_UART0_RXD"),
     88	PINCTRL_PIN(51, "ISH_UART0_TXT"),
     89	PINCTRL_PIN(52, "ISH_UART0_RTS_B"),
     90	PINCTRL_PIN(53, "ISH_UART0_CTS_B"),
     91	PINCTRL_PIN(54, "ISH_UART1_RXD"),
     92	PINCTRL_PIN(55, "ISH_UART1_TXT"),
     93	PINCTRL_PIN(56, "ISH_UART1_RTS_B"),
     94	PINCTRL_PIN(57, "ISH_UART1_CTS_B"),
     95	PINCTRL_PIN(58, "ISH_UART2_RXD"),
     96	PINCTRL_PIN(59, "ISH_UART2_TXD"),
     97	PINCTRL_PIN(60, "ISH_UART2_RTS_B"),
     98	PINCTRL_PIN(61, "ISH_UART2_CTS_B"),
     99	PINCTRL_PIN(62, "GP_CAMERASB00"),
    100	PINCTRL_PIN(63, "GP_CAMERASB01"),
    101	PINCTRL_PIN(64, "GP_CAMERASB02"),
    102	PINCTRL_PIN(65, "GP_CAMERASB03"),
    103	PINCTRL_PIN(66, "GP_CAMERASB04"),
    104	PINCTRL_PIN(67, "GP_CAMERASB05"),
    105	PINCTRL_PIN(68, "GP_CAMERASB06"),
    106	PINCTRL_PIN(69, "GP_CAMERASB07"),
    107	PINCTRL_PIN(70, "GP_CAMERASB08"),
    108	PINCTRL_PIN(71, "GP_CAMERASB09"),
    109	PINCTRL_PIN(72, "GP_CAMERASB10"),
    110	PINCTRL_PIN(73, "GP_CAMERASB11"),
    111	PINCTRL_PIN(74, "TCK"),
    112	PINCTRL_PIN(75, "TRST_B"),
    113	PINCTRL_PIN(76, "TMS"),
    114	PINCTRL_PIN(77, "TDI"),
    115	PINCTRL_PIN(78, "CX_PMODE"),
    116	PINCTRL_PIN(79, "CX_PREQ_B"),
    117	PINCTRL_PIN(80, "JTAGX"),
    118	PINCTRL_PIN(81, "CX_PRDY_B"),
    119	PINCTRL_PIN(82, "TDO"),
    120};
    121
    122static const unsigned int bxt_north_pwm0_pins[] = { 34 };
    123static const unsigned int bxt_north_pwm1_pins[] = { 35 };
    124static const unsigned int bxt_north_pwm2_pins[] = { 36 };
    125static const unsigned int bxt_north_pwm3_pins[] = { 37 };
    126static const unsigned int bxt_north_uart0_pins[] = { 38, 39, 40, 41 };
    127static const unsigned int bxt_north_uart1_pins[] = { 42, 43, 44, 45 };
    128static const unsigned int bxt_north_uart2_pins[] = { 46, 47, 48, 49 };
    129static const unsigned int bxt_north_uart0b_pins[] = { 50, 51, 52, 53 };
    130static const unsigned int bxt_north_uart1b_pins[] = { 54, 55, 56, 57 };
    131static const unsigned int bxt_north_uart2b_pins[] = { 58, 59, 60, 61 };
    132static const unsigned int bxt_north_uart3_pins[] = { 58, 59, 60, 61 };
    133
    134static const struct intel_pingroup bxt_north_groups[] = {
    135	PIN_GROUP("pwm0_grp", bxt_north_pwm0_pins, 1),
    136	PIN_GROUP("pwm1_grp", bxt_north_pwm1_pins, 1),
    137	PIN_GROUP("pwm2_grp", bxt_north_pwm2_pins, 1),
    138	PIN_GROUP("pwm3_grp", bxt_north_pwm3_pins, 1),
    139	PIN_GROUP("uart0_grp", bxt_north_uart0_pins, 1),
    140	PIN_GROUP("uart1_grp", bxt_north_uart1_pins, 1),
    141	PIN_GROUP("uart2_grp", bxt_north_uart2_pins, 1),
    142	PIN_GROUP("uart0b_grp", bxt_north_uart0b_pins, 2),
    143	PIN_GROUP("uart1b_grp", bxt_north_uart1b_pins, 2),
    144	PIN_GROUP("uart2b_grp", bxt_north_uart2b_pins, 2),
    145	PIN_GROUP("uart3_grp", bxt_north_uart3_pins, 3),
    146};
    147
    148static const char * const bxt_north_pwm0_groups[] = { "pwm0_grp" };
    149static const char * const bxt_north_pwm1_groups[] = { "pwm1_grp" };
    150static const char * const bxt_north_pwm2_groups[] = { "pwm2_grp" };
    151static const char * const bxt_north_pwm3_groups[] = { "pwm3_grp" };
    152static const char * const bxt_north_uart0_groups[] = {
    153	"uart0_grp", "uart0b_grp",
    154};
    155static const char * const bxt_north_uart1_groups[] = {
    156	"uart1_grp", "uart1b_grp",
    157};
    158static const char * const bxt_north_uart2_groups[] = {
    159	"uart2_grp", "uart2b_grp",
    160};
    161static const char * const bxt_north_uart3_groups[] = { "uart3_grp" };
    162
    163static const struct intel_function bxt_north_functions[] = {
    164	FUNCTION("pwm0", bxt_north_pwm0_groups),
    165	FUNCTION("pwm1", bxt_north_pwm1_groups),
    166	FUNCTION("pwm2", bxt_north_pwm2_groups),
    167	FUNCTION("pwm3", bxt_north_pwm3_groups),
    168	FUNCTION("uart0", bxt_north_uart0_groups),
    169	FUNCTION("uart1", bxt_north_uart1_groups),
    170	FUNCTION("uart2", bxt_north_uart2_groups),
    171	FUNCTION("uart3", bxt_north_uart3_groups),
    172};
    173
    174static const struct intel_community bxt_north_communities[] = {
    175	BXT_COMMUNITY(0, 82),
    176};
    177
    178static const struct intel_pinctrl_soc_data bxt_north_soc_data = {
    179	.uid = "1",
    180	.pins = bxt_north_pins,
    181	.npins = ARRAY_SIZE(bxt_north_pins),
    182	.groups = bxt_north_groups,
    183	.ngroups = ARRAY_SIZE(bxt_north_groups),
    184	.functions = bxt_north_functions,
    185	.nfunctions = ARRAY_SIZE(bxt_north_functions),
    186	.communities = bxt_north_communities,
    187	.ncommunities = ARRAY_SIZE(bxt_north_communities),
    188};
    189
    190static const struct pinctrl_pin_desc bxt_northwest_pins[] = {
    191	PINCTRL_PIN(0, "PMC_SPI_FS0"),
    192	PINCTRL_PIN(1, "PMC_SPI_FS1"),
    193	PINCTRL_PIN(2, "PMC_SPI_FS2"),
    194	PINCTRL_PIN(3, "PMC_SPI_RXD"),
    195	PINCTRL_PIN(4, "PMC_SPI_TXD"),
    196	PINCTRL_PIN(5, "PMC_SPI_CLK"),
    197	PINCTRL_PIN(6, "PMC_UART_RXD"),
    198	PINCTRL_PIN(7, "PMC_UART_TXD"),
    199	PINCTRL_PIN(8, "PMIC_PWRGOOD"),
    200	PINCTRL_PIN(9, "PMIC_RESET_B"),
    201	PINCTRL_PIN(10, "RTC_CLK"),
    202	PINCTRL_PIN(11, "PMIC_SDWN_B"),
    203	PINCTRL_PIN(12, "PMIC_BCUDISW2"),
    204	PINCTRL_PIN(13, "PMIC_BCUDISCRIT"),
    205	PINCTRL_PIN(14, "PMIC_THERMTRIP_B"),
    206	PINCTRL_PIN(15, "PMIC_STDBY"),
    207	PINCTRL_PIN(16, "SVID0_ALERT_B"),
    208	PINCTRL_PIN(17, "SVID0_DATA"),
    209	PINCTRL_PIN(18, "SVID0_CLK"),
    210	PINCTRL_PIN(19, "PMIC_I2C_SCL"),
    211	PINCTRL_PIN(20, "PMIC_I2C_SDA"),
    212	PINCTRL_PIN(21, "AVS_I2S1_MCLK"),
    213	PINCTRL_PIN(22, "AVS_I2S1_BCLK"),
    214	PINCTRL_PIN(23, "AVS_I2S1_WS_SYNC"),
    215	PINCTRL_PIN(24, "AVS_I2S1_SDI"),
    216	PINCTRL_PIN(25, "AVS_I2S1_SDO"),
    217	PINCTRL_PIN(26, "AVS_M_CLK_A1"),
    218	PINCTRL_PIN(27, "AVS_M_CLK_B1"),
    219	PINCTRL_PIN(28, "AVS_M_DATA_1"),
    220	PINCTRL_PIN(29, "AVS_M_CLK_AB2"),
    221	PINCTRL_PIN(30, "AVS_M_DATA_2"),
    222	PINCTRL_PIN(31, "AVS_I2S2_MCLK"),
    223	PINCTRL_PIN(32, "AVS_I2S2_BCLK"),
    224	PINCTRL_PIN(33, "AVS_I2S2_WS_SYNC"),
    225	PINCTRL_PIN(34, "AVS_I2S2_SDI"),
    226	PINCTRL_PIN(35, "AVS_I2S2_SDOK"),
    227	PINCTRL_PIN(36, "AVS_I2S3_BCLK"),
    228	PINCTRL_PIN(37, "AVS_I2S3_WS_SYNC"),
    229	PINCTRL_PIN(38, "AVS_I2S3_SDI"),
    230	PINCTRL_PIN(39, "AVS_I2S3_SDO"),
    231	PINCTRL_PIN(40, "AVS_I2S4_BCLK"),
    232	PINCTRL_PIN(41, "AVS_I2S4_WS_SYNC"),
    233	PINCTRL_PIN(42, "AVS_I2S4_SDI"),
    234	PINCTRL_PIN(43, "AVS_I2S4_SDO"),
    235	PINCTRL_PIN(44, "PROCHOT_B"),
    236	PINCTRL_PIN(45, "FST_SPI_CS0_B"),
    237	PINCTRL_PIN(46, "FST_SPI_CS1_B"),
    238	PINCTRL_PIN(47, "FST_SPI_MOSI_IO0"),
    239	PINCTRL_PIN(48, "FST_SPI_MISO_IO1"),
    240	PINCTRL_PIN(49, "FST_SPI_IO2"),
    241	PINCTRL_PIN(50, "FST_SPI_IO3"),
    242	PINCTRL_PIN(51, "FST_SPI_CLK"),
    243	PINCTRL_PIN(52, "FST_SPI_CLK_FB"),
    244	PINCTRL_PIN(53, "GP_SSP_0_CLK"),
    245	PINCTRL_PIN(54, "GP_SSP_0_FS0"),
    246	PINCTRL_PIN(55, "GP_SSP_0_FS1"),
    247	PINCTRL_PIN(56, "GP_SSP_0_FS2"),
    248	PINCTRL_PIN(57, "GP_SSP_0_RXD"),
    249	PINCTRL_PIN(58, "GP_SSP_0_TXD"),
    250	PINCTRL_PIN(59, "GP_SSP_1_CLK"),
    251	PINCTRL_PIN(60, "GP_SSP_1_FS0"),
    252	PINCTRL_PIN(61, "GP_SSP_1_FS1"),
    253	PINCTRL_PIN(62, "GP_SSP_1_FS2"),
    254	PINCTRL_PIN(63, "GP_SSP_1_FS3"),
    255	PINCTRL_PIN(64, "GP_SSP_1_RXD"),
    256	PINCTRL_PIN(65, "GP_SSP_1_TXD"),
    257	PINCTRL_PIN(66, "GP_SSP_2_CLK"),
    258	PINCTRL_PIN(67, "GP_SSP_2_FS0"),
    259	PINCTRL_PIN(68, "GP_SSP_2_FS1"),
    260	PINCTRL_PIN(69, "GP_SSP_2_FS2"),
    261	PINCTRL_PIN(70, "GP_SSP_2_RXD"),
    262	PINCTRL_PIN(71, "GP_SSP_2_TXD"),
    263};
    264
    265static const unsigned int bxt_northwest_ssp0_pins[] = { 53, 54, 55, 56, 57, 58 };
    266static const unsigned int bxt_northwest_ssp1_pins[] = {
    267	59, 60, 61, 62, 63, 64, 65
    268};
    269static const unsigned int bxt_northwest_ssp2_pins[] = { 66, 67, 68, 69, 70, 71 };
    270static const unsigned int bxt_northwest_uart3_pins[] = { 67, 68, 69, 70 };
    271
    272static const struct intel_pingroup bxt_northwest_groups[] = {
    273	PIN_GROUP("ssp0_grp", bxt_northwest_ssp0_pins, 1),
    274	PIN_GROUP("ssp1_grp", bxt_northwest_ssp1_pins, 1),
    275	PIN_GROUP("ssp2_grp", bxt_northwest_ssp2_pins, 1),
    276	PIN_GROUP("uart3_grp", bxt_northwest_uart3_pins, 2),
    277};
    278
    279static const char * const bxt_northwest_ssp0_groups[] = { "ssp0_grp" };
    280static const char * const bxt_northwest_ssp1_groups[] = { "ssp1_grp" };
    281static const char * const bxt_northwest_ssp2_groups[] = { "ssp2_grp" };
    282static const char * const bxt_northwest_uart3_groups[] = { "uart3_grp" };
    283
    284static const struct intel_function bxt_northwest_functions[] = {
    285	FUNCTION("ssp0", bxt_northwest_ssp0_groups),
    286	FUNCTION("ssp1", bxt_northwest_ssp1_groups),
    287	FUNCTION("ssp2", bxt_northwest_ssp2_groups),
    288	FUNCTION("uart3", bxt_northwest_uart3_groups),
    289};
    290
    291static const struct intel_community bxt_northwest_communities[] = {
    292	BXT_COMMUNITY(0, 71),
    293};
    294
    295static const struct intel_pinctrl_soc_data bxt_northwest_soc_data = {
    296	.uid = "2",
    297	.pins = bxt_northwest_pins,
    298	.npins = ARRAY_SIZE(bxt_northwest_pins),
    299	.groups = bxt_northwest_groups,
    300	.ngroups = ARRAY_SIZE(bxt_northwest_groups),
    301	.functions = bxt_northwest_functions,
    302	.nfunctions = ARRAY_SIZE(bxt_northwest_functions),
    303	.communities = bxt_northwest_communities,
    304	.ncommunities = ARRAY_SIZE(bxt_northwest_communities),
    305};
    306
    307static const struct pinctrl_pin_desc bxt_west_pins[] = {
    308	PINCTRL_PIN(0, "LPSS_I2C0_SDA"),
    309	PINCTRL_PIN(1, "LPSS_I2C0_SCL"),
    310	PINCTRL_PIN(2, "LPSS_I2C1_SDA"),
    311	PINCTRL_PIN(3, "LPSS_I2C1_SCL"),
    312	PINCTRL_PIN(4, "LPSS_I2C2_SDA"),
    313	PINCTRL_PIN(5, "LPSS_I2C2_SCL"),
    314	PINCTRL_PIN(6, "LPSS_I2C3_SDA"),
    315	PINCTRL_PIN(7, "LPSS_I2C3_SCL"),
    316	PINCTRL_PIN(8, "LPSS_I2C4_SDA"),
    317	PINCTRL_PIN(9, "LPSS_I2C4_SCL"),
    318	PINCTRL_PIN(10, "LPSS_I2C5_SDA"),
    319	PINCTRL_PIN(11, "LPSS_I2C5_SCL"),
    320	PINCTRL_PIN(12, "LPSS_I2C6_SDA"),
    321	PINCTRL_PIN(13, "LPSS_I2C6_SCL"),
    322	PINCTRL_PIN(14, "LPSS_I2C7_SDA"),
    323	PINCTRL_PIN(15, "LPSS_I2C7_SCL"),
    324	PINCTRL_PIN(16, "ISH_I2C0_SDA"),
    325	PINCTRL_PIN(17, "ISH_I2C0_SCL"),
    326	PINCTRL_PIN(18, "ISH_I2C1_SDA"),
    327	PINCTRL_PIN(19, "ISH_I2C1_SCL"),
    328	PINCTRL_PIN(20, "ISH_I2C2_SDA"),
    329	PINCTRL_PIN(21, "ISH_I2C2_SCL"),
    330	PINCTRL_PIN(22, "ISH_GPIO_0"),
    331	PINCTRL_PIN(23, "ISH_GPIO_1"),
    332	PINCTRL_PIN(24, "ISH_GPIO_2"),
    333	PINCTRL_PIN(25, "ISH_GPIO_3"),
    334	PINCTRL_PIN(26, "ISH_GPIO_4"),
    335	PINCTRL_PIN(27, "ISH_GPIO_5"),
    336	PINCTRL_PIN(28, "ISH_GPIO_6"),
    337	PINCTRL_PIN(29, "ISH_GPIO_7"),
    338	PINCTRL_PIN(30, "ISH_GPIO_8"),
    339	PINCTRL_PIN(31, "ISH_GPIO_9"),
    340	PINCTRL_PIN(32, "MODEM_CLKREQ"),
    341	PINCTRL_PIN(33, "DGCLKDBG_PMC_0"),
    342	PINCTRL_PIN(34, "DGCLKDBG_PMC_1"),
    343	PINCTRL_PIN(35, "DGCLKDBG_PMC_2"),
    344	PINCTRL_PIN(36, "DGCLKDBG_ICLK_0"),
    345	PINCTRL_PIN(37, "DGCLKDBG_ICLK_1"),
    346	PINCTRL_PIN(38, "OSC_CLK_OUT_0"),
    347	PINCTRL_PIN(39, "OSC_CLK_OUT_1"),
    348	PINCTRL_PIN(40, "OSC_CLK_OUT_2"),
    349	PINCTRL_PIN(41, "OSC_CLK_OUT_3"),
    350};
    351
    352static const unsigned int bxt_west_i2c0_pins[] = { 0, 1 };
    353static const unsigned int bxt_west_i2c1_pins[] = { 2, 3 };
    354static const unsigned int bxt_west_i2c2_pins[] = { 4, 5 };
    355static const unsigned int bxt_west_i2c3_pins[] = { 6, 7 };
    356static const unsigned int bxt_west_i2c4_pins[] = { 8, 9 };
    357static const unsigned int bxt_west_i2c5_pins[] = { 10, 11 };
    358static const unsigned int bxt_west_i2c6_pins[] = { 12, 13 };
    359static const unsigned int bxt_west_i2c7_pins[] = { 14, 15 };
    360static const unsigned int bxt_west_i2c5b_pins[] = { 16, 17 };
    361static const unsigned int bxt_west_i2c6b_pins[] = { 18, 19 };
    362static const unsigned int bxt_west_i2c7b_pins[] = { 20, 21 };
    363
    364static const struct intel_pingroup bxt_west_groups[] = {
    365	PIN_GROUP("i2c0_grp", bxt_west_i2c0_pins, 1),
    366	PIN_GROUP("i2c1_grp", bxt_west_i2c1_pins, 1),
    367	PIN_GROUP("i2c2_grp", bxt_west_i2c2_pins, 1),
    368	PIN_GROUP("i2c3_grp", bxt_west_i2c3_pins, 1),
    369	PIN_GROUP("i2c4_grp", bxt_west_i2c4_pins, 1),
    370	PIN_GROUP("i2c5_grp", bxt_west_i2c5_pins, 1),
    371	PIN_GROUP("i2c6_grp", bxt_west_i2c6_pins, 1),
    372	PIN_GROUP("i2c7_grp", bxt_west_i2c7_pins, 1),
    373	PIN_GROUP("i2c5b_grp", bxt_west_i2c5b_pins, 2),
    374	PIN_GROUP("i2c6b_grp", bxt_west_i2c6b_pins, 2),
    375	PIN_GROUP("i2c7b_grp", bxt_west_i2c7b_pins, 2),
    376};
    377
    378static const char * const bxt_west_i2c0_groups[] = { "i2c0_grp" };
    379static const char * const bxt_west_i2c1_groups[] = { "i2c1_grp" };
    380static const char * const bxt_west_i2c2_groups[] = { "i2c2_grp" };
    381static const char * const bxt_west_i2c3_groups[] = { "i2c3_grp" };
    382static const char * const bxt_west_i2c4_groups[] = { "i2c4_grp" };
    383static const char * const bxt_west_i2c5_groups[] = { "i2c5_grp", "i2c5b_grp" };
    384static const char * const bxt_west_i2c6_groups[] = { "i2c6_grp", "i2c6b_grp" };
    385static const char * const bxt_west_i2c7_groups[] = { "i2c7_grp", "i2c7b_grp" };
    386
    387static const struct intel_function bxt_west_functions[] = {
    388	FUNCTION("i2c0", bxt_west_i2c0_groups),
    389	FUNCTION("i2c1", bxt_west_i2c1_groups),
    390	FUNCTION("i2c2", bxt_west_i2c2_groups),
    391	FUNCTION("i2c3", bxt_west_i2c3_groups),
    392	FUNCTION("i2c4", bxt_west_i2c4_groups),
    393	FUNCTION("i2c5", bxt_west_i2c5_groups),
    394	FUNCTION("i2c6", bxt_west_i2c6_groups),
    395	FUNCTION("i2c7", bxt_west_i2c7_groups),
    396};
    397
    398static const struct intel_community bxt_west_communities[] = {
    399	BXT_COMMUNITY(0, 41),
    400};
    401
    402static const struct intel_pinctrl_soc_data bxt_west_soc_data = {
    403	.uid = "3",
    404	.pins = bxt_west_pins,
    405	.npins = ARRAY_SIZE(bxt_west_pins),
    406	.groups = bxt_west_groups,
    407	.ngroups = ARRAY_SIZE(bxt_west_groups),
    408	.functions = bxt_west_functions,
    409	.nfunctions = ARRAY_SIZE(bxt_west_functions),
    410	.communities = bxt_west_communities,
    411	.ncommunities = ARRAY_SIZE(bxt_west_communities),
    412};
    413
    414static const struct pinctrl_pin_desc bxt_southwest_pins[] = {
    415	PINCTRL_PIN(0, "EMMC0_CLK"),
    416	PINCTRL_PIN(1, "EMMC0_D0"),
    417	PINCTRL_PIN(2, "EMMC0_D1"),
    418	PINCTRL_PIN(3, "EMMC0_D2"),
    419	PINCTRL_PIN(4, "EMMC0_D3"),
    420	PINCTRL_PIN(5, "EMMC0_D4"),
    421	PINCTRL_PIN(6, "EMMC0_D5"),
    422	PINCTRL_PIN(7, "EMMC0_D6"),
    423	PINCTRL_PIN(8, "EMMC0_D7"),
    424	PINCTRL_PIN(9, "EMMC0_CMD"),
    425	PINCTRL_PIN(10, "SDIO_CLK"),
    426	PINCTRL_PIN(11, "SDIO_D0"),
    427	PINCTRL_PIN(12, "SDIO_D1"),
    428	PINCTRL_PIN(13, "SDIO_D2"),
    429	PINCTRL_PIN(14, "SDIO_D3"),
    430	PINCTRL_PIN(15, "SDIO_CMD"),
    431	PINCTRL_PIN(16, "SDCARD_CLK"),
    432	PINCTRL_PIN(17, "SDCARD_D0"),
    433	PINCTRL_PIN(18, "SDCARD_D1"),
    434	PINCTRL_PIN(19, "SDCARD_D2"),
    435	PINCTRL_PIN(20, "SDCARD_D3"),
    436	PINCTRL_PIN(21, "SDCARD_CD_B"),
    437	PINCTRL_PIN(22, "SDCARD_CMD"),
    438	PINCTRL_PIN(23, "SDCARD_LVL_CLK_FB"),
    439	PINCTRL_PIN(24, "SDCARD_LVL_CMD_DIR"),
    440	PINCTRL_PIN(25, "SDCARD_LVL_DAT_DIR"),
    441	PINCTRL_PIN(26, "EMMC0_STROBE"),
    442	PINCTRL_PIN(27, "SDIO_PWR_DOWN_B"),
    443	PINCTRL_PIN(28, "SDCARD_PWR_DOWN_B"),
    444	PINCTRL_PIN(29, "SDCARD_LVL_SEL"),
    445	PINCTRL_PIN(30, "SDCARD_LVL_WP"),
    446};
    447
    448static const unsigned int bxt_southwest_emmc0_pins[] = {
    449	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 26,
    450};
    451static const unsigned int bxt_southwest_sdio_pins[] = {
    452	10, 11, 12, 13, 14, 15, 27,
    453};
    454static const unsigned int bxt_southwest_sdcard_pins[] = {
    455	16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
    456};
    457
    458static const struct intel_pingroup bxt_southwest_groups[] = {
    459	PIN_GROUP("emmc0_grp", bxt_southwest_emmc0_pins, 1),
    460	PIN_GROUP("sdio_grp", bxt_southwest_sdio_pins, 1),
    461	PIN_GROUP("sdcard_grp", bxt_southwest_sdcard_pins, 1),
    462};
    463
    464static const char * const bxt_southwest_emmc0_groups[] = { "emmc0_grp" };
    465static const char * const bxt_southwest_sdio_groups[] = { "sdio_grp" };
    466static const char * const bxt_southwest_sdcard_groups[] = { "sdcard_grp" };
    467
    468static const struct intel_function bxt_southwest_functions[] = {
    469	FUNCTION("emmc0", bxt_southwest_emmc0_groups),
    470	FUNCTION("sdio", bxt_southwest_sdio_groups),
    471	FUNCTION("sdcard", bxt_southwest_sdcard_groups),
    472};
    473
    474static const struct intel_community bxt_southwest_communities[] = {
    475	BXT_COMMUNITY(0, 30),
    476};
    477
    478static const struct intel_pinctrl_soc_data bxt_southwest_soc_data = {
    479	.uid = "4",
    480	.pins = bxt_southwest_pins,
    481	.npins = ARRAY_SIZE(bxt_southwest_pins),
    482	.groups = bxt_southwest_groups,
    483	.ngroups = ARRAY_SIZE(bxt_southwest_groups),
    484	.functions = bxt_southwest_functions,
    485	.nfunctions = ARRAY_SIZE(bxt_southwest_functions),
    486	.communities = bxt_southwest_communities,
    487	.ncommunities = ARRAY_SIZE(bxt_southwest_communities),
    488};
    489
    490static const struct pinctrl_pin_desc bxt_south_pins[] = {
    491	PINCTRL_PIN(0, "HV_DDI0_DDC_SDA"),
    492	PINCTRL_PIN(1, "HV_DDI0_DDC_SCL"),
    493	PINCTRL_PIN(2, "HV_DDI1_DDC_SDA"),
    494	PINCTRL_PIN(3, "HV_DDI1_DDC_SCL"),
    495	PINCTRL_PIN(4, "DBI_SDA"),
    496	PINCTRL_PIN(5, "DBI_SCL"),
    497	PINCTRL_PIN(6, "PANEL0_VDDEN"),
    498	PINCTRL_PIN(7, "PANEL0_BKLTEN"),
    499	PINCTRL_PIN(8, "PANEL0_BKLTCTL"),
    500	PINCTRL_PIN(9, "PANEL1_VDDEN"),
    501	PINCTRL_PIN(10, "PANEL1_BKLTEN"),
    502	PINCTRL_PIN(11, "PANEL1_BKLTCTL"),
    503	PINCTRL_PIN(12, "DBI_CSX"),
    504	PINCTRL_PIN(13, "DBI_RESX"),
    505	PINCTRL_PIN(14, "GP_INTD_DSI_TE1"),
    506	PINCTRL_PIN(15, "GP_INTD_DSI_TE2"),
    507	PINCTRL_PIN(16, "USB_OC0_B"),
    508	PINCTRL_PIN(17, "USB_OC1_B"),
    509	PINCTRL_PIN(18, "MEX_WAKE0_B"),
    510	PINCTRL_PIN(19, "MEX_WAKE1_B"),
    511};
    512
    513static const struct intel_community bxt_south_communities[] = {
    514	BXT_COMMUNITY(0, 19),
    515};
    516
    517static const struct intel_pinctrl_soc_data bxt_south_soc_data = {
    518	.uid = "5",
    519	.pins = bxt_south_pins,
    520	.npins = ARRAY_SIZE(bxt_south_pins),
    521	.communities = bxt_south_communities,
    522	.ncommunities = ARRAY_SIZE(bxt_south_communities),
    523};
    524
    525static const struct intel_pinctrl_soc_data *bxt_pinctrl_soc_data[] = {
    526	&bxt_north_soc_data,
    527	&bxt_northwest_soc_data,
    528	&bxt_west_soc_data,
    529	&bxt_southwest_soc_data,
    530	&bxt_south_soc_data,
    531	NULL
    532};
    533
    534/* APL */
    535static const struct pinctrl_pin_desc apl_north_pins[] = {
    536	PINCTRL_PIN(0, "GPIO_0"),
    537	PINCTRL_PIN(1, "GPIO_1"),
    538	PINCTRL_PIN(2, "GPIO_2"),
    539	PINCTRL_PIN(3, "GPIO_3"),
    540	PINCTRL_PIN(4, "GPIO_4"),
    541	PINCTRL_PIN(5, "GPIO_5"),
    542	PINCTRL_PIN(6, "GPIO_6"),
    543	PINCTRL_PIN(7, "GPIO_7"),
    544	PINCTRL_PIN(8, "GPIO_8"),
    545	PINCTRL_PIN(9, "GPIO_9"),
    546	PINCTRL_PIN(10, "GPIO_10"),
    547	PINCTRL_PIN(11, "GPIO_11"),
    548	PINCTRL_PIN(12, "GPIO_12"),
    549	PINCTRL_PIN(13, "GPIO_13"),
    550	PINCTRL_PIN(14, "GPIO_14"),
    551	PINCTRL_PIN(15, "GPIO_15"),
    552	PINCTRL_PIN(16, "GPIO_16"),
    553	PINCTRL_PIN(17, "GPIO_17"),
    554	PINCTRL_PIN(18, "GPIO_18"),
    555	PINCTRL_PIN(19, "GPIO_19"),
    556	PINCTRL_PIN(20, "GPIO_20"),
    557	PINCTRL_PIN(21, "GPIO_21"),
    558	PINCTRL_PIN(22, "GPIO_22"),
    559	PINCTRL_PIN(23, "GPIO_23"),
    560	PINCTRL_PIN(24, "GPIO_24"),
    561	PINCTRL_PIN(25, "GPIO_25"),
    562	PINCTRL_PIN(26, "GPIO_26"),
    563	PINCTRL_PIN(27, "GPIO_27"),
    564	PINCTRL_PIN(28, "GPIO_28"),
    565	PINCTRL_PIN(29, "GPIO_29"),
    566	PINCTRL_PIN(30, "GPIO_30"),
    567	PINCTRL_PIN(31, "GPIO_31"),
    568	PINCTRL_PIN(32, "GPIO_32"),
    569	PINCTRL_PIN(33, "GPIO_33"),
    570	PINCTRL_PIN(34, "PWM0"),
    571	PINCTRL_PIN(35, "PWM1"),
    572	PINCTRL_PIN(36, "PWM2"),
    573	PINCTRL_PIN(37, "PWM3"),
    574	PINCTRL_PIN(38, "LPSS_UART0_RXD"),
    575	PINCTRL_PIN(39, "LPSS_UART0_TXD"),
    576	PINCTRL_PIN(40, "LPSS_UART0_RTS_B"),
    577	PINCTRL_PIN(41, "LPSS_UART0_CTS_B"),
    578	PINCTRL_PIN(42, "LPSS_UART1_RXD"),
    579	PINCTRL_PIN(43, "LPSS_UART1_TXD"),
    580	PINCTRL_PIN(44, "LPSS_UART1_RTS_B"),
    581	PINCTRL_PIN(45, "LPSS_UART1_CTS_B"),
    582	PINCTRL_PIN(46, "LPSS_UART2_RXD"),
    583	PINCTRL_PIN(47, "LPSS_UART2_TXD"),
    584	PINCTRL_PIN(48, "LPSS_UART2_RTS_B"),
    585	PINCTRL_PIN(49, "LPSS_UART2_CTS_B"),
    586	PINCTRL_PIN(50, "GP_CAMERASB00"),
    587	PINCTRL_PIN(51, "GP_CAMERASB01"),
    588	PINCTRL_PIN(52, "GP_CAMERASB02"),
    589	PINCTRL_PIN(53, "GP_CAMERASB03"),
    590	PINCTRL_PIN(54, "GP_CAMERASB04"),
    591	PINCTRL_PIN(55, "GP_CAMERASB05"),
    592	PINCTRL_PIN(56, "GP_CAMERASB06"),
    593	PINCTRL_PIN(57, "GP_CAMERASB07"),
    594	PINCTRL_PIN(58, "GP_CAMERASB08"),
    595	PINCTRL_PIN(59, "GP_CAMERASB09"),
    596	PINCTRL_PIN(60, "GP_CAMERASB10"),
    597	PINCTRL_PIN(61, "GP_CAMERASB11"),
    598	PINCTRL_PIN(62, "TCK"),
    599	PINCTRL_PIN(63, "TRST_B"),
    600	PINCTRL_PIN(64, "TMS"),
    601	PINCTRL_PIN(65, "TDI"),
    602	PINCTRL_PIN(66, "CX_PMODE"),
    603	PINCTRL_PIN(67, "CX_PREQ_B"),
    604	PINCTRL_PIN(68, "JTAGX"),
    605	PINCTRL_PIN(69, "CX_PRDY_B"),
    606	PINCTRL_PIN(70, "TDO"),
    607	PINCTRL_PIN(71, "CNV_BRI_DT"),
    608	PINCTRL_PIN(72, "CNV_BRI_RSP"),
    609	PINCTRL_PIN(73, "CNV_RGI_DT"),
    610	PINCTRL_PIN(74, "CNV_RGI_RSP"),
    611	PINCTRL_PIN(75, "SVID0_ALERT_B"),
    612	PINCTRL_PIN(76, "SVID0_DATA"),
    613	PINCTRL_PIN(77, "SVID0_CLK"),
    614};
    615
    616static const unsigned int apl_north_pwm0_pins[] = { 34 };
    617static const unsigned int apl_north_pwm1_pins[] = { 35 };
    618static const unsigned int apl_north_pwm2_pins[] = { 36 };
    619static const unsigned int apl_north_pwm3_pins[] = { 37 };
    620static const unsigned int apl_north_uart0_pins[] = { 38, 39, 40, 41 };
    621static const unsigned int apl_north_uart1_pins[] = { 42, 43, 44, 45 };
    622static const unsigned int apl_north_uart2_pins[] = { 46, 47, 48, 49 };
    623
    624static const struct intel_pingroup apl_north_groups[] = {
    625	PIN_GROUP("pwm0_grp", apl_north_pwm0_pins, 1),
    626	PIN_GROUP("pwm1_grp", apl_north_pwm1_pins, 1),
    627	PIN_GROUP("pwm2_grp", apl_north_pwm2_pins, 1),
    628	PIN_GROUP("pwm3_grp", apl_north_pwm3_pins, 1),
    629	PIN_GROUP("uart0_grp", apl_north_uart0_pins, 1),
    630	PIN_GROUP("uart1_grp", apl_north_uart1_pins, 1),
    631	PIN_GROUP("uart2_grp", apl_north_uart2_pins, 1),
    632};
    633
    634static const char * const apl_north_pwm0_groups[] = { "pwm0_grp" };
    635static const char * const apl_north_pwm1_groups[] = { "pwm1_grp" };
    636static const char * const apl_north_pwm2_groups[] = { "pwm2_grp" };
    637static const char * const apl_north_pwm3_groups[] = { "pwm3_grp" };
    638static const char * const apl_north_uart0_groups[] = { "uart0_grp" };
    639static const char * const apl_north_uart1_groups[] = { "uart1_grp" };
    640static const char * const apl_north_uart2_groups[] = { "uart2_grp" };
    641
    642static const struct intel_function apl_north_functions[] = {
    643	FUNCTION("pwm0", apl_north_pwm0_groups),
    644	FUNCTION("pwm1", apl_north_pwm1_groups),
    645	FUNCTION("pwm2", apl_north_pwm2_groups),
    646	FUNCTION("pwm3", apl_north_pwm3_groups),
    647	FUNCTION("uart0", apl_north_uart0_groups),
    648	FUNCTION("uart1", apl_north_uart1_groups),
    649	FUNCTION("uart2", apl_north_uart2_groups),
    650};
    651
    652static const struct intel_community apl_north_communities[] = {
    653	BXT_COMMUNITY(0, 77),
    654};
    655
    656static const struct intel_pinctrl_soc_data apl_north_soc_data = {
    657	.uid = "1",
    658	.pins = apl_north_pins,
    659	.npins = ARRAY_SIZE(apl_north_pins),
    660	.groups = apl_north_groups,
    661	.ngroups = ARRAY_SIZE(apl_north_groups),
    662	.functions = apl_north_functions,
    663	.nfunctions = ARRAY_SIZE(apl_north_functions),
    664	.communities = apl_north_communities,
    665	.ncommunities = ARRAY_SIZE(apl_north_communities),
    666};
    667
    668static const struct pinctrl_pin_desc apl_northwest_pins[] = {
    669	PINCTRL_PIN(0, "HV_DDI0_DDC_SDA"),
    670	PINCTRL_PIN(1, "HV_DDI0_DDC_SCL"),
    671	PINCTRL_PIN(2, "HV_DDI1_DDC_SDA"),
    672	PINCTRL_PIN(3, "HV_DDI1_DDC_SCL"),
    673	PINCTRL_PIN(4, "DBI_SDA"),
    674	PINCTRL_PIN(5, "DBI_SCL"),
    675	PINCTRL_PIN(6, "PANEL0_VDDEN"),
    676	PINCTRL_PIN(7, "PANEL0_BKLTEN"),
    677	PINCTRL_PIN(8, "PANEL0_BKLTCTL"),
    678	PINCTRL_PIN(9, "PANEL1_VDDEN"),
    679	PINCTRL_PIN(10, "PANEL1_BKLTEN"),
    680	PINCTRL_PIN(11, "PANEL1_BKLTCTL"),
    681	PINCTRL_PIN(12, "DBI_CSX"),
    682	PINCTRL_PIN(13, "DBI_RESX"),
    683	PINCTRL_PIN(14, "GP_INTD_DSI_TE1"),
    684	PINCTRL_PIN(15, "GP_INTD_DSI_TE2"),
    685	PINCTRL_PIN(16, "USB_OC0_B"),
    686	PINCTRL_PIN(17, "USB_OC1_B"),
    687	PINCTRL_PIN(18, "PMC_SPI_FS0"),
    688	PINCTRL_PIN(19, "PMC_SPI_FS1"),
    689	PINCTRL_PIN(20, "PMC_SPI_FS2"),
    690	PINCTRL_PIN(21, "PMC_SPI_RXD"),
    691	PINCTRL_PIN(22, "PMC_SPI_TXD"),
    692	PINCTRL_PIN(23, "PMC_SPI_CLK"),
    693	PINCTRL_PIN(24, "PMIC_PWRGOOD"),
    694	PINCTRL_PIN(25, "PMIC_RESET_B"),
    695	PINCTRL_PIN(26, "PMIC_SDWN_B"),
    696	PINCTRL_PIN(27, "PMIC_BCUDISW2"),
    697	PINCTRL_PIN(28, "PMIC_BCUDISCRIT"),
    698	PINCTRL_PIN(29, "PMIC_THERMTRIP_B"),
    699	PINCTRL_PIN(30, "PMIC_STDBY"),
    700	PINCTRL_PIN(31, "PROCHOT_B"),
    701	PINCTRL_PIN(32, "PMIC_I2C_SCL"),
    702	PINCTRL_PIN(33, "PMIC_I2C_SDA"),
    703	PINCTRL_PIN(34, "AVS_I2S1_MCLK"),
    704	PINCTRL_PIN(35, "AVS_I2S1_BCLK"),
    705	PINCTRL_PIN(36, "AVS_I2S1_WS_SYNC"),
    706	PINCTRL_PIN(37, "AVS_I2S1_SDI"),
    707	PINCTRL_PIN(38, "AVS_I2S1_SDO"),
    708	PINCTRL_PIN(39, "AVS_M_CLK_A1"),
    709	PINCTRL_PIN(40, "AVS_M_CLK_B1"),
    710	PINCTRL_PIN(41, "AVS_M_DATA_1"),
    711	PINCTRL_PIN(42, "AVS_M_CLK_AB2"),
    712	PINCTRL_PIN(43, "AVS_M_DATA_2"),
    713	PINCTRL_PIN(44, "AVS_I2S2_MCLK"),
    714	PINCTRL_PIN(45, "AVS_I2S2_BCLK"),
    715	PINCTRL_PIN(46, "AVS_I2S2_WS_SYNC"),
    716	PINCTRL_PIN(47, "AVS_I2S2_SDI"),
    717	PINCTRL_PIN(48, "AVS_I2S2_SDO"),
    718	PINCTRL_PIN(49, "AVS_I2S3_BCLK"),
    719	PINCTRL_PIN(50, "AVS_I2S3_WS_SYNC"),
    720	PINCTRL_PIN(51, "AVS_I2S3_SDI"),
    721	PINCTRL_PIN(52, "AVS_I2S3_SDO"),
    722	PINCTRL_PIN(53, "FST_SPI_CS0_B"),
    723	PINCTRL_PIN(54, "FST_SPI_CS1_B"),
    724	PINCTRL_PIN(55, "FST_SPI_MOSI_IO0"),
    725	PINCTRL_PIN(56, "FST_SPI_MISO_IO1"),
    726	PINCTRL_PIN(57, "FST_SPI_IO2"),
    727	PINCTRL_PIN(58, "FST_SPI_IO3"),
    728	PINCTRL_PIN(59, "FST_SPI_CLK"),
    729	PINCTRL_PIN(60, "FST_SPI_CLK_FB"),
    730	PINCTRL_PIN(61, "GP_SSP_0_CLK"),
    731	PINCTRL_PIN(62, "GP_SSP_0_FS0"),
    732	PINCTRL_PIN(63, "GP_SSP_0_FS1"),
    733	PINCTRL_PIN(64, "GP_SSP_0_RXD"),
    734	PINCTRL_PIN(65, "GP_SSP_0_TXD"),
    735	PINCTRL_PIN(66, "GP_SSP_1_CLK"),
    736	PINCTRL_PIN(67, "GP_SSP_1_FS0"),
    737	PINCTRL_PIN(68, "GP_SSP_1_FS1"),
    738	PINCTRL_PIN(69, "GP_SSP_1_RXD"),
    739	PINCTRL_PIN(70, "GP_SSP_1_TXD"),
    740	PINCTRL_PIN(71, "GP_SSP_2_CLK"),
    741	PINCTRL_PIN(72, "GP_SSP_2_FS0"),
    742	PINCTRL_PIN(73, "GP_SSP_2_FS1"),
    743	PINCTRL_PIN(74, "GP_SSP_2_FS2"),
    744	PINCTRL_PIN(75, "GP_SSP_2_RXD"),
    745	PINCTRL_PIN(76, "GP_SSP_2_TXD"),
    746};
    747
    748static const unsigned int apl_northwest_ssp0_pins[] = { 61, 62, 63, 64, 65 };
    749static const unsigned int apl_northwest_ssp1_pins[] = { 66, 67, 68, 69, 70 };
    750static const unsigned int apl_northwest_ssp2_pins[] = { 71, 72, 73, 74, 75, 76 };
    751static const unsigned int apl_northwest_uart3_pins[] = { 67, 68, 69, 70 };
    752
    753static const struct intel_pingroup apl_northwest_groups[] = {
    754	PIN_GROUP("ssp0_grp", apl_northwest_ssp0_pins, 1),
    755	PIN_GROUP("ssp1_grp", apl_northwest_ssp1_pins, 1),
    756	PIN_GROUP("ssp2_grp", apl_northwest_ssp2_pins, 1),
    757	PIN_GROUP("uart3_grp", apl_northwest_uart3_pins, 2),
    758};
    759
    760static const char * const apl_northwest_ssp0_groups[] = { "ssp0_grp" };
    761static const char * const apl_northwest_ssp1_groups[] = { "ssp1_grp" };
    762static const char * const apl_northwest_ssp2_groups[] = { "ssp2_grp" };
    763static const char * const apl_northwest_uart3_groups[] = { "uart3_grp" };
    764
    765static const struct intel_function apl_northwest_functions[] = {
    766	FUNCTION("ssp0", apl_northwest_ssp0_groups),
    767	FUNCTION("ssp1", apl_northwest_ssp1_groups),
    768	FUNCTION("ssp2", apl_northwest_ssp2_groups),
    769	FUNCTION("uart3", apl_northwest_uart3_groups),
    770};
    771
    772static const struct intel_community apl_northwest_communities[] = {
    773	BXT_COMMUNITY(0, 76),
    774};
    775
    776static const struct intel_pinctrl_soc_data apl_northwest_soc_data = {
    777	.uid = "2",
    778	.pins = apl_northwest_pins,
    779	.npins = ARRAY_SIZE(apl_northwest_pins),
    780	.groups = apl_northwest_groups,
    781	.ngroups = ARRAY_SIZE(apl_northwest_groups),
    782	.functions = apl_northwest_functions,
    783	.nfunctions = ARRAY_SIZE(apl_northwest_functions),
    784	.communities = apl_northwest_communities,
    785	.ncommunities = ARRAY_SIZE(apl_northwest_communities),
    786};
    787
    788static const struct pinctrl_pin_desc apl_west_pins[] = {
    789	PINCTRL_PIN(0, "LPSS_I2C0_SDA"),
    790	PINCTRL_PIN(1, "LPSS_I2C0_SCL"),
    791	PINCTRL_PIN(2, "LPSS_I2C1_SDA"),
    792	PINCTRL_PIN(3, "LPSS_I2C1_SCL"),
    793	PINCTRL_PIN(4, "LPSS_I2C2_SDA"),
    794	PINCTRL_PIN(5, "LPSS_I2C2_SCL"),
    795	PINCTRL_PIN(6, "LPSS_I2C3_SDA"),
    796	PINCTRL_PIN(7, "LPSS_I2C3_SCL"),
    797	PINCTRL_PIN(8, "LPSS_I2C4_SDA"),
    798	PINCTRL_PIN(9, "LPSS_I2C4_SCL"),
    799	PINCTRL_PIN(10, "LPSS_I2C5_SDA"),
    800	PINCTRL_PIN(11, "LPSS_I2C5_SCL"),
    801	PINCTRL_PIN(12, "LPSS_I2C6_SDA"),
    802	PINCTRL_PIN(13, "LPSS_I2C6_SCL"),
    803	PINCTRL_PIN(14, "LPSS_I2C7_SDA"),
    804	PINCTRL_PIN(15, "LPSS_I2C7_SCL"),
    805	PINCTRL_PIN(16, "ISH_GPIO_0"),
    806	PINCTRL_PIN(17, "ISH_GPIO_1"),
    807	PINCTRL_PIN(18, "ISH_GPIO_2"),
    808	PINCTRL_PIN(19, "ISH_GPIO_3"),
    809	PINCTRL_PIN(20, "ISH_GPIO_4"),
    810	PINCTRL_PIN(21, "ISH_GPIO_5"),
    811	PINCTRL_PIN(22, "ISH_GPIO_6"),
    812	PINCTRL_PIN(23, "ISH_GPIO_7"),
    813	PINCTRL_PIN(24, "ISH_GPIO_8"),
    814	PINCTRL_PIN(25, "ISH_GPIO_9"),
    815	PINCTRL_PIN(26, "PCIE_CLKREQ0_B"),
    816	PINCTRL_PIN(27, "PCIE_CLKREQ1_B"),
    817	PINCTRL_PIN(28, "PCIE_CLKREQ2_B"),
    818	PINCTRL_PIN(29, "PCIE_CLKREQ3_B"),
    819	PINCTRL_PIN(30, "OSC_CLK_OUT_0"),
    820	PINCTRL_PIN(31, "OSC_CLK_OUT_1"),
    821	PINCTRL_PIN(32, "OSC_CLK_OUT_2"),
    822	PINCTRL_PIN(33, "OSC_CLK_OUT_3"),
    823	PINCTRL_PIN(34, "OSC_CLK_OUT_4"),
    824	PINCTRL_PIN(35, "PMU_AC_PRESENT"),
    825	PINCTRL_PIN(36, "PMU_BATLOW_B"),
    826	PINCTRL_PIN(37, "PMU_PLTRST_B"),
    827	PINCTRL_PIN(38, "PMU_PWRBTN_B"),
    828	PINCTRL_PIN(39, "PMU_RESETBUTTON_B"),
    829	PINCTRL_PIN(40, "PMU_SLP_S0_B"),
    830	PINCTRL_PIN(41, "PMU_SLP_S3_B"),
    831	PINCTRL_PIN(42, "PMU_SLP_S4_B"),
    832	PINCTRL_PIN(43, "PMU_SUSCLK"),
    833	PINCTRL_PIN(44, "PMU_WAKE_B"),
    834	PINCTRL_PIN(45, "SUS_STAT_B"),
    835	PINCTRL_PIN(46, "SUSPWRDNACK"),
    836};
    837
    838static const unsigned int apl_west_i2c0_pins[] = { 0, 1 };
    839static const unsigned int apl_west_i2c1_pins[] = { 2, 3 };
    840static const unsigned int apl_west_i2c2_pins[] = { 4, 5 };
    841static const unsigned int apl_west_i2c3_pins[] = { 6, 7 };
    842static const unsigned int apl_west_i2c4_pins[] = { 8, 9 };
    843static const unsigned int apl_west_i2c5_pins[] = { 10, 11 };
    844static const unsigned int apl_west_i2c6_pins[] = { 12, 13 };
    845static const unsigned int apl_west_i2c7_pins[] = { 14, 15 };
    846static const unsigned int apl_west_uart2_pins[] = { 20, 21, 22, 34 };
    847
    848static const struct intel_pingroup apl_west_groups[] = {
    849	PIN_GROUP("i2c0_grp", apl_west_i2c0_pins, 1),
    850	PIN_GROUP("i2c1_grp", apl_west_i2c1_pins, 1),
    851	PIN_GROUP("i2c2_grp", apl_west_i2c2_pins, 1),
    852	PIN_GROUP("i2c3_grp", apl_west_i2c3_pins, 1),
    853	PIN_GROUP("i2c4_grp", apl_west_i2c4_pins, 1),
    854	PIN_GROUP("i2c5_grp", apl_west_i2c5_pins, 1),
    855	PIN_GROUP("i2c6_grp", apl_west_i2c6_pins, 1),
    856	PIN_GROUP("i2c7_grp", apl_west_i2c7_pins, 1),
    857	PIN_GROUP("uart2_grp", apl_west_uart2_pins, 3),
    858};
    859
    860static const char * const apl_west_i2c0_groups[] = { "i2c0_grp" };
    861static const char * const apl_west_i2c1_groups[] = { "i2c1_grp" };
    862static const char * const apl_west_i2c2_groups[] = { "i2c2_grp" };
    863static const char * const apl_west_i2c3_groups[] = { "i2c3_grp" };
    864static const char * const apl_west_i2c4_groups[] = { "i2c4_grp" };
    865static const char * const apl_west_i2c5_groups[] = { "i2c5_grp" };
    866static const char * const apl_west_i2c6_groups[] = { "i2c6_grp" };
    867static const char * const apl_west_i2c7_groups[] = { "i2c7_grp" };
    868static const char * const apl_west_uart2_groups[] = { "uart2_grp" };
    869
    870static const struct intel_function apl_west_functions[] = {
    871	FUNCTION("i2c0", apl_west_i2c0_groups),
    872	FUNCTION("i2c1", apl_west_i2c1_groups),
    873	FUNCTION("i2c2", apl_west_i2c2_groups),
    874	FUNCTION("i2c3", apl_west_i2c3_groups),
    875	FUNCTION("i2c4", apl_west_i2c4_groups),
    876	FUNCTION("i2c5", apl_west_i2c5_groups),
    877	FUNCTION("i2c6", apl_west_i2c6_groups),
    878	FUNCTION("i2c7", apl_west_i2c7_groups),
    879	FUNCTION("uart2", apl_west_uart2_groups),
    880};
    881
    882static const struct intel_community apl_west_communities[] = {
    883	BXT_COMMUNITY(0, 46),
    884};
    885
    886static const struct intel_pinctrl_soc_data apl_west_soc_data = {
    887	.uid = "3",
    888	.pins = apl_west_pins,
    889	.npins = ARRAY_SIZE(apl_west_pins),
    890	.groups = apl_west_groups,
    891	.ngroups = ARRAY_SIZE(apl_west_groups),
    892	.functions = apl_west_functions,
    893	.nfunctions = ARRAY_SIZE(apl_west_functions),
    894	.communities = apl_west_communities,
    895	.ncommunities = ARRAY_SIZE(apl_west_communities),
    896};
    897
    898static const struct pinctrl_pin_desc apl_southwest_pins[] = {
    899	PINCTRL_PIN(0, "PCIE_WAKE0_B"),
    900	PINCTRL_PIN(1, "PCIE_WAKE1_B"),
    901	PINCTRL_PIN(2, "PCIE_WAKE2_B"),
    902	PINCTRL_PIN(3, "PCIE_WAKE3_B"),
    903	PINCTRL_PIN(4, "EMMC0_CLK"),
    904	PINCTRL_PIN(5, "EMMC0_D0"),
    905	PINCTRL_PIN(6, "EMMC0_D1"),
    906	PINCTRL_PIN(7, "EMMC0_D2"),
    907	PINCTRL_PIN(8, "EMMC0_D3"),
    908	PINCTRL_PIN(9, "EMMC0_D4"),
    909	PINCTRL_PIN(10, "EMMC0_D5"),
    910	PINCTRL_PIN(11, "EMMC0_D6"),
    911	PINCTRL_PIN(12, "EMMC0_D7"),
    912	PINCTRL_PIN(13, "EMMC0_CMD"),
    913	PINCTRL_PIN(14, "SDIO_CLK"),
    914	PINCTRL_PIN(15, "SDIO_D0"),
    915	PINCTRL_PIN(16, "SDIO_D1"),
    916	PINCTRL_PIN(17, "SDIO_D2"),
    917	PINCTRL_PIN(18, "SDIO_D3"),
    918	PINCTRL_PIN(19, "SDIO_CMD"),
    919	PINCTRL_PIN(20, "SDCARD_CLK"),
    920	PINCTRL_PIN(21, "SDCARD_CLK_FB"),
    921	PINCTRL_PIN(22, "SDCARD_D0"),
    922	PINCTRL_PIN(23, "SDCARD_D1"),
    923	PINCTRL_PIN(24, "SDCARD_D2"),
    924	PINCTRL_PIN(25, "SDCARD_D3"),
    925	PINCTRL_PIN(26, "SDCARD_CD_B"),
    926	PINCTRL_PIN(27, "SDCARD_CMD"),
    927	PINCTRL_PIN(28, "SDCARD_LVL_WP"),
    928	PINCTRL_PIN(29, "EMMC0_STROBE"),
    929	PINCTRL_PIN(30, "SDIO_PWR_DOWN_B"),
    930	PINCTRL_PIN(31, "SMB_ALERTB"),
    931	PINCTRL_PIN(32, "SMB_CLK"),
    932	PINCTRL_PIN(33, "SMB_DATA"),
    933	PINCTRL_PIN(34, "LPC_ILB_SERIRQ"),
    934	PINCTRL_PIN(35, "LPC_CLKOUT0"),
    935	PINCTRL_PIN(36, "LPC_CLKOUT1"),
    936	PINCTRL_PIN(37, "LPC_AD0"),
    937	PINCTRL_PIN(38, "LPC_AD1"),
    938	PINCTRL_PIN(39, "LPC_AD2"),
    939	PINCTRL_PIN(40, "LPC_AD3"),
    940	PINCTRL_PIN(41, "LPC_CLKRUNB"),
    941	PINCTRL_PIN(42, "LPC_FRAMEB"),
    942};
    943
    944static const unsigned int apl_southwest_emmc0_pins[] = {
    945	4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 29,
    946};
    947static const unsigned int apl_southwest_sdio_pins[] = {
    948	14, 15, 16, 17, 18, 19, 30,
    949};
    950static const unsigned int apl_southwest_sdcard_pins[] = {
    951	20, 21, 22, 23, 24, 25, 26, 27, 28,
    952};
    953static const unsigned int apl_southwest_i2c7_pins[] = { 32, 33 };
    954
    955static const struct intel_pingroup apl_southwest_groups[] = {
    956	PIN_GROUP("emmc0_grp", apl_southwest_emmc0_pins, 1),
    957	PIN_GROUP("sdio_grp", apl_southwest_sdio_pins, 1),
    958	PIN_GROUP("sdcard_grp", apl_southwest_sdcard_pins, 1),
    959	PIN_GROUP("i2c7_grp", apl_southwest_i2c7_pins, 2),
    960};
    961
    962static const char * const apl_southwest_emmc0_groups[] = { "emmc0_grp" };
    963static const char * const apl_southwest_sdio_groups[] = { "sdio_grp" };
    964static const char * const apl_southwest_sdcard_groups[] = { "sdcard_grp" };
    965static const char * const apl_southwest_i2c7_groups[] = { "i2c7_grp" };
    966
    967static const struct intel_function apl_southwest_functions[] = {
    968	FUNCTION("emmc0", apl_southwest_emmc0_groups),
    969	FUNCTION("sdio", apl_southwest_sdio_groups),
    970	FUNCTION("sdcard", apl_southwest_sdcard_groups),
    971	FUNCTION("i2c7", apl_southwest_i2c7_groups),
    972};
    973
    974static const struct intel_community apl_southwest_communities[] = {
    975	BXT_COMMUNITY(0, 42),
    976};
    977
    978static const struct intel_pinctrl_soc_data apl_southwest_soc_data = {
    979	.uid = "4",
    980	.pins = apl_southwest_pins,
    981	.npins = ARRAY_SIZE(apl_southwest_pins),
    982	.groups = apl_southwest_groups,
    983	.ngroups = ARRAY_SIZE(apl_southwest_groups),
    984	.functions = apl_southwest_functions,
    985	.nfunctions = ARRAY_SIZE(apl_southwest_functions),
    986	.communities = apl_southwest_communities,
    987	.ncommunities = ARRAY_SIZE(apl_southwest_communities),
    988};
    989
    990static const struct intel_pinctrl_soc_data *apl_pinctrl_soc_data[] = {
    991	&apl_north_soc_data,
    992	&apl_northwest_soc_data,
    993	&apl_west_soc_data,
    994	&apl_southwest_soc_data,
    995	NULL
    996};
    997
    998static const struct acpi_device_id bxt_pinctrl_acpi_match[] = {
    999	{ "INT3452", (kernel_ulong_t)apl_pinctrl_soc_data },
   1000	{ "INT34D1", (kernel_ulong_t)bxt_pinctrl_soc_data },
   1001	{ }
   1002};
   1003MODULE_DEVICE_TABLE(acpi, bxt_pinctrl_acpi_match);
   1004
   1005static const struct platform_device_id bxt_pinctrl_platform_ids[] = {
   1006	{ "apollolake-pinctrl", (kernel_ulong_t)apl_pinctrl_soc_data },
   1007	{ "broxton-pinctrl", (kernel_ulong_t)bxt_pinctrl_soc_data },
   1008	{ }
   1009};
   1010
   1011static INTEL_PINCTRL_PM_OPS(bxt_pinctrl_pm_ops);
   1012
   1013static struct platform_driver bxt_pinctrl_driver = {
   1014	.probe = intel_pinctrl_probe_by_uid,
   1015	.driver = {
   1016		.name = "broxton-pinctrl",
   1017		.acpi_match_table = bxt_pinctrl_acpi_match,
   1018		.pm = &bxt_pinctrl_pm_ops,
   1019	},
   1020	.id_table = bxt_pinctrl_platform_ids,
   1021};
   1022
   1023static int __init bxt_pinctrl_init(void)
   1024{
   1025	return platform_driver_register(&bxt_pinctrl_driver);
   1026}
   1027subsys_initcall(bxt_pinctrl_init);
   1028
   1029static void __exit bxt_pinctrl_exit(void)
   1030{
   1031	platform_driver_unregister(&bxt_pinctrl_driver);
   1032}
   1033module_exit(bxt_pinctrl_exit);
   1034
   1035MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
   1036MODULE_DESCRIPTION("Intel Broxton SoC pinctrl/GPIO driver");
   1037MODULE_LICENSE("GPL v2");
   1038MODULE_ALIAS("platform:apollolake-pinctrl");
   1039MODULE_ALIAS("platform:broxton-pinctrl");