summaryrefslogtreecommitdiff
path: root/board/adlrvpp_mchp1521/gpio.inc
diff options
context:
space:
mode:
Diffstat (limited to 'board/adlrvpp_mchp1521/gpio.inc')
-rw-r--r--board/adlrvpp_mchp1521/gpio.inc314
1 files changed, 314 insertions, 0 deletions
diff --git a/board/adlrvpp_mchp1521/gpio.inc b/board/adlrvpp_mchp1521/gpio.inc
new file mode 100644
index 0000000000..fd20e16568
--- /dev/null
+++ b/board/adlrvpp_mchp1521/gpio.inc
@@ -0,0 +1,314 @@
+/* -*- mode:c -*-
+ *
+ * Copyright 2021 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* Intel ADLRVP-P-DDR4-MEC1521 board-specific configuration. */
+
+/*
+ * MEC152X data sheets GPIO numbers are OCTAL.
+ */
+
+/*
+ * MEC1521H-SZ MECC board SPI flash is connected to MEC1521H-SZ shared SPI port.
+ * GPIO055/SHD_CS0# pin is used to determine the boot source (eSPI Flash channel
+ * or shared SPI). On RVP, SHD_CS0_N is connected to Flash0 and SHD_CS1_N is
+ * connected to Flash1. Based on RVP design, Flash1 is meant for EC & Flash0
+ * for Coreboot.But, for MEC, it is mandatory to route CS0 to external Flash
+ * for EC to boot load the image. Hence, necessary rework must be taken care to
+ * route CS0 to external Flash1.
+ */
+/* Include common gpios needed for LFW loader and main process FW */
+#include "chip/mchp/lfw/gpio.inc"
+
+#include "baseboard/intelrvp/adlrvp_ioex_gpio.inc"
+
+/* As all signal names used here are supposed to match the schematic,
+ * few pin names may not indicate the real purpose.Refer comments to clarify the pin usage.
+ * Such pins are further renamed in board.h.
+ */
+
+/* Power sequencing interrupts */
+GPIO_INT(ALL_SYS_PWRGD, PIN(057), GPIO_INT_BOTH, power_signal_interrupt)
+GPIO_INT(RSMRST_PWRGD_EC_N, PIN(012), GPIO_INT_BOTH, power_signal_interrupt)
+GPIO_INT(PM_SLP_S0_R_N, PIN(0243), GPIO_INT_BOTH, power_signal_interrupt)
+/* Below meaningless pin names are to match the schematic.*/
+/* PG_EC_DSW_PWROK signal */
+GPIO_INT(EC_TRACE_DATA_2, PIN(0202), GPIO_INT_BOTH, power_signal_interrupt)
+/* VCCST_PWRGD signal */
+GPIO_INT(EC_TRACE_DATA_3, PIN(0203), GPIO_INT_BOTH, power_signal_interrupt)
+GPIO_INT(PM_SLP_SUS_N, PIN(000), GPIO_INT_BOTH, power_signal_interrupt)
+
+/* Button interrupts */
+GPIO_INT(VOL_UP_EC, PIN(0242), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
+GPIO_INT(VOL_DOWN_EC, PIN(0246), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
+GPIO_INT(SMC_LID, PIN(033), GPIO_INT_BOTH | GPIO_PULL_UP, lid_interrupt)
+/* Buffered power button input from
+ * PMIC-SLG7NT4192VTR / PWRBTN_EC_SILEGO_OUTPUT */
+GPIO_INT(PWRBTN_EC_IN_N, PIN(0163), GPIO_INT_BOTH, power_button_interrupt)
+
+/* DC Jack presence coming from +VADP_OUT */
+/* DC_JACK_PRESENT */
+GPIO_INT(STD_ADP_PRSNT_EC, PIN(052), GPIO_INT_BOTH, board_dc_jack_interrupt)
+/* AC Present */
+GPIO_INT(BC_ACOK_EC_IN, PIN(0172), GPIO_INT_BOTH, extpower_interrupt)
+
+/* H1 */
+/* WP_L interrupt pin */
+GPIO_INT(EC_WAKE_CLK_R, PIN(0241), GPIO_INT_BOTH, switch_interrupt)
+
+/* Case Closed Debug Mode */
+/* CCD_MODE_ODL pin */
+GPIO_INT(KBC_NUMLOCK, PIN(0255), GPIO_INT_BOTH, board_connect_c0_sbu)
+
+/* USB-C interrupts */
+/* Below meaningless pin names are to match the schematic */
+/* TCPC & PPC Alerts */
+/* USBC_TCPC_ALRT_P0 */
+GPIO_INT(TYPEC_EC_SMBUS_ALERT_0_R, PIN(0132), GPIO_INT_BOTH, tcpc_alert_event)
+/* USBC_TCPC_ALRT_P1 */
+GPIO_INT(TYPEC_EC_SMBUS_ALERT_1_R, PIN(0245), GPIO_INT_BOTH, tcpc_alert_event)
+/* USBC_TCPC_PPC_ALRT_P0 */
+GPIO_INT(KBC_SCANOUT_15, PIN(0151), GPIO_INT_BOTH, ppc_interrupt)
+/* USBC_TCPC_PPC_ALRT_P1 */
+GPIO_INT(KBC_CAPSLOCK, PIN(0127), GPIO_INT_BOTH, ppc_interrupt)
+
+/* Sensor Interrupts */
+/* GMR_TABLET_MODE_GPIO_L */
+GPIO_INT(EC_SLATEMODE_HALLOUT_SNSR_R, PIN(064), GPIO_INT_BOTH |
+ GPIO_SEL_1P8V, gmr_tablet_switch_isr)
+
+/* UART Interrupt */
+GPIO_INT(EC_UART_RX, PIN(0145), GPIO_INT_BOTH_DSLEEP | GPIO_PULL_UP,
+ uart_deepsleep_interrupt)
+
+/* Power sequencing GPIOs */
+GPIO(PM_RSMRST_R, PIN(054), GPIO_OUT_LOW)
+GPIO(PM_PWRBTN_N_R, PIN(0101), GPIO_ODR_HIGH)
+GPIO(EC_PCH_SPI_OE_N, PIN(024), GPIO_OUT_LOW)
+GPIO(SYS_PWROK_EC_R, PIN(043), GPIO_OUT_LOW)
+/* Below names are meaningless to match schematic */
+/* PCH_DSW_PWROK */
+GPIO(EC_TRACE_DATA_1, PIN(0201), GPIO_OUT_LOW)
+/* SYS_RESET_L */
+GPIO(DG2_PRESENT, PIN(0165), GPIO_ODR_HIGH)
+/* EN_PP3300_A */
+GPIO(EC_DS3_R, PIN(0226), GPIO_OUT_LOW)
+/* PCH_PWROK_EC is an input, as it is driven by the Silego chip on RVP */
+GPIO(EC_PM_PCH_PWROK, PIN(0106), GPIO_INPUT)
+UNIMPLEMENTED(EN_PP5000)
+
+/* Host communication GPIOs */
+/* PCH_WAKE_L pin*/
+GPIO(SMC_WAKE_SCI_N, PIN(0114), GPIO_ODR_HIGH)
+/* EC_INT_L pin */
+GPIO(EC_TRACE_DATA_0, PIN(0200), GPIO_ODR_HIGH)
+#ifndef CONFIG_HOSTCMD_ESPI
+GPIO(ESPI_RST_EC_R_N, PIN(061), GPIO_INPUT)
+#endif
+
+/* H1 Pins */
+/* PACKET_MODE_EN */
+GPIO(EC_TRACE_CLK, PIN(0105), GPIO_OUT_LOW)
+/* ENTERING_RW */
+GPIO(DNX_FORCE_RELOAD_EC_R, PIN(0115), GPIO_OUT_LOW)
+
+/* FAN control pins */
+GPIO(FAN_PWR_DISABLE, PIN(060), GPIO_OUT_LOW)
+
+/* EDP */
+GPIO(EC_EDP1_BKLT_EN, PIN(0157), GPIO_OUT_HIGH)
+
+/* LEDs */
+GPIO(PM_BAT_STATUS_LED2, PIN(035), GPIO_OUT_LOW)
+GPIO(PM_PWRBTN_LED, PIN(0254), GPIO_OUT_LOW)
+
+/* Battery present */
+GPIO(BATT_ID_R, PIN(0162), GPIO_INPUT)
+
+/* VTR2 STRAP PIN - GPIO0104_UART0_TX
+ * Voltage level strap used to determine,
+ * if shared flash interface must be configured
+ * for 3.3V or 1.8V.
+ * 1 = 3.3V operation
+ * 0 = 1.8V operation
+ */
+GPIO(EC_VTR2_STRAP, PIN(0104), GPIO_INPUT)
+
+/* Tap Controller select strap - GPIO0170_UART1_TX
+ * If any of the JTAG TAP controllers are used, GPIO170 must only
+ * be configured as an output to a VTRx powered external function.
+ * GPIO170 may only be configured as an input when
+ * the JTAG TAP controllers are not needed or when an external driver
+ * does not violate the Slave Select Timing.
+ */
+GPIO(EC_JTAG_STRAP, PIN(0170), GPIO_ODR_HIGH)
+
+/* I2C pins */
+/* I2C pins should be configure as inputs until I2C module is
+ * initialized. This will avoid driving the lines unintentionally.
+ */
+GPIO(SMB_BS_CLK, PIN(004), GPIO_INPUT)
+GPIO(SMB_BS_DATA, PIN(003), GPIO_INPUT)
+GPIO(TYPEC_EC_SMBUS1_CLK_EC, PIN(0131), GPIO_INPUT)
+GPIO(TYPEC_EC_SMBUS1_DATA_EC, PIN(0130), GPIO_INPUT)
+GPIO(TYPEC_EC_SMBUS3_DATA, PIN(0142), GPIO_INPUT)
+GPIO(TYPEC_EC_SMBUS3_CLK, PIN(0141), GPIO_INPUT)
+
+/* Unused Pins */
+/* These have different meaning on RVP for alternate OS
+ * support.Hence, keep them as input.
+ */
+GPIO(PROCHOT_EC_R, PIN(0253), GPIO_INPUT)
+GPIO(BC_PROCHOT_EC_N, PIN(034), GPIO_INPUT)
+GPIO(EC_PEG_PLI_N_DG2, PIN(036), GPIO_INPUT)
+GPIO(PEG_PIM_DG2, PIN(0240), GPIO_INPUT)
+GPIO(KBD_BKLT_CTRL, PIN(014), GPIO_INPUT)
+GPIO(STD_ADPT_CNTRL_GPIO_R, PIN(0171), GPIO_INPUT)
+GPIO(SAF_G3_DETECT, PIN(013), GPIO_INPUT)
+GPIO(EC_GPIO015_PWM7, PIN(015), GPIO_INPUT)
+GPIO(EC_GPPC_B14, PIN(0244), GPIO_INPUT)
+GPIO(SX_EXIT_HOLDOFF_N, PIN(0175), GPIO_INPUT)
+GPIO(MIC_PRIVACY_EC, PIN(0100), GPIO_INPUT)
+GPIO(MIC_PRIVACY_SWITCH, PIN(011), GPIO_INPUT)
+GPIO(PECI_MUX_CTRL_ER_INT, PIN(025), GPIO_INPUT)
+GPIO(PEG_RTD3_COLD_MOD_SW_R, PIN(0156), GPIO_INPUT)
+GPIO(H_CATERR_EC_N, PIN(0153), GPIO_INPUT)
+GPIO(PM_BATLOW_N, PIN(0140), GPIO_INPUT)
+GPIO(HOME_BTN_EC_RVP_AEP_ID, PIN(023), GPIO_INPUT)
+GPIO(CPU_C10_GATE_N_R, PIN(022), GPIO_INPUT)
+GPIO(VREF_VTT, PIN(044), GPIO_INPUT)
+GPIO(HB_NVDC_SEL, PIN(0161), GPIO_INPUT)
+GPIO(EC_VCI_OUT_WAKE_R, PIN(0250), GPIO_INPUT)
+GPIO(PM_SLP_S0_CS_N, PIN(0221), GPIO_INPUT)
+GPIO(GPPC_E7_EC_SMI_N_R, PIN(0102), GPIO_INPUT)
+GPIO(TC_RETIMER_FORCE_PWR_BTP_EC_R, PIN(0222), GPIO_INPUT)
+
+/* Alternate functions */
+
+/* Alternate functions GPIO definitions */
+
+/*
+ * MCHP has 6 banks/ports each containing 32 GPIO's.
+ * Each bank/port is connected to a GIRQ.
+ * Port numbering Example:
+ * GPIO_015 = 13 decimal. Port/bank = 13/32 = 0, bit = 13 % 32 = 13
+ * GPIO_0123 = 83 decimal. Port/bank = 83/32 = 2, bit = 83 % 32 = 19
+ * OR port = 0123 >> 5, bit = 0123 & 037(0x1F) = 023 = 19 decimal.
+ */
+
+/*
+ * Configure I2C as alternate function
+ * I2C00_SDA = GPIO_0003(Bank=0, bit=3) Func1
+ * I2C00_SCL = GPIO_0004(Bank=0, bit=4) Func1
+ * I2C01_SDA = GPIO_0130(Bank=2, bit=24) Func1
+ * I2C01_SCL = GPIO_0131(Bank=2, bit=25) Func1
+ * I2C04_SDA = GPIO_0143(Bank=3, bit=3) Func1
+ * I2C04_SCL = GPIO_0144(Bank=3, bit=4) Func1
+ * I2C05_SDA = GPIO_0141(Bank=3, bit=1) Func1
+ * I2C05_SDL = GPIO_0142(Bank=3, bit=2) Func1
+ */
+ALTERNATE(PIN_MASK(0, 0x00000018), GPIO_ALT_FUNC_1, MODULE_I2C,
+ GPIO_ODR_HIGH)
+ALTERNATE(PIN_MASK(2, 0x03000000), GPIO_ALT_FUNC_1, MODULE_I2C,
+ GPIO_ODR_HIGH)
+ALTERNATE(PIN_MASK(3, 0x0000001E), GPIO_ALT_FUNC_1, MODULE_I2C,
+ GPIO_ODR_HIGH)
+
+/* Alternate pins for ADC */
+/*
+ * ADC04 - ADC07
+ * GPIO_0204 Func 1 = ADC04 - AMBIET_THERM_IN0
+ * GPIO_0205 Func 1 = ADC05 - VR_THERM_IN
+ * GPIO_0206 Func 1 = ADC06 - DDR_THERM_IN
+ * GPIO_0207 Func 1 = ADC07 - SKIN_THERM_IN1
+ * Bank 4 bits[4:5:6:7]
+ */
+ALTERNATE(PIN_MASK(4, 0x00000F0), GPIO_ALT_FUNC_1, MODULE_ADC,
+ GPIO_ANALOG)
+/*
+ * VREF2_ADC_R
+ * GPIO_067 Func 1 = VREF2_ADC
+ * Bank 1 bit [23]
+ */
+ALTERNATE(PIN_MASK(1, 0x0800000), GPIO_ALT_FUNC_1, MODULE_ADC,
+ GPIO_ANALOG)
+
+/* Alternate pins for FAN */
+/*
+ * GPIO_050 Func 1 = TACH0 - CPU_TACHO_FAN
+ * GPIO_053 Func 1 = PWM0 - CPU_PWM_FAN
+ * Bank 1 bits[8:11]
+ */
+ALTERNATE(PIN_MASK(1, 0x0000900), GPIO_ALT_FUNC_1, MODULE_PWM,
+ GPIO_FLAG_NONE)
+
+/* KB pins */
+/*
+ * MEC1521H-SZ (144 pin package)
+ * KSO00 = GPIO_0040 Func2 bank 1 bit 0
+ * KSO01 = GPIO_0045 Func1 bank 1 bit 5
+ * KSO02 = GPIO_0046 Func1 bank 1 bit 6
+ * KSO03 = GPIO_0047 Func1 bank 1 bit 7
+ * KSO04 = GPIO_0107 Func2 bank 2 bit 7
+ * KSO05 = GPIO_0112 Func1 bank 2 bit 10
+ * KSO06 = GPIO_0113 Func1 bank 2 bit 11
+ * KSO07 = GPIO_0120 Func1 bank 2 bit 16
+ * KSO08 = GPIO_0121 Func2 bank 2 bit 17
+ * KSO09 = GPIO_0122 Func2 bank 2 bit 18
+ * KSO10 = GPIO_0123 Func2 bank 2 bit 19
+ * KSO11 = GPIO_0124 Func2 bank 2 bit 20
+ * KSO12 = GPIO_0125 Func2 bank 2 bit 21
+ * For 8x16 test keyboard add KSO13 - KSO15
+ * KSO13 = GPIO_0126 Func2 bank 2 bit 22
+ * KSO14 = GPIO_0152 Func1 bank 3 bit 10
+ * KSO15 = GPIO_0151 Func2 bank 3 bit 9
+ *
+ * KSI0 = GPIO_0017 Func1 bank 0 bit 15
+ * KSI1 = GPIO_0020 Func1 bank 0 bit 16
+ * KSI2 = GPIO_0021 Func1 bank 0 bit 17
+ * KSI3 = GPIO_0026 Func1 bank 0 bit 22
+ * KSI4 = GPIO_0027 Func1 bank 0 bit 23
+ * KSI5 = GPIO_0030 Func1 bank 0 bit 24
+ * KSI6 = GPIO_0031 Func1 bank 0 bit 25
+ * KSI7 = GPIO_0032 Func1 bank 0 bit 26
+ */
+/* KSO 0 Bank 1, Func2, bit 0 */
+ALTERNATE(PIN_MASK(1, 0x01), 2, MODULE_KEYBOARD_SCAN,
+ GPIO_ODR_HIGH)
+
+#ifdef CONFIG_KEYBOARD_COL2_INVERTED
+/* KSO 1-3 Bank 1, Func1, bits 5-7 */
+ALTERNATE(PIN_MASK(1, 0xA0), 1, MODULE_KEYBOARD_SCAN,
+ GPIO_ODR_HIGH)
+GPIO(KBD_KSO2, PIN(046), GPIO_OUT_LOW)
+#else
+/* KSO 1-3 Bank 1, Func1, bits 5-7 */
+ALTERNATE(PIN_MASK(1, 0xE0), 1, MODULE_KEYBOARD_SCAN,
+ GPIO_ODR_HIGH)
+#endif
+
+/* KSO 4, 8-12 Bank 2, Func2, bits 7, 17-21 */
+ALTERNATE(PIN_MASK(2, 0x003E0080), 2, MODULE_KEYBOARD_SCAN,
+ GPIO_ODR_HIGH)
+/* KSO 5-7, Bank 2, Func1, bits 10-11, 16 */
+ALTERNATE(PIN_MASK(2, 0x00010C00), 1, MODULE_KEYBOARD_SCAN,
+ GPIO_ODR_HIGH)
+
+/* KSI 0-7, Bank 0, Func1, bit 15-17, 22-26 */
+ALTERNATE(PIN_MASK(0, 0x07C38000), 1, MODULE_KEYBOARD_SCAN,
+ (GPIO_INPUT | GPIO_PULL_UP))
+
+/*
+ * ESPI_RST_EC_R_N# - GPIO_0061 Func 1, Bank 1 bit[17]
+ * ESPI_ALERT0_EC_R_N# - GPIO_0063 Func 1, Bank 1 bit[19]
+ * ESPI_CLK_EC_R - GPIO_0065 Func 1, Bank 1 bit[21]
+ * ESPI_CS0_EC_R_N# - GPIO_0066 Func 1, Bank 1 bit[22]
+ * ESPI_IO0_EC_R - GPIO_0070 Func 1, Bank 1 bit[24]
+ * ESPI_IO1_EC_R - GPIO_0071 Func 1, Bank 1 bit[25]
+ * ESPI_IO2_EC_R - GPIO_0072 Func 1, Bank 1 bit[26]
+ * ESPI_IO3_EC_R - GPIO_0073 Func 1, Bank 1 bit[27]
+ */
+ALTERNATE(PIN_MASK(1, 0x0F6A0000), 1, MODULE_LPC, GPIO_FLAG_NONE)