Sean Rhodes | 5da05b6 | 2022-01-10 21:58:04 +0000 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | |
| 3 | #include <gpio.h> |
| 4 | #include <soc/meminit.h> |
| 5 | #include <soc/romstage.h> |
| 6 | #include <string.h> |
| 7 | #include <variants.h> |
| 8 | #include <types.h> |
| 9 | |
| 10 | /* Early pad configuration in bootblock. */ |
| 11 | const struct pad_config early_gpio_table[] = { |
| 12 | /* GPIO_64: UART2_TXD */ |
| 13 | PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_64, UP_20K, DEEP, NF1, HIZCRx1, DISPUPD), |
| 14 | /* GPIO_65: UART2_RXD */ |
| 15 | PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_65, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD), |
| 16 | }; |
| 17 | |
| 18 | const struct pad_config *variant_early_gpio_table(size_t *num) |
| 19 | { |
| 20 | *num = ARRAY_SIZE(early_gpio_table); |
| 21 | return early_gpio_table; |
| 22 | } |
| 23 | |
| 24 | /* Pad configuration in ramstage. */ |
| 25 | const struct pad_config gpio_table[] = { |
| 26 | /* ------- GPIO Group NorthWest ------- */ |
| 27 | /* GPIO_0: XDP_H_TCK */ |
| 28 | PAD_NC(GPIO_0, DN_20K), |
| 29 | /* GPIO_1: XDP_H_TRST_N */ |
| 30 | PAD_NC(GPIO_1, DN_20K), |
| 31 | /* GPIO_2: XDP_H_TMS */ |
| 32 | PAD_NC(GPIO_2, DN_20K), |
| 33 | /* GPIO_3: XDP_H_TDI */ |
| 34 | PAD_NC(GPIO_3, DN_20K), |
| 35 | /* GPIO_4: XDP_H_TDO */ |
| 36 | PAD_NC(GPIO_4, DN_20K), |
| 37 | /* GPIO_5: Not Connected */ |
| 38 | PAD_NC(GPIO_5, DN_20K), |
| 39 | /* GPIO_6: XDP_H_PREQ_N */ |
| 40 | PAD_NC(GPIO_6, DN_20K), |
| 41 | /* GPIO_7: XDP_H_PRDY_N */ |
| 42 | PAD_NC(GPIO_7, DN_20K), |
| 43 | /* GPIO_8: Not Connected */ |
| 44 | PAD_NC(GPIO_8, DN_20K), |
| 45 | /* GPIO_9: Not Connected */ |
| 46 | PAD_NC(GPIO_9, DN_20K), |
| 47 | /* GPIO_10: Not Connected */ |
| 48 | PAD_NC(GPIO_10, DN_20K), |
| 49 | /* GPIO_11: Not Connected */ |
| 50 | PAD_NC(GPIO_11, DN_20K), |
| 51 | /* GPIO_12: Not Connected */ |
| 52 | PAD_NC(GPIO_12, DN_20K), |
| 53 | /* GPIO_13: ACCEL1_INT */ |
| 54 | PAD_NC(GPIO_13, DN_20K), |
| 55 | /* GPIO_14: ACCEL2_INT */ |
| 56 | PAD_NC(GPIO_14, DN_20K), |
| 57 | /* GPIO_15: Not Connected */ |
| 58 | PAD_NC(GPIO_15, DN_20K), |
| 59 | /* GPIO_16: SATA_DEVSLP */ |
| 60 | _PAD_CFG_STRUCT(GPIO_16, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 61 | PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(IGNORE)), |
| 62 | /* GPIO_17: Not Connected */ |
| 63 | PAD_NC(GPIO_17, DN_20K), |
| 64 | /* GPIO_18: Not Connected */ |
| 65 | PAD_NC(GPIO_18, DN_20K), |
| 66 | /* GPIO_19: PMIC_IRQ# */ |
| 67 | _PAD_CFG_STRUCT(GPIO_19, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(EDGE_SINGLE) | |
| 68 | PAD_IRQ_ROUTE(IOAPIC) | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | |
| 69 | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)), |
| 70 | /* GPIO_20: Not Connected */ |
| 71 | PAD_NC(GPIO_20, DN_20K), |
| 72 | /* GPIO_21: WLAN_WWAN_COEX3 */ |
| 73 | PAD_NC(GPIO_21, DN_20K), |
| 74 | /* GPIO_22: WLAN_WWAN_COEX3 */ |
| 75 | PAD_NC(GPIO_22, DN_20K), |
| 76 | /* GPIO_23: WLAN_WWAN_COEX3 */ |
| 77 | PAD_NC(GPIO_23, DN_20K), |
| 78 | /* GPIO_24: Not Connected */ |
| 79 | PAD_NC(GPIO_24, DN_20K), |
| 80 | /* GPIO_25: Not Connected */ |
| 81 | PAD_NC(GPIO_25, DN_20K), |
| 82 | /* GPIO_26: TPNL_INT# */ |
| 83 | PAD_NC(GPIO_26, DN_20K), |
| 84 | /* GPIO_27: GPIO_27 */ |
| 85 | PAD_NC(GPIO_27, DN_20K), |
| 86 | /* GPIO_28: GPIO_28 */ |
| 87 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_28, 1, DEEP, UP_20K, TxLASTRxE, ENPD), |
| 88 | /* GPIO_29: Not Connected */ |
| 89 | PAD_NC(GPIO_29, DN_20K), |
| 90 | /* GPIO_30: Not Connected */ |
| 91 | PAD_NC(GPIO_30, DN_20K), |
| 92 | /* GPIO_31: Not Connected */ |
| 93 | PAD_NC(GPIO_31, DN_20K), |
| 94 | /* GPIO_32: Not Connected */ |
| 95 | PAD_NC(GPIO_32, DN_20K), |
| 96 | /* GPIO_33: BT_ON_SOC */ |
| 97 | _PAD_CFG_STRUCT(GPIO_33, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_IRQ_ROUTE(IOAPIC) | |
| 98 | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | |
| 99 | PAD_IOSSTATE(IGNORE)), |
| 100 | /* GPIO_33: WIFI_ON_SOC */ |
| 101 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_34, 1, DEEP, UP_20K, IGNORE, ENPU), |
| 102 | /* GPIO_35: Not Connected */ |
| 103 | PAD_NC(GPIO_35, DN_20K), |
| 104 | /* GPIO_36: Not Connected */ |
| 105 | PAD_NC(GPIO_36, DN_20K), |
| 106 | /* GPIO_37: Not Connected */ |
| 107 | PAD_NC(GPIO_37, DN_20K), |
| 108 | /* GPIO_38: WAKE_SCI# */ |
| 109 | _PAD_CFG_STRUCT(GPIO_38, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(EDGE_SINGLE) | |
| 110 | PAD_IRQ_ROUTE(SCI) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) | |
| 111 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 112 | /* GPIO_39: FP_RST# */ |
| 113 | PAD_NC(GPIO_39, DN_20K), |
| 114 | /* GPIO_40: Not Connected */ |
| 115 | PAD_NC(GPIO_40, DN_20K), |
| 116 | /* GPIO_41: Not Connected */ |
| 117 | PAD_NC(GPIO_41, DN_20K), |
| 118 | /* GPIO_42: SECURITY_FLASH */ |
| 119 | _PAD_CFG_STRUCT(GPIO_42, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 120 | PAD_BUF(TX_RX_DISABLE), PAD_PULL(DN_20K)), |
| 121 | /* GPIO_43: GPIO_43 */ |
| 122 | _PAD_CFG_STRUCT(GPIO_43, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 123 | PAD_BUF(TX_RX_DISABLE), PAD_PULL(DN_20K)), |
| 124 | /* GPIO_44: GPIO_44 */ |
| 125 | _PAD_CFG_STRUCT(GPIO_44, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 126 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSTERM(ENPU)), |
| 127 | /* GPIO_45: GPIO_45 */ |
| 128 | _PAD_CFG_STRUCT(GPIO_45, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 129 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSTERM(ENPU)), |
| 130 | /* GPIO_46: Not Connected */ |
| 131 | PAD_NC(GPIO_46, DN_20K), |
| 132 | /* GPIO_47: Not Connected */ |
| 133 | PAD_NC(GPIO_47, DN_20K), |
| 134 | /* GPIO_48: PMIC_I2C_SDA */ |
| 135 | _PAD_CFG_STRUCT(GPIO_48, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 136 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 137 | /* GPIO_49: PMIC_I2C_SCL */ |
| 138 | _PAD_CFG_STRUCT(GPIO_49, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 139 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 140 | /* GPIO_50: Not Connected */ |
| 141 | PAD_NC(GPIO_50, DN_20K), |
| 142 | /* GPIO_51: Not Connected */ |
| 143 | PAD_NC(GPIO_51, DN_20K), |
| 144 | /* GPIO_52: Not Connected */ |
| 145 | PAD_NC(GPIO_52, DN_20K), |
| 146 | /* GPIO_53: Not Connected */ |
| 147 | PAD_NC(GPIO_53, DN_20K), |
| 148 | /* GPIO_54: Not Connected */ |
| 149 | PAD_NC(GPIO_54, DN_20K), |
| 150 | /* GPIO_55: Not Connected */ |
| 151 | PAD_NC(GPIO_55, DN_20K), |
| 152 | /* GPIO_56: I2C_SDA_GS */ |
| 153 | _PAD_CFG_STRUCT(GPIO_56, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 154 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 155 | /* GPIO_57: I2C_SCL_GS */ |
| 156 | _PAD_CFG_STRUCT(GPIO_57, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 157 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 158 | /* GPIO_58: I2C4_SDA */ |
| 159 | _PAD_CFG_STRUCT(GPIO_58, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 160 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 161 | /* GPIO_59: I2C4_SCL */ |
| 162 | _PAD_CFG_STRUCT(GPIO_59, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 163 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 164 | /* GPIO_60: GPIO_60 */ |
| 165 | PAD_NC(GPIO_60, DN_20K), |
| 166 | /* GPIO_61: GPIO_61 */ |
| 167 | _PAD_CFG_STRUCT(GPIO_61, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 168 | PAD_BUF(TX_RX_DISABLE), PAD_PULL(UP_20K)), |
| 169 | /* GPIO_62: Not Connected */ |
| 170 | PAD_NC(GPIO_62, DN_20K), |
| 171 | /* GPIO_63: Not Connected */ |
| 172 | PAD_NC(GPIO_63, DN_20K), |
| 173 | /* GPIO_66: GPIO_66 */ |
| 174 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_66, 1, DEEP, UP_20K, TxLASTRxE, ENPU), |
| 175 | /* GPIO_67: SMC_EXTSMI# */ |
| 176 | _PAD_CFG_STRUCT(GPIO_67, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 177 | PAD_IRQ_ROUTE(SMI) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) | |
| 178 | (1 << 1), PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 179 | /* GPIO_68: Not Connected */ |
| 180 | PAD_NC(GPIO_68, DN_20K), |
| 181 | /* GPIO_69: Not Connected */ |
| 182 | PAD_NC(GPIO_69, DN_20K), |
| 183 | /* GPIO_70: Not Connected */ |
| 184 | PAD_NC(GPIO_70, DN_20K), |
| 185 | /* GPIO_71: Not Connected */ |
| 186 | PAD_NC(GPIO_71, DN_20K), |
| 187 | /* GPIO_72: Not Connected */ |
| 188 | PAD_NC(GPIO_72, DN_20K), |
| 189 | /* GPIO_73: Not Connected */ |
| 190 | PAD_NC(GPIO_73, DN_20K), |
| 191 | /* GPIO_74: PMIC_THERMTRIP# */ |
| 192 | _PAD_CFG_STRUCT(GPIO_74, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 193 | PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 194 | /* GPIO_75: PROCHOT#_CPU */ |
| 195 | _PAD_CFG_STRUCT(GPIO_75, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 196 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K)), |
| 197 | /* GPIO_211: EMMC_RST#_CPU */ |
| 198 | PAD_NC(GPIO_211, DN_20K), |
| 199 | /* GPIO_212: BRD_ID_0 */ |
| 200 | PAD_NC(GPIO_212, DN_20K), |
| 201 | /* GPIO_213: BRD_ID_1 */ |
| 202 | PAD_NC(GPIO_213, DN_20K), |
| 203 | /* GPIO_214: BRD_ID_2 */ |
| 204 | PAD_NC(GPIO_214, DN_20K), |
| 205 | |
| 206 | /* ------- GPIO Group North ------- */ |
| 207 | /* GPIO_76: Not Connected */ |
| 208 | PAD_NC(GPIO_76, DN_20K), |
| 209 | /* GPIO_77: Not Connected */ |
| 210 | PAD_NC(GPIO_77, DN_20K), |
| 211 | /* GPIO_78: Not Connected */ |
| 212 | PAD_NC(GPIO_78, DN_20K), |
| 213 | /* GPIO_79: GPIO_79 */ |
| 214 | _PAD_CFG_STRUCT(GPIO_79, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 215 | PAD_PULL(DN_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPD)), |
| 216 | /* GPIO_80: FP_FS0 */ |
| 217 | PAD_NC(GPIO_80, DN_20K), |
| 218 | /* GPIO_81: GPIO_81 */ |
| 219 | _PAD_CFG_STRUCT(GPIO_81, PAD_FUNC(NF3) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 220 | (1 << 1), PAD_PULL(DN_20K) | PAD_IOSSTATE(IGNORE)), |
| 221 | /* GPIO_82: FP_MISO */ |
| 222 | PAD_NC(GPIO_82, DN_20K), |
| 223 | /* GPIO_83: GPIO_83 */ |
| 224 | _PAD_CFG_STRUCT(GPIO_83, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 225 | PAD_PULL(DN_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPD)), |
| 226 | /* GPIO_84: GPIO_84 */ |
| 227 | PAD_CFG_GPI_TRIG_OWN(GPIO_84, DN_20K, DEEP, OFF, ACPI), |
| 228 | /* GPIO_85: Not Connected */ |
| 229 | PAD_NC(GPIO_85, DN_20K), |
| 230 | /* GPIO_86: GPIO_86 */ |
| 231 | _PAD_CFG_STRUCT(GPIO_86, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 232 | PAD_BUF(TX_RX_DISABLE), PAD_PULL(DN_20K)), |
| 233 | /* GPIO_87: Not Connected */ |
| 234 | PAD_NC(GPIO_87, DN_20K), |
| 235 | /* GPIO_88: Not Connected */ |
| 236 | PAD_NC(GPIO_88, DN_20K), |
| 237 | /* GPIO_89: Not Connected */ |
| 238 | PAD_NC(GPIO_89, DN_20K), |
| 239 | /* GPIO_90: FLASH_SPI_CS0_N */ |
| 240 | _PAD_CFG_STRUCT(GPIO_90, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 241 | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)), |
| 242 | /* GPIO_91: Not Connected */ |
| 243 | PAD_NC(GPIO_91, DN_20K), |
| 244 | /* GPIO_91: FLASH_SPI_MOSI */ |
| 245 | _PAD_CFG_STRUCT(GPIO_92, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 246 | PAD_BUF(TX_DISABLE), PAD_PULL(NATIVE)), |
| 247 | /* GPIO_92: FLASH_SPI_MISO */ |
| 248 | _PAD_CFG_STRUCT(GPIO_93, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 249 | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)), |
| 250 | /* GPIO_93: FLASH_SPI_IO2 */ |
| 251 | _PAD_CFG_STRUCT(GPIO_94, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 252 | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)), |
| 253 | /* GPIO_95: FLASH_SPI_IO3 */ |
| 254 | _PAD_CFG_STRUCT(GPIO_95, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 255 | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)), |
| 256 | /* GPIO_96: FLASH_SPI_CLK */ |
| 257 | _PAD_CFG_STRUCT(GPIO_96, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 258 | PAD_BUF(TX_DISABLE), PAD_PULL(NATIVE)), |
| 259 | /* GPIO_98: PMU_PLT_RST#_CPU */ |
| 260 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_98, 1, DEEP, UP_20K, TxLASTRxE, ENPD), |
| 261 | /* GPIO_99: PM_PWRBTN# */ |
| 262 | _PAD_CFG_STRUCT(GPIO_99, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 263 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 264 | /* GPIO_100: SLP_S0# */ |
| 265 | _PAD_CFG_STRUCT(GPIO_100, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 266 | PAD_IOSSTATE(IGNORE)), |
| 267 | /* GPIO_101: SLP_S3# */ |
| 268 | _PAD_CFG_STRUCT(GPIO_101, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 269 | PAD_IOSSTATE(IGNORE)), |
| 270 | /* GPIO_102: SLP_S4# */ |
| 271 | _PAD_CFG_STRUCT(GPIO_102, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 272 | PAD_IOSSTATE(IGNORE)), |
| 273 | /* GPIO_103: SUSPWRDNACK */ |
| 274 | _PAD_CFG_STRUCT(GPIO_103, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 275 | PAD_IOSSTATE(IGNORE)), |
| 276 | /* GPIO_104: Not Connected */ |
| 277 | PAD_NC(GPIO_104, DN_20K), |
| 278 | /* GPIO_105: GPIO_105 */ |
| 279 | PAD_NC(GPIO_105, DN_20K), |
| 280 | /* GPIO_106: PMU_BATLOW# */ |
| 281 | _PAD_CFG_STRUCT(GPIO_106, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 282 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 283 | /* GPIO_107: PMU_RSTBTN# */ |
| 284 | _PAD_CFG_STRUCT(GPIO_107, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 285 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 286 | /* GPIO_108: SUS_CLK */ |
| 287 | _PAD_CFG_STRUCT(GPIO_108, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 288 | PAD_IOSSTATE(IGNORE)), |
| 289 | /* GPIO_109: PMU_SUS_STAT# */ |
| 290 | _PAD_CFG_STRUCT(GPIO_109, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 291 | PAD_IOSSTATE(IGNORE)), |
| 292 | /* GPIO_110: Not Connected */ |
| 293 | PAD_NC(GPIO_110, DN_20K), |
| 294 | /* GPIO_111: Not Connected */ |
| 295 | PAD_NC(GPIO_111, DN_20K), |
| 296 | /* GPIO_112: Not Connected */ |
| 297 | PAD_NC(GPIO_112, DN_20K), |
| 298 | /* GPIO_113: Not Connected */ |
| 299 | PAD_NC(GPIO_113, DN_20K), |
| 300 | /* GPIO_114: I2C_SDA_CPU */ |
| 301 | _PAD_CFG_STRUCT(GPIO_114, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 302 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 303 | /* GPIO_115: I2C_SDL_CPU */ |
| 304 | _PAD_CFG_STRUCT(GPIO_115, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 305 | (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 306 | /* GPIO_166: WLAN_PCIE_WAKE# */ |
| 307 | _PAD_CFG_STRUCT(GPIO_116, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 308 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)), |
| 309 | /* GPIO_117: Not Connected */ |
| 310 | PAD_NC(GPIO_117, DN_20K), |
| 311 | /* GPIO_118: Not Connected */ |
| 312 | PAD_NC(GPIO_118, DN_20K), |
| 313 | /* GPIO_119: Not Connected */ |
| 314 | PAD_NC(GPIO_119, DN_20K), |
| 315 | /* GPIO_121: WLAN_CLK_REQ# */ |
| 316 | _PAD_CFG_STRUCT(GPIO_120, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 317 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 318 | /* GPIO_121: Not Connected */ |
| 319 | PAD_NC(GPIO_121, DN_20K), |
| 320 | /* GPIO_122: Not Connected */ |
| 321 | PAD_NC(GPIO_122, DN_20K), |
| 322 | /* GPIO_123: Not Connected */ |
| 323 | PAD_NC(GPIO_123, DN_20K), |
| 324 | /* GPIO_124: DDI0_DDC_SDA */ |
| 325 | _PAD_CFG_STRUCT(GPIO_124, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 326 | PAD_IOSSTATE(HIZCRx0) | PAD_IOSTERM(ENPU)), |
| 327 | /* GPIO_125: DDI0_DDC_SCL */ |
| 328 | _PAD_CFG_STRUCT(GPIO_125, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 329 | PAD_IOSSTATE(HIZCRx0) | PAD_IOSTERM(ENPU)), |
| 330 | /* GPIO_126: Not Connected */ |
| 331 | PAD_NC(GPIO_126, DN_20K), |
| 332 | /* GPIO_127: Not Connected */ |
| 333 | PAD_NC(GPIO_127, DN_20K), |
| 334 | /* GPIO_128: EDP_VDD_EN */ |
| 335 | _PAD_CFG_STRUCT(GPIO_128, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 336 | PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)), |
| 337 | /* GPIO_129: EDP_BKLT_EN */ |
| 338 | _PAD_CFG_STRUCT(GPIO_129, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 339 | PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)), |
| 340 | /* GPIO_130: eDP_BKLCTL_3P3 */ |
| 341 | _PAD_CFG_STRUCT(GPIO_130, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 342 | PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)), |
| 343 | /* GPIO_131: HDMI_HPD_CPU */ |
| 344 | _PAD_CFG_STRUCT(GPIO_131, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 345 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)), |
| 346 | /* GPIO_132: DDI1_HPD_SOC_N */ |
| 347 | _PAD_CFG_STRUCT(GPIO_132, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 348 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)), |
| 349 | /* GPIO_133: EDP_HPD_CPU */ |
| 350 | _PAD_CFG_STRUCT(GPIO_133, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF), |
| 351 | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)), |
| 352 | /* GPIO_134: Touch_Panel_RST# */ |
| 353 | PAD_NC(GPIO_134, DN_20K), |
| 354 | /* GPIO_135: TCH_HOME_KEY */ |
| 355 | PAD_NC(GPIO_135, DN_20K), |
| 356 | /* GPIO_136: Not Connected */ |
| 357 | PAD_NC(GPIO_136, DN_20K), |
| 358 | /* GPIO_137: Not Connected */ |
| 359 | PAD_NC(GPIO_137, DN_20K), |
| 360 | /* GPIO_138: Not Connected */ |
| 361 | PAD_NC(GPIO_138, DN_20K), |
| 362 | /* GPIO_139: Not Connected */ |
| 363 | PAD_NC(GPIO_139, DN_20K), |
| 364 | /* GPIO_140: Not Connected */ |
| 365 | PAD_NC(GPIO_140, DN_20K), |
| 366 | /* GPIO_141: Not Connected */ |
| 367 | PAD_NC(GPIO_141, DN_20K), |
| 368 | /* GPIO_142: PMU_WAKE# */ |
| 369 | _PAD_CFG_STRUCT(GPIO_142, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 370 | PAD_IRQ_ROUTE(IOAPIC) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) | |
| 371 | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)), |
| 372 | /* GPIO_143: Not Connected */ |
| 373 | PAD_NC(GPIO_143, DN_20K), |
| 374 | /* GPIO_144: Not Connected */ |
| 375 | PAD_NC(GPIO_144, DN_20K), |
| 376 | /* GPIO_145: Not Connected */ |
| 377 | PAD_NC(GPIO_145, DN_20K), |
| 378 | /* GPIO_146: Not Connected */ |
| 379 | PAD_NC(GPIO_146, DN_20K), |
| 380 | /* GPIO_147: LPC_SERIRQ */ |
| 381 | _PAD_CFG_STRUCT(GPIO_147, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 382 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSTERM(ENPU)), |
| 383 | /* GPIO_148: LPC_CLK0 */ |
| 384 | _PAD_CFG_STRUCT(GPIO_148, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 385 | PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(HIZCRx1)), |
| 386 | /* GPIO_149: LPC_CLK_DBG_CPU */ |
| 387 | _PAD_CFG_STRUCT(GPIO_149, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 388 | PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(HIZCRx1)), |
| 389 | /* GPIO_150: LPC_AD0 */ |
| 390 | _PAD_CFG_STRUCT(GPIO_150, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 391 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 392 | PAD_IOSTERM(ENPU)), |
| 393 | /* GPIO_151: LPC_AD1 */ |
| 394 | _PAD_CFG_STRUCT(GPIO_151, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 395 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 396 | PAD_IOSTERM(ENPU)), |
| 397 | /* GPIO_152: LPC_AD2 */ |
| 398 | _PAD_CFG_STRUCT(GPIO_152, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 399 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 400 | PAD_IOSTERM(ENPU)), |
| 401 | /* GPIO_153: LPC_AD3 */ |
| 402 | _PAD_CFG_STRUCT(GPIO_153, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 403 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 404 | PAD_IOSTERM(ENPU)), |
| 405 | /* GPIO_154: LPC_CLKRUN# */ |
| 406 | _PAD_CFG_STRUCT(GPIO_154, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 407 | PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K)), |
| 408 | /* GPIO_155: LPC_FRAME# */ |
| 409 | _PAD_CFG_STRUCT(GPIO_155, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) | |
| 410 | PAD_BUF(TX_RX_DISABLE), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 411 | PAD_IOSTERM(ENPU)), |
| 412 | |
| 413 | /* ----- GPIO Group Audio ----- */ |
| 414 | /* GPIO_156: FP_INT# */ |
| 415 | PAD_NC(GPIO_156, DN_20K), |
| 416 | /* GPIO_157: Not Connected */ |
| 417 | PAD_NC(GPIO_157, DN_20K), |
| 418 | /* GPIO_158: Not Connected */ |
| 419 | PAD_NC(GPIO_158, DN_20K), |
| 420 | /* GPIO_159: Not Connected */ |
| 421 | PAD_NC(GPIO_159, DN_20K), |
| 422 | /* GPIO_160: Not Connected */ |
| 423 | PAD_NC(GPIO_160, DN_20K), |
| 424 | /* GPIO_161: GPIO_161 */ |
| 425 | PAD_CFG_GPI_TRIG_OWN(GPIO_161, DN_20K, DEEP, OFF, ACPI), |
| 426 | /* GPIO_162: Not Connected */ |
| 427 | PAD_NC(GPIO_162, DN_20K), |
| 428 | /* GPIO_163: GPIO_163 */ |
| 429 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_163, 1, DEEP, UP_20K, IGNORE, ENPU), |
| 430 | /* GPIO_164: GPIO_164 */ |
| 431 | PAD_CFG_GPI_TRIG_OWN(GPIO_164, DN_20K, DEEP, OFF, ACPI), |
| 432 | /* GPIO_165: GPIO_165 */ |
| 433 | PAD_NC(GPIO_165, DN_20K), |
| 434 | /* GPIO_166: HDA_BCLK_CPU_R */ |
| 435 | _PAD_CFG_STRUCT(GPIO_166, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 436 | PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 437 | PAD_IOSTERM(ENPD)), |
| 438 | /* GPIO_167: HDA_SYNC_CPU_R */ |
| 439 | _PAD_CFG_STRUCT(GPIO_167, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 440 | PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 441 | PAD_IOSTERM(ENPD)), |
| 442 | /* GPIO_168: GPIO_168 */ |
| 443 | _PAD_CFG_STRUCT(GPIO_168, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 444 | PAD_TRIG(OFF), PAD_IOSSTATE(HIZCRx1)), |
| 445 | /* GPIO_169: HDA_SDATAOUT */ |
| 446 | _PAD_CFG_STRUCT(GPIO_169, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 447 | PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 448 | PAD_IOSTERM(ENPD)), |
| 449 | /* GPIO_170: HDA_RST# */ |
| 450 | _PAD_CFG_STRUCT(GPIO_170, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 451 | PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) | |
| 452 | PAD_IOSTERM(ENPD)), |
| 453 | /* GPIO_171: Not Connected */ |
| 454 | PAD_NC(GPIO_171, DN_20K), |
| 455 | /* GPIO_172: Not Connected */ |
| 456 | PAD_NC(GPIO_172, DN_20K), |
| 457 | /* GPIO_173: Not Connected */ |
| 458 | PAD_NC(GPIO_173, DN_20K), |
| 459 | /* GPIO_174: GPIO_174 */ |
| 460 | PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_174, 1, DEEP, DN_20K, TxLASTRxE, ENPU), |
| 461 | /* GPIO_175: GPIO_175 */ |
| 462 | PAD_CFG_GPI_TRIG_OWN(GPIO_175, DN_20K, DEEP, OFF, ACPI), |
| 463 | |
| 464 | /* ----- GPIO Group SCC ----- */ |
| 465 | /* GPIO_176: Not Connected */ |
| 466 | PAD_NC(GPIO_176, DN_20K), |
| 467 | /* GPIO_177: TP_INT# */ |
| 468 | PAD_CFG_GPI_GPIO_DRIVER(GPIO_177, NONE, PLTRST), |
| 469 | /* GPIO_178: Not Connected */ |
| 470 | PAD_NC(GPIO_178, DN_20K), |
| 471 | /* GPIO_187: Not Connected */ |
| 472 | PAD_NC(GPIO_187, DN_20K), |
| 473 | /* GPIO_179: Not Connected */ |
| 474 | PAD_NC(GPIO_179, DN_20K), |
| 475 | /* GPIO_181: Not Connected */ |
| 476 | PAD_NC(GPIO_181, DN_20K), |
| 477 | /* GPIO_182: Not Connected */ |
| 478 | PAD_NC(GPIO_182, DN_20K), |
| 479 | /* GPIO_183: Not Connected */ |
| 480 | PAD_NC(GPIO_183, DN_20K), |
| 481 | /* GPIO_184: Not Connected */ |
| 482 | PAD_NC(GPIO_184, DN_20K), |
| 483 | /* GPIO_187: WLAN_RST_N_R */ |
| 484 | _PAD_CFG_STRUCT(GPIO_185, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | |
| 485 | PAD_TRIG(OFF) | PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(IGNORE)), |
| 486 | /* GPIO_186: Not Connected */ |
| 487 | PAD_NC(GPIO_186, DN_20K), |
| 488 | /* GPIO_188: Not Connected */ |
| 489 | PAD_NC(GPIO_188, DN_20K), |
| 490 | /* GPIO_210: Not Connected */ |
| 491 | PAD_NC(GPIO_210, DN_20K), |
| 492 | /* GPIO_189: Not Connected */ |
| 493 | PAD_NC(GPIO_189, DN_20K), |
| 494 | /* GPIO_190: Not Connected */ |
| 495 | PAD_NC(GPIO_190, DN_20K), |
| 496 | /* GPIO_191: GPIO_191 */ |
| 497 | _PAD_CFG_STRUCT(GPIO_191, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 498 | PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)), |
| 499 | /* GPIO_192: CNVI_BRI_RSP */ |
| 500 | _PAD_CFG_STRUCT(GPIO_192, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 501 | PAD_TRIG(OFF) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | |
| 502 | PAD_IOSTERM(ENPU)), |
| 503 | /* GPIO_192: CNVI_RGI_DT */ |
| 504 | _PAD_CFG_STRUCT(GPIO_193, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 505 | PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)), |
| 506 | /* GPIO_192: GPIO_194 */ |
| 507 | _PAD_CFG_STRUCT(GPIO_194, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 508 | PAD_TRIG(OFF), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | |
| 509 | PAD_IOSTERM(ENPU)), |
| 510 | /* GPIO_192: CNVI_RF_RESET_N */ |
| 511 | _PAD_CFG_STRUCT(GPIO_195, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 512 | PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)), |
| 513 | /* GPIO_196: GPIO_196 */ |
| 514 | _PAD_CFG_STRUCT(GPIO_196, PAD_FUNC(NF1) | PAD_RESET(DEEP) | |
| 515 | PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)), |
| 516 | /* GPIO_198: EMMC_CLK */ |
| 517 | PAD_NC(GPIO_198, DN_20K), |
| 518 | /* GPIO_200: EMMC_DATA_0 */ |
| 519 | PAD_NC(GPIO_200, DN_20K), |
| 520 | /* GPIO_201: EMMC_DATA_1 */ |
| 521 | PAD_NC(GPIO_201, DN_20K), |
| 522 | /* GPIO_202: EMMC_DATA_2 */ |
| 523 | PAD_NC(GPIO_202, DN_20K), |
| 524 | /* GPIO_203: EMMC_DATA_3 */ |
| 525 | PAD_NC(GPIO_203, DN_20K), |
| 526 | /* GPIO_204: EMMC_DATA_4 */ |
| 527 | PAD_NC(GPIO_204, DN_20K), |
| 528 | /* GPIO_205: EMMC_DATA_5 */ |
| 529 | PAD_NC(GPIO_205, DN_20K), |
| 530 | /* GPIO_206: EMMC_DATA_6 */ |
| 531 | PAD_NC(GPIO_206, DN_20K), |
| 532 | /* GPIO_207: EMMC_DATA_7 */ |
| 533 | PAD_NC(GPIO_207, DN_20K), |
| 534 | /* GPIO_208: EMMC_CMD */ |
| 535 | PAD_NC(GPIO_208, DN_20K), |
| 536 | /* GPIO_209: EMMC_STROBE */ |
| 537 | PAD_NC(GPIO_209, DN_20K), |
| 538 | }; |
| 539 | |
| 540 | const struct pad_config *variant_gpio_table(size_t *num) |
| 541 | { |
| 542 | *num = ARRAY_SIZE(gpio_table); |
| 543 | return gpio_table; |
| 544 | } |