1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <southbridge/intel/common/gpio.h> 4 5 static const struct pch_gpio_set1 pch_gpio_set1_mode = { 6 .gpio1 = GPIO_MODE_GPIO, /* DASP_BAY# */ 7 .gpio6 = GPIO_MODE_GPIO, /* LEGACYIO# */ 8 .gpio7 = GPIO_MODE_GPIO, /* BDC_PRESENCE# */ 9 .gpio8 = GPIO_MODE_GPIO, /* H8_WAKE# */ 10 .gpio9 = GPIO_MODE_GPIO, /* Pulled Up */ 11 .gpio10 = GPIO_MODE_GPIO, /* MDI_DETECT */ 12 .gpio12 = GPIO_MODE_GPIO, /* H8SCI# */ 13 .gpio13 = GPIO_MODE_GPIO, /* Pulled Up */ 14 .gpio14 = GPIO_MODE_GPIO, /* CPUSB# */ 15 .gpio15 = GPIO_MODE_GPIO, /* CPPE# */ 16 .gpio19 = GPIO_MODE_GPIO, /* GBE_RS# */ 17 #if CONFIG(BOARD_LENOVO_R60) 18 .gpio21 = GPIO_MODE_GPIO, /* LCD_PRESENCE# */ 19 #endif 20 .gpio22 = GPIO_MODE_GPIO, /* FWH_WP# */ 21 .gpio24 = GPIO_MODE_GPIO, /* Pulled Down */ 22 .gpio25 = GPIO_MODE_GPIO, /* MDC_KILL# */ 23 .gpio26 = GPIO_MODE_GPIO, /* Pulled Down */ 24 .gpio27 = GPIO_MODE_GPIO, /* EXC_PWR_CTRL */ 25 .gpio28 = GPIO_MODE_GPIO, /* EXC_AUX_CTRL */ 26 }; 27 28 static const struct pch_gpio_set1 pch_gpio_set1_direction = { 29 .gpio1 = GPIO_DIR_INPUT, 30 .gpio6 = GPIO_DIR_INPUT, 31 .gpio7 = GPIO_DIR_INPUT, 32 .gpio8 = GPIO_DIR_INPUT, 33 .gpio9 = GPIO_DIR_INPUT, 34 .gpio10 = GPIO_DIR_INPUT, 35 .gpio12 = GPIO_DIR_INPUT, 36 .gpio13 = GPIO_DIR_INPUT, 37 .gpio14 = GPIO_DIR_INPUT, 38 .gpio15 = GPIO_DIR_INPUT, 39 .gpio19 = GPIO_DIR_OUTPUT, 40 #if CONFIG(BOARD_LENOVO_R60) 41 .gpio21 = GPIO_DIR_INPUT, 42 .gpio22 = GPIO_DIR_OUTPUT, 43 #else 44 .gpio22 = GPIO_DIR_INPUT, 45 #endif 46 .gpio24 = GPIO_DIR_OUTPUT, 47 .gpio25 = GPIO_DIR_OUTPUT, 48 .gpio26 = GPIO_DIR_OUTPUT, 49 .gpio27 = GPIO_DIR_OUTPUT, 50 .gpio28 = GPIO_DIR_OUTPUT, 51 }; 52 53 static const struct pch_gpio_set1 pch_gpio_set1_level = { 54 .gpio19 = GPIO_LEVEL_HIGH, 55 .gpio24 = GPIO_LEVEL_HIGH, 56 .gpio25 = GPIO_LEVEL_HIGH, 57 .gpio26 = GPIO_LEVEL_LOW, 58 .gpio27 = GPIO_LEVEL_HIGH, 59 .gpio28 = GPIO_LEVEL_HIGH, 60 }; 61 62 static const struct pch_gpio_set1 pch_gpio_set1_invert = { 63 .gpio1 = GPIO_INVERT, 64 .gpio6 = GPIO_INVERT, 65 .gpio7 = GPIO_INVERT, 66 .gpio8 = GPIO_INVERT, 67 .gpio12 = GPIO_INVERT, 68 .gpio13 = GPIO_INVERT, 69 }; 70 71 static const struct pch_gpio_set1 pch_gpio_set1_blink = { 72 }; 73 74 static const struct pch_gpio_set2 pch_gpio_set2_mode = { 75 #if CONFIG(BOARD_LENOVO_R60) 76 .gpio34 = GPIO_MODE_GPIO, /* SMB_3B_EN */ 77 #endif 78 .gpio36 = GPIO_MODE_GPIO, /* PLANARID0 */ 79 .gpio37 = GPIO_MODE_GPIO, /* PLANARID1 */ 80 .gpio38 = GPIO_MODE_GPIO, /* PLANARID2 */ 81 .gpio39 = GPIO_MODE_GPIO, /* PLANARID3 */ 82 .gpio48 = GPIO_MODE_GPIO, /* FWH_TBL# */ 83 }; 84 85 static const struct pch_gpio_set2 pch_gpio_set2_direction = { 86 #if CONFIG(BOARD_LENOVO_R60) 87 .gpio34 = GPIO_DIR_INPUT, 88 #endif 89 .gpio36 = GPIO_DIR_INPUT, 90 .gpio37 = GPIO_DIR_INPUT, 91 .gpio38 = GPIO_DIR_INPUT, 92 .gpio39 = GPIO_DIR_INPUT, 93 .gpio48 = GPIO_DIR_OUTPUT, 94 }; 95 96 static const struct pch_gpio_set2 pch_gpio_set2_level = { 97 .gpio48 = GPIO_LEVEL_HIGH, 98 }; 99 100 const struct pch_gpio_map mainboard_gpio_map = { 101 .set1 = { 102 .mode = &pch_gpio_set1_mode, 103 .direction = &pch_gpio_set1_direction, 104 .level = &pch_gpio_set1_level, 105 .blink = &pch_gpio_set1_blink, 106 .invert = &pch_gpio_set1_invert, 107 }, 108 .set2 = { 109 .mode = &pch_gpio_set2_mode, 110 .direction = &pch_gpio_set2_direction, 111 .level = &pch_gpio_set2_level, 112 }, 113 }; 114