* [PATCH] drm/i915: GPIO for BXT generic MIPI
@ 2016-03-02 14:44 Deepak M
2016-03-02 14:46 ` Deepak, M
0 siblings, 1 reply; 4+ messages in thread
From: Deepak M @ 2016-03-02 14:44 UTC (permalink / raw)
To: intel-gfx; +Cc: Deepak M, Jani Nikula
Added the BXT GPIO pin configuration and programming logic for
backlight and panel control.
v2 by Deepak
- Added the GPIO table got BXT.
- Added gpio_free
v3 by Deepak
- requesting the gpio once
- freeing the gpio while unloading
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Deepak M <m.deepak@intel.com>
---
drivers/gpu/drm/i915/intel_dsi.c | 6 +
drivers/gpu/drm/i915/intel_dsi.h | 2 +-
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 686 +++++++++++++++++++++++++++++
3 files changed, 693 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index b928c50..30994f5 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -39,10 +39,12 @@
static const struct {
u16 panel_id;
struct drm_panel * (*init)(struct intel_dsi *intel_dsi, u16 panel_id);
+ void (*exit)(struct intel_dsi *intel_dsi);
} intel_dsi_drivers[] = {
{
.panel_id = MIPI_DSI_GENERIC_PANEL_ID,
.init = vbt_panel_init,
+ .exit = vbt_panel_exit,
},
};
@@ -1073,6 +1075,7 @@ static void intel_dsi_connector_destroy(struct drm_connector *connector)
static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
{
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
+ int i;
if (intel_dsi->panel) {
drm_panel_detach(intel_dsi->panel);
@@ -1084,6 +1087,9 @@ static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
if (intel_dsi->gpio_panel)
gpiod_put(intel_dsi->gpio_panel);
+ for (i = 0; i < ARRAY_SIZE(intel_dsi_drivers); i++)
+ intel_dsi_drivers[i].exit(intel_dsi);
+
intel_encoder_destroy(encoder);
}
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index de7be7f..2f833b0 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -131,5 +131,5 @@ extern void intel_dsi_reset_clocks(struct intel_encoder *encoder,
enum port port);
struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id);
-
+void vbt_panel_exit(struct intel_dsi *intel_dsi);
#endif /* _INTEL_DSI_H */
diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
index 6b9a1f7..43146f5 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>
@@ -615,6 +616,635 @@ static struct gpio_table gtable[] = {
{ VLV_USB_ULPI_0_REFCLK_GPIOS_43_PCONF0, VLV_USB_ULPI_0_REFCLK_GPIOS_43_PAD, 0}
};
+struct bxt_gpio_table {
+ u16 gpio_pin;
+ u16 offset;
+ bool pin_requested;
+};
+
+#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
+
+static struct bxt_gpio_table bxt_gtable[] = {
+ {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;
@@ -796,6 +1426,52 @@ void chv_program_gpio(struct intel_dsi *intel_dsi, u8 gpio, u8 action)
}
+void bxt_program_gpio(struct intel_dsi *intel_dsi, u8 gpio, u8 value)
+{
+ u16 gpio_number = 0, i;
+ int err;
+
+ for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
+ if (bxt_gtable[i].gpio_pin == gpio)
+ gpio_number = bxt_gtable[i].offset;
+
+ if (!gpio_number) {
+ DRM_ERROR("Invalid GPIO requested\n");
+ return;
+ }
+ if (!bxt_gtable[i].pin_requested) {
+ err = gpio_request_one(gpio_number,
+ GPIOF_DIR_OUT, "MIPI");
+ if (err) {
+ DRM_ERROR("unable to get GPIO %d\n",
+ gpio_number);
+ return;
+ }
+ bxt_gtable[i].pin_requested = true;
+ }
+ }
+
+ if (!gpio_number) {
+ DRM_ERROR("Requested GPIO not found in the table\n");
+ return;
+ }
+
+ gpio_set_value(gpio_number, value);
+}
+
+void bxt_free_gpio(struct intel_dsi *intel_dsi)
+{
+ int i;
+ u16 gpio_number;
+
+ for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
+ if (bxt_gtable[i].pin_requested) {
+ gpio_number = bxt_gtable[i].offset;
+ gpio_free(gpio_number);
+ }
+ }
+}
+
static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
{
u8 gpio, action;
@@ -821,6 +1497,8 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
vlv_program_gpio(intel_dsi, gpio, action);
else if (IS_CHERRYVIEW(dev))
chv_program_gpio(intel_dsi, gpio, action);
+ else if (IS_BROXTON(dev))
+ bxt_program_gpio(intel_dsi, gpio, action);
else
DRM_ERROR("GPIO programming missing for this platform.\n");
@@ -991,6 +1669,14 @@ static const struct drm_panel_funcs vbt_panel_funcs = {
.get_modes = vbt_panel_get_modes,
};
+void vbt_panel_exit(struct intel_dsi *intel_dsi)
+{
+ struct drm_device *dev = intel_dsi->base.base.dev;
+
+ if (IS_BROXTON(dev))
+ bxt_free_gpio(intel_dsi);
+}
+
struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id)
{
struct drm_device *dev = intel_dsi->base.base.dev;
--
1.9.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/i915: GPIO for BXT generic MIPI
2016-03-02 14:44 [PATCH] drm/i915: GPIO for BXT generic MIPI Deepak M
@ 2016-03-02 14:46 ` Deepak, M
0 siblings, 0 replies; 4+ messages in thread
From: Deepak, M @ 2016-03-02 14:46 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org; +Cc: Nikula, Jani
[-- Attachment #1: Type: text/plain, Size: 40051 bytes --]
Attached is the GPIO table for the BXT, most of the GPIO`s numberings are sequential except few of them in the northwest core because of which complete table is added in the file.
> -----Original Message-----
> From: Deepak, M
> Sent: Wednesday, March 2, 2016 8:14 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Deepak, M <m.deepak@intel.com>; Nikula, Jani <jani.nikula@intel.com>;
> Ville Syrjälä <ville.syrjala@linux.intel.com>; Shankar, Uma
> <uma.shankar@intel.com>
> Subject: [PATCH] drm/i915: GPIO for BXT generic MIPI
>
> Added the BXT GPIO pin configuration and programming logic for backlight
> and panel control.
>
> v2 by Deepak
> - Added the GPIO table got BXT.
> - Added gpio_free
>
> v3 by Deepak
> - requesting the gpio once
> - freeing the gpio while unloading
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Deepak M <m.deepak@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dsi.c | 6 +
> drivers/gpu/drm/i915/intel_dsi.h | 2 +-
> drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 686
> +++++++++++++++++++++++++++++
> 3 files changed, 693 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c
> b/drivers/gpu/drm/i915/intel_dsi.c
> index b928c50..30994f5 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -39,10 +39,12 @@
> static const struct {
> u16 panel_id;
> struct drm_panel * (*init)(struct intel_dsi *intel_dsi, u16 panel_id);
> + void (*exit)(struct intel_dsi *intel_dsi);
> } intel_dsi_drivers[] = {
> {
> .panel_id = MIPI_DSI_GENERIC_PANEL_ID,
> .init = vbt_panel_init,
> + .exit = vbt_panel_exit,
> },
> };
>
> @@ -1073,6 +1075,7 @@ static void intel_dsi_connector_destroy(struct
> drm_connector *connector) static void intel_dsi_encoder_destroy(struct
> drm_encoder *encoder) {
> struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
> + int i;
>
> if (intel_dsi->panel) {
> drm_panel_detach(intel_dsi->panel);
> @@ -1084,6 +1087,9 @@ static void intel_dsi_encoder_destroy(struct
> drm_encoder *encoder)
> if (intel_dsi->gpio_panel)
> gpiod_put(intel_dsi->gpio_panel);
>
> + for (i = 0; i < ARRAY_SIZE(intel_dsi_drivers); i++)
> + intel_dsi_drivers[i].exit(intel_dsi);
> +
> intel_encoder_destroy(encoder);
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_dsi.h
> b/drivers/gpu/drm/i915/intel_dsi.h
> index de7be7f..2f833b0 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/intel_dsi.h
> @@ -131,5 +131,5 @@ extern void intel_dsi_reset_clocks(struct
> intel_encoder *encoder,
> enum port port);
>
> struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id);
> -
> +void vbt_panel_exit(struct intel_dsi *intel_dsi);
> #endif /* _INTEL_DSI_H */
> diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> index 6b9a1f7..43146f5 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>
> @@ -615,6 +616,635 @@ static struct gpio_table gtable[] = {
> { VLV_USB_ULPI_0_REFCLK_GPIOS_43_PCONF0,
> VLV_USB_ULPI_0_REFCLK_GPIOS_43_PAD, 0} };
>
> +struct bxt_gpio_table {
> + u16 gpio_pin;
> + u16 offset;
> + bool pin_requested;
> +};
> +
> +#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
> +
> +static struct bxt_gpio_table bxt_gtable[] = {
> + {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;
> @@ -796,6 +1426,52 @@ void chv_program_gpio(struct intel_dsi *intel_dsi,
> u8 gpio, u8 action)
>
> }
>
> +void bxt_program_gpio(struct intel_dsi *intel_dsi, u8 gpio, u8 value) {
> + u16 gpio_number = 0, i;
> + int err;
> +
> + for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
> + if (bxt_gtable[i].gpio_pin == gpio)
> + gpio_number = bxt_gtable[i].offset;
> +
> + if (!gpio_number) {
> + DRM_ERROR("Invalid GPIO requested\n");
> + return;
> + }
> + if (!bxt_gtable[i].pin_requested) {
> + err = gpio_request_one(gpio_number,
> + GPIOF_DIR_OUT, "MIPI");
> + if (err) {
> + DRM_ERROR("unable to get GPIO
> %d\n",
> + gpio_number);
> + return;
> + }
> + bxt_gtable[i].pin_requested = true;
> + }
> + }
> +
> + if (!gpio_number) {
> + DRM_ERROR("Requested GPIO not found in the table\n");
> + return;
> + }
> +
> + gpio_set_value(gpio_number, value);
> +}
> +
> +void bxt_free_gpio(struct intel_dsi *intel_dsi) {
> + int i;
> + u16 gpio_number;
> +
> + for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
> + if (bxt_gtable[i].pin_requested) {
> + gpio_number = bxt_gtable[i].offset;
> + gpio_free(gpio_number);
> + }
> + }
> +}
> +
> static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) {
> u8 gpio, action;
> @@ -821,6 +1497,8 @@ static const u8 *mipi_exec_gpio(struct intel_dsi
> *intel_dsi, const u8 *data)
> vlv_program_gpio(intel_dsi, gpio, action);
> else if (IS_CHERRYVIEW(dev))
> chv_program_gpio(intel_dsi, gpio, action);
> + else if (IS_BROXTON(dev))
> + bxt_program_gpio(intel_dsi, gpio, action);
> else
> DRM_ERROR("GPIO programming missing for this
> platform.\n");
>
> @@ -991,6 +1669,14 @@ static const struct drm_panel_funcs
> vbt_panel_funcs = {
> .get_modes = vbt_panel_get_modes,
> };
>
> +void vbt_panel_exit(struct intel_dsi *intel_dsi) {
> + struct drm_device *dev = intel_dsi->base.base.dev;
> +
> + if (IS_BROXTON(dev))
> + bxt_free_gpio(intel_dsi);
> +}
> +
> struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id) {
> struct drm_device *dev = intel_dsi->base.base.dev;
> --
> 1.9.1
[-- Attachment #2: GPIO_align_with_kernel.xlsx --]
[-- Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, Size: 22078 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: GPIO for BXT generic MIPI (rev2)
2016-03-11 10:51 [PATCH] drm/i915: GPIO for BXT generic MIPI Deepak M
@ 2016-03-11 10:40 ` Patchwork
0 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2016-03-11 10:40 UTC (permalink / raw)
To: Deepak M; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: GPIO for BXT generic MIPI (rev2)
URL : https://patchwork.freedesktop.org/series/4020/
State : failure
== Summary ==
Series 4020v2 drm/i915: GPIO for BXT generic MIPI
2016-03-11T10:34:59.405207 http://patchwork.freedesktop.org/api/1.0/series/4020/revisions/2/mbox/
Applying: drm/i915: GPIO for BXT generic MIPI
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0001 drm/i915: GPIO for BXT generic MIPI
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] drm/i915: GPIO for BXT generic MIPI
@ 2016-03-11 10:51 Deepak M
2016-03-11 10:40 ` ✗ Fi.CI.BAT: failure for drm/i915: GPIO for BXT generic MIPI (rev2) Patchwork
0 siblings, 1 reply; 4+ messages in thread
From: Deepak M @ 2016-03-11 10:51 UTC (permalink / raw)
To: intel-gfx; +Cc: Deepak M, Jani Nikula
Added the BXT GPIO pin configuration and programming logic for
backlight and panel control.
v2 by Deepak
- Added the GPIO table for BXT.
- Added gpio_free
v3 by Deepak
- requesting the gpio once
- freeing the gpio while unloading
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Deepak M <m.deepak@intel.com>
---
GPIO mapping table can be found in the below link:
https://drive.google.com/drive/folders/0BxSYm2johowAaE94S0ZvbE1wTG8
drivers/gpu/drm/i915/intel_dsi.c | 6 +
drivers/gpu/drm/i915/intel_dsi.h | 2 +-
drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 687 +++++++++++++++++++++++++++++
3 files changed, 694 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index b928c50..30994f5 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -39,10 +39,12 @@
static const struct {
u16 panel_id;
struct drm_panel * (*init)(struct intel_dsi *intel_dsi, u16 panel_id);
+ void (*exit)(struct intel_dsi *intel_dsi);
} intel_dsi_drivers[] = {
{
.panel_id = MIPI_DSI_GENERIC_PANEL_ID,
.init = vbt_panel_init,
+ .exit = vbt_panel_exit,
},
};
@@ -1073,6 +1075,7 @@ static void intel_dsi_connector_destroy(struct drm_connector *connector)
static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
{
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
+ int i;
if (intel_dsi->panel) {
drm_panel_detach(intel_dsi->panel);
@@ -1084,6 +1087,9 @@ static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
if (intel_dsi->gpio_panel)
gpiod_put(intel_dsi->gpio_panel);
+ for (i = 0; i < ARRAY_SIZE(intel_dsi_drivers); i++)
+ intel_dsi_drivers[i].exit(intel_dsi);
+
intel_encoder_destroy(encoder);
}
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index de7be7f..2f833b0 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -131,5 +131,5 @@ extern void intel_dsi_reset_clocks(struct intel_encoder *encoder,
enum port port);
struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id);
-
+void vbt_panel_exit(struct intel_dsi *intel_dsi);
#endif /* _INTEL_DSI_H */
diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
index 6b9a1f7..f8b126b 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>
@@ -615,6 +616,635 @@ static struct gpio_table gtable[] = {
{ VLV_USB_ULPI_0_REFCLK_GPIOS_43_PCONF0, VLV_USB_ULPI_0_REFCLK_GPIOS_43_PAD, 0}
};
+struct bxt_gpio_table {
+ u16 gpio_pin;
+ u16 offset;
+ bool pin_requested;
+};
+
+#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
+
+static struct bxt_gpio_table bxt_gtable[] = {
+ {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;
@@ -796,6 +1426,53 @@ void chv_program_gpio(struct intel_dsi *intel_dsi, u8 gpio, u8 action)
}
+void bxt_program_gpio(struct intel_dsi *intel_dsi, u8 gpio, u8 value)
+{
+ u16 gpio_number = 0, i;
+ int err;
+
+ for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
+ if (bxt_gtable[i].gpio_pin == gpio) {
+ gpio_number = bxt_gtable[i].offset;
+
+ if (!gpio_number) {
+ DRM_ERROR("Invalid GPIO requested\n");
+ return;
+ }
+ if (!bxt_gtable[i].pin_requested) {
+ err = gpio_request_one(gpio_number,
+ GPIOF_DIR_OUT, "MIPI");
+ if (err) {
+ DRM_ERROR("unable to get GPIO %d\n",
+ gpio_number);
+ return;
+ }
+ bxt_gtable[i].pin_requested = true;
+ }
+ }
+ }
+
+ if (!gpio_number) {
+ DRM_ERROR("Requested GPIO not found in the table\n");
+ return;
+ }
+
+ gpio_set_value(gpio_number, value);
+}
+
+void bxt_free_gpio(struct intel_dsi *intel_dsi)
+{
+ int i;
+ u16 gpio_number;
+
+ for (i = 0; i < ARRAY_SIZE(bxt_gtable); i++) {
+ if (bxt_gtable[i].pin_requested) {
+ gpio_number = bxt_gtable[i].offset;
+ gpio_free(gpio_number);
+ }
+ }
+}
+
static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
{
u8 gpio, action;
@@ -821,6 +1498,8 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
vlv_program_gpio(intel_dsi, gpio, action);
else if (IS_CHERRYVIEW(dev))
chv_program_gpio(intel_dsi, gpio, action);
+ else if (IS_BROXTON(dev))
+ bxt_program_gpio(intel_dsi, gpio, action);
else
DRM_ERROR("GPIO programming missing for this platform.\n");
@@ -991,6 +1670,14 @@ static const struct drm_panel_funcs vbt_panel_funcs = {
.get_modes = vbt_panel_get_modes,
};
+void vbt_panel_exit(struct intel_dsi *intel_dsi)
+{
+ struct drm_device *dev = intel_dsi->base.base.dev;
+
+ if (IS_BROXTON(dev))
+ bxt_free_gpio(intel_dsi);
+}
+
struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id)
{
struct drm_device *dev = intel_dsi->base.base.dev;
--
1.9.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-03-11 10:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-11 10:51 [PATCH] drm/i915: GPIO for BXT generic MIPI Deepak M
2016-03-11 10:40 ` ✗ Fi.CI.BAT: failure for drm/i915: GPIO for BXT generic MIPI (rev2) Patchwork
-- strict thread matches above, loose matches on Subject: below --
2016-03-02 14:44 [PATCH] drm/i915: GPIO for BXT generic MIPI Deepak M
2016-03-02 14:46 ` Deepak, M
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox