On Wed, 23 Mar 2016, Mika Kahola <mika.kah...@intel.com> wrote:
> On Fri, 2016-03-18 at 13:11 +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.nik...@intel.com>
>> ---
>>  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
>> +#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);
> Should we check for BXT platform here before entering to gpio routine
> and if not BXT in question leave the debug message as is?

I don't think so. We don't initialize DSI or anything other than vlv,
chv, and bxt. DSI enabling for new platforms need to cover these.

BR,
Jani.


>
>
>>      return data;
>>  }

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to