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