blob: 85b0cc0afc62c2d1788e053eb51f2e8b8053e671 [file] [log] [blame]
Angel Pons08b52802020-04-05 13:22:20 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Hannah Williams5e83e8b2018-02-09 18:35:17 -08002
Furquan Shaikh76cedd22020-05-02 10:24:23 -07003#include <acpi/acpi.h>
Hannah Williams5e83e8b2018-02-09 18:35:17 -08004#include <baseboard/gpio.h>
5#include <baseboard/variants.h>
6#include <commonlib/helpers.h>
7
8/*
9 * Pad configuration in ramstage. The order largely follows the 'GPIO Muxing'
10 * table found in EDS vol 1, but some pins aren't grouped functionally in
11 * the table so those were moved for more logical grouping.
12 */
13static const struct pad_config gpio_table[] = {
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080014 /* NORTHWEST COMMUNITY GPIOS */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -080015 PAD_NC(GPIO_0, DN_20K), /* TCK -- debug header NC */
16 PAD_NC(GPIO_1, DN_20K), /* TRST_B -- debug header NC */
17 PAD_NC(GPIO_2, UP_20K), /* TMS -- debug header NC */
18 PAD_NC(GPIO_3, UP_20K), /* TDI -- debug header NC */
19 PAD_NC(GPIO_4, UP_20K), /* TDO -- debug header NC */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070020 PAD_NC(GPIO_5, UP_20K), /* JTAGX -- unused */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -080021 PAD_NC(GPIO_6, UP_20K), /* CX_PREQ_B -- debug header NC */
22 PAD_NC(GPIO_7, UP_20K), /* CX_PRDY_B -- debug header NC */
23 PAD_NC(GPIO_8, DN_20K), /* TRACE_0_CLK_VNN -- debug header NC */
24 PAD_NC(GPIO_9, DN_20K), /* TRACE_0_DATA0_VNN -- debug header NC */
25 PAD_NC(GPIO_10, DN_20K), /* TRACE_0_DATA1_VNN -- debug header NC */
26 PAD_NC(GPIO_11, DN_20K), /* TRACE_0_DATA2_VNN -- debug header NC */
27 PAD_NC(GPIO_12, DN_20K), /* TRACE_0_DATA3_VNN -- debug header NC */
28 PAD_NC(GPIO_13, DN_20K), /* TRACE_0_DATA4_VNN -- debug header NC */
29 PAD_NC(GPIO_14, DN_20K), /* TRACE_0_DATA5_VNN -- debug header NC */
30 PAD_NC(GPIO_15, DN_20K), /* TRACE_0_DATA6_VNN -- debug header NC */
31 PAD_NC(GPIO_16, DN_20K), /* TRACE_0_DATA7_VNN -- debug header NC */
32 PAD_NC(GPIO_17, UP_20K), /* DBG_PTI_CLK_1 -- debug header NC */
33 PAD_NC(GPIO_18, UP_20K), /* DBG_PTI_DATA_8 -- debug header NC */
34 PAD_NC(GPIO_19, UP_20K), /* DBG_PTI_DATA_9 -- debug header NC */
35 PAD_NC(GPIO_20, UP_20K), /* DBG_PTI_DATA_10 -- debug header NC */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080036 PAD_CFG_NF(GPIO_21, UP_20K, DEEP, NF2), /* CNV_MFUART2_RXD */
37 PAD_CFG_NF_IOSSTATE(GPIO_22, UP_20K, DEEP, NF2, TxDRxE), /* CNV_MFUART2_TXD */
38 PAD_CFG_NF(GPIO_23, UP_20K, DEEP, NF2), /* CNV_GNSS_PABLANKIt */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -080039 PAD_NC(GPIO_24, UP_20K), /* TRACE_1_DATA6_VNN -- debug header NC */
40 PAD_NC(GPIO_25, UP_20K), /* TRACE_1_DATA7_VNN -- debug header NC */
41 PAD_NC(GPIO_26, DN_20K), /* TRACE_2_CLK_VNN -- debug header NC */
42 PAD_NC(GPIO_27, DN_20K), /* TRACE_2_DATA0_VNN -- debug header NC */
43 PAD_NC(GPIO_28, DN_20K), /* TRACE_2_DATA1_VNN 0-- debug header NC */
44 PAD_NC(GPIO_29, DN_20K), /* TRACE_2_DATA2_VNN -- debug header NC */
45 PAD_NC(GPIO_30, DN_20K), /* TRACE_2_DATA3_VNN -- debug header NC */
46 PAD_NC(GPIO_31, DN_20K), /* TRACE_2_DATA4_VNN -- debug header NC */
47 PAD_NC(GPIO_32, DN_20K), /* TRACE_2_DATA5_VNN -- debug header NC */
48 PAD_NC(GPIO_33, DN_20K), /* TRACE_2_DATA6_VNN -- debug header NC */
49 PAD_NC(GPIO_34, DN_20K), /* TRACE_2_DATA7_VNN -- debug header NC */
50 PAD_NC(GPIO_35, UP_20K), /* TRACE_3_CLK_VNN -- debug header NC */
51 PAD_NC(GPIO_36, UP_20K), /* TRACE_3_DATA0_VNN -- debug header NC */
52 PAD_NC(GPIO_37, UP_20K), /* TRACE_3_DATA1_VNN -- debug header NC */
53 PAD_NC(GPIO_38, UP_20K), /* TRACE_3_DATA2_VNN -- debug header NC */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070054 PAD_NC(GPIO_39, UP_20K), /* TRACE_3_DATA3_VNN -- unused */
55 PAD_NC(GPIO_40, UP_20K), /* TRACE_3_DATA4_VNN -- unused */
56 PAD_NC(GPIO_41, DN_20K), /* TRACE_3_DATA5_VNN -- unused */
57 PAD_NC(GPIO_42, DN_20K), /* GP_INTD_DSI_TE1 -- unused */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -080058 PAD_NC(GPIO_43, DN_20K), /* GP_INTD_DSI_TE2 -- debug header NC */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080059 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_44, UP_20K, DEEP, NF1, TxDRxE, ENPU), /* USB_OC0_B */
60 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_45, UP_20K, DEEP, NF1, TxDRxE, ENPU), /* USB_OC1_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070061 PAD_NC(GPIO_46, DN_20K), /* DSI_I2C_SDA -- unused */
62 PAD_NC(GPIO_47, DN_20K), /* DSI_I2C_SCL -- unused */
63
64 /* PMC stays active in suspend so disable standby for these pins */
Hannah Williams8dce5bc2018-03-31 18:23:20 -070065 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_48, NONE, DEEP, NF1), /* PMC_I2C_SDA */
66 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_49, NONE, DEEP, NF1), /* PMC_I2C_SCL */
Furquan Shaikh65161492018-06-05 17:16:11 -070067 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_50, NONE, DEEP, NF1, HIZCRx1, DISPUPD), /* PCH_I2C_PEN_SDA */
68 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_51, NONE, DEEP, NF1, HIZCRx1, DISPUPD), /* PCH_I2C_PEN_SCL */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080069 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_52, NONE, DEEP, NF1, HIZCRx1, DISPUPD), /* LPSS_I2C1_SDA */
70 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_53, NONE, DEEP, NF1, HIZCRx1, DISPUPD), /* LPSS_I2C1_SCL */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070071 PAD_NC(GPIO_54, UP_20K), /* LPSS_I2C2_SDA -- unused */
72 PAD_NC(GPIO_55, UP_20K), /* LPSS_I2C2_SCL -- unused */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -080073 PAD_NC(GPIO_56, UP_20K), /* LPSS_I2C3_SDA -- debug header NC */
74 PAD_NC(GPIO_57, UP_20K), /* LPSS_I2C2_SCL -- debug header NC */
75 PAD_NC(GPIO_58, UP_20K), /* LPSS_I2C4_SDA -- unused */
76 PAD_NC(GPIO_59, UP_20K), /* LPSS_I2C4_SCL -- unused */
77 PAD_NC(GPIO_60, UP_20K), /* LPSS_UART0_RXD -- debug header NC */
78 PAD_NC(GPIO_61, UP_20K), /* LPSS_UART0_TXD -- debug header NC */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070079 PAD_NC(GPIO_62, UP_20K), /* UART0-RTS_B -- unused */
Furquan Shaikh2d602092018-09-05 13:59:00 -070080 PAD_CFG_GPI_APIC_IOS(GPIO_63, NONE, DEEP, LEVEL, INVERT, TxDRxE, DISPUPD), /* H1_PCH_INT_ODL */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080081 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_64, UP_20K, DEEP, NF1, HIZCRx1, DISPUPD), /* LPSS_UART2_RXD */
82 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_65, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD), /* LPSS_UART2_TXD */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070083 PAD_NC(GPIO_66, UP_20K), /* UART2-RTS_B -- unused */
84 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_67, 0, DEEP, NONE, TxLASTRxE, DISPUPD), /* UART2-CTS_B -- EN_PP3300_DX_LTE_SOC */
Justin TerAvest22595f62018-03-15 16:28:57 -060085 PAD_CFG_GPI(GPIO_68, NONE, DEEP), /* DRAM_ID0 */
86 PAD_CFG_GPI(GPIO_69, NONE, DEEP), /* DRAM_ID1 */
87 PAD_CFG_GPI(GPIO_70, NONE, DEEP), /* DRAM_ID2 */
88 PAD_CFG_GPI(GPIO_71, NONE, DEEP), /* DRAM_ID3 */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070089 PAD_NC(GPIO_72, DN_20K), /* PMC_SPI_TXD -- unused */
90 PAD_NC(GPIO_73, DN_20K), /* PMC_SPI_CLK -- unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080091 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_74, UP_20K, DEEP, NF1, TxDRxE, ENPU), /* THERMTRIP_B */
92 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_75, NONE, DEEP, NF1, TxDRxE, DISPUPD), /* PROCHOT_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -070093 PAD_NC(GPIO_211, UP_20K), /* EMMC_RST_B -- unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080094 PAD_CFG_GPI_APIC_IOS(GPIO_212, NONE, DEEP, LEVEL, INVERT, HIZCRx1, DISPUPD), /* Touch Panel Int */
Shamile Khan280bc302018-05-30 10:32:00 -070095 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_213, 0, DEEP, NONE, Tx0RxDCRx0, DISPUPD), /* EN_PP3300_TOUCHSCREEN */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -080096 PAD_CFG_GPI_APIC_IOS(GPIO_214, NONE, DEEP, LEVEL, INVERT, HIZCRx1, DISPUPD), /* P_SENSOR_INT_L */
97
98 /* NORTH COMMUNITY GPIOS */
99
100 /* svid - unused */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700101 PAD_NC(GPIO_76, UP_20K),/* SVID Alert - unused */
102 PAD_NC(GPIO_77, UP_20K),/* SVID Data - unused */
103 PAD_NC(GPIO_78, UP_20K),/* SVID Clk - unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800104
105 /* LPSS */
Shamile Khan0805cbe2018-08-22 13:12:26 -0700106 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_79, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* H1_SLAVE_SPI_CLK_R */
107 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_80, NONE, DEEP, NF1, HIZCRx1, DISPUPD), /* H1_SLAVE_SPI_CS_L_R */
Furquan Shaikhc529f5b2018-11-21 12:03:28 -0800108 PAD_NC(GPIO_81, DN_20K), /* GPIO_81_DEBUG -- debug header NC */
Ravi Sarawadic2934962018-02-27 13:57:01 -0800109 PAD_CFG_NF(GPIO_82, NONE, DEEP, NF1), /* H1_SLAVE_SPI_MISO */
110 PAD_CFG_NF(GPIO_83, NONE, DEEP, NF1), /* H1_SLAVE_SPI_MOSI_R */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700111 PAD_NC(GPIO_84, DN_20K), /* LPSS_SPI_2_CLK - unused */
112 PAD_NC(GPIO_85, DN_20K), /* LPSS_SPI_2_FS0 - unused */
113 PAD_NC(GPIO_86, DN_20K), /* LPSS_SPI_2_FS1 - unused */
114 PAD_NC(GPIO_87, DN_20K), /* LPSS_SPI_2_FS2 - unused */
115 PAD_NC(GPIO_88, DN_20K), /* LPSS_SPI_2_RXD - unused */
116 PAD_NC(GPIO_89, DN_20K), /* LPSS_SPI_2_TXD - unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800117
118 /* Fast SPI */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700119 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_90, NATIVE, DEEP, NF1, HIZCRx1, SAME),/* FST_SPI_CS0_B */
Shamile Khan280bc302018-05-30 10:32:00 -0700120 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_91, 0, DEEP, NONE, Tx0RxDCRx0, DISPUPD),/* FST_SPI_CS1_B -- SPK_PA_EN_R */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700121 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_92, NATIVE, DEEP, NF1, HIZCRx1, SAME),/* FST_SPI_MOSI_IO0 */
122 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_93, NATIVE, DEEP, NF1, HIZCRx1, SAME),/* FST_SPI_MISO_IO1 */
123 PAD_NC(GPIO_94, NATIVE),/* FST_SPI_IO2 - unused */
124 PAD_NC(GPIO_95, NATIVE),/* FST_SPI_IO3 - unused */
125 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_96, NATIVE, DEEP, NF1, HIZCRx0, SAME),/* FST_SPI_CLK */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800126
127 /* PMU Signals */
John Zhao8cf6d4d2019-01-10 11:09:09 -0800128 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_98, NONE, DEEP, NF1),/* PMU_PLTRST_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700129 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_99, NONE, DEEP, NF1, TxDRxE, DISPUPD),/* PMU_PWRBTN_B */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800130 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_100, NONE, DEEP, NF1),/* PMU_SLP_S0_B */
131 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_101, NONE, DEEP, NF1),/* PMU_SLP_S3_B */
132 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_102, NONE, DEEP, NF1),/* PMU_SLP_S4_B */
133 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_103, NONE, DEEP, NF1),/* SUSPWRDNACK */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700134 PAD_NC(GPIO_104, UP_20K),/* EMMC_DNX_PWR_EN_B - unused */
Furquan Shaikh6bedbd62018-10-04 11:11:49 -0700135 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_105, 1, DEEP, NONE, Tx1RxDCRx0, DISPUPD),/* GPIO_105 -- TOUCHSCREEN_RST */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700136 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_106, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* PMU_BATLOW_B */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800137 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_107, NONE, DEEP, NF1, TxDRxE, DISPUPD),/* PMU_RESETBUTTON_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700138 PAD_NC(GPIO_108, NONE),/* PMU_SUSCLK -- unused */
Shamile Khan280bc302018-05-30 10:32:00 -0700139 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_109, 1, DEEP, NONE, Tx1RxDCRx1, DISPUPD),/* SUS_STAT_B -- BT_DISABLE_L */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800140
141 /* I2C5 - Audio */
142 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_110, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C5_SDA */
143 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_111, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C5_SCL */
144
145 /* I2C6 - Trackpad */
146 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_112, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C6_SDA */
147 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_113, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C6_SCL */
148
149 /* I2C7 - Touchscreen */
150 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_114, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C7_SDA */
151 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_115, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* LPSS_I2C7_SCL */
152
153 /* PCIE_WAKE[0:3]_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700154 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_116, 1, DEEP, NONE, Tx1RxDCRx1, DISPUPD), /* PCIE_WAKE0_B -- WIFI_DISABLE_L */
155 PAD_CFG_GPI_SCI_LOW(GPIO_117, NONE, DEEP, EDGE_SINGLE),/* PCIE_WAKE1_B -- LTE_WAKE_L */
156 PAD_NC(GPIO_118, UP_20K),/* PCIE_WAKE2_B -- unused */
Furquan Shaikhb41ae252018-06-04 17:10:31 -0700157 PAD_CFG_GPI_SCI_LOW(GPIO_119, NONE, DEEP, EDGE_SINGLE),/* PCIE_WAKE3_B */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800158
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700159 /*
160 * PCIE_CLKREQ[0:3]_B. For unused pins, follow the termination
161 * guideline for unused PCIE ports as described in PDG i.e. keep
162 * the pins in native mode and deploy the internal pull up.
163 */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800164 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_120, UP_20K, DEEP, NF1, HIZCRx1, ENPU),/* PCIE_CLKREQ0_B -- unused*/
165 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_121, UP_20K, DEEP, NF1, HIZCRx1, ENPU),/* PCIE_CLKREQ1_B -- unused */
Shamile Khandc3910c2018-05-22 22:24:22 -0700166 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_122, UP_20K, DEEP, NF1, HIZCRx1, ENPU),/* PCIE_CLKREQ2_B -- unused */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700167 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_123, NONE, DEEP, NF1, TxDRxE, DISPUPD), /* PCIE_CLKREQ3_B */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800168
169 /* DDI[0:1] SDA and SCL -- unused */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700170 PAD_NC(GPIO_124, UP_20K),/* HV_DDI0_DDC_SDA -- unused */
171 PAD_NC(GPIO_125, UP_20K),/* HV_DDI0_DDC_SCL -- unused */
172 PAD_NC(GPIO_126, UP_20K),/* HV_DDI1_DDC_SDA -- unused */
173 PAD_NC(GPIO_127, UP_20K),/* HV_DDI1_DDC_SCL -- unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800174
175 /* Panel 0 control */
Shamile Khandc3910c2018-05-22 22:24:22 -0700176 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_128, NONE, DEEP, NF1, Tx0RxDCRx0, DISPUPD),/* PANEL0_VDDEN*/
177 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_129, NONE, DEEP, NF1, Tx0RxDCRx0, DISPUPD),/* PANEL0_BKLTEN */
178 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_130, NONE, DEEP, NF1, Tx0RxDCRx0, DISPUPD),/* PANEL0_BKLTCTL */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800179
180 /* Hot plug detect. */
181 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_131, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* HV_DDI0_HPD */
182 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_132, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* HV_DDI1_HPD */
183 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_133, NONE, DEEP, NF1, HIZCRx1, DISPUPD),/* HV_EDP_HPD */
184
Jett Rink2dbe51a2019-01-09 09:42:07 -0700185 /* EC_AP_INT_ODL */
186 PAD_CFG_GPI_APIC_LOW(GPIO_134, NONE, DEEP),
187
Furquan Shaikh2c2650a2018-10-18 16:25:58 -0700188 PAD_CFG_GPI_IRQ_WAKE(GPIO_135, NONE, DEEP, LEVEL, INVERT),/* GPIO_135 -- TRACKPAD_INT1_1V8_ODL */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800189 PAD_CFG_GPI_APIC_IOS(GPIO_136, NONE, DEEP, LEVEL, INVERT, TxDRxE, DISPUPD),/* GPIO_136 -- PMIC_PCH_INT_ODL */
190 PAD_CFG_GPI_APIC_IOS(GPIO_137, NONE, DEEP, LEVEL, INVERT, HIZCRx1, DISPUPD),/* GPIO_137 -- HP_INT_ODL */
Furquan Shaikh65161492018-06-05 17:16:11 -0700191 PAD_CFG_GPI_APIC_IOS(GPIO_138, NONE, DEEP, LEVEL, INVERT, HIZCRx1, DISPUPD),/* GPIO_138 -- PEN_PDCT_ODL */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700192 PAD_CFG_GPI_APIC_IOS(GPIO_139, NONE, DEEP, LEVEL, INVERT, HIZCRx1, DISPUPD),/* GPIO_139 -- PEN_INT_ODL */
Furquan Shaikh6bedbd62018-10-04 11:11:49 -0700193 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_140, 1, DEEP, NONE, Tx1RxDCRx0, DISPUPD),/* GPIO_140 -- PEN_RESET */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800194 // Also we may be able to use eSPI WAKE# Virtual Wire instead
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700195 PAD_CFG_GPI_SCI_IOS(GPIO_141, NONE, DEEP, EDGE_SINGLE, INVERT, IGNORE, DISPUPD),/* GPIO_141 -- EC_PCH_WAKE_ODL */
Furquan Shaikh2c2650a2018-10-18 16:25:58 -0700196 PAD_NC(GPIO_142, UP_20K),/* GPIO_142 -- TRACKPAD_INT2_1V8_ODL(unused) */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800197 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_143, 1, DEEP, UP_20K, HIZCRx1, ENPU),/* GPIO_143 -- LTE_SAR_ODL */
Karthikeyan Ramasubramanian2b357802018-12-07 11:03:38 -0700198
199 /* GPIO_144 -- PEN_EJECT(wake) */
Karthikeyan Ramasubramanian2b27e232018-12-07 11:05:51 -0700200 PAD_CFG_GPI_SCI_HIGH_DEBEN(GPIO_144, UP_20K, DEEP, EDGE_SINGLE,
201 DEBOUNCE_256_RTC),
Karthikeyan Ramasubramanian2b357802018-12-07 11:03:38 -0700202 /* GPIO_145 -- PEN_EJECT(notifications) */
203 PAD_CFG_GPI_GPIO_DRIVER(GPIO_145, UP_20K, DEEP),
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700204 PAD_NC(GPIO_146, UP_20K),/* GPIO_146 -- unused */
Hannah Williamscf458302018-01-09 18:23:40 -0800205
206 /*
207 * GPIO_154 - LPC_CLKRUN# has a native function for LPC but not for
208 * eSPI. Nonetheless if we use eSPI, it should be configured as a GPIO
209 * and kept unconnected to allow S0ix entry.
210 */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800211
212 /* AUDIO COMMUNITY GPIOS*/
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700213 PAD_NC(GPIO_156, DN_20K), /* AVS_I2S0_MCLK -- unused */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800214 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_157, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S0_BCLK */
215 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_158, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S0_WS_SYNC */
216 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_159, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S0_SDI */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700217 PAD_NC(GPIO_160, DN_20K), /* AVS_I2S0_SDO -- unused */
Furquan Shaikh6bedbd62018-10-04 11:11:49 -0700218 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_161, 1, DEEP, UP_20K, Tx1RxDCRx0, DISPUPD), /* AVS_I2S1_MCLK -- LTE_OFF_ODL */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800219 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_162, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S1_BCLK */
220 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_163, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S1_WS_SYNC */
Furquan Shaikhfbd6f392018-08-09 14:29:08 -0700221 PAD_CFG_GPO(GPIO_164, 0, DEEP), /* WLAN_PE_RST */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800222 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_165, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_I2S1_SDO */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700223 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_166, NONE, DEEP, NF2, HIZCRx0, DISPUPD), /* AVS_I2S2_BCLK */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800224 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_167, NONE, DEEP, NF2, HIZCRx0, DISPUPD), /* AVS_I2S2_WS_SYNC */
225 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_168, NONE, DEEP, NF2, HIZCRx0, DISPUPD), /* AVS_I2S2_SDI */
226 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_169, NONE, DEEP, NF2, HIZCRx0, DISPUPD), /* AVS_I2S2_SD0 */
227 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_170, DN_20K, DEEP, NF2, HIZCRx0, DISPUPD), /* AVS_I2S1_MCLK */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700228
229 /* Disable standby for GPIO_171 and GPIO_173 to support Wake on Voice */
Shamile Khan644b2dd2018-05-09 09:50:16 -0700230 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_171, DN_20K, DEEP, NF1), /* AVS_M_CLK_A1 -- DMIC_CLK1 */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700231 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_172, DN_20K, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_M_CLK_B1 */
Shamile Khan644b2dd2018-05-09 09:50:16 -0700232 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_173, DN_20K, DEEP, NF1), /* AVS_M_DATA_1 -- DMIC_DATA */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700233 PAD_NC(GPIO_174, DN_20K), /* AVS_M_CLK_AB2 -- unused */
234 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_175, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* AVS_M_DATA_2 */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800235
236 /* SCC COMMUNITY GPIOS */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700237 PAD_NC(GPIO_176, UP_20K), /* SMB_ALERTB -- unused */
238 PAD_NC(GPIO_177, UP_20K), /* SMB_CLK -- unused */
Wisley Chencbf27fd2019-04-01 13:21:01 +0800239 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_178, 0, DEEP, NONE, Tx0RxDCRx0, DISPUPD), /* EN_PP3300_WLAN_L */
240
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700241 PAD_NC(GPIO_179, NONE), /* SDCARD_CLK -- unused */
242 PAD_NC(GPIO_180, NONE), /* SDCARD_CMD -- unused */
243 PAD_NC(GPIO_181, UP_20K), /* SDCARD_D0 -- unused */
244 PAD_NC(GPIO_182, UP_20K), /* SDCARD_D1 -- unused */
245 PAD_NC(GPIO_183, UP_20K), /* SDCARD_D2 -- unused */
246 PAD_NC(GPIO_184, UP_20K), /* SDCARD_D3 -- unused */
247 PAD_NC(GPIO_185, UP_20K), /* SDCARD_CMD -- unused */
248 PAD_NC(GPIO_186, UP_20K), /* SDCARD_CD_N -- unused */
249 PAD_NC(GPIO_187, NONE), /* SDCARD_LVL_WP -- unused */
250 PAD_NC(GPIO_188, UP_20K), /* SDCARD_PWR_DWN_N -- unused */
Furquan Shaikhfaad9682018-06-19 08:40:19 -0700251 PAD_CFG_GPI(GPIO_189, NONE, DEEP), /* EC_IN_RW */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700252 PAD_CFG_GPI(GPIO_190, NONE, DEEP), /* PCH_WP_OD */
253
254 /*
255 * Disable standby state for these CNVI pins to allow wake on
256 * WiFI & Bluetooth.
257 */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800258 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_191, NONE, DEEP, NF1), /* CNV_BRI_DT */
259 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_192, UP_20K, DEEP, NF1), /* CNV_BRI_RSP */
260 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_193, NONE, DEEP, NF1), /* CNV_RGI_DT */
261 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_194, UP_20K, DEEP, NF1), /* CNV_RGI_RSP */
262 PAD_CFG_NF_IOSTANDBY_IGNORE(GPIO_195, NONE, DEEP, NF1), /* CNV_RF_RESET_B */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700263 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_198, DN_20K, DEEP, NF1, HIZCRx0, ENPD), /* EMMC0_CLK */
Shaunak Sahacbedd8f2018-02-16 08:39:22 -0800264 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_200, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D0 */
265 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_201, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D1 */
266 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_202, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D2 */
267 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_203, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D3 */
268 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_204, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D4 */
269 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_205, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D5 */
270 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_206, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D6 */
271 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_207, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_D7 */
272 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_208, UP_20K, DEEP, NF1, HIZCRx1, ENPU), /* EMMC0_CMD */
Furquan Shaikhd1b482c2018-07-25 08:58:52 -0700273 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_209, NONE, DEEP, NF1, HIZCRx0, DISPUPD), /* EMMC0_STROBE */
274 PAD_NC(GPIO_210, DN_20K),
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800275};
276
Furquan Shaikh06a41f12018-07-25 14:30:59 -0700277const struct pad_config *__weak variant_base_gpio_table(size_t *num)
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800278{
279 *num = ARRAY_SIZE(gpio_table);
280 return gpio_table;
281}
282
Furquan Shaikh06a41f12018-07-25 14:30:59 -0700283const struct pad_config *__weak variant_override_gpio_table(size_t *num)
284{
285 *num = 0;
286 return NULL;
287}
288
Marco Chen8a6174d2019-07-15 08:50:35 +0800289const struct pad_config *__weak variant_early_override_gpio_table(size_t *num)
290{
291 *num = 0;
292 return NULL;
293}
294
Michael Niewöhner732e9e62020-12-21 17:09:08 +0100295static const struct pad_config early_bootblock_gpio_table[] = {
296 PAD_NC(GPIO_154, NONE), /* LPC_CLKRUNB -- NC for eSPI */
Michael Niewöhner1c227532020-12-21 03:46:58 +0100297 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_64, UP_20K, DEEP, NF1, HIZCRx1, DISPUPD), /* LPSS_UART2_RXD */
298 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_65, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD), /* LPSS_UART2_TXD */
Michael Niewöhner732e9e62020-12-21 17:09:08 +0100299};
300
301const struct pad_config *mainboard_early_bootblock_gpio_table(size_t *num)
302{
303 *num = ARRAY_SIZE(early_bootblock_gpio_table);
304 return early_bootblock_gpio_table;
305}
306
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800307/* GPIOs needed prior to ramstage. */
308static const struct pad_config early_gpio_table[] = {
Justin TerAvestcc6953b2018-03-16 13:29:42 -0600309 PAD_CFG_GPI(GPIO_190, NONE, DEEP), /* PCH_WP_OD */
Ravi Sarawadic2934962018-02-27 13:57:01 -0800310 /* GSPI0_INT */
Furquan Shaikh2d602092018-09-05 13:59:00 -0700311 PAD_CFG_GPI_APIC_IOS(GPIO_63, NONE, DEEP, LEVEL, INVERT, TxDRxE,
Ravi Sarawadic2934962018-02-27 13:57:01 -0800312 DISPUPD), /* H1_PCH_INT_ODL */
313 /* GSPI0_CLK */
314 PAD_CFG_NF(GPIO_79, NONE, DEEP, NF1), /* H1_SLAVE_SPI_CLK_R */
315 /* GSPI0_CS# */
316 PAD_CFG_NF(GPIO_80, NONE, DEEP, NF1), /* H1_SLAVE_SPI_CS_L_R */
317 /* GSPI0_MISO */
318 PAD_CFG_NF(GPIO_82, NONE, DEEP, NF1), /* H1_SLAVE_SPI_MISO */
319 /* GSPI0_MOSI */
320 PAD_CFG_NF(GPIO_83, NONE, DEEP, NF1), /* H1_SLAVE_SPI_MOSI_R */
Furquan Shaikhade3bc52018-03-28 11:53:37 -0700321
322 /* Enable power to wifi early in bootblock and de-assert PERST#. */
Furquan Shaikhae2cf492018-11-21 14:02:59 -0800323 PAD_CFG_GPO(GPIO_178, 0, DEEP), /* EN_PP3300_WLAN_L */
Furquan Shaikhfbd6f392018-08-09 14:29:08 -0700324 PAD_CFG_GPO(GPIO_164, 0, DEEP), /* WLAN_PE_RST */
Furquan Shaikhc0451792018-04-27 11:34:00 -0700325
326 /*
327 * ESPI_IO1 acts as ALERT# (which is open-drain) and requies a weak
328 * pull-up for proper operation. Since there is no external pull present
329 * on this platform, configure an internal weak pull-up.
330 */
331 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_151, UP_20K, DEEP, NF2, HIZCRx1,
332 ENPU), /* ESPI_IO1 */
Marco Chenaf628552019-07-10 13:13:45 +0800333
334 /* GPIO_67 and GPIO_117 are in early_gpio_table and gpio_table. For variants
335 * having LTE SKUs, these two GPIOs would be overridden to output high first
336 * in the bootblock then be set to default state in gpio_table for non-LTE
337 * SKUs and keep to output high for LTE SKUs in ramstage.
338 */
339 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_67, 0, DEEP, NONE, TxLASTRxE, DISPUPD), /* UART2-CTS_B -- EN_PP3300_DX_LTE_SOC */
340 PAD_CFG_GPI_SCI_LOW(GPIO_117, NONE, DEEP, EDGE_SINGLE),/* PCIE_WAKE1_B -- LTE_WAKE_L */
341 /* GPIO_161 is in early_gpio_table and gpio_table because LTE SKU needs
342 * to override this pin to output low then high respectively in two
343 * stages.
344 */
345 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_161, 1, DEEP, UP_20K, Tx1RxDCRx0, DISPUPD), /* AVS_I2S1_MCLK -- LTE_OFF_ODL */
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800346};
347
Aaron Durbin64031672018-04-21 14:45:32 -0600348const struct pad_config *__weak
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800349variant_early_gpio_table(size_t *num)
350{
351 *num = ARRAY_SIZE(early_gpio_table);
352 return early_gpio_table;
353}
354
355/* GPIO settings before entering sleep. */
356static const struct pad_config sleep_gpio_table[] = {
357};
358
Hannah Williams09b883f2018-05-11 19:14:38 -0700359/* GPIO settings before entering slp_s5. */
360static const struct pad_config sleep_s5_gpio_table[] = {
361 /* BT_DISABLE_L */
Furquan Shaikh6bedbd62018-10-04 11:11:49 -0700362 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_109, 0, DEEP, NONE, Tx0RxDCRx1, SAME),
Hannah Williams09b883f2018-05-11 19:14:38 -0700363};
364
Aaron Durbin64031672018-04-21 14:45:32 -0600365const struct pad_config *__weak
Hannah Williams09b883f2018-05-11 19:14:38 -0700366variant_sleep_gpio_table(size_t *num, int slp_typ)
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800367{
Hannah Williams09b883f2018-05-11 19:14:38 -0700368 if (slp_typ == ACPI_S5) {
369 *num = ARRAY_SIZE(sleep_s5_gpio_table);
370 return sleep_s5_gpio_table;
371 }
372
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800373 *num = ARRAY_SIZE(sleep_gpio_table);
374 return sleep_gpio_table;
375}
376
377static const struct cros_gpio cros_gpios[] = {
Hannah Williamsecef3222018-04-27 00:13:25 -0700378 CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, CROS_GPIO_DEVICE_NAME),
Hannah Williams0a2b9d42018-04-13 21:43:05 -0700379 CROS_GPIO_WP_AH(PAD_SCC(GPIO_PCH_WP), GPIO_COMM_SCC_NAME),
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800380};
381
Aaron Durbin64031672018-04-21 14:45:32 -0600382const struct cros_gpio *__weak variant_cros_gpios(size_t *num)
Hannah Williams5e83e8b2018-02-09 18:35:17 -0800383{
384 *num = ARRAY_SIZE(cros_gpios);
385 return cros_gpios;
386}