On Fri, Mar 18, 2016 at 01:11:17PM +0200, Jani Nikula wrote: > Use a table similar to vlv to check for accepted gpio indexes. For now, > add all, but this list should be trimmed down. Use managed gpio request, > which will be automatically released when the driver is detached. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 667 ++++++++++++++++++++++++++++- > 1 file changed, 666 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > index f8d3f608e9c8..6b8dc15f3656 100644 > --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > @@ -29,6 +29,7 @@ > #include <drm/drm_edid.h> > #include <drm/i915_drm.h> > #include <drm/drm_panel.h> > +#include <linux/gpio.h> > #include <linux/slab.h> > #include <video/mipi_display.h> > #include <asm/intel-mid.h> > @@ -114,6 +115,636 @@ static struct vlv_gpio_map vlv_gpio_table[] = { > #define CHV_GPIO_CFG_HIZ 0x00008100 > #define CHV_GPIO_CFG_TX_STATE_SHIFT 1 > > +#define BXT_HV_DDI0_DDC_SDA_PIN 187 > +#define BXT_HV_DDI0_DDC_SCL_PIN 188 > +#define BXT_HV_DDI1_DDC_SDA_PIN 189 > +#define BXT_HV_DDI1_DDC_SCL_PIN 190 More magic numbers without explanation. This also suffers from the same problem that the i2c seq patch has, as in requesting/frobbing random gpios. We should really use the consumer gpio consumer API I think to make sure we get the right thing. > +#define BXT_DBI_SDA_PIN 191 > +#define BXT_DBI_SCL_PIN 192 > +#define BXT_PANEL0_VDDEN_PIN 193 > +#define BXT_PANEL0_BKLTEN_PIN 194 > +#define BXT_PANEL0_BKLTCTL_PIN 195 > +#define BXT_PANEL1_VDDEN_PIN 196 > +#define BXT_PANEL1_BKLTEN_PIN 197 > +#define BXT_PANEL1_BKLTCTL_PIN 198 > +#define BXT_DBI_CSX_PIN 199 > +#define BXT_DBI_RESX_PIN 200 > +#define BXT_GP_INTD_DSI_TE1_PIN 201 > +#define BXT_GP_INTD_DSI_TE2_PIN 202 > +#define BXT_USB_OC0_B_PIN 203 > +#define BXT_USB_OC1_B_PIN 204 > +#define BXT_MEX_WAKE0_B_PIN 205 > +#define BXT_MEX_WAKE1_B_PIN 206 > +#define BXT_EMMC0_CLK_PIN 156 > +#define BXT_EMMC0_D0_PIN 157 > +#define BXT_EMMC0_D1_PIN 158 > +#define BXT_EMMC0_D2_PIN 159 > +#define BXT_EMMC0_D3_PIN 160 > +#define BXT_EMMC0_D4_PIN 161 > +#define BXT_EMMC0_D5_PIN 162 > +#define BXT_EMMC0_D6_PIN 163 > +#define BXT_EMMC0_D7_PIN 164 > +#define BXT_EMMC0_CMD_PIN 165 > +#define BXT_SDIO_CLK_PIN 166 > +#define BXT_SDIO_D0_PIN 167 > +#define BXT_SDIO_D1_PIN 168 > +#define BXT_SDIO_D2_PIN 169 > +#define BXT_SDIO_D3_PIN 170 > +#define BXT_SDIO_CMD_PIN 171 > +#define BXT_SDCARD_CLK_PIN 172 > +#define BXT_SDCARD_D0_PIN 173 > +#define BXT_SDCARD_D1_PIN 174 > +#define BXT_SDCARD_D2_PIN 175 > +#define BXT_SDCARD_D3_PIN 176 > +#define BXT_SDCARD_CD_B_PIN 177 > +#define BXT_SDCARD_CMD_PIN 178 > +#define BXT_SDCARD_LVL_CLK_FB_PIN 179 > +#define BXT_SDCARD_LVL_CMD_DIR_PIN 180 > +#define BXT_SDCARD_LVL_DAT_DIR_PIN 181 > +#define BXT_EMMC0_STROBE_PIN 182 > +#define BXT_SDIO_PWR_DOWN_B_PIN 183 > +#define BXT_SDCARD_PWR_DOWN_B_PIN 184 > +#define BXT_SDCARD_LVL_SEL_PIN 185 > +#define BXT_SDCARD_LVL_WP_PIN 186 > +#define BXT_LPSS_I2C0_SDA_PIN 124 > +#define BXT_LPSS_I2C0_SCL_PIN 125 > +#define BXT_LPSS_I2C1_SDA_PIN 126 > +#define BXT_LPSS_I2C1_SCL_PIN 127 > +#define BXT_LPSS_I2C2_SDA_PIN 128 > +#define BXT_LPSS_I2C2_SCL_PIN 129 > +#define BXT_LPSS_I2C3_SDA_PIN 130 > +#define BXT_LPSS_I2C3_SCL_PIN 131 > +#define BXT_LPSS_I2C4_SDA_PIN 132 > +#define BXT_LPSS_I2C4_SCL_PIN 133 > +#define BXT_LPSS_I2C5_SDA_PIN 134 > +#define BXT_LPSS_I2C5_SCL_PIN 135 > +#define BXT_LPSS_I2C6_SDA_PIN 136 > +#define BXT_LPSS_I2C6_SCL_PIN 137 > +#define BXT_LPSS_I2C7_SDA_PIN 138 > +#define BXT_LPSS_I2C7_SCL_PIN 139 > +#define BXT_ISH_I2C0_SDA_PIN 140 > +#define BXT_ISH_I2C0_SCL_PIN 141 > +#define BXT_ISH_I2C1_SDA_PIN 142 > +#define BXT_ISH_I2C1_SCL_PIN 143 > +#define BXT_ISH_I2C2_SDA_PIN 144 > +#define BXT_ISH_I2C2_SCL_PIN 145 > +#define BXT_ISH_GPIO_0_PIN 146 > +#define BXT_ISH_GPIO_1_PIN 147 > +#define BXT_ISH_GPIO_2_PIN 148 > +#define BXT_ISH_GPIO_3_PIN 149 > +#define BXT_ISH_GPIO_4_PIN 150 > +#define BXT_ISH_GPIO_5_PIN 151 > +#define BXT_ISH_GPIO_6_PIN 152 > +#define BXT_ISH_GPIO_7_PIN 153 > +#define BXT_ISH_GPIO_8_PIN 154 > +#define BXT_ISH_GPIO_9_PIN 155 > +#define BXT_AVS_I2S1_MCLK_PIN 74 > +#define BXT_AVS_I2S1_BCLK_PIN 75 > +#define BXT_AVS_I2S1_WS_SYNC_PIN 76 > +#define BXT_AVS_I2S1_SDI_PIN 77 > +#define BXT_AVS_I2S1_SDO_PIN 78 > +#define BXT_AVS_M_CLK_A1_PIN 79 > +#define BXT_AVS_M_CLK_B1_PIN 80 > +#define BXT_AVS_M_DATA_1_PIN 81 > +#define BXT_AVS_M_CLK_AB2_PIN 82 > +#define BXT_AVS_M_DATA_2_PIN 83 > +#define BXT_AVS_I2S2_MCLK_PIN 84 > +#define BXT_AVS_I2S2_BCLK_PIN 85 > +#define BXT_AVS_I2S2_WS_SYNC_PIN 86 > +#define BXT_AVS_I2S2_SDI_PIN 87 > +#define BXT_AVS_I2S2_SDO_PIN 88 > +#define BXT_AVS_I2S3_BCLK_PIN 89 > +#define BXT_AVS_I2S3_WS_SYNC_PIN 90 > +#define BXT_AVS_I2S3_SDI_PIN 91 > +#define BXT_AVS_I2S3_SDO_PIN 92 > +#define BXT_AVS_I2S4_BCLK_PIN 93 > +#define BXT_AVS_I2S4_WS_SYNC_PIN 94 > +#define BXT_AVS_I2S4_SDI_PIN 95 > +#define BXT_AVS_I2S4_SDO_PIN 96 > +#define BXT_FST_SPI_CS0_B_PIN 97 > +#define BXT_FST_SPI_CS1_B_PIN 98 > +#define BXT_FST_SPI_MOSI_IO0_PIN 99 > +#define BXT_FST_SPI_MISO_IO1_PIN 100 > +#define BXT_FST_SPI_IO2_PIN 101 > +#define BXT_FST_SPI_IO3_PIN 102 > +#define BXT_FST_SPI_CLK_PIN 103 > +#define BXT_GP_SSP_0_CLK_PIN 104 > +#define BXT_GP_SSP_0_FS0_PIN 105 > +#define BXT_GP_SSP_0_FS1_PIN 106 > +#define BXT_GP_SSP_0_FS2_PIN 107 > +#define BXT_GP_SSP_0_RXD_PIN 109 > +#define BXT_GP_SSP_0_TXD_PIN 110 > +#define BXT_GP_SSP_1_CLK_PIN 111 > +#define BXT_GP_SSP_1_FS0_PIN 112 > +#define BXT_GP_SSP_1_FS1_PIN 113 > +#define BXT_GP_SSP_1_FS2_PIN 114 > +#define BXT_GP_SSP_1_FS3_PIN 115 > +#define BXT_GP_SSP_1_RXD_PIN 116 > +#define BXT_GP_SSP_1_TXD_PIN 117 > +#define BXT_GP_SSP_2_CLK_PIN 118 > +#define BXT_GP_SSP_2_FS0_PIN 119 > +#define BXT_GP_SSP_2_FS1_PIN 120 > +#define BXT_GP_SSP_2_FS2_PIN 121 > +#define BXT_GP_SSP_2_RXD_PIN 122 > +#define BXT_GP_SSP_2_TXD_PIN 123 > +#define BXT_TRACE_0_CLK_VNN_PIN 0 > +#define BXT_TRACE_0_DATA0_VNN_PIN 1 > +#define BXT_TRACE_0_DATA1_VNN_PIN 2 > +#define BXT_TRACE_0_DATA2_VNN_PIN 3 > +#define BXT_TRACE_0_DATA3_VNN_PIN 4 > +#define BXT_TRACE_0_DATA4_VNN_PIN 5 > +#define BXT_TRACE_0_DATA5_VNN_PIN 6 > +#define BXT_TRACE_0_DATA6_VNN_PIN 7 > +#define BXT_TRACE_0_DATA7_VNN_PIN 8 > +#define BXT_TRACE_1_CLK_VNN_PIN 9 > +#define BXT_TRACE_1_DATA0_VNN_PIN 10 > +#define BXT_TRACE_1_DATA1_VNN_PIN 11 > +#define BXT_TRACE_1_DATA2_VNN_PIN 12 > +#define BXT_TRACE_1_DATA3_VNN_PIN 13 > +#define BXT_TRACE_1_DATA4_VNN_PIN 14 > +#define BXT_TRACE_1_DATA5_VNN_PIN 15 > +#define BXT_TRACE_1_DATA6_VNN_PIN 16 > +#define BXT_TRACE_1_DATA7_VNN_PIN 17 > +#define BXT_TRACE_2_CLK_VNN_PIN 18 > +#define BXT_TRACE_2_DATA0_VNN_PIN 19 > +#define BXT_TRACE_2_DATA1_VNN_PIN 20 > +#define BXT_TRACE_2_DATA2_VNN_PIN 21 > +#define BXT_TRACE_2_DATA3_VNN_PIN 22 > +#define BXT_TRACE_2_DATA4_VNN_PIN 23 > +#define BXT_TRACE_2_DATA5_VNN_PIN 24 > +#define BXT_TRACE_2_DATA6_VNN_PIN 25 > +#define BXT_TRACE_2_DATA7_VNN_PIN 26 > +#define BXT_TRIGOUT_0_PIN 27 > +#define BXT_TRIGOUT_1_PIN 28 > +#define BXT_TRIGIN_0_PIN 29 > +#define BXT_SEC_TCK_PIN 30 > +#define BXT_SEC_TDI_PIN 31 > +#define BXT_SEC_TMS_PIN 32 > +#define BXT_SEC_TDO_PIN 33 > +#define BXT_PWM0_PIN 34 > +#define BXT_PWM1_PIN 35 > +#define BXT_PWM2_PIN 36 > +#define BXT_PWM3_PIN 37 > +#define BXT_LPSS_UART0_RXD_PIN 38 > +#define BXT_LPSS_UART0_TXD_PIN 39 > +#define BXT_LPSS_UART0_RTS_B_PIN 40 > +#define BXT_LPSS_UART0_CTS_B_PIN 41 > +#define BXT_LPSS_UART1_RXD_PIN 42 > +#define BXT_LPSS_UART1_TXD_PIN 43 > +#define BXT_LPSS_UART1_RTS_B_PIN 44 > +#define BXT_LPSS_UART1_CTS_B_PIN 45 > +#define BXT_LPSS_UART2_RXD_PIN 46 > +#define BXT_LPSS_UART2_TXD_PIN 47 > +#define BXT_LPSS_UART2_RTS_B_PIN 48 > +#define BXT_LPSS_UART2_CTS_B_PIN 49 > +#define BXT_ISH_UART0_RXD_PIN 50 > +#define BXT_ISH_UART0_TXD_PIN 51 > +#define BXT_ISH_UART0_RTS_B_PIN 52 > +#define BXT_ISH_UART0_CTS_B_PIN 53 > +#define BXT_ISH_UART1_RXD_PIN 54 > +#define BXT_ISH_UART1_TXD_PIN 55 > +#define BXT_ISH_UART1_RTS_B_PIN 56 > +#define BXT_ISH_UART1_CTS_B_PIN 57 > +#define BXT_ISH_UART2_RXD_PIN 58 > +#define BXT_ISH_UART2_TXD_PIN 59 > +#define BXT_ISH_UART2_RTS_B_PIN 60 > +#define BXT_ISH_UART2_CTS_B_PIN 61 > +#define BXT_GP_CAMERASB00_PIN 62 > +#define BXT_GP_CAMERASB01_PIN 63 > +#define BXT_GP_CAMERASB02_PIN 64 > +#define BXT_GP_CAMERASB03_PIN 65 > +#define BXT_GP_CAMERASB04_PIN 66 > +#define BXT_GP_CAMERASB05_PIN 67 > +#define BXT_GP_CAMERASB06_PIN 68 > +#define BXT_GP_CAMERASB07_PIN 69 > +#define BXT_GP_CAMERASB08_PIN 70 > +#define BXT_GP_CAMERASB09_PIN 71 > +#define BXT_GP_CAMERASB10_PIN 72 > +#define BXT_GP_CAMERASB11_PIN 73 > + > +#define BXT_HV_DDI0_DDC_SDA_OFFSET 264 > +#define BXT_HV_DDI0_DDC_SCL_OFFSET 265 > +#define BXT_HV_DDI1_DDC_SDA_OFFSET 266 > +#define BXT_HV_DDI1_DDC_SCL_OFFSET 267 > +#define BXT_DBI_SDA_OFFSET 268 > +#define BXT_DBI_SCL_OFFSET 269 > +#define BXT_PANEL0_VDDEN_OFFSET 270 > +#define BXT_PANEL0_BKLTEN_OFFSET 271 > +#define BXT_PANEL0_BKLTCTL_OFFSET 272 > +#define BXT_PANEL1_VDDEN_OFFSET 273 > +#define BXT_PANEL1_BKLTEN_OFFSET 274 > +#define BXT_PANEL1_BKLTCTL_OFFSET 275 > +#define BXT_DBI_CSX_OFFSET 276 > +#define BXT_DBI_RESX_OFFSET 277 > +#define BXT_GP_INTD_DSI_TE1_OFFSET 278 > +#define BXT_GP_INTD_DSI_TE2_OFFSET 279 > +#define BXT_USB_OC0_B_OFFSET 280 > +#define BXT_USB_OC1_B_OFFSET 281 > +#define BXT_MEX_WAKE0_B_OFFSET 282 > +#define BXT_MEX_WAKE1_B_OFFSET 283 > +#define BXT_EMMC0_CLK_OFFSET 284 > +#define BXT_EMMC0_D0_OFFSET 285 > +#define BXT_EMMC0_D1_OFFSET 286 > +#define BXT_EMMC0_D2_OFFSET 287 > +#define BXT_EMMC0_D3_OFFSET 288 > +#define BXT_EMMC0_D4_OFFSET 289 > +#define BXT_EMMC0_D5_OFFSET 290 > +#define BXT_EMMC0_D6_OFFSET 291 > +#define BXT_EMMC0_D7_OFFSET 292 > +#define BXT_EMMC0_CMD_OFFSET 293 > +#define BXT_SDIO_CLK_OFFSET 294 > +#define BXT_SDIO_D0_OFFSET 295 > +#define BXT_SDIO_D1_OFFSET 296 > +#define BXT_SDIO_D2_OFFSET 297 > +#define BXT_SDIO_D3_OFFSET 298 > +#define BXT_SDIO_CMD_OFFSET 299 > +#define BXT_SDCARD_CLK_OFFSET 300 > +#define BXT_SDCARD_D0_OFFSET 301 > +#define BXT_SDCARD_D1_OFFSET 302 > +#define BXT_SDCARD_D2_OFFSET 303 > +#define BXT_SDCARD_D3_OFFSET 304 > +#define BXT_SDCARD_CD_B_OFFSET 305 > +#define BXT_SDCARD_CMD_OFFSET 306 > +#define BXT_SDCARD_LVL_CLK_FB_OFFSET 307 > +#define BXT_SDCARD_LVL_CMD_DIR_OFFSET 308 > +#define BXT_SDCARD_LVL_DAT_DIR_OFFSET 309 > +#define BXT_EMMC0_STROBE_OFFSET 310 > +#define BXT_SDIO_PWR_DOWN_B_OFFSET 311 > +#define BXT_SDCARD_PWR_DOWN_B_OFFSET 312 > +#define BXT_SDCARD_LVL_SEL_OFFSET 313 > +#define BXT_SDCARD_LVL_WP_OFFSET 314 > +#define BXT_LPSS_I2C0_SDA_OFFSET 315 > +#define BXT_LPSS_I2C0_SCL_OFFSET 316 > +#define BXT_LPSS_I2C1_SDA_OFFSET 317 > +#define BXT_LPSS_I2C1_SCL_OFFSET 318 > +#define BXT_LPSS_I2C2_SDA_OFFSET 319 > +#define BXT_LPSS_I2C2_SCL_OFFSET 320 > +#define BXT_LPSS_I2C3_SDA_OFFSET 321 > +#define BXT_LPSS_I2C3_SCL_OFFSET 322 > +#define BXT_LPSS_I2C4_SDA_OFFSET 323 > +#define BXT_LPSS_I2C4_SCL_OFFSET 324 > +#define BXT_LPSS_I2C5_SDA_OFFSET 325 > +#define BXT_LPSS_I2C5_SCL_OFFSET 326 > +#define BXT_LPSS_I2C6_SDA_OFFSET 327 > +#define BXT_LPSS_I2C6_SCL_OFFSET 328 > +#define BXT_LPSS_I2C7_SDA_OFFSET 329 > +#define BXT_LPSS_I2C7_SCL_OFFSET 330 > +#define BXT_ISH_I2C0_SDA_OFFSET 331 > +#define BXT_ISH_I2C0_SCL_OFFSET 332 > +#define BXT_ISH_I2C1_SDA_OFFSET 333 > +#define BXT_ISH_I2C1_SCL_OFFSET 334 > +#define BXT_ISH_I2C2_SDA_OFFSET 335 > +#define BXT_ISH_I2C2_SCL_OFFSET 336 > +#define BXT_ISH_GPIO_0_OFFSET 337 > +#define BXT_ISH_GPIO_1_OFFSET 338 > +#define BXT_ISH_GPIO_2_OFFSET 339 > +#define BXT_ISH_GPIO_3_OFFSET 340 > +#define BXT_ISH_GPIO_4_OFFSET 341 > +#define BXT_ISH_GPIO_5_OFFSET 342 > +#define BXT_ISH_GPIO_6_OFFSET 343 > +#define BXT_ISH_GPIO_7_OFFSET 344 > +#define BXT_ISH_GPIO_8_OFFSET 345 > +#define BXT_ISH_GPIO_9_OFFSET 346 > +#define BXT_AVS_I2S1_MCLK_OFFSET 378 > +#define BXT_AVS_I2S1_BCLK_OFFSET 379 > +#define BXT_AVS_I2S1_WS_SYNC_OFFSET 380 > +#define BXT_AVS_I2S1_SDI_OFFSET 381 > +#define BXT_AVS_I2S1_SDO_OFFSET 382 > +#define BXT_AVS_M_CLK_A1_OFFSET 383 > +#define BXT_AVS_M_CLK_B1_OFFSET 384 > +#define BXT_AVS_M_DATA_1_OFFSET 385 > +#define BXT_AVS_M_CLK_AB2_OFFSET 386 > +#define BXT_AVS_M_DATA_2_OFFSET 387 > +#define BXT_AVS_I2S2_MCLK_OFFSET 388 > +#define BXT_AVS_I2S2_BCLK_OFFSET 389 > +#define BXT_AVS_I2S2_WS_SYNC_OFFSET 390 > +#define BXT_AVS_I2S2_SDI_OFFSET 391 > +#define BXT_AVS_I2S2_SDO_OFFSET 392 > +#define BXT_AVS_I2S3_BCLK_OFFSET 393 > +#define BXT_AVS_I2S3_WS_SYNC_OFFSET 394 > +#define BXT_AVS_I2S3_SDI_OFFSET 395 > +#define BXT_AVS_I2S3_SDO_OFFSET 396 > +#define BXT_AVS_I2S4_BCLK_OFFSET 397 > +#define BXT_AVS_I2S4_WS_SYNC_OFFSET 398 > +#define BXT_AVS_I2S4_SDI_OFFSET 399 > +#define BXT_AVS_I2S4_SDO_OFFSET 400 > +#define BXT_FST_SPI_CS0_B_OFFSET 402 > +#define BXT_FST_SPI_CS1_B_OFFSET 403 > +#define BXT_FST_SPI_MOSI_IO0_OFFSET 404 > +#define BXT_FST_SPI_MISO_IO1_OFFSET 405 > +#define BXT_FST_SPI_IO2_OFFSET 406 > +#define BXT_FST_SPI_IO3_OFFSET 407 > +#define BXT_FST_SPI_CLK_OFFSET 408 > +#define BXT_GP_SSP_0_CLK_OFFSET 410 > +#define BXT_GP_SSP_0_FS0_OFFSET 411 > +#define BXT_GP_SSP_0_FS1_OFFSET 412 > +#define BXT_GP_SSP_0_FS2_OFFSET 413 > +#define BXT_GP_SSP_0_RXD_OFFSET 414 > +#define BXT_GP_SSP_0_TXD_OFFSET 415 > +#define BXT_GP_SSP_1_CLK_OFFSET 416 > +#define BXT_GP_SSP_1_FS0_OFFSET 417 > +#define BXT_GP_SSP_1_FS1_OFFSET 418 > +#define BXT_GP_SSP_1_FS2_OFFSET 419 > +#define BXT_GP_SSP_1_FS3_OFFSET 420 > +#define BXT_GP_SSP_1_RXD_OFFSET 421 > +#define BXT_GP_SSP_1_TXD_OFFSET 422 > +#define BXT_GP_SSP_2_CLK_OFFSET 423 > +#define BXT_GP_SSP_2_FS0_OFFSET 424 > +#define BXT_GP_SSP_2_FS1_OFFSET 425 > +#define BXT_GP_SSP_2_FS2_OFFSET 426 > +#define BXT_GP_SSP_2_RXD_OFFSET 427 > +#define BXT_GP_SSP_2_TXD_OFFSET 428 > +#define BXT_TRACE_0_CLK_VNN_OFFSET 429 > +#define BXT_TRACE_0_DATA0_VNN_OFFSET 430 > +#define BXT_TRACE_0_DATA1_VNN_OFFSET 431 > +#define BXT_TRACE_0_DATA2_VNN_OFFSET 432 > +#define BXT_TRACE_0_DATA3_VNN_OFFSET 433 > +#define BXT_TRACE_0_DATA4_VNN_OFFSET 434 > +#define BXT_TRACE_0_DATA5_VNN_OFFSET 435 > +#define BXT_TRACE_0_DATA6_VNN_OFFSET 436 > +#define BXT_TRACE_0_DATA7_VNN_OFFSET 437 > +#define BXT_TRACE_1_CLK_VNN_OFFSET 438 > +#define BXT_TRACE_1_DATA0_VNN_OFFSET 439 > +#define BXT_TRACE_1_DATA1_VNN_OFFSET 440 > +#define BXT_TRACE_1_DATA2_VNN_OFFSET 441 > +#define BXT_TRACE_1_DATA3_VNN_OFFSET 442 > +#define BXT_TRACE_1_DATA4_VNN_OFFSET 443 > +#define BXT_TRACE_1_DATA5_VNN_OFFSET 444 > +#define BXT_TRACE_1_DATA6_VNN_OFFSET 445 > +#define BXT_TRACE_1_DATA7_VNN_OFFSET 446 > +#define BXT_TRACE_2_CLK_VNN_OFFSET 447 > +#define BXT_TRACE_2_DATA0_VNN_OFFSET 448 > +#define BXT_TRACE_2_DATA1_VNN_OFFSET 449 > +#define BXT_TRACE_2_DATA2_VNN_OFFSET 450 > +#define BXT_TRACE_2_DATA3_VNN_OFFSET 451 > +#define BXT_TRACE_2_DATA4_VNN_OFFSET 452 > +#define BXT_TRACE_2_DATA5_VNN_OFFSET 453 > +#define BXT_TRACE_2_DATA6_VNN_OFFSET 454 > +#define BXT_TRACE_2_DATA7_VNN_OFFSET 455 > +#define BXT_TRIGOUT_0_OFFSET 456 > +#define BXT_TRIGOUT_1_OFFSET 457 > +#define BXT_TRIGIN_0_OFFSET 458 > +#define BXT_SEC_TCK_OFFSET 459 > +#define BXT_SEC_TDI_OFFSET 460 > +#define BXT_SEC_TMS_OFFSET 461 > +#define BXT_SEC_TDO_OFFSET 462 > +#define BXT_PWM0_OFFSET 463 > +#define BXT_PWM1_OFFSET 464 > +#define BXT_PWM2_OFFSET 465 > +#define BXT_PWM3_OFFSET 466 > +#define BXT_LPSS_UART0_RXD_OFFSET 467 > +#define BXT_LPSS_UART0_TXD_OFFSET 468 > +#define BXT_LPSS_UART0_RTS_B_OFFSET 469 > +#define BXT_LPSS_UART0_CTS_B_OFFSET 470 > +#define BXT_LPSS_UART1_RXD_OFFSET 471 > +#define BXT_LPSS_UART1_TXD_OFFSET 472 > +#define BXT_LPSS_UART1_RTS_B_OFFSET 473 > +#define BXT_LPSS_UART1_CTS_B_OFFSET 474 > +#define BXT_LPSS_UART2_RXD_OFFSET 475 > +#define BXT_LPSS_UART2_TXD_OFFSET 476 > +#define BXT_LPSS_UART2_RTS_B_OFFSET 477 > +#define BXT_LPSS_UART2_CTS_B_OFFSET 478 > +#define BXT_ISH_UART0_RXD_OFFSET 479 > +#define BXT_ISH_UART0_TXD_OFFSET 480 > +#define BXT_ISH_UART0_RTS_B_OFFSET 481 > +#define BXT_ISH_UART0_CTS_B_OFFSET 482 > +#define BXT_ISH_UART1_RXD_OFFSET 483 > +#define BXT_ISH_UART1_TXD_OFFSET 484 > +#define BXT_ISH_UART1_RTS_B_OFFSET 485 > +#define BXT_ISH_UART1_CTS_B_OFFSET 486 > +#define BXT_ISH_UART2_RXD_OFFSET 487 > +#define BXT_ISH_UART2_TXD_OFFSET 488 > +#define BXT_ISH_UART2_RTS_B_OFFSET 489 > +#define BXT_ISH_UART2_CTS_B_OFFSET 490 > +#define BXT_GP_CAMERASB00_OFFSET 491 > +#define BXT_GP_CAMERASB01_OFFSET 492 > +#define BXT_GP_CAMERASB02_OFFSET 493 > +#define BXT_GP_CAMERASB03_OFFSET 494 > +#define BXT_GP_CAMERASB04_OFFSET 495 > +#define BXT_GP_CAMERASB05_OFFSET 496 > +#define BXT_GP_CAMERASB06_OFFSET 497 > +#define BXT_GP_CAMERASB07_OFFSET 498 > +#define BXT_GP_CAMERASB08_OFFSET 499 > +#define BXT_GP_CAMERASB09_OFFSET 500 > +#define BXT_GP_CAMERASB10_OFFSET 501 > +#define BXT_GP_CAMERASB11_OFFSET 502 > + > +struct bxt_gpio_map { > + u8 gpio_index; > + u16 gpio_number; > + bool requested; > +}; > + > +/* XXX: take out everything that is not related to DSI display */ > +static struct bxt_gpio_map bxt_gpio_table[] = { > + { BXT_HV_DDI0_DDC_SDA_PIN, BXT_HV_DDI0_DDC_SDA_OFFSET }, > + { BXT_HV_DDI0_DDC_SCL_PIN, BXT_HV_DDI0_DDC_SCL_OFFSET }, > + { BXT_HV_DDI1_DDC_SDA_PIN, BXT_HV_DDI1_DDC_SDA_OFFSET }, > + { BXT_HV_DDI1_DDC_SCL_PIN, BXT_HV_DDI1_DDC_SCL_OFFSET }, > + { BXT_DBI_SDA_PIN, BXT_DBI_SDA_OFFSET }, > + { BXT_DBI_SCL_PIN, BXT_DBI_SCL_OFFSET }, > + { BXT_PANEL0_VDDEN_PIN, BXT_PANEL0_VDDEN_OFFSET }, > + { BXT_PANEL0_BKLTEN_PIN, BXT_PANEL0_BKLTEN_OFFSET }, > + { BXT_PANEL0_BKLTCTL_PIN, BXT_PANEL0_BKLTCTL_OFFSET }, > + { BXT_PANEL1_VDDEN_PIN, BXT_PANEL1_VDDEN_OFFSET }, > + { BXT_PANEL1_BKLTEN_PIN, BXT_PANEL1_BKLTEN_OFFSET }, > + { BXT_PANEL1_BKLTCTL_PIN, BXT_PANEL1_BKLTCTL_OFFSET }, > + { BXT_DBI_CSX_PIN, BXT_DBI_CSX_OFFSET }, > + { BXT_DBI_RESX_PIN, BXT_DBI_RESX_OFFSET }, > + { BXT_GP_INTD_DSI_TE1_PIN, BXT_GP_INTD_DSI_TE1_OFFSET }, > + { BXT_GP_INTD_DSI_TE2_PIN, BXT_GP_INTD_DSI_TE2_OFFSET }, > + { BXT_USB_OC0_B_PIN, BXT_USB_OC0_B_OFFSET }, > + { BXT_USB_OC1_B_PIN, BXT_USB_OC1_B_OFFSET }, > + { BXT_MEX_WAKE0_B_PIN, BXT_MEX_WAKE0_B_OFFSET }, > + { BXT_MEX_WAKE1_B_PIN, BXT_MEX_WAKE1_B_OFFSET }, > + { BXT_EMMC0_CLK_PIN, BXT_EMMC0_CLK_OFFSET }, > + { BXT_EMMC0_D0_PIN, BXT_EMMC0_D0_OFFSET }, > + { BXT_EMMC0_D1_PIN, BXT_EMMC0_D1_OFFSET }, > + { BXT_EMMC0_D2_PIN, BXT_EMMC0_D2_OFFSET }, > + { BXT_EMMC0_D3_PIN, BXT_EMMC0_D3_OFFSET }, > + { BXT_EMMC0_D4_PIN, BXT_EMMC0_D4_OFFSET }, > + { BXT_EMMC0_D5_PIN, BXT_EMMC0_D5_OFFSET }, > + { BXT_EMMC0_D6_PIN, BXT_EMMC0_D6_OFFSET }, > + { BXT_EMMC0_D7_PIN, BXT_EMMC0_D7_OFFSET }, > + { BXT_EMMC0_CMD_PIN, BXT_EMMC0_CMD_OFFSET }, > + { BXT_SDIO_CLK_PIN, BXT_SDIO_CLK_OFFSET }, > + { BXT_SDIO_D0_PIN, BXT_SDIO_D0_OFFSET }, > + { BXT_SDIO_D1_PIN, BXT_SDIO_D1_OFFSET }, > + { BXT_SDIO_D2_PIN, BXT_SDIO_D2_OFFSET }, > + { BXT_SDIO_D3_PIN, BXT_SDIO_D3_OFFSET }, > + { BXT_SDIO_CMD_PIN, BXT_SDIO_CMD_OFFSET }, > + { BXT_SDCARD_CLK_PIN, BXT_SDCARD_CLK_OFFSET }, > + { BXT_SDCARD_D0_PIN, BXT_SDCARD_D0_OFFSET }, > + { BXT_SDCARD_D1_PIN, BXT_SDCARD_D1_OFFSET }, > + { BXT_SDCARD_D2_PIN, BXT_SDCARD_D2_OFFSET }, > + { BXT_SDCARD_D3_PIN, BXT_SDCARD_D3_OFFSET }, > + { BXT_SDCARD_CD_B_PIN, BXT_SDCARD_CD_B_OFFSET }, > + { BXT_SDCARD_CMD_PIN, BXT_SDCARD_CMD_OFFSET }, > + { BXT_SDCARD_LVL_CLK_FB_PIN, BXT_SDCARD_LVL_CLK_FB_OFFSET }, > + { BXT_SDCARD_LVL_CMD_DIR_PIN, BXT_SDCARD_LVL_CMD_DIR_OFFSET }, > + { BXT_SDCARD_LVL_DAT_DIR_PIN, BXT_SDCARD_LVL_DAT_DIR_OFFSET }, > + { BXT_EMMC0_STROBE_PIN, BXT_EMMC0_STROBE_OFFSET }, > + { BXT_SDIO_PWR_DOWN_B_PIN, BXT_SDIO_PWR_DOWN_B_OFFSET }, > + { BXT_SDCARD_PWR_DOWN_B_PIN, BXT_SDCARD_PWR_DOWN_B_OFFSET }, > + { BXT_SDCARD_LVL_SEL_PIN, BXT_SDCARD_LVL_SEL_OFFSET }, > + { BXT_SDCARD_LVL_WP_PIN, BXT_SDCARD_LVL_WP_OFFSET }, > + { BXT_LPSS_I2C0_SDA_PIN, BXT_LPSS_I2C0_SDA_OFFSET }, > + { BXT_LPSS_I2C0_SCL_PIN, BXT_LPSS_I2C0_SCL_OFFSET }, > + { BXT_LPSS_I2C1_SDA_PIN, BXT_LPSS_I2C1_SDA_OFFSET }, > + { BXT_LPSS_I2C1_SCL_PIN, BXT_LPSS_I2C1_SCL_OFFSET }, > + { BXT_LPSS_I2C2_SDA_PIN, BXT_LPSS_I2C2_SDA_OFFSET }, > + { BXT_LPSS_I2C2_SCL_PIN, BXT_LPSS_I2C2_SCL_OFFSET }, > + { BXT_LPSS_I2C3_SDA_PIN, BXT_LPSS_I2C3_SDA_OFFSET }, > + { BXT_LPSS_I2C3_SCL_PIN, BXT_LPSS_I2C3_SCL_OFFSET }, > + { BXT_LPSS_I2C4_SDA_PIN, BXT_LPSS_I2C4_SDA_OFFSET }, > + { BXT_LPSS_I2C4_SCL_PIN, BXT_LPSS_I2C4_SCL_OFFSET }, > + { BXT_LPSS_I2C5_SDA_PIN, BXT_LPSS_I2C5_SDA_OFFSET }, > + { BXT_LPSS_I2C5_SCL_PIN, BXT_LPSS_I2C5_SCL_OFFSET }, > + { BXT_LPSS_I2C6_SDA_PIN, BXT_LPSS_I2C6_SDA_OFFSET }, > + { BXT_LPSS_I2C6_SCL_PIN, BXT_LPSS_I2C6_SCL_OFFSET }, > + { BXT_LPSS_I2C7_SDA_PIN, BXT_LPSS_I2C7_SDA_OFFSET }, > + { BXT_LPSS_I2C7_SCL_PIN, BXT_LPSS_I2C7_SCL_OFFSET }, > + { BXT_ISH_I2C0_SDA_PIN, BXT_ISH_I2C0_SDA_OFFSET }, > + { BXT_ISH_I2C0_SCL_PIN, BXT_ISH_I2C0_SCL_OFFSET }, > + { BXT_ISH_I2C1_SDA_PIN, BXT_ISH_I2C1_SDA_OFFSET }, > + { BXT_ISH_I2C1_SCL_PIN, BXT_ISH_I2C1_SCL_OFFSET }, > + { BXT_ISH_I2C2_SDA_PIN, BXT_ISH_I2C2_SDA_OFFSET }, > + { BXT_ISH_I2C2_SCL_PIN, BXT_ISH_I2C2_SCL_OFFSET }, > + { BXT_ISH_GPIO_0_PIN, BXT_ISH_GPIO_0_OFFSET }, > + { BXT_ISH_GPIO_1_PIN, BXT_ISH_GPIO_1_OFFSET }, > + { BXT_ISH_GPIO_2_PIN, BXT_ISH_GPIO_2_OFFSET }, > + { BXT_ISH_GPIO_3_PIN, BXT_ISH_GPIO_3_OFFSET }, > + { BXT_ISH_GPIO_4_PIN, BXT_ISH_GPIO_4_OFFSET }, > + { BXT_ISH_GPIO_5_PIN, BXT_ISH_GPIO_5_OFFSET }, > + { BXT_ISH_GPIO_6_PIN, BXT_ISH_GPIO_6_OFFSET }, > + { BXT_ISH_GPIO_7_PIN, BXT_ISH_GPIO_7_OFFSET }, > + { BXT_ISH_GPIO_8_PIN, BXT_ISH_GPIO_8_OFFSET }, > + { BXT_ISH_GPIO_9_PIN, BXT_ISH_GPIO_9_OFFSET }, > + { BXT_AVS_I2S1_MCLK_PIN, BXT_AVS_I2S1_MCLK_OFFSET }, > + { BXT_AVS_I2S1_BCLK_PIN, BXT_AVS_I2S1_BCLK_OFFSET }, > + { BXT_AVS_I2S1_WS_SYNC_PIN, BXT_AVS_I2S1_WS_SYNC_OFFSET }, > + { BXT_AVS_I2S1_SDI_PIN, BXT_AVS_I2S1_SDI_OFFSET }, > + { BXT_AVS_I2S1_SDO_PIN, BXT_AVS_I2S1_SDO_OFFSET }, > + { BXT_AVS_M_CLK_A1_PIN, BXT_AVS_M_CLK_A1_OFFSET }, > + { BXT_AVS_M_CLK_B1_PIN, BXT_AVS_M_CLK_B1_OFFSET }, > + { BXT_AVS_M_DATA_1_PIN, BXT_AVS_M_DATA_1_OFFSET }, > + { BXT_AVS_M_CLK_AB2_PIN, BXT_AVS_M_CLK_AB2_OFFSET }, > + { BXT_AVS_M_DATA_2_PIN, BXT_AVS_M_DATA_2_OFFSET }, > + { BXT_AVS_I2S2_MCLK_PIN, BXT_AVS_I2S2_MCLK_OFFSET }, > + { BXT_AVS_I2S2_BCLK_PIN, BXT_AVS_I2S2_BCLK_OFFSET }, > + { BXT_AVS_I2S2_WS_SYNC_PIN, BXT_AVS_I2S2_WS_SYNC_OFFSET }, > + { BXT_AVS_I2S2_SDI_PIN, BXT_AVS_I2S2_SDI_OFFSET }, > + { BXT_AVS_I2S2_SDO_PIN, BXT_AVS_I2S2_SDO_OFFSET }, > + { BXT_AVS_I2S3_BCLK_PIN, BXT_AVS_I2S3_BCLK_OFFSET }, > + { BXT_AVS_I2S3_WS_SYNC_PIN, BXT_AVS_I2S3_WS_SYNC_OFFSET }, > + { BXT_AVS_I2S3_SDI_PIN, BXT_AVS_I2S3_SDI_OFFSET }, > + { BXT_AVS_I2S3_SDO_PIN, BXT_AVS_I2S3_SDO_OFFSET }, > + { BXT_AVS_I2S4_BCLK_PIN, BXT_AVS_I2S4_BCLK_OFFSET }, > + { BXT_AVS_I2S4_WS_SYNC_PIN, BXT_AVS_I2S4_WS_SYNC_OFFSET }, > + { BXT_AVS_I2S4_SDI_PIN, BXT_AVS_I2S4_SDI_OFFSET }, > + { BXT_AVS_I2S4_SDO_PIN, BXT_AVS_I2S4_SDO_OFFSET }, > + { BXT_FST_SPI_CS0_B_PIN, BXT_FST_SPI_CS0_B_OFFSET }, > + { BXT_FST_SPI_CS1_B_PIN, BXT_FST_SPI_CS1_B_OFFSET }, > + { BXT_FST_SPI_MOSI_IO0_PIN, BXT_FST_SPI_MOSI_IO0_OFFSET }, > + { BXT_FST_SPI_MISO_IO1_PIN, BXT_FST_SPI_MISO_IO1_OFFSET }, > + { BXT_FST_SPI_IO2_PIN, BXT_FST_SPI_IO2_OFFSET }, > + { BXT_FST_SPI_IO3_PIN, BXT_FST_SPI_IO3_OFFSET }, > + { BXT_FST_SPI_CLK_PIN, BXT_FST_SPI_CLK_OFFSET }, > + { BXT_GP_SSP_0_CLK_PIN, BXT_GP_SSP_0_CLK_OFFSET }, > + { BXT_GP_SSP_0_FS0_PIN, BXT_GP_SSP_0_FS0_OFFSET }, > + { BXT_GP_SSP_0_FS1_PIN, BXT_GP_SSP_0_FS1_OFFSET }, > + { BXT_GP_SSP_0_FS2_PIN, BXT_GP_SSP_0_FS2_OFFSET }, > + { BXT_GP_SSP_0_RXD_PIN, BXT_GP_SSP_0_RXD_OFFSET }, > + { BXT_GP_SSP_0_TXD_PIN, BXT_GP_SSP_0_TXD_OFFSET }, > + { BXT_GP_SSP_1_CLK_PIN, BXT_GP_SSP_1_CLK_OFFSET }, > + { BXT_GP_SSP_1_FS0_PIN, BXT_GP_SSP_1_FS0_OFFSET }, > + { BXT_GP_SSP_1_FS1_PIN, BXT_GP_SSP_1_FS1_OFFSET }, > + { BXT_GP_SSP_1_FS2_PIN, BXT_GP_SSP_1_FS2_OFFSET }, > + { BXT_GP_SSP_1_FS3_PIN, BXT_GP_SSP_1_FS3_OFFSET }, > + { BXT_GP_SSP_1_RXD_PIN, BXT_GP_SSP_1_RXD_OFFSET }, > + { BXT_GP_SSP_1_TXD_PIN, BXT_GP_SSP_1_TXD_OFFSET }, > + { BXT_GP_SSP_2_CLK_PIN, BXT_GP_SSP_2_CLK_OFFSET }, > + { BXT_GP_SSP_2_FS0_PIN, BXT_GP_SSP_2_FS0_OFFSET }, > + { BXT_GP_SSP_2_FS1_PIN, BXT_GP_SSP_2_FS1_OFFSET }, > + { BXT_GP_SSP_2_FS2_PIN, BXT_GP_SSP_2_FS2_OFFSET }, > + { BXT_GP_SSP_2_RXD_PIN, BXT_GP_SSP_2_RXD_OFFSET }, > + { BXT_GP_SSP_2_TXD_PIN, BXT_GP_SSP_2_TXD_OFFSET }, > + { BXT_TRACE_0_CLK_VNN_PIN, BXT_TRACE_0_CLK_VNN_OFFSET }, > + { BXT_TRACE_0_DATA0_VNN_PIN, BXT_TRACE_0_DATA0_VNN_OFFSET }, > + { BXT_TRACE_0_DATA1_VNN_PIN, BXT_TRACE_0_DATA1_VNN_OFFSET }, > + { BXT_TRACE_0_DATA2_VNN_PIN, BXT_TRACE_0_DATA2_VNN_OFFSET }, > + { BXT_TRACE_0_DATA3_VNN_PIN, BXT_TRACE_0_DATA3_VNN_OFFSET }, > + { BXT_TRACE_0_DATA4_VNN_PIN, BXT_TRACE_0_DATA4_VNN_OFFSET }, > + { BXT_TRACE_0_DATA5_VNN_PIN, BXT_TRACE_0_DATA5_VNN_OFFSET }, > + { BXT_TRACE_0_DATA6_VNN_PIN, BXT_TRACE_0_DATA6_VNN_OFFSET }, > + { BXT_TRACE_0_DATA7_VNN_PIN, BXT_TRACE_0_DATA7_VNN_OFFSET }, > + { BXT_TRACE_1_CLK_VNN_PIN, BXT_TRACE_1_CLK_VNN_OFFSET }, > + { BXT_TRACE_1_DATA0_VNN_PIN, BXT_TRACE_1_DATA0_VNN_OFFSET }, > + { BXT_TRACE_1_DATA1_VNN_PIN, BXT_TRACE_1_DATA1_VNN_OFFSET }, > + { BXT_TRACE_1_DATA2_VNN_PIN, BXT_TRACE_1_DATA2_VNN_OFFSET }, > + { BXT_TRACE_1_DATA3_VNN_PIN, BXT_TRACE_1_DATA3_VNN_OFFSET }, > + { BXT_TRACE_1_DATA4_VNN_PIN, BXT_TRACE_1_DATA4_VNN_OFFSET }, > + { BXT_TRACE_1_DATA5_VNN_PIN, BXT_TRACE_1_DATA5_VNN_OFFSET }, > + { BXT_TRACE_1_DATA6_VNN_PIN, BXT_TRACE_1_DATA6_VNN_OFFSET }, > + { BXT_TRACE_1_DATA7_VNN_PIN, BXT_TRACE_1_DATA7_VNN_OFFSET }, > + { BXT_TRACE_2_CLK_VNN_PIN, BXT_TRACE_2_CLK_VNN_OFFSET }, > + { BXT_TRACE_2_DATA0_VNN_PIN, BXT_TRACE_2_DATA0_VNN_OFFSET }, > + { BXT_TRACE_2_DATA1_VNN_PIN, BXT_TRACE_2_DATA1_VNN_OFFSET }, > + { BXT_TRACE_2_DATA2_VNN_PIN, BXT_TRACE_2_DATA2_VNN_OFFSET }, > + { BXT_TRACE_2_DATA3_VNN_PIN, BXT_TRACE_2_DATA3_VNN_OFFSET }, > + { BXT_TRACE_2_DATA4_VNN_PIN, BXT_TRACE_2_DATA4_VNN_OFFSET }, > + { BXT_TRACE_2_DATA5_VNN_PIN, BXT_TRACE_2_DATA5_VNN_OFFSET }, > + { BXT_TRACE_2_DATA6_VNN_PIN, BXT_TRACE_2_DATA6_VNN_OFFSET }, > + { BXT_TRACE_2_DATA7_VNN_PIN, BXT_TRACE_2_DATA7_VNN_OFFSET }, > + { BXT_TRIGOUT_0_PIN, BXT_TRIGOUT_0_OFFSET }, > + { BXT_TRIGOUT_1_PIN, BXT_TRIGOUT_1_OFFSET }, > + { BXT_TRIGIN_0_PIN, BXT_TRIGIN_0_OFFSET }, > + { BXT_SEC_TCK_PIN, BXT_SEC_TCK_OFFSET }, > + { BXT_SEC_TDI_PIN, BXT_SEC_TDI_OFFSET }, > + { BXT_SEC_TMS_PIN, BXT_SEC_TMS_OFFSET }, > + { BXT_SEC_TDO_PIN, BXT_SEC_TDO_OFFSET }, > + { BXT_PWM0_PIN, BXT_PWM0_OFFSET }, > + { BXT_PWM1_PIN, BXT_PWM1_OFFSET }, > + { BXT_PWM2_PIN, BXT_PWM2_OFFSET }, > + { BXT_PWM3_PIN, BXT_PWM3_OFFSET }, > + { BXT_LPSS_UART0_RXD_PIN, BXT_LPSS_UART0_RXD_OFFSET }, > + { BXT_LPSS_UART0_TXD_PIN, BXT_LPSS_UART0_TXD_OFFSET }, > + { BXT_LPSS_UART0_RTS_B_PIN, BXT_LPSS_UART0_RTS_B_OFFSET }, > + { BXT_LPSS_UART0_CTS_B_PIN, BXT_LPSS_UART0_CTS_B_OFFSET }, > + { BXT_LPSS_UART1_RXD_PIN, BXT_LPSS_UART1_RXD_OFFSET }, > + { BXT_LPSS_UART1_TXD_PIN, BXT_LPSS_UART1_TXD_OFFSET }, > + { BXT_LPSS_UART1_RTS_B_PIN, BXT_LPSS_UART1_RTS_B_OFFSET }, > + { BXT_LPSS_UART1_CTS_B_PIN, BXT_LPSS_UART1_CTS_B_OFFSET }, > + { BXT_LPSS_UART2_RXD_PIN, BXT_LPSS_UART2_RXD_OFFSET }, > + { BXT_LPSS_UART2_TXD_PIN, BXT_LPSS_UART2_TXD_OFFSET }, > + { BXT_LPSS_UART2_RTS_B_PIN, BXT_LPSS_UART2_RTS_B_OFFSET }, > + { BXT_LPSS_UART2_CTS_B_PIN, BXT_LPSS_UART2_CTS_B_OFFSET }, > + { BXT_ISH_UART0_RXD_PIN, BXT_ISH_UART0_RXD_OFFSET }, > + { BXT_ISH_UART0_TXD_PIN, BXT_ISH_UART0_TXD_OFFSET }, > + { BXT_ISH_UART0_RTS_B_PIN, BXT_ISH_UART0_RTS_B_OFFSET }, > + { BXT_ISH_UART0_CTS_B_PIN, BXT_ISH_UART0_CTS_B_OFFSET }, > + { BXT_ISH_UART1_RXD_PIN, BXT_ISH_UART1_RXD_OFFSET }, > + { BXT_ISH_UART1_TXD_PIN, BXT_ISH_UART1_TXD_OFFSET }, > + { BXT_ISH_UART1_RTS_B_PIN, BXT_ISH_UART1_RTS_B_OFFSET }, > + { BXT_ISH_UART1_CTS_B_PIN, BXT_ISH_UART1_CTS_B_OFFSET }, > + { BXT_ISH_UART2_RXD_PIN, BXT_ISH_UART2_RXD_OFFSET }, > + { BXT_ISH_UART2_TXD_PIN, BXT_ISH_UART2_TXD_OFFSET }, > + { BXT_ISH_UART2_RTS_B_PIN, BXT_ISH_UART2_RTS_B_OFFSET }, > + { BXT_ISH_UART2_CTS_B_PIN, BXT_ISH_UART2_CTS_B_OFFSET }, > + { BXT_GP_CAMERASB00_PIN, BXT_GP_CAMERASB00_OFFSET }, > + { BXT_GP_CAMERASB01_PIN, BXT_GP_CAMERASB01_OFFSET }, > + { BXT_GP_CAMERASB02_PIN, BXT_GP_CAMERASB02_OFFSET }, > + { BXT_GP_CAMERASB03_PIN, BXT_GP_CAMERASB03_OFFSET }, > + { BXT_GP_CAMERASB04_PIN, BXT_GP_CAMERASB04_OFFSET }, > + { BXT_GP_CAMERASB05_PIN, BXT_GP_CAMERASB05_OFFSET }, > + { BXT_GP_CAMERASB06_PIN, BXT_GP_CAMERASB06_OFFSET }, > + { BXT_GP_CAMERASB07_PIN, BXT_GP_CAMERASB07_OFFSET }, > + { BXT_GP_CAMERASB08_PIN, BXT_GP_CAMERASB08_OFFSET }, > + { BXT_GP_CAMERASB09_PIN, BXT_GP_CAMERASB09_OFFSET }, > + { BXT_GP_CAMERASB10_PIN, BXT_GP_CAMERASB10_OFFSET }, > + { BXT_GP_CAMERASB11_PIN, BXT_GP_CAMERASB11_OFFSET }, > +}; > + > static inline enum port intel_dsi_seq_port_to_port(u8 port) > { > return port ? PORT_C : PORT_A; > @@ -305,6 +936,40 @@ static void chv_exec_gpio(struct drm_i915_private *dev_priv, > mutex_unlock(&dev_priv->sb_lock); > } > > +static void bxt_exec_gpio(struct drm_i915_private *dev_priv, > + u8 gpio_source, u8 gpio_index, u8 action) > +{ > + struct bxt_gpio_map *map = NULL; > + unsigned int gpio; > + int i; > + > + for (i = 0; i < ARRAY_SIZE(bxt_gpio_table); i++) { > + if (gpio_index == bxt_gpio_table[i].gpio_index) { > + map = &bxt_gpio_table[i]; > + break; > + } > + } > + > + if (!map) { > + DRM_DEBUG_KMS("invalid gpio index %u\n", gpio_index); > + return; > + } > + > + gpio = map->gpio_number; > + > + if (!map->requested) { > + int ret = devm_gpio_request_one(dev_priv->dev->dev, gpio, > + GPIOF_DIR_OUT, "MIPI DSI"); > + if (ret) { > + DRM_ERROR("unable to request GPIO %u (%d)\n", gpio, ret); > + return; > + } > + map->requested = true; > + } > + > + gpio_set_value(gpio, action); > +} > + > static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > { > struct drm_device *dev = intel_dsi->base.base.dev; > @@ -330,7 +995,7 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > else if (IS_CHERRYVIEW(dev_priv)) > chv_exec_gpio(dev_priv, gpio_source, gpio_index, action); > else > - DRM_DEBUG_KMS("GPIO element not supported on this platform\n"); > + bxt_exec_gpio(dev_priv, gpio_source, gpio_index, action); > > return data; > } > -- > 2.1.4 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx