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