|
| 1 | +// SPDX-License-Identifier: GPL-3.0-only |
| 2 | + |
| 3 | +#include <board/gpio.h> |
| 4 | +#include <common/macro.h> |
| 5 | + |
| 6 | +// uncrustify:off |
| 7 | +struct Gpio __code ACIN_N = GPIO(B, 0); |
| 8 | +struct Gpio __code AC_PRESENT = GPIO(A, 4); |
| 9 | +struct Gpio __code ALL_SYS_PWRGD = GPIO(C, 0); |
| 10 | +struct Gpio __code BKL_EN = GPIO(C, 7); |
| 11 | +struct Gpio __code BUF_PLT_RST_N = GPIO(D, 2); // renamed to ESPI_RESET# |
| 12 | +struct Gpio __code CCD_EN = GPIO(D, 1); |
| 13 | +struct Gpio __code CPU_C10_GATE_N = GPIO(F, 7); |
| 14 | +struct Gpio __code DD_ON = GPIO(E, 4); |
| 15 | +struct Gpio __code EC_EN = GPIO(B, 6); // renamed to SUSBC_EC# |
| 16 | +struct Gpio __code EC_RSMRST_N = GPIO(E, 5); |
| 17 | +struct Gpio __code LED_ACIN = GPIO(H, 2); |
| 18 | +struct Gpio __code LED_PWR = GPIO(I, 2); // renamed to LED_PWR_BTN |
| 19 | +struct Gpio __code LID_SW_N = GPIO(B, 1); |
| 20 | +struct Gpio __code ME_WE = GPIO(D, 7); |
| 21 | +struct Gpio __code PCH_PWROK_EC = GPIO(F, 3); |
| 22 | +struct Gpio __code PD_EN = GPIO(D, 0); // renamed to PD_POWER_EN |
| 23 | +struct Gpio __code PM_PWROK = GPIO(H, 7); // renamed to EC_PWROK |
| 24 | +struct Gpio __code PWR_BTN_N = GPIO(D, 5); |
| 25 | +struct Gpio __code PWR_SW_N = GPIO(B, 3); |
| 26 | +struct Gpio __code RGBKB_DET_N = GPIO(I, 2); |
| 27 | +struct Gpio __code SLP_S0_N = GPIO(B, 5); |
| 28 | +struct Gpio __code SUSB_N_PCH = GPIO(H, 0); |
| 29 | +struct Gpio __code SUSC_N_PCH = GPIO(H, 1); |
| 30 | +struct Gpio __code VA_EC_EN = GPIO(J, 4); |
| 31 | +struct Gpio __code VCCST_EN = GPIO(D, 3); |
| 32 | +struct Gpio __code VCCST_EN_PG = GPIO(H, 6); |
| 33 | +struct Gpio __code WLAN_PWR_EN = GPIO(A, 3); |
| 34 | +struct Gpio __code XLP_OUT = GPIO(B, 4); |
| 35 | +// uncrustify:on |
| 36 | + |
| 37 | +static const struct GpioInit __code gpio_cfg_init[] = { |
| 38 | + // General control |
| 39 | + { &GCR, 0b10 << 1 }, // Enable LPC reset on GPD2 |
| 40 | + { &GCR2, 0 }, // Disable PECI |
| 41 | + { &GCR6, 0 }, // Disable UARTs |
| 42 | + { &GCR8, BIT(4) }, // PWRSW WDT 2 Enable 1 |
| 43 | + { &GCR9, BIT(5) }, // PWRSW WDT 2 Enable 2 |
| 44 | + { &GCR10, BIT(1) }, // PWRSW counter 12 seconds |
| 45 | + { &GCR15, BIT(4) }, // Enable SMBus channel 4 |
| 46 | + { &GCR19, BIT(7) | BIT(0) }, // Set GPB5 and GPD2 to 1.8V |
| 47 | + { &GCR20, BIT(7) }, // Set GPD3 to 1.8V, GPF2 and GPF3 to 3.3V |
| 48 | + { &GCR21, BIT(6) | BIT(5) | BIT(2) | BIT(1) }, // Set GPF6, GPF7, GPH0, and GPH1 to 1.8V |
| 49 | + { &GCR22, BIT(7) }, |
| 50 | + { &GCR23, BIT(0) }, // Set GPM6 power domain to VCC |
| 51 | + |
| 52 | + // Port data |
| 53 | + { &GPDRA, 0 }, |
| 54 | + { &GPDRB, BIT(4) }, // XLP_OUT |
| 55 | + { &GPDRC, 0 }, |
| 56 | + { &GPDRD, BIT(5) }, // PWR_BTN# |
| 57 | + { &GPDRE, BIT(3) }, // USB_PWR_EN |
| 58 | + { &GPDRF, 0 }, |
| 59 | + { &GPDRG, BIT(6) }, // H_PROCHOT_EC |
| 60 | + { &GPDRH, 0 }, |
| 61 | + { &GPDRI, 0 }, |
| 62 | + { &GPDRJ, BIT(1) }, // KBC_MUTE# |
| 63 | + { &GPDRM, 0 }, |
| 64 | + |
| 65 | + // Port control |
| 66 | + { &GPCRA0, GPIO_OUT }, // EC_PWM_LEDKB_P |
| 67 | + { &GPCRA1, GPIO_IN }, // KBC_BEEP |
| 68 | + { &GPCRA2, GPIO_ALT }, // CPU_FAN |
| 69 | + { &GPCRA3, GPIO_OUT }, // WLAN_PWR_EN |
| 70 | + { &GPCRA4, GPIO_OUT }, // AC_PRESENT_EC |
| 71 | + { &GPCRA5, GPIO_ALT }, // EC_PWM_LEDKB_R |
| 72 | + { &GPCRA6, GPIO_ALT }, // EC_PWM_LEDKB_G |
| 73 | + { &GPCRA7, GPIO_IN }, // TBTA_VBUS_2_EN# |
| 74 | + |
| 75 | + { &GPCRB0, GPIO_IN | GPIO_UP }, // AC_IN# |
| 76 | + { &GPCRB1, GPIO_IN | GPIO_UP }, // LID_SW# |
| 77 | + { &GPCRB2, GPIO_IN }, // PCIE_WAKE# |
| 78 | + { &GPCRB3, GPIO_IN }, // PWR_SW# |
| 79 | + { &GPCRB4, GPIO_OUT }, // XLP_OUT |
| 80 | + { &GPCRB5, GPIO_IN }, // SLP_S0# |
| 81 | + { &GPCRB6, GPIO_OUT }, // SUSBC_EC# |
| 82 | + |
| 83 | + { &GPCRC0, GPIO_IN }, // ALL_SYS_PWRGD |
| 84 | + { &GPCRC1, GPIO_ALT | GPIO_UP }, // SMB_CLK_EC |
| 85 | + { &GPCRC2, GPIO_ALT | GPIO_UP }, // SMB_DATA_EC |
| 86 | + { &GPCRC3, GPIO_ALT | GPIO_UP }, // KB-SO16 |
| 87 | + { &GPCRC4, GPIO_IN | GPIO_UP }, // CNVI_DET# |
| 88 | + { &GPCRC5, GPIO_ALT | GPIO_UP }, // KB-SO17 |
| 89 | + { &GPCRC6, GPIO_IN }, // TMRI1-TEST |
| 90 | + { &GPCRC7, GPIO_OUT }, // BKL_EN |
| 91 | + |
| 92 | + { &GPCRD0, GPIO_OUT }, // PD_POWER_EN |
| 93 | + { &GPCRD1, GPIO_OUT }, // CCD_EN |
| 94 | + { &GPCRD2, GPIO_ALT }, // ESPI_RESET# |
| 95 | + { &GPCRD3, GPIO_IN }, // VCCST_EN |
| 96 | + { &GPCRD4, GPIO_OUT }, // NC |
| 97 | + { &GPCRD5, GPIO_OUT }, // EC_PWR_BTN# |
| 98 | + { &GPCRD6, GPIO_ALT | GPIO_DOWN }, // CPU_FANSEN |
| 99 | + { &GPCRD7, GPIO_OUT }, // EC_ME_WE |
| 100 | + |
| 101 | + { &GPCRE0, GPIO_ALT | GPIO_UP }, // SMC_BAT |
| 102 | + { &GPCRE1, GPIO_IN }, // GPE1_TEST |
| 103 | + { &GPCRE2, GPIO_IN }, // ACE_I2C_IRQ2Z |
| 104 | + { &GPCRE3, GPIO_OUT }, // USB_PWR_EN |
| 105 | + { &GPCRE4, GPIO_OUT }, // DD_ON |
| 106 | + { &GPCRE5, GPIO_OUT }, // EC_RSMRST# |
| 107 | + { &GPCRE6, GPIO_IN }, // JACK_IN#_EC |
| 108 | + { &GPCRE7, GPIO_ALT | GPIO_UP }, // SMD_BAT |
| 109 | + |
| 110 | + { &GPCRF0, GPIO_OUT }, // 80CLK |
| 111 | + { &GPCRF1, GPIO_OUT }, // USB_CHARGE_EN |
| 112 | + { &GPCRF2, GPIO_OUT }, // 3IN1 |
| 113 | + { &GPCRF3, GPIO_OUT }, // PCH_PWROK_EC |
| 114 | + { &GPCRF4, GPIO_ALT | GPIO_UP }, // TP_CLK |
| 115 | + { &GPCRF5, GPIO_ALT | GPIO_UP }, // TP_DATA |
| 116 | + { &GPCRF6, GPIO_IN }, // SLP_A# |
| 117 | + { &GPCRF7, GPIO_IN }, // CPU_C10_GATE# |
| 118 | + |
| 119 | + { &GPCRG0, GPIO_IN }, // 10k pull-down |
| 120 | + { &GPCRG1, GPIO_IN }, // WLAN_EN |
| 121 | + { &GPCRG2, GPIO_IN }, // Pull up to VDD3 |
| 122 | + { &GPCRG3, GPIO_ALT }, // ALSPI_CE# |
| 123 | + { &GPCRG4, GPIO_ALT }, // ALSPI_MSI |
| 124 | + { &GPCRG5, GPIO_ALT }, // ALSPI_MSO |
| 125 | + { &GPCRG6, GPIO_OUT }, // H_PROCHOT_EC |
| 126 | + { &GPCRG7, GPIO_ALT }, // ALSPI_SCLK |
| 127 | + |
| 128 | + { &GPCRH0, GPIO_IN }, // SUSB#_PCH |
| 129 | + { &GPCRH1, GPIO_IN }, // SUSC#_PCH |
| 130 | + { &GPCRH2, GPIO_OUT }, // LED_ACIN |
| 131 | + { &GPCRH3, GPIO_OUT }, // 3G_EN |
| 132 | + { &GPCRH4, GPIO_OUT }, // 3G_PWR_EN |
| 133 | + { &GPCRH5, GPIO_IN }, // TBTA_VBUS_1_EN# |
| 134 | + { &GPCRH6, GPIO_OUT }, // VCCST_EN_PG |
| 135 | + { &GPCRH7, GPIO_OUT }, // EC_PWROK |
| 136 | + |
| 137 | + { &GPCRI0, GPIO_ALT }, // BAT_DET |
| 138 | + { &GPCRI1, GPIO_ALT }, // BAT_VOLT |
| 139 | + { &GPCRI2, GPIO_IN | GPIO_UP }, // RGBKB-DET# |
| 140 | + { &GPCRI3, GPIO_ALT }, // THERM_VOLT_CPU_1 |
| 141 | + { &GPCRI4, GPIO_ALT }, // TOTAL_CUR |
| 142 | + { &GPCRI5, GPIO_OUT }, // LED_PWR_BTN |
| 143 | + { &GPCRI6, GPIO_ALT }, // THERM_VOLT_CPU_2 |
| 144 | + { &GPCRI7, GPIO_IN }, // MODEL_ID |
| 145 | + |
| 146 | + { &GPCRJ0, GPIO_IN }, // SINK_CTRL_EC_1 |
| 147 | + { &GPCRJ1, GPIO_OUT }, // KBC_MUTE# |
| 148 | + { &GPCRJ2, GPIO_ALT }, // KBLIGHT_ADJ |
| 149 | + { &GPCRJ3, GPIO_IN }, // SINK_CTRL_EC_2 |
| 150 | + { &GPCRJ4, GPIO_OUT }, // VA_EC_EN |
| 151 | + { &GPCRJ5, GPIO_IN }, // VBATT_BOOST# |
| 152 | + { &GPCRJ6, GPIO_OUT }, // EC_GPIO |
| 153 | + { &GPCRJ7, GPIO_IN | GPIO_UP }, // LEDKB_DET# |
| 154 | + |
| 155 | + { &GPCRM0, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO0_EC |
| 156 | + { &GPCRM1, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO1_EC |
| 157 | + { &GPCRM2, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO2_EC |
| 158 | + { &GPCRM3, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO3_EC |
| 159 | + { &GPCRM4, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_CLK_EC |
| 160 | + { &GPCRM5, GPIO_ALT }, // ESPI_CS_EC# |
| 161 | + { &GPCRM6, GPIO_IN | GPIO_UP | GPIO_DOWN }, // ESPI_ALRT0# |
| 162 | +}; |
| 163 | + |
| 164 | +void gpio_init(void) { |
| 165 | + for (uint8_t i = 0; i < ARRAY_SIZE(gpio_cfg_init); i++) { |
| 166 | + *gpio_cfg_init[i].reg = gpio_cfg_init[i].data; |
| 167 | + } |
| 168 | +} |
0 commit comments