/* -*- mode:c -*- * * Copyright 2017 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 GLK-RVP board-specific configuration */ /* * Declare symbolic names for all the GPIOs that we care about. * Note: Those with interrupt handlers must be declared first. */ /* Power sequencing interrupts */ GPIO_INT(SUSPWRNACK, PIN(0, 2), GPIO_INT_BOTH, power_signal_interrupt) GPIO_INT(RSMRST_L_PGOOD,PIN(3, 6), GPIO_INT_BOTH, power_signal_interrupt) GPIO_INT(ALL_SYS_PGOOD, PIN(7, 2), GPIO_INT_BOTH, power_signal_interrupt) GPIO_INT(PCH_SLP_S0_L, PIN(8, 1), GPIO_INT_BOTH, power_signal_interrupt) GPIO_INT(PCH_SLP_S3_L, PIN(8, 5), GPIO_INT_BOTH, power_signal_interrupt) GPIO_INT(PCH_SLP_S4_L, PIN(8, 6), GPIO_INT_BOTH, power_signal_interrupt) /* Button interrupts */ GPIO_INT(LID_OPEN, PIN(0, 3), GPIO_INT_BOTH | GPIO_PULL_UP, lid_interrupt) GPIO_INT(EC_VOLUP_BTN_ODL, PIN(3, 4), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) GPIO_INT(EC_VOLDN_BTN_ODL, PIN(3, 7), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) GPIO_INT(POWER_BUTTON_L, PIN(A, 6), GPIO_INT_BOTH, power_button_interrupt) /* Type-C interrupts */ GPIO_INT(USB_C0_PD_INT_ODL, PIN(6, 2), GPIO_INT_FALLING, tcpc_alert_event) GPIO_INT(USB_C1_PD_INT_ODL, PIN(6, 3), GPIO_INT_FALLING, tcpc_alert_event) GPIO_INT(AC_PRESENT, PIN(D, 2), GPIO_INT_BOTH, extpower_interrupt) GPIO_INT(WP_L, PIN(9, 3), GPIO_INT_BOTH | GPIO_SEL_1P8V, switch_interrupt) /* Power sequencing GPIOs */ GPIO(SYS_RESET_L, PIN(0, 0), GPIO_ODR_HIGH) GPIO(PCH_RSMRST_L, PIN(0, 1), GPIO_OUT_LOW) GPIO(SMC_SHUTDOWN, PIN(3, 3), GPIO_OUT_LOW | GPIO_PULL_DOWN) GPIO(PCH_SYS_PWROK, PIN(3, 5), GPIO_OUT_LOW) GPIO(PCH_PWRBTN_L, PIN(7, 5), GPIO_ODR_HIGH) /* * PCH_PROCHOT_ODL is primarily for monitoring the PROCHOT# signal which is * normally driven by the PMIC. The EC can also drive this signal in the event * that the ambient or charger temperature sensors exceeds their thresholds. */ GPIO(CPU_PROCHOT, PIN(A, 3), GPIO_INPUT) /* PCH_PROCHOT_ODL */ /* Host communication GPIOs */ GPIO(PCH_WAKE_L, PIN(C, 1), GPIO_ODR_HIGH) GPIO(DC_JACK_PRESENT_L, PIN(7, 0), GPIO_INPUT) /* DC Jack presence coming from +V3P3_A_KBC */ GPIO(USBC_LDO_ENABLE, PIN(7, 1), GPIO_OUT_HIGH) /* USB TCPC to enable LDO in dead battery */ GPIO(ENABLE_BACKLIGHT, PIN(9, 7), GPIO_ODR_HIGH) GPIO(ENTERING_RW, PIN(A, 7), GPIO_OUTPUT) /* EC_ENTERING_RW */ /* * I2C pins should be configured as inputs until I2C module is * initialized. This will avoid driving the lines unintentionally. */ GPIO(I2C0_SCL, PIN(B, 5), GPIO_ODR_HIGH) GPIO(I2C0_SDA, PIN(B, 4), GPIO_ODR_HIGH) GPIO(I2C1_SCL, PIN(9, 0), GPIO_ODR_HIGH) GPIO(I2C1_SDA, PIN(8, 7), GPIO_ODR_HIGH) GPIO(I2C2_SCL, PIN(9, 2), GPIO_ODR_HIGH) GPIO(I2C2_SDA, PIN(9, 1), GPIO_ODR_HIGH) GPIO(I2C3_SCL, PIN(D, 1), GPIO_ODR_HIGH) GPIO(I2C3_SDA, PIN(D, 0), GPIO_ODR_HIGH) GPIO(I2C7_SCL, PIN(B, 3), GPIO_ODR_HIGH) GPIO(I2C7_SDA, PIN(B, 2), GPIO_ODR_HIGH) /* LPC / eSPI signals */ #if 0 GPIO(LAD0_eSPI_IO0, PIN(4, 6), GPIO_INPUT) /* LAD0 / eSPI_IO0 */ GPIO(LAD1_eSPI_IO1, PIN(4, 7), GPIO_INPUT) /* LAD1 / eSPI_IO1 */ GPIO(LAD2_eSPI_IO2, PIN(5, 1), GPIO_INPUT) /* LAD2 / eSPI_IO2 */ GPIO(LAD3_eSPI_IO3, PIN(5, 2), GPIO_INPUT) /* LAD3 / eSPI_IO3 */ GPIO(LFRAME_eSPI_CS, PIN(5, 3), GPIO_INPUT) /* LFRAME / eSPI_CS */ GPIO(LRESET_eSPI_RST, PIN(5, 4), GPIO_INPUT) /* LRESET / eSPI_RST */ GPIO(PCI_CLK_eSPI_CLK, PIN(5, 5), GPIO_INPUT) /* PCI_CLK / eSPI_CLK */ GPIO(CLKRUN, PIN(5, 6), GPIO_INPUT) /* CLKRUN */ GPIO(SER_IRQ_eSPI_ALERT,PIN(5, 7), GPIO_INPUT) /* SER_IRQ / eSPI_ALERT */ #endif /* Unused pins 3.3V & Interruptable */ GPIO(NC_04, PIN(0, 4), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_40, PIN(4, 0), GPIO_INPUT) /* TA1_TACH1 */ GPIO(NC_41, PIN(4, 1), GPIO_INPUT | GPIO_PULL_UP) /* ADC4 */ GPIO(NC_42, PIN(4, 2), GPIO_INPUT | GPIO_PULL_UP) /* ADC3 */ GPIO(NC_43, PIN(4, 3), GPIO_INPUT | GPIO_PULL_UP) /* ADC2 */ GPIO(NC_44, PIN(4, 4), GPIO_INPUT | GPIO_PULL_UP) /* ADC1 */ GPIO(NC_45, PIN(4, 5), GPIO_INPUT | GPIO_PULL_UP) /* ADC5 */ GPIO(NC_60, PIN(6, 0), GPIO_INPUT) /* PWM7 */ GPIO(NC_61, PIN(6, 1), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_67, PIN(6, 7), GPIO_INPUT) /* Wake-up button */ GPIO(NC_73, PIN(7, 3), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_74, PIN(7, 4), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_76, PIN(7, 6), GPIO_INPUT | GPIO_PULL_UP) /* SCI */ GPIO(NC_80, PIN(8, 0), GPIO_INPUT) /* PWM3 */ GPIO(NC_82, PIN(8, 2), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_83, PIN(8, 3), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_84, PIN(8, 4), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_B1, PIN(B, 1), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_B7, PIN(B, 7), GPIO_INPUT) /* PWM5 */ GPIO(NC_C0, PIN(C, 0), GPIO_INPUT) /* PWM6 */ GPIO(NC_C2, PIN(C, 2), GPIO_INPUT) /* PWM1 */ GPIO(NC_C3, PIN(C, 3), GPIO_INPUT) /* PWM0 */ GPIO(NC_C4, PIN(C, 4), GPIO_INPUT) /* PWM2 */ GPIO(NC_C5, PIN(C, 5), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_C7, PIN(C, 7), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_C6, PIN(C, 6), GPIO_INPUT | GPIO_PULL_UP) /* SMI */ GPIO(NC_D3, PIN(D, 3), GPIO_INPUT) /* TB1 */ GPIO(NC_E7, PIN(E, 7), GPIO_INPUT) /* 32K_CLKIN */ /* Unused pins: VSPI 3.3V or 1.8V & Interruptable */ GPIO(NC_94, PIN(9, 4), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_95, PIN(9, 5), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_A1, PIN(A, 1), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_A5, PIN(A, 5), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_B0, PIN(B, 0), GPIO_INPUT | GPIO_PULL_UP) /* Unused pins 3.3V & Non-Interruptable */ GPIO(NC_32, PIN(3, 2), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_66, PIN(6, 6), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_B6, PIN(B, 6), GPIO_INPUT) /* PWM4 */ /* eSPI: VHIF Unused pins 1.8V & Interruptable */ GPIO(NC_50, PIN(5, 0), GPIO_INPUT | GPIO_PULL_UP) /* Alternate pins for UART */ ALTERNATE(PIN_MASK(6, 0x30), 1, MODULE_UART, 0) /* GPIO64/65 */ /* Alternate pins for I2C */ ALTERNATE(PIN_MASK(8, 0x80), 1, MODULE_I2C, 0) /* I2C1:SDA GPIO87 */ ALTERNATE(PIN_MASK(9, 0x01), 1, MODULE_I2C, 0) /* I2C1:SCL GPIO90 */ ALTERNATE(PIN_MASK(9, 0x06), 1, MODULE_I2C, 0) /* I2C2:SDA/SCL GPIO91/92 */ ALTERNATE(PIN_MASK(B, 0x0C), 1, MODULE_I2C, 0) /* I2C7:SDA/SCL GPIOB2/B3 */ ALTERNATE(PIN_MASK(B, 0x30), 1, MODULE_I2C, 0) /* I2C0:SDA/SCL GPIOB4/B5 */ ALTERNATE(PIN_MASK(D, 0x03), 1, MODULE_I2C, 0) /* I2C3:SDA/SCL GPIOD0/D1 */ /* Keyboard pins */ #define GPIO_KB_INPUT (GPIO_INPUT) #define GPIO_KB_OUTPUT (GPIO_ODR_HIGH) /* Keyboard Columns */ /* GPIO05/06/07 */ ALTERNATE(PIN_MASK(0, 0xE0), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_OUTPUT) /* GPIO10/11/12/13/14/15/16/17 */ ALTERNATE(PIN_MASK(1, 0xFF), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_OUTPUT) /* GPIO20/21 */ ALTERNATE(PIN_MASK(2, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_OUTPUT) /* Keyboard Rows */ /* GPIO22/23/24/25/26/27 */ ALTERNATE(PIN_MASK(2, 0xFC), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_INPUT) /* GPIO30/31 */ ALTERNATE(PIN_MASK(3, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_KB_INPUT) /* EC SPI chip */ #if 0 GPIO(F_CS0_EC_L, PIN(A, 0), GPIO_OUT_HIGH | GPIO_PULL_UP) ALTERNATE(PIN_MASK(A, 0x14), 1, MODULE_SPI, 0) /* SPI:MOSI/SCLK GPIOA4/A2 */ ALTERNATE(PIN_MASK(9, 0x40), 1, MODULE_SPI, 0) /* SPI:MISO GPIO96 */ #endif