|
| 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(E, 1); |
| 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_N |
| 12 | +struct Gpio __code CCD_EN = GPIO(D, 1); |
| 13 | +struct Gpio __code DD_ON = GPIO(E, 4); |
| 14 | +struct Gpio __code DGPU_PWR_EN = GPIO(J, 2); |
| 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 GC6_FB_EN = GPIO(J, 3); |
| 18 | +struct Gpio __code JACK_IN_N = GPIO(E, 6); |
| 19 | +struct Gpio __code LAN_WAKEUP_N = GPIO(B, 2); |
| 20 | +struct Gpio __code LED_ACIN = GPIO(H, 2); |
| 21 | +struct Gpio __code LED_BAT_CHG = GPIO(H, 5); |
| 22 | +struct Gpio __code LED_BAT_FULL = GPIO(J, 0); |
| 23 | +struct Gpio __code LED_PWR = GPIO(D, 0); |
| 24 | +struct Gpio __code LID_SW_N = GPIO(B, 1); |
| 25 | +struct Gpio __code ME_WE = GPIO(I, 2); |
| 26 | +struct Gpio __code PCH_DPWROK_EC = GPIO(F, 3); |
| 27 | +struct Gpio __code PCH_PWROK_EC = GPIO(C, 6); // renamed to PM_PWROK_EC |
| 28 | +struct Gpio __code PWR_BTN_N = GPIO(D, 5); |
| 29 | +struct Gpio __code PWR_SW_N = GPIO(B, 3); |
| 30 | +struct Gpio __code SINK_CTRL = GPIO(H, 0); |
| 31 | +struct Gpio __code SLP_SUS_N = GPIO(H, 7); |
| 32 | +struct Gpio __code VA_EC_EN = GPIO(J, 4); |
| 33 | +struct Gpio __code WLAN_PWR_EN = GPIO(B, 5); |
| 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 | + //TODO!! |
| 40 | + { &GCR9, BIT(5) }, // PWRSW WDT 2 Enable 2 |
| 41 | + { &GCR8, BIT(4) }, // PWRSW WDT 2 Enable 1 |
| 42 | + { &GCR, 0x04 }, // Enable LPC reset on GPD2 |
| 43 | + { &GCR6, 0 }, // Disable UARTs |
| 44 | + { &GCR15, BIT(4) }, // Enable SMBus channel 4 |
| 45 | + { &GCR19, BIT(0) }, // Set GPD2 to 1.8V |
| 46 | + { &GCR20, 0 }, // Set GPF2 and GPF3 to 3.3V |
| 47 | + { &GCR1, 0 }, |
| 48 | + { &GCR2, 0 }, |
| 49 | + { &GCR10, 0x02 }, |
| 50 | + { &GCR21, 0 }, |
| 51 | + { &GCR22, 0x80 }, |
| 52 | + { &GCR23, BIT(0) }, // Set GPM6 power domain to VCC |
| 53 | + |
| 54 | + // Port data |
| 55 | + { &GPDRA, 0 }, |
| 56 | + { &GPDRB, BIT(4) | BIT(3) }, // XLP_OUT, PWR_SW# |
| 57 | + { &GPDRC, 0 }, |
| 58 | + { &GPDRD, BIT(3) }, // BL_PWM_EN_EC |
| 59 | + { &GPDRE, BIT(3) }, // USB_PWR_EN# (inverted) |
| 60 | + { &GPDRF, BIT(3) }, // PCH_DPWROK_EC |
| 61 | + { &GPDRG, BIT(6) | BIT(0) }, // H_PROCHOT#_EC, PLVDD_RST_EC |
| 62 | + { &GPDRH, BIT(6) }, // EC_AMP_EN |
| 63 | + { &GPDRI, 0 }, |
| 64 | + { &GPDRJ, BIT(1) }, // KBC_MUTE# |
| 65 | + |
| 66 | + // Port control |
| 67 | + { &GPCRA0, GPIO_IN }, // EC_PWM_PIN_24 |
| 68 | + { &GPCRA1, GPIO_IN }, // LG_DET# |
| 69 | + { &GPCRA2, GPIO_ALT }, // CPU_FAN |
| 70 | + { &GPCRA3, GPIO_ALT }, // DDS_EC_PWM |
| 71 | + { &GPCRA4, GPIO_ALT }, // VGA_FAN |
| 72 | + { &GPCRA5, GPIO_ALT }, // EC_PWM_LED_R |
| 73 | + { &GPCRA6, GPIO_ALT }, // EC_PWM_LED_G |
| 74 | + { &GPCRA7, GPIO_ALT }, // EC_PWM_LED_B |
| 75 | + |
| 76 | + { &GPCRB0, GPIO_IN | GPIO_UP }, // AC_IN# |
| 77 | + { &GPCRB1, GPIO_IN | GPIO_UP }, // LID_SW# |
| 78 | + { &GPCRB2, GPIO_IN | GPIO_UP }, // EC_LAN_WAKEUP# |
| 79 | + { &GPCRB3, GPIO_IN }, // PWR_SW# |
| 80 | + { &GPCRB4, GPIO_OUT }, // XLP_OUT |
| 81 | + { &GPCRB5, GPIO_OUT }, // WLAN_PWR_EN |
| 82 | + { &GPCRB6, GPIO_OUT | GPIO_UP }, // SUSBC_EC# |
| 83 | + |
| 84 | + { &GPCRC0, GPIO_IN }, // ALL_SYS_PWRGD |
| 85 | + { &GPCRC1, GPIO_ALT | GPIO_UP }, // SMC_VGA_THERM |
| 86 | + { &GPCRC2, GPIO_ALT | GPIO_UP }, // SMD_VGA_THERM |
| 87 | + { &GPCRC3, GPIO_ALT | GPIO_UP }, // KB-SO16 |
| 88 | + { &GPCRC4, GPIO_IN | GPIO_UP }, // CNVI_DET# |
| 89 | + { &GPCRC5, GPIO_ALT | GPIO_UP }, // KB-SO17 |
| 90 | + { &GPCRC6, GPIO_OUT }, // PM_PWROK_EC |
| 91 | + { &GPCRC7, GPIO_OUT | GPIO_UP }, // BKL_EN |
| 92 | + |
| 93 | + { &GPCRD0, GPIO_OUT }, // LED_PWR |
| 94 | + { &GPCRD1, GPIO_OUT | GPIO_UP }, // CCD_EN |
| 95 | + { &GPCRD2, GPIO_ALT }, // ESPI_RESET_N |
| 96 | + { &GPCRD3, GPIO_OUT }, // BL_PWM_EN_EC |
| 97 | + { &GPCRD4, GPIO_OUT }, // MUX_CTRL_BIOS |
| 98 | + { &GPCRD5, GPIO_OUT | GPIO_UP }, // PWR_BTN# |
| 99 | + { &GPCRD6, GPIO_ALT | GPIO_DOWN }, // CPU_FANSEN |
| 100 | + { &GPCRD7, GPIO_ALT | GPIO_DOWN }, // VGA_FANSEN |
| 101 | + |
| 102 | + { &GPCRE0, GPIO_ALT | GPIO_UP }, // SMC_BAT |
| 103 | + { &GPCRE1, GPIO_OUT | GPIO_UP }, // AC_PRESENT |
| 104 | + { &GPCRE2, GPIO_IN }, // N/C |
| 105 | + { &GPCRE3, GPIO_OUT }, // USB_PWR_EN# |
| 106 | + { &GPCRE4, GPIO_OUT | GPIO_DOWN }, // DD_ON |
| 107 | + { &GPCRE5, GPIO_OUT }, // EC_RSMRST# |
| 108 | + { &GPCRE6, GPIO_IN }, // JACK_IN#_EC |
| 109 | + { &GPCRE7, GPIO_ALT | GPIO_UP }, // SMD_BAT |
| 110 | + |
| 111 | + { &GPCRF0, GPIO_OUT | GPIO_UP }, // 80CLK |
| 112 | + { &GPCRF1, GPIO_OUT | GPIO_UP }, // USB_CHARGE_EN |
| 113 | + { &GPCRF2, GPIO_OUT | GPIO_UP }, // 3IN1 |
| 114 | + { &GPCRF3, GPIO_OUT }, // PCH_DPWROK_EC |
| 115 | + { &GPCRF4, GPIO_ALT | GPIO_UP }, // TP_CLK |
| 116 | + { &GPCRF5, GPIO_ALT | GPIO_UP }, // TP_DATA |
| 117 | + { &GPCRF6, GPIO_ALT }, // SLP_S0_N |
| 118 | + { &GPCRF7, GPIO_IN }, // CPU_C10_GATE_N |
| 119 | + |
| 120 | + { &GPCRG0, GPIO_OUT }, // PLVDD_RST_EC |
| 121 | + { &GPCRG1, GPIO_OUT }, // PD_VIN_3V3_EC |
| 122 | + { &GPCRG2, GPIO_IN }, // 100k pull-up |
| 123 | + { &GPCRG3, GPIO_ALT }, // ALSPI_CE#_L |
| 124 | + { &GPCRG4, GPIO_ALT }, // ALSPI_MSI_L |
| 125 | + { &GPCRG5, GPIO_ALT }, // ALSPI_MSO_L |
| 126 | + { &GPCRG6, GPIO_OUT | GPIO_UP }, // H_PROCHOT#_EC |
| 127 | + { &GPCRG7, GPIO_ALT }, // ALSPI_SCLK_L |
| 128 | + |
| 129 | + { &GPCRH0, GPIO_IN }, // SINK_CTRL |
| 130 | + { &GPCRH1, GPIO_OUT }, // PD_PWR_EC_EN# |
| 131 | + { &GPCRH2, GPIO_OUT | GPIO_UP }, // LED_ACIN |
| 132 | + { &GPCRH3, GPIO_IN }, // PD_I2C_IRQ# |
| 133 | + { &GPCRH4, GPIO_IN }, // dGPU_OVERT_EC |
| 134 | + { &GPCRH5, GPIO_OUT | GPIO_UP }, // LED_BAT_CHG |
| 135 | + { &GPCRH6, GPIO_OUT }, // EC_AMP_EN |
| 136 | + { &GPCRH7, GPIO_IN }, // SLP_SUS# |
| 137 | + |
| 138 | + { &GPCRI0, GPIO_ALT }, // BAT_DET |
| 139 | + { &GPCRI1, GPIO_ALT }, // BAT_VOLT |
| 140 | + { &GPCRI2, GPIO_IN | GPIO_DOWN }, // ME_WE |
| 141 | + { &GPCRI3, GPIO_ALT }, // THERM_VOLT_CPU |
| 142 | + { &GPCRI4, GPIO_ALT }, // TOTAL_CUR |
| 143 | + { &GPCRI5, GPIO_ALT }, // THERM_VOLT_DDR |
| 144 | + { &GPCRI6, GPIO_ALT }, // THERM_VOLT_GPU |
| 145 | + { &GPCRI7, GPIO_ALT }, // BOARD_ID_ADC |
| 146 | + |
| 147 | + { &GPCRJ0, GPIO_OUT | GPIO_UP }, // LED_BAT_FULL |
| 148 | + { &GPCRJ1, GPIO_OUT }, // KBC_MUTE# |
| 149 | + { &GPCRJ2, GPIO_IN }, // DGPU_PWR_EN |
| 150 | + { &GPCRJ3, GPIO_IN }, // GPIO1_GC6_FB_EN_3V3 |
| 151 | + { &GPCRJ4, GPIO_OUT }, // VA_EC_EN |
| 152 | + { &GPCRJ5, GPIO_IN }, // VBATT_BOOST# |
| 153 | + { &GPCRJ6, GPIO_OUT | GPIO_UP }, // EC_GPIO |
| 154 | + { &GPCRJ7, GPIO_IN | GPIO_UP }, // PERKB_DET# |
| 155 | + |
| 156 | + { &GPCRM0, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO0_EC |
| 157 | + { &GPCRM1, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO1_EC |
| 158 | + { &GPCRM2, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO2_EC |
| 159 | + { &GPCRM3, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_IO3_EC |
| 160 | + { &GPCRM4, GPIO_ALT | GPIO_UP | GPIO_DOWN }, // ESPI_CLK_EC |
| 161 | + { &GPCRM5, GPIO_ALT }, // ESPI_CS_EC# |
| 162 | + { &GPCRM6, GPIO_IN | GPIO_UP | GPIO_DOWN }, // ESPI_ALERT0# |
| 163 | +}; |
| 164 | + |
| 165 | +void gpio_init(void) { |
| 166 | + for (uint8_t i = 0; i < ARRAY_SIZE(gpio_cfg_init); i++) { |
| 167 | + *gpio_cfg_init[i].reg = gpio_cfg_init[i].data; |
| 168 | + } |
| 169 | +} |
0 commit comments