1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <southbridge/intel/common/gpio.h> 4 5 /* 6 * TODO: Investigate somehow... Current values are taken from a running 7 * system with vendor supplied firmware. 8 */ 9 static const struct pch_gpio_set1 pch_gpio_set1_mode = { 10 .gpio0 = GPIO_MODE_GPIO, /* strap */ 11 .gpio1 = GPIO_MODE_GPIO, /* EC SMI# */ 12 .gpio2 = GPIO_MODE_GPIO, /* strap */ 13 .gpio3 = GPIO_MODE_GPIO, /* strapped weak high */ 14 .gpio4 = GPIO_MODE_GPIO, /* DDR3 thermal ALERT# */ 15 .gpio5 = GPIO_MODE_GPIO, /* DDR3 thermal THERM# */ 16 .gpio6 = GPIO_MODE_GPIO, /* DGPU hotplug? */ 17 .gpio7 = GPIO_MODE_GPIO, /* EC SCI# */ 18 .gpio8 = GPIO_MODE_GPIO, /* strap */ 19 .gpio9 = GPIO_MODE_NATIVE, /* USB OC #5 */ 20 .gpio10 = GPIO_MODE_NATIVE, /* USB OC #6; strapped weak high */ 21 .gpio11 = GPIO_MODE_GPIO, /* strapped weak high */ 22 .gpio12 = GPIO_MODE_NATIVE, /* LAN PHY Power Control */ 23 .gpio13 = GPIO_MODE_NATIVE, /* HDA Audio Dock Reset */ 24 .gpio14 = GPIO_MODE_GPIO, /* EC wake SCI# */ 25 .gpio15 = GPIO_MODE_GPIO, /* strapped high */ 26 .gpio16 = GPIO_MODE_NATIVE, /* SATA 4 GP */ 27 .gpio17 = GPIO_MODE_GPIO, /* strapped weak low */ 28 .gpio18 = GPIO_MODE_NATIVE, /* PCIe clock request 1 */ 29 .gpio19 = GPIO_MODE_NATIVE, /* SATA 9 GP */ 30 .gpio20 = GPIO_MODE_NATIVE, /* PCIe clock request 2 */ 31 .gpio21 = GPIO_MODE_NATIVE, /* SATA 0 GP */ 32 .gpio22 = GPIO_MODE_GPIO, /* strap */ 33 .gpio23 = GPIO_MODE_NATIVE, /* LPC DMA request 1; strapped weak high */ 34 .gpio24 = GPIO_MODE_GPIO, /* strapped weak high */ 35 .gpio25 = GPIO_MODE_NATIVE, /* PCIe clock request 3 */ 36 .gpio26 = GPIO_MODE_NATIVE, /* PCIe clock request 4 */ 37 .gpio27 = GPIO_MODE_GPIO, /* SATA power (active low) */ 38 .gpio28 = GPIO_MODE_GPIO, /* PCH strap ODVR, Output LOW */ 39 .gpio29 = GPIO_MODE_GPIO, /* Sleep LAN power (sleep low) */ 40 .gpio30 = GPIO_MODE_NATIVE, /* Suspend Warning */ 41 .gpio31 = GPIO_MODE_NATIVE, /* AC present */ 42 }; 43 44 static const struct pch_gpio_set1 pch_gpio_set1_direction = { 45 .gpio0 = GPIO_DIR_INPUT, /* Unknown Input */ 46 .gpio1 = GPIO_DIR_INPUT, /* Unknown Input */ 47 .gpio2 = GPIO_DIR_INPUT, /* Unknown Input */ 48 .gpio3 = GPIO_DIR_INPUT, /* Unknown Input */ 49 .gpio4 = GPIO_DIR_INPUT, /* Unknown Input */ 50 .gpio5 = GPIO_DIR_INPUT, /* Unknown Input */ 51 .gpio6 = GPIO_DIR_INPUT, /* Unknown Input */ 52 .gpio7 = GPIO_DIR_INPUT, /* Unknown Input */ 53 .gpio8 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 54 .gpio9 = GPIO_DIR_INPUT, /* Native */ 55 .gpio10 = GPIO_DIR_INPUT, /* Native */ 56 .gpio11 = GPIO_DIR_INPUT, /* Unknown Input */ 57 .gpio12 = GPIO_DIR_INPUT, /* Native */ 58 .gpio13 = GPIO_DIR_INPUT, /* Native */ 59 .gpio14 = GPIO_DIR_INPUT, /* Unknown Input */ 60 .gpio15 = GPIO_DIR_INPUT, /* Unknown Input */ 61 .gpio16 = GPIO_DIR_INPUT, /* Native */ 62 .gpio17 = GPIO_DIR_INPUT, /* Unknown Input */ 63 .gpio18 = GPIO_DIR_INPUT, /* Native */ 64 .gpio19 = GPIO_DIR_INPUT, /* Native */ 65 .gpio20 = GPIO_DIR_INPUT, /* Native */ 66 .gpio21 = GPIO_DIR_INPUT, /* Native */ 67 .gpio22 = GPIO_DIR_INPUT, /* Unknown Input */ 68 .gpio23 = GPIO_DIR_INPUT, /* Native */ 69 .gpio24 = GPIO_DIR_INPUT, /* Unknown Input */ 70 .gpio25 = GPIO_DIR_INPUT, /* Native */ 71 .gpio26 = GPIO_DIR_INPUT, /* Native */ 72 .gpio27 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 73 .gpio28 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 74 .gpio29 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 75 .gpio30 = GPIO_DIR_INPUT, /* Native */ 76 .gpio31 = GPIO_DIR_INPUT, /* Native */ 77 }; 78 79 static const struct pch_gpio_set1 pch_gpio_set1_level = { 80 .gpio0 = GPIO_LEVEL_LOW, /* Unknown Input */ 81 .gpio1 = GPIO_LEVEL_LOW, /* Unknown Input */ 82 .gpio2 = GPIO_LEVEL_LOW, /* Unknown Input */ 83 .gpio3 = GPIO_LEVEL_LOW, /* Unknown Input */ 84 .gpio4 = GPIO_LEVEL_LOW, /* Unknown Input */ 85 .gpio5 = GPIO_LEVEL_LOW, /* Unknown Input */ 86 .gpio6 = GPIO_LEVEL_LOW, /* Unknown Input */ 87 .gpio7 = GPIO_LEVEL_LOW, /* Unknown Input */ 88 .gpio8 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 89 .gpio9 = GPIO_LEVEL_LOW, /* Native */ 90 .gpio10 = GPIO_LEVEL_LOW, /* Native */ 91 .gpio11 = GPIO_LEVEL_LOW, /* Unknown Input */ 92 .gpio12 = GPIO_LEVEL_LOW, /* Native */ 93 .gpio13 = GPIO_LEVEL_LOW, /* Native */ 94 .gpio14 = GPIO_LEVEL_LOW, /* Unknown Input */ 95 .gpio15 = GPIO_LEVEL_LOW, /* Unknown Input */ 96 .gpio16 = GPIO_LEVEL_LOW, /* Native */ 97 .gpio17 = GPIO_LEVEL_LOW, /* Unknown Input */ 98 .gpio18 = GPIO_LEVEL_LOW, /* Native */ 99 .gpio19 = GPIO_LEVEL_LOW, /* Native */ 100 .gpio20 = GPIO_LEVEL_LOW, /* Native */ 101 .gpio21 = GPIO_LEVEL_LOW, /* Native */ 102 .gpio22 = GPIO_LEVEL_LOW, /* Unknown Input */ 103 .gpio23 = GPIO_LEVEL_LOW, /* Native */ 104 .gpio24 = GPIO_LEVEL_LOW, /* Unknown Input */ 105 .gpio25 = GPIO_LEVEL_LOW, /* Native */ 106 .gpio26 = GPIO_LEVEL_LOW, /* Native */ 107 .gpio27 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 108 .gpio28 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 109 .gpio29 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 110 .gpio30 = GPIO_LEVEL_LOW, /* Native */ 111 .gpio31 = GPIO_LEVEL_LOW, /* Native */ 112 }; 113 114 static const struct pch_gpio_set1 pch_gpio_set1_reset = { 115 .gpio0 = GPIO_RESET_PWROK, 116 .gpio1 = GPIO_RESET_PWROK, 117 .gpio2 = GPIO_RESET_PWROK, 118 .gpio3 = GPIO_RESET_PWROK, 119 .gpio4 = GPIO_RESET_PWROK, 120 .gpio5 = GPIO_RESET_PWROK, 121 .gpio6 = GPIO_RESET_PWROK, 122 .gpio7 = GPIO_RESET_PWROK, 123 .gpio8 = GPIO_RESET_PWROK, 124 .gpio9 = GPIO_RESET_PWROK, 125 .gpio10 = GPIO_RESET_PWROK, 126 .gpio11 = GPIO_RESET_PWROK, 127 .gpio12 = GPIO_RESET_PWROK, 128 .gpio13 = GPIO_RESET_PWROK, 129 .gpio14 = GPIO_RESET_PWROK, 130 .gpio15 = GPIO_RESET_PWROK, 131 .gpio16 = GPIO_RESET_PWROK, 132 .gpio17 = GPIO_RESET_PWROK, 133 .gpio18 = GPIO_RESET_PWROK, 134 .gpio19 = GPIO_RESET_PWROK, 135 .gpio20 = GPIO_RESET_PWROK, 136 .gpio21 = GPIO_RESET_PWROK, 137 .gpio22 = GPIO_RESET_PWROK, 138 .gpio23 = GPIO_RESET_PWROK, 139 .gpio24 = GPIO_RESET_PWROK, 140 .gpio25 = GPIO_RESET_PWROK, 141 .gpio26 = GPIO_RESET_PWROK, 142 .gpio27 = GPIO_RESET_PWROK, 143 .gpio28 = GPIO_RESET_PWROK, 144 .gpio29 = GPIO_RESET_PWROK, 145 .gpio30 = GPIO_RESET_RSMRST, 146 .gpio31 = GPIO_RESET_PWROK, 147 }; 148 149 static const struct pch_gpio_set1 pch_gpio_set1_invert = { 150 .gpio0 = GPIO_NO_INVERT, 151 .gpio1 = GPIO_INVERT, 152 .gpio2 = GPIO_NO_INVERT, 153 .gpio3 = GPIO_INVERT, 154 .gpio4 = GPIO_NO_INVERT, 155 .gpio5 = GPIO_NO_INVERT, 156 .gpio6 = GPIO_NO_INVERT, 157 .gpio7 = GPIO_INVERT, 158 .gpio8 = GPIO_NO_INVERT, 159 .gpio9 = GPIO_NO_INVERT, 160 .gpio10 = GPIO_NO_INVERT, 161 .gpio11 = GPIO_NO_INVERT, 162 .gpio12 = GPIO_NO_INVERT, 163 .gpio13 = GPIO_NO_INVERT, 164 .gpio14 = GPIO_INVERT, 165 .gpio15 = GPIO_INVERT, 166 .gpio16 = GPIO_NO_INVERT, 167 .gpio17 = GPIO_NO_INVERT, 168 .gpio18 = GPIO_NO_INVERT, 169 .gpio19 = GPIO_NO_INVERT, 170 .gpio20 = GPIO_NO_INVERT, 171 .gpio21 = GPIO_NO_INVERT, 172 .gpio22 = GPIO_NO_INVERT, 173 .gpio23 = GPIO_NO_INVERT, 174 .gpio24 = GPIO_NO_INVERT, 175 .gpio25 = GPIO_NO_INVERT, 176 .gpio26 = GPIO_NO_INVERT, 177 .gpio27 = GPIO_NO_INVERT, 178 .gpio28 = GPIO_NO_INVERT, 179 .gpio29 = GPIO_NO_INVERT, 180 .gpio30 = GPIO_NO_INVERT, 181 .gpio31 = GPIO_NO_INVERT, 182 }; 183 184 static const struct pch_gpio_set1 pch_gpio_set1_blink = { 185 .gpio0 = GPIO_NO_BLINK, 186 .gpio1 = GPIO_NO_BLINK, 187 .gpio2 = GPIO_NO_BLINK, 188 .gpio3 = GPIO_NO_BLINK, 189 .gpio4 = GPIO_NO_BLINK, 190 .gpio5 = GPIO_NO_BLINK, 191 .gpio6 = GPIO_NO_BLINK, 192 .gpio7 = GPIO_NO_BLINK, 193 .gpio8 = GPIO_NO_BLINK, 194 .gpio9 = GPIO_NO_BLINK, 195 .gpio10 = GPIO_NO_BLINK, 196 .gpio11 = GPIO_NO_BLINK, 197 .gpio12 = GPIO_NO_BLINK, 198 .gpio13 = GPIO_NO_BLINK, 199 .gpio14 = GPIO_NO_BLINK, 200 .gpio15 = GPIO_NO_BLINK, 201 .gpio16 = GPIO_NO_BLINK, 202 .gpio17 = GPIO_NO_BLINK, 203 .gpio18 = GPIO_NO_BLINK, 204 .gpio19 = GPIO_NO_BLINK, 205 .gpio20 = GPIO_NO_BLINK, 206 .gpio21 = GPIO_NO_BLINK, 207 .gpio22 = GPIO_NO_BLINK, 208 .gpio23 = GPIO_NO_BLINK, 209 .gpio24 = GPIO_NO_BLINK, 210 .gpio25 = GPIO_NO_BLINK, 211 .gpio26 = GPIO_NO_BLINK, 212 .gpio27 = GPIO_NO_BLINK, 213 .gpio28 = GPIO_NO_BLINK, 214 .gpio29 = GPIO_NO_BLINK, 215 .gpio30 = GPIO_NO_BLINK, 216 .gpio31 = GPIO_NO_BLINK, 217 }; 218 219 static const struct pch_gpio_set2 pch_gpio_set2_mode = { 220 .gpio32 = GPIO_MODE_NATIVE, /* Native */ 221 .gpio33 = GPIO_MODE_NATIVE, /* Native */ 222 .gpio34 = GPIO_MODE_GPIO, /* Unknown Output LOW */ 223 .gpio35 = GPIO_MODE_NATIVE, /* Native */ 224 .gpio36 = GPIO_MODE_NATIVE, /* Native */ 225 .gpio37 = GPIO_MODE_GPIO, /* Unknown Output LOW */ 226 .gpio38 = GPIO_MODE_GPIO, /* Unknown Input */ 227 .gpio39 = GPIO_MODE_GPIO, /* Unknown Input */ 228 .gpio40 = GPIO_MODE_NATIVE, /* USB OC #1 */ 229 .gpio41 = GPIO_MODE_NATIVE, /* USB OC #2 */ 230 .gpio42 = GPIO_MODE_NATIVE, /* USB OC #3 */ 231 .gpio43 = GPIO_MODE_NATIVE, /* USB OC #4 */ 232 .gpio44 = GPIO_MODE_NATIVE, /* Native */ 233 .gpio45 = GPIO_MODE_NATIVE, /* Native */ 234 .gpio46 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 235 .gpio47 = GPIO_MODE_NATIVE, /* Native */ 236 .gpio48 = GPIO_MODE_GPIO, /* Unknown Input */ 237 .gpio49 = GPIO_MODE_GPIO, /* Unknown Input */ 238 .gpio50 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 239 .gpio51 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 240 .gpio52 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 241 .gpio53 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 242 .gpio54 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 243 .gpio55 = GPIO_MODE_GPIO, /* Unknown Output LOW */ 244 .gpio56 = GPIO_MODE_NATIVE, /* Native */ 245 .gpio57 = GPIO_MODE_GPIO, /* Unknown Input */ 246 .gpio58 = GPIO_MODE_NATIVE, /* Native */ 247 .gpio59 = GPIO_MODE_NATIVE, /* USB OC #0 */ 248 .gpio60 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 249 .gpio61 = GPIO_MODE_NATIVE, /* Native */ 250 .gpio62 = GPIO_MODE_NATIVE, /* Native */ 251 .gpio63 = GPIO_MODE_NATIVE, /* Native */ 252 }; 253 254 static const struct pch_gpio_set2 pch_gpio_set2_direction = { 255 .gpio32 = GPIO_DIR_INPUT, /* Native */ 256 .gpio33 = GPIO_DIR_INPUT, /* Native */ 257 .gpio34 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 258 .gpio35 = GPIO_DIR_INPUT, /* Native */ 259 .gpio36 = GPIO_DIR_INPUT, /* Native */ 260 .gpio37 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 261 .gpio38 = GPIO_DIR_INPUT, /* Unknown Input */ 262 .gpio39 = GPIO_DIR_INPUT, /* Unknown Input */ 263 .gpio40 = GPIO_DIR_INPUT, /* Native */ 264 .gpio41 = GPIO_DIR_INPUT, /* Native */ 265 .gpio42 = GPIO_DIR_INPUT, /* Native */ 266 .gpio43 = GPIO_DIR_INPUT, /* Native */ 267 .gpio44 = GPIO_DIR_INPUT, /* Native */ 268 .gpio45 = GPIO_DIR_INPUT, /* Native */ 269 .gpio46 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 270 .gpio47 = GPIO_DIR_INPUT, /* Native */ 271 .gpio48 = GPIO_DIR_INPUT, /* Unknown Input */ 272 .gpio49 = GPIO_DIR_INPUT, /* Unknown Input */ 273 .gpio50 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 274 .gpio51 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 275 .gpio52 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 276 .gpio53 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 277 .gpio54 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 278 .gpio55 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 279 .gpio56 = GPIO_DIR_INPUT, /* Native */ 280 .gpio57 = GPIO_DIR_INPUT, /* Unknown Input */ 281 .gpio58 = GPIO_DIR_INPUT, /* Native */ 282 .gpio59 = GPIO_DIR_INPUT, /* Native */ 283 .gpio60 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 284 .gpio61 = GPIO_DIR_INPUT, /* Native */ 285 .gpio62 = GPIO_DIR_INPUT, /* Native */ 286 .gpio63 = GPIO_DIR_INPUT, /* Native */ 287 }; 288 289 static const struct pch_gpio_set2 pch_gpio_set2_level = { 290 .gpio32 = GPIO_LEVEL_LOW, /* Native */ 291 .gpio33 = GPIO_LEVEL_LOW, /* Native */ 292 .gpio34 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 293 .gpio35 = GPIO_LEVEL_LOW, /* Native */ 294 .gpio36 = GPIO_LEVEL_LOW, /* Native */ 295 .gpio37 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 296 .gpio38 = GPIO_LEVEL_LOW, /* Unknown Input */ 297 .gpio39 = GPIO_LEVEL_LOW, /* Unknown Input */ 298 .gpio40 = GPIO_LEVEL_LOW, /* Native */ 299 .gpio41 = GPIO_LEVEL_LOW, /* Native */ 300 .gpio42 = GPIO_LEVEL_LOW, /* Native */ 301 .gpio43 = GPIO_LEVEL_LOW, /* Native */ 302 .gpio44 = GPIO_LEVEL_LOW, /* Native */ 303 .gpio45 = GPIO_LEVEL_LOW, /* Native */ 304 .gpio46 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 305 .gpio47 = GPIO_LEVEL_LOW, /* Native */ 306 .gpio48 = GPIO_LEVEL_LOW, /* Unknown Input */ 307 .gpio49 = GPIO_LEVEL_LOW, /* Unknown Input */ 308 .gpio50 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 309 .gpio51 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 310 .gpio52 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 311 .gpio53 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 312 .gpio54 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 313 .gpio55 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 314 .gpio56 = GPIO_LEVEL_LOW, /* Native */ 315 .gpio57 = GPIO_LEVEL_LOW, /* Unknown Input */ 316 .gpio58 = GPIO_LEVEL_LOW, /* Native */ 317 .gpio59 = GPIO_LEVEL_LOW, /* Native */ 318 .gpio60 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 319 .gpio61 = GPIO_LEVEL_LOW, /* Native */ 320 .gpio62 = GPIO_LEVEL_LOW, /* Native */ 321 .gpio63 = GPIO_LEVEL_LOW, /* Native */ 322 }; 323 324 static const struct pch_gpio_set2 pch_gpio_set2_reset = { 325 .gpio32 = GPIO_RESET_PWROK, 326 .gpio33 = GPIO_RESET_PWROK, 327 .gpio34 = GPIO_RESET_PWROK, 328 .gpio35 = GPIO_RESET_PWROK, 329 .gpio36 = GPIO_RESET_PWROK, 330 .gpio37 = GPIO_RESET_PWROK, 331 .gpio38 = GPIO_RESET_PWROK, 332 .gpio39 = GPIO_RESET_PWROK, 333 .gpio40 = GPIO_RESET_PWROK, 334 .gpio41 = GPIO_RESET_PWROK, 335 .gpio42 = GPIO_RESET_PWROK, 336 .gpio43 = GPIO_RESET_PWROK, 337 .gpio44 = GPIO_RESET_PWROK, 338 .gpio45 = GPIO_RESET_PWROK, 339 .gpio46 = GPIO_RESET_PWROK, 340 .gpio47 = GPIO_RESET_PWROK, 341 .gpio48 = GPIO_RESET_PWROK, 342 .gpio49 = GPIO_RESET_PWROK, 343 .gpio50 = GPIO_RESET_PWROK, 344 .gpio51 = GPIO_RESET_PWROK, 345 .gpio52 = GPIO_RESET_PWROK, 346 .gpio53 = GPIO_RESET_PWROK, 347 .gpio54 = GPIO_RESET_PWROK, 348 .gpio55 = GPIO_RESET_PWROK, 349 .gpio56 = GPIO_RESET_PWROK, 350 .gpio57 = GPIO_RESET_PWROK, 351 .gpio58 = GPIO_RESET_PWROK, 352 .gpio59 = GPIO_RESET_PWROK, 353 .gpio60 = GPIO_RESET_PWROK, 354 .gpio61 = GPIO_RESET_PWROK, 355 .gpio62 = GPIO_RESET_PWROK, 356 .gpio63 = GPIO_RESET_PWROK, 357 }; 358 359 static const struct pch_gpio_set3 pch_gpio_set3_mode = { 360 .gpio64 = GPIO_MODE_NATIVE, /* Native */ 361 .gpio65 = GPIO_MODE_NATIVE, /* Native */ 362 .gpio66 = GPIO_MODE_GPIO, /* Unknown Output LOW */ 363 .gpio67 = GPIO_MODE_GPIO, /* Unknown Input */ 364 .gpio68 = GPIO_MODE_GPIO, /* Unknown Output HIGH */ 365 .gpio69 = GPIO_MODE_GPIO, /* Unknown Input */ 366 .gpio70 = GPIO_MODE_NATIVE, /* Native */ 367 .gpio71 = GPIO_MODE_NATIVE, /* Native */ 368 .gpio72 = GPIO_MODE_NATIVE, /* Native */ 369 .gpio73 = GPIO_MODE_NATIVE, /* Native */ 370 .gpio74 = GPIO_MODE_NATIVE, /* Native */ 371 .gpio75 = GPIO_MODE_NATIVE, /* Native */ 372 }; 373 374 static const struct pch_gpio_set3 pch_gpio_set3_direction = { 375 .gpio64 = GPIO_DIR_INPUT, /* Native */ 376 .gpio65 = GPIO_DIR_INPUT, /* Native */ 377 .gpio66 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */ 378 .gpio67 = GPIO_DIR_INPUT, /* Unknown Input */ 379 .gpio68 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */ 380 .gpio69 = GPIO_DIR_INPUT, /* Unknown Input */ 381 .gpio70 = GPIO_DIR_INPUT, /* Native */ 382 .gpio71 = GPIO_DIR_INPUT, /* Native */ 383 .gpio72 = GPIO_DIR_INPUT, /* Native */ 384 .gpio73 = GPIO_DIR_INPUT, /* Native */ 385 .gpio74 = GPIO_DIR_INPUT, /* Native */ 386 .gpio75 = GPIO_DIR_INPUT, /* Native */ 387 }; 388 389 static const struct pch_gpio_set3 pch_gpio_set3_level = { 390 .gpio64 = GPIO_LEVEL_LOW, /* Native */ 391 .gpio65 = GPIO_LEVEL_LOW, /* Native */ 392 .gpio66 = GPIO_LEVEL_LOW, /* Unknown Output LOW */ 393 .gpio67 = GPIO_LEVEL_LOW, /* Unknown Input */ 394 .gpio68 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */ 395 .gpio69 = GPIO_LEVEL_LOW, /* Unknown Input */ 396 .gpio70 = GPIO_LEVEL_LOW, /* Native */ 397 .gpio71 = GPIO_LEVEL_LOW, /* Native */ 398 .gpio72 = GPIO_LEVEL_LOW, /* Native */ 399 .gpio73 = GPIO_LEVEL_LOW, /* Native */ 400 .gpio74 = GPIO_LEVEL_LOW, /* Native */ 401 .gpio75 = GPIO_LEVEL_LOW, /* Native */ 402 }; 403 404 static const struct pch_gpio_set3 pch_gpio_set3_reset = { 405 .gpio64 = GPIO_RESET_PWROK, 406 .gpio65 = GPIO_RESET_PWROK, 407 .gpio66 = GPIO_RESET_PWROK, 408 .gpio67 = GPIO_RESET_PWROK, 409 .gpio68 = GPIO_RESET_PWROK, 410 .gpio69 = GPIO_RESET_PWROK, 411 .gpio70 = GPIO_RESET_PWROK, 412 .gpio71 = GPIO_RESET_PWROK, 413 .gpio72 = GPIO_RESET_PWROK, 414 .gpio73 = GPIO_RESET_PWROK, 415 .gpio74 = GPIO_RESET_PWROK, 416 .gpio75 = GPIO_RESET_PWROK, 417 }; 418 419 const struct pch_gpio_map mainboard_gpio_map = { 420 .set1 = { 421 .mode = &pch_gpio_set1_mode, 422 .direction = &pch_gpio_set1_direction, 423 .level = &pch_gpio_set1_level, 424 .reset = &pch_gpio_set1_reset, 425 .invert = &pch_gpio_set1_invert, 426 .blink = &pch_gpio_set1_blink, 427 }, 428 .set2 = { 429 .mode = &pch_gpio_set2_mode, 430 .direction = &pch_gpio_set2_direction, 431 .level = &pch_gpio_set2_level, 432 .reset = &pch_gpio_set2_reset, 433 }, 434 .set3 = { 435 .mode = &pch_gpio_set3_mode, 436 .direction = &pch_gpio_set3_direction, 437 .level = &pch_gpio_set3_level, 438 .reset = &pch_gpio_set3_reset, 439 }, 440 }; 441