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 .gpio12 = GPIO_MODE_GPIO, 15 .gpio13 = GPIO_MODE_GPIO, 16 .gpio15 = GPIO_MODE_GPIO, 17 .gpio16 = GPIO_MODE_GPIO, 18 .gpio17 = GPIO_MODE_GPIO, 19 .gpio19 = GPIO_MODE_GPIO, 20 .gpio21 = GPIO_MODE_GPIO, 21 .gpio22 = GPIO_MODE_GPIO, 22 .gpio23 = GPIO_MODE_GPIO, 23 .gpio24 = GPIO_MODE_GPIO, 24 .gpio27 = GPIO_MODE_GPIO, 25 .gpio28 = GPIO_MODE_GPIO, 26 .gpio29 = GPIO_MODE_GPIO, 27 .gpio30 = GPIO_MODE_GPIO, 28 }; 29 30 static const struct pch_gpio_set1 pch_gpio_set1_direction = { 31 .gpio0 = GPIO_DIR_OUTPUT, 32 .gpio1 = GPIO_DIR_INPUT, 33 .gpio2 = GPIO_DIR_OUTPUT, 34 .gpio3 = GPIO_DIR_INPUT, 35 .gpio4 = GPIO_DIR_OUTPUT, 36 .gpio5 = GPIO_DIR_OUTPUT, 37 .gpio6 = GPIO_DIR_INPUT, 38 .gpio7 = GPIO_DIR_INPUT, 39 .gpio8 = GPIO_DIR_OUTPUT, 40 .gpio12 = GPIO_DIR_OUTPUT, 41 .gpio13 = GPIO_DIR_OUTPUT, 42 .gpio15 = GPIO_DIR_OUTPUT, 43 .gpio16 = GPIO_DIR_INPUT, 44 .gpio17 = GPIO_DIR_INPUT, 45 .gpio19 = GPIO_DIR_OUTPUT, 46 .gpio21 = GPIO_DIR_OUTPUT, 47 .gpio22 = GPIO_DIR_INPUT, 48 .gpio23 = GPIO_DIR_OUTPUT, 49 .gpio24 = GPIO_DIR_OUTPUT, 50 .gpio27 = GPIO_DIR_OUTPUT, 51 .gpio28 = GPIO_DIR_OUTPUT, 52 .gpio29 = GPIO_DIR_OUTPUT, 53 .gpio30 = GPIO_DIR_OUTPUT, 54 }; 55 56 static const struct pch_gpio_set1 pch_gpio_set1_level = { 57 .gpio0 = GPIO_LEVEL_HIGH, 58 .gpio2 = GPIO_LEVEL_HIGH, 59 .gpio4 = GPIO_LEVEL_HIGH, 60 .gpio5 = GPIO_LEVEL_HIGH, 61 .gpio8 = GPIO_LEVEL_LOW, 62 .gpio12 = GPIO_LEVEL_LOW, 63 .gpio13 = GPIO_LEVEL_LOW, 64 .gpio15 = GPIO_LEVEL_LOW, 65 .gpio19 = GPIO_LEVEL_LOW, 66 .gpio21 = GPIO_LEVEL_LOW, 67 .gpio23 = GPIO_LEVEL_LOW, 68 .gpio24 = GPIO_LEVEL_HIGH, 69 .gpio27 = GPIO_LEVEL_HIGH, 70 .gpio28 = GPIO_LEVEL_HIGH, 71 .gpio29 = GPIO_LEVEL_HIGH, 72 .gpio30 = GPIO_LEVEL_HIGH, 73 }; 74 75 static const struct pch_gpio_set1 pch_gpio_set1_reset = { 76 .gpio24 = GPIO_RESET_RSMRST, 77 .gpio30 = GPIO_RESET_RSMRST, 78 }; 79 80 static const struct pch_gpio_set1 pch_gpio_set1_invert = { 81 .gpio1 = GPIO_INVERT, 82 .gpio6 = GPIO_INVERT, 83 }; 84 85 static const struct pch_gpio_set1 pch_gpio_set1_blink = { 86 }; 87 88 static const struct pch_gpio_set2 pch_gpio_set2_mode = { 89 .gpio33 = GPIO_MODE_GPIO, 90 .gpio35 = GPIO_MODE_GPIO, 91 .gpio36 = GPIO_MODE_GPIO, 92 .gpio37 = GPIO_MODE_GPIO, 93 .gpio38 = GPIO_MODE_GPIO, 94 .gpio39 = GPIO_MODE_GPIO, 95 .gpio40 = GPIO_MODE_GPIO, 96 .gpio41 = GPIO_MODE_GPIO, 97 .gpio48 = GPIO_MODE_GPIO, 98 .gpio49 = GPIO_MODE_GPIO, 99 .gpio50 = GPIO_MODE_GPIO, 100 .gpio51 = GPIO_MODE_GPIO, 101 .gpio52 = GPIO_MODE_GPIO, 102 .gpio53 = GPIO_MODE_GPIO, 103 .gpio54 = GPIO_MODE_GPIO, 104 .gpio55 = GPIO_MODE_GPIO, 105 .gpio57 = GPIO_MODE_GPIO, 106 .gpio59 = GPIO_MODE_GPIO, 107 .gpio60 = GPIO_MODE_GPIO, 108 .gpio61 = GPIO_MODE_GPIO, 109 }; 110 111 static const struct pch_gpio_set2 pch_gpio_set2_direction = { 112 .gpio33 = GPIO_DIR_OUTPUT, 113 .gpio35 = GPIO_DIR_OUTPUT, 114 .gpio36 = GPIO_DIR_INPUT, 115 .gpio37 = GPIO_DIR_INPUT, 116 .gpio38 = GPIO_DIR_INPUT, 117 .gpio39 = GPIO_DIR_INPUT, 118 .gpio40 = GPIO_DIR_INPUT, 119 .gpio41 = GPIO_DIR_INPUT, 120 .gpio48 = GPIO_DIR_INPUT, 121 .gpio49 = GPIO_DIR_INPUT, 122 .gpio50 = GPIO_DIR_OUTPUT, 123 .gpio51 = GPIO_DIR_OUTPUT, 124 .gpio52 = GPIO_DIR_OUTPUT, 125 .gpio53 = GPIO_DIR_OUTPUT, 126 .gpio54 = GPIO_DIR_OUTPUT, 127 .gpio55 = GPIO_DIR_OUTPUT, 128 .gpio57 = GPIO_DIR_INPUT, 129 .gpio60 = GPIO_DIR_OUTPUT, 130 .gpio61 = GPIO_DIR_OUTPUT, 131 }; 132 133 static const struct pch_gpio_set2 pch_gpio_set2_level = { 134 .gpio33 = GPIO_LEVEL_LOW, 135 .gpio35 = GPIO_LEVEL_HIGH, 136 .gpio50 = GPIO_LEVEL_HIGH, 137 .gpio51 = GPIO_LEVEL_HIGH, 138 .gpio52 = GPIO_LEVEL_HIGH, 139 .gpio53 = GPIO_LEVEL_HIGH, 140 .gpio54 = GPIO_LEVEL_LOW, 141 .gpio55 = GPIO_LEVEL_HIGH, 142 .gpio57 = GPIO_LEVEL_LOW, 143 .gpio60 = GPIO_LEVEL_LOW, 144 .gpio61 = GPIO_LEVEL_LOW, 145 }; 146 147 static const struct pch_gpio_set2 pch_gpio_set2_reset = { 148 }; 149 150 static const struct pch_gpio_set3 pch_gpio_set3_mode = { 151 .gpio64 = GPIO_MODE_GPIO, 152 .gpio65 = GPIO_MODE_GPIO, 153 .gpio66 = GPIO_MODE_GPIO, 154 .gpio67 = GPIO_MODE_GPIO, 155 .gpio68 = GPIO_MODE_GPIO, 156 .gpio69 = GPIO_MODE_GPIO, 157 .gpio70 = GPIO_MODE_GPIO, 158 .gpio71 = GPIO_MODE_GPIO, 159 }; 160 161 static const struct pch_gpio_set3 pch_gpio_set3_direction = { 162 .gpio64 = GPIO_DIR_OUTPUT, 163 .gpio65 = GPIO_DIR_OUTPUT, 164 .gpio66 = GPIO_DIR_OUTPUT, 165 .gpio67 = GPIO_DIR_INPUT, 166 .gpio68 = GPIO_DIR_INPUT, 167 .gpio69 = GPIO_DIR_OUTPUT, 168 .gpio70 = GPIO_DIR_OUTPUT, 169 .gpio71 = GPIO_DIR_OUTPUT, 170 }; 171 172 static const struct pch_gpio_set3 pch_gpio_set3_level = { 173 .gpio64 = GPIO_LEVEL_LOW, 174 .gpio65 = GPIO_LEVEL_LOW, 175 .gpio66 = GPIO_LEVEL_LOW, 176 .gpio69 = GPIO_LEVEL_LOW, 177 .gpio70 = GPIO_LEVEL_HIGH, 178 .gpio71 = GPIO_LEVEL_LOW, 179 }; 180 181 static const struct pch_gpio_set3 pch_gpio_set3_reset = { 182 }; 183 184 const struct pch_gpio_map mainboard_gpio_map = { 185 .set1 = { 186 .mode = &pch_gpio_set1_mode, 187 .direction = &pch_gpio_set1_direction, 188 .level = &pch_gpio_set1_level, 189 .blink = &pch_gpio_set1_blink, 190 .invert = &pch_gpio_set1_invert, 191 .reset = &pch_gpio_set1_reset, 192 }, 193 .set2 = { 194 .mode = &pch_gpio_set2_mode, 195 .direction = &pch_gpio_set2_direction, 196 .level = &pch_gpio_set2_level, 197 .reset = &pch_gpio_set2_reset, 198 }, 199 .set3 = { 200 .mode = &pch_gpio_set3_mode, 201 .direction = &pch_gpio_set3_direction, 202 .level = &pch_gpio_set3_level, 203 .reset = &pch_gpio_set3_reset, 204 }, 205 }; 206