1*4f2df630SAndroid Build Coastguard Worker/* -*- mode:c -*- 2*4f2df630SAndroid Build Coastguard Worker * Copyright 2016 The ChromiumOS Authors 3*4f2df630SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 4*4f2df630SAndroid Build Coastguard Worker * found in the LICENSE file. 5*4f2df630SAndroid Build Coastguard Worker */ 6*4f2df630SAndroid Build Coastguard Worker 7*4f2df630SAndroid Build Coastguard Worker/* 8*4f2df630SAndroid Build Coastguard Worker * This file describes GPIO mapping for the cr50 code running on the H1 chip. 9*4f2df630SAndroid Build Coastguard Worker * 10*4f2df630SAndroid Build Coastguard Worker * For the purposes of this file H1 core has the following logical and 11*4f2df630SAndroid Build Coastguard Worker * physical items and properties: 12*4f2df630SAndroid Build Coastguard Worker * 13*4f2df630SAndroid Build Coastguard Worker * - 32 internal GPIOs, which are split into two ports of 16 bits each. 14*4f2df630SAndroid Build Coastguard Worker * Ports' architecture and programmig is described in "ARM Cortex-M System 15*4f2df630SAndroid Build Coastguard Worker * Design Kit TRM" DDIO47B. 16*4f2df630SAndroid Build Coastguard Worker * 17*4f2df630SAndroid Build Coastguard Worker * - a set of modules - SPI and I2C controller and peripheral interfaces, 18*4f2df630SAndroid Build Coastguard Worker * UARTs, interrupt controller, etc. 19*4f2df630SAndroid Build Coastguard Worker * 20*4f2df630SAndroid Build Coastguard Worker * - 28 pins on the package named DIOA0..14, DIOB0..7 and DIOM0..4 21*4f2df630SAndroid Build Coastguard Worker * 22*4f2df630SAndroid Build Coastguard Worker * - a PINMUX - a unit which allows to interconnect objects from the three 23*4f2df630SAndroid Build Coastguard Worker * groups listed above. Note that some modules are attached to some pins 24*4f2df630SAndroid Build Coastguard Worker * directly, so in case those modules are used the pins should not be 25*4f2df630SAndroid Build Coastguard Worker * connected by PINMUX to any other outputs. 26*4f2df630SAndroid Build Coastguard Worker * 27*4f2df630SAndroid Build Coastguard Worker * The below macros are somewhat misleading (apparently for historical 28*4f2df630SAndroid Build Coastguard Worker * reasons), as PIN(p, b) component in fact refers not to the external pin, 29*4f2df630SAndroid Build Coastguard Worker * but to the GPIO (bit b on port p), where bit is in 0..15 range, and port is 30*4f2df630SAndroid Build Coastguard Worker * in 0..1 range. 31*4f2df630SAndroid Build Coastguard Worker * 32*4f2df630SAndroid Build Coastguard Worker * To describe routing of an external signal two macro instantiations are 33*4f2df630SAndroid Build Coastguard Worker * required: 34*4f2df630SAndroid Build Coastguard Worker * 35*4f2df630SAndroid Build Coastguard Worker * The GPIO_INT() or GPIO() macro assigns the signal a name and assigns it to 36*4f2df630SAndroid Build Coastguard Worker * the internal GPIO port, (again, defining the port using the PIN(port, bit) 37*4f2df630SAndroid Build Coastguard Worker * component of the macro invocation). GPIO_INT definitions assign their 38*4f2df630SAndroid Build Coastguard Worker * respective signals to interrupts and ISRs. 39*4f2df630SAndroid Build Coastguard Worker * 40*4f2df630SAndroid Build Coastguard Worker * The PINMUX macro assigns the previously defined GPIO to another object, 41*4f2df630SAndroid Build Coastguard Worker * most commonly to an external pin, but possibly to some internal component. 42*4f2df630SAndroid Build Coastguard Worker */ 43*4f2df630SAndroid Build Coastguard Worker 44*4f2df630SAndroid Build Coastguard Worker/* Declare symbolic names for all the GPIOs that we care about. 45*4f2df630SAndroid Build Coastguard Worker * Note: Those with interrupt handlers must be declared first. */ 46*4f2df630SAndroid Build Coastguard Worker 47*4f2df630SAndroid Build Coastguard Worker/* 48*4f2df630SAndroid Build Coastguard Worker * A manually maintained tally of all GPIO ports configured in this file. 49*4f2df630SAndroid Build Coastguard Worker * 50*4f2df630SAndroid Build Coastguard Worker * GPIO0.0 int_ap_l 51*4f2df630SAndroid Build Coastguard Worker * GPIO0.1 ec_flash_select 52*4f2df630SAndroid Build Coastguard Worker * GPIO0.2 ap_flash_select 53*4f2df630SAndroid Build Coastguard Worker * GPIO0.3 DIOM4 used for physical presence 54*4f2df630SAndroid Build Coastguard Worker * GPIO0.4 sys_rst_l_out 55*4f2df630SAndroid Build Coastguard Worker * GPIO0.5 ccd_mode_l 56*4f2df630SAndroid Build Coastguard Worker * GPIO0.6 batt_pres_l 57*4f2df630SAndroid Build Coastguard Worker * GPIO0.7 spi_mosi 58*4f2df630SAndroid Build Coastguard Worker * GPIO0.8 spi_clk 59*4f2df630SAndroid Build Coastguard Worker * GPIO0.9 spi_cs_l 60*4f2df630SAndroid Build Coastguard Worker * GPIO0.10 diob4 61*4f2df630SAndroid Build Coastguard Worker * GPIO0.11 en_pp3300_ina 62*4f2df630SAndroid Build Coastguard Worker * GPIO0.12 i2c_scl_ina 63*4f2df630SAndroid Build Coastguard Worker * GPIO0.13 i2c_sda_ina 64*4f2df630SAndroid Build Coastguard Worker * GPIO0.14 i2cp_sda poll 65*4f2df630SAndroid Build Coastguard Worker * GPIO0.15 ec_tx_cr50_rx_out 66*4f2df630SAndroid Build Coastguard Worker * GPIO1.0 tpm_rst_l 67*4f2df630SAndroid Build Coastguard Worker * GPIO1.1 detect_ap_uart 68*4f2df630SAndroid Build Coastguard Worker * GPIO1.2 detect_ec_uart 69*4f2df630SAndroid Build Coastguard Worker * GPIO1.3 detect_servo 70*4f2df630SAndroid Build Coastguard Worker * GPIO1.4 detect_tpm_rst_asserted 71*4f2df630SAndroid Build Coastguard Worker * GPIO1.5 unwedge_i2cp_scl 72*4f2df630SAndroid Build Coastguard Worker * GPIO1.6 monitor_i2cp_sda 73*4f2df630SAndroid Build Coastguard Worker * GPIO1.7 ec_packet_mode_en 74*4f2df630SAndroid Build Coastguard Worker * GPIO1.8 ec_packet_mode_dis 75*4f2df630SAndroid Build Coastguard Worker * GPIO1.10 rec_lid_switch 76*4f2df630SAndroid Build Coastguard Worker * GPIO1.11 ec_tx_cr50_rx_in 77*4f2df630SAndroid Build Coastguard Worker * GPIO1.12 strap_a0 78*4f2df630SAndroid Build Coastguard Worker * GPIO1.13 strap_a1 79*4f2df630SAndroid Build Coastguard Worker * GPIO1.14 strap_b0 80*4f2df630SAndroid Build Coastguard Worker * GPIO1.15 strap_b1 81*4f2df630SAndroid Build Coastguard Worker */ 82*4f2df630SAndroid Build Coastguard Worker/*****************************************************************************/ 83*4f2df630SAndroid Build Coastguard Worker/* INTERRUPT GPIOs - interrupts processed in chip/g/gpio.c */ 84*4f2df630SAndroid Build Coastguard Worker/* 85*4f2df630SAndroid Build Coastguard Worker * The system reset signal can be from two different pins depending on what the 86*4f2df630SAndroid Build Coastguard Worker * board type is. One board uses plt_rst_l (diom3) and the other board type uses 87*4f2df630SAndroid Build Coastguard Worker * sys_rst_l (diom0) to detect a warm reset. The pin is selected based on the 88*4f2df630SAndroid Build Coastguard Worker * board properties in board.c 89*4f2df630SAndroid Build Coastguard Worker * 90*4f2df630SAndroid Build Coastguard Worker * On both boards sys_rst_l is used as an output to trigger warm resets. The ARM 91*4f2df630SAndroid Build Coastguard Worker * core can't trigger an interrupt if it's driving it as an output so we attach 92*4f2df630SAndroid Build Coastguard Worker * two internal GPIOs to the same pad if sys_rst_l is also being used to detect 93*4f2df630SAndroid Build Coastguard Worker * system resets. 94*4f2df630SAndroid Build Coastguard Worker */ 95*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(TPM_RST_L, PIN(1, 0), GPIO_INT_RISING, tpm_rst_deasserted) 96*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(DETECT_AP_UART, PIN(1, 1), GPIO_INT_HIGH, ap_detect_asserted) 97*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(DETECT_EC_UART, PIN(1, 2), GPIO_INT_HIGH, ec_detect_asserted) 98*4f2df630SAndroid Build Coastguard Worker/* 99*4f2df630SAndroid Build Coastguard Worker * DETECT_SERVO and EC_TX_CR50_RX pins must NOT be changed without also changing 100*4f2df630SAndroid Build Coastguard Worker * the pinmux_regval fields in the bitbang_config in board.c. The pinmux values 101*4f2df630SAndroid Build Coastguard Worker * in the config assume the pin definitions here. 102*4f2df630SAndroid Build Coastguard Worker */ 103*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(DETECT_SERVO, PIN(1, 3), GPIO_INT_HIGH | GPIO_PULL_DOWN, 104*4f2df630SAndroid Build Coastguard Worker servo_detect_asserted) 105*4f2df630SAndroid Build Coastguard Worker/* 106*4f2df630SAndroid Build Coastguard Worker * Whan TPM_RST_L is asserted, the AP is in reset. Use this for detecting when 107*4f2df630SAndroid Build Coastguard Worker * the AP is off. 108*4f2df630SAndroid Build Coastguard Worker */ 109*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(DETECT_TPM_RST_L_ASSERTED, PIN(1, 4), GPIO_INT_FALLING, 110*4f2df630SAndroid Build Coastguard Worker tpm_rst_asserted) 111*4f2df630SAndroid Build Coastguard Worker 112*4f2df630SAndroid Build Coastguard Worker/* 113*4f2df630SAndroid Build Coastguard Worker * A GPIO to sample the current state of the I2CP SDA line, allowing to detect 114*4f2df630SAndroid Build Coastguard Worker * the 'wedged I2C bus' condition. 115*4f2df630SAndroid Build Coastguard Worker * 116*4f2df630SAndroid Build Coastguard Worker * Also, it works to detect an I2C transaction during extended INT_AP_L 117*4f2df630SAndroid Build Coastguard Worker * assertion. 118*4f2df630SAndroid Build Coastguard Worker */ 119*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(MONITOR_I2CP_SDA, PIN(1, 6), GPIO_INT_LOW, i2cp_sda_isr) 120*4f2df630SAndroid Build Coastguard Worker 121*4f2df630SAndroid Build Coastguard Worker/* 122*4f2df630SAndroid Build Coastguard Worker * These GPIOs are to enable or disable EC-CR50 communication. 123*4f2df630SAndroid Build Coastguard Worker * NOTE: If these are changed, you must update the information in board.c 124*4f2df630SAndroid Build Coastguard Worker * and ec_comm.c 125*4f2df630SAndroid Build Coastguard Worker */ 126*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(EC_PACKET_MODE_EN, PIN(1, 7), GPIO_INT_RISING, ec_comm_packet_mode_en) 127*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(EC_PACKET_MODE_DIS, PIN(1, 8), GPIO_INT_FALLING, 128*4f2df630SAndroid Build Coastguard Worker ec_comm_packet_mode_dis) 129*4f2df630SAndroid Build Coastguard Worker 130*4f2df630SAndroid Build Coastguard Worker/* 131*4f2df630SAndroid Build Coastguard Worker * Generic pulled up input used for physical presence indication on some 132*4f2df630SAndroid Build Coastguard Worker * devices. 133*4f2df630SAndroid Build Coastguard Worker */ 134*4f2df630SAndroid Build Coastguard WorkerGPIO_INT(DIOM4, PIN(0, 3), GPIO_INT_RISING, diom4_deasserted) 135*4f2df630SAndroid Build Coastguard Worker 136*4f2df630SAndroid Build Coastguard Worker/*****************************************************************************/ 137*4f2df630SAndroid Build Coastguard Worker/* NON STANDARD INTERRUPT GPIOs - handlers defined and configured in board.c */ 138*4f2df630SAndroid Build Coastguard Worker/* 139*4f2df630SAndroid Build Coastguard Worker * This signal is used as an interrupt for uart bitbang. This is setup manually 140*4f2df630SAndroid Build Coastguard Worker * in board.c instead of using chip/g/gpio.c, so the interrupts can be processed 141*4f2df630SAndroid Build Coastguard Worker * more quickly. This increases the max bitbang programming speed. 142*4f2df630SAndroid Build Coastguard Worker * 143*4f2df630SAndroid Build Coastguard Worker * If this gpio is changed, you must update the information in board.c. 144*4f2df630SAndroid Build Coastguard Worker */ 145*4f2df630SAndroid Build Coastguard WorkerGPIO(EC_TX_CR50_RX, PIN(1, 11), GPIO_INPUT) 146*4f2df630SAndroid Build Coastguard Worker 147*4f2df630SAndroid Build Coastguard Worker/*****************************************************************************/ 148*4f2df630SAndroid Build Coastguard Worker/* GPIOs */ 149*4f2df630SAndroid Build Coastguard Worker/* Pull this low to interrupt the AP */ 150*4f2df630SAndroid Build Coastguard WorkerGPIO(INT_AP_L, PIN(0, 0), GPIO_OUT_HIGH) 151*4f2df630SAndroid Build Coastguard Worker 152*4f2df630SAndroid Build Coastguard Worker/* 153*4f2df630SAndroid Build Coastguard Worker * Use these to take over the AP & EC flash (only when AP & EC are off!) 154*4f2df630SAndroid Build Coastguard Worker * Disable sleep when they're set to 1. 155*4f2df630SAndroid Build Coastguard Worker */ 156*4f2df630SAndroid Build Coastguard WorkerGPIO(EC_FLASH_SELECT, PIN(0, 1), GPIO_OUT_LOW | GPIO_SLEEP_DIS_HIGH) 157*4f2df630SAndroid Build Coastguard Worker/* 158*4f2df630SAndroid Build Coastguard Worker * If this gpio is changed, you must update the AP_FLASH_SELECT pinmux 159*4f2df630SAndroid Build Coastguard Worker * setup in board.c accordingly. 160*4f2df630SAndroid Build Coastguard Worker */ 161*4f2df630SAndroid Build Coastguard WorkerGPIO(AP_FLASH_SELECT, PIN(0, 2), GPIO_OUT_LOW | GPIO_SLEEP_DIS_HIGH) 162*4f2df630SAndroid Build Coastguard Worker 163*4f2df630SAndroid Build Coastguard Worker/* 164*4f2df630SAndroid Build Coastguard Worker * Pull this low to reset the AP. (We reset the EC with the RBOX.) 165*4f2df630SAndroid Build Coastguard Worker * This is pseudo open drain. 166*4f2df630SAndroid Build Coastguard Worker */ 167*4f2df630SAndroid Build Coastguard WorkerGPIO(SYS_RST_L_OUT, PIN(0, 4), GPIO_ODR_HIGH) 168*4f2df630SAndroid Build Coastguard Worker 169*4f2df630SAndroid Build Coastguard Worker/* 170*4f2df630SAndroid Build Coastguard Worker * Indicate to EC when CCD is enabled. EC can pull this down too, to tell us if 171*4f2df630SAndroid Build Coastguard Worker * it decided instead. 172*4f2df630SAndroid Build Coastguard Worker * This is pseudo open drain. 173*4f2df630SAndroid Build Coastguard Worker */ 174*4f2df630SAndroid Build Coastguard WorkerGPIO(CCD_MODE_L, PIN(0, 5), GPIO_ODR_HIGH | GPIO_PULL_UP) 175*4f2df630SAndroid Build Coastguard Worker 176*4f2df630SAndroid Build Coastguard Worker/* Battery present signal is active low */ 177*4f2df630SAndroid Build Coastguard WorkerGPIO(BATT_PRES_L, PIN(0, 6), GPIO_INPUT) 178*4f2df630SAndroid Build Coastguard Worker 179*4f2df630SAndroid Build Coastguard Worker/* GPIOs used to tristate the SPI bus */ 180*4f2df630SAndroid Build Coastguard WorkerGPIO(SPI_MOSI, PIN(0, 7), GPIO_INPUT | GPIO_PULL_DOWN) 181*4f2df630SAndroid Build Coastguard WorkerGPIO(SPI_CLK, PIN(0, 8), GPIO_INPUT | GPIO_PULL_DOWN) 182*4f2df630SAndroid Build Coastguard WorkerGPIO(SPI_CS_L, PIN(0, 9), GPIO_INPUT) 183*4f2df630SAndroid Build Coastguard Worker 184*4f2df630SAndroid Build Coastguard Worker/* Used during *chip* factory process. */ 185*4f2df630SAndroid Build Coastguard WorkerGPIO(DIOB4, PIN(0, 10), GPIO_INPUT | GPIO_PULL_DOWN) 186*4f2df630SAndroid Build Coastguard Worker 187*4f2df630SAndroid Build Coastguard Worker/* 188*4f2df630SAndroid Build Coastguard Worker * Used to assert lid open or recovery switch with ccd. This signal is 189*4f2df630SAndroid Build Coastguard Worker * guaranteed to have an external pull-up. The pin is connected to the gpio in 190*4f2df630SAndroid Build Coastguard Worker * board.c. If the gpio number changes, it needs to be updated in board.c. 191*4f2df630SAndroid Build Coastguard Worker */ 192*4f2df630SAndroid Build Coastguard WorkerGPIO(CCD_REC_LID_SWITCH, PIN(1, 10), GPIO_ODR_HIGH | GPIO_INPUT) 193*4f2df630SAndroid Build Coastguard Worker 194*4f2df630SAndroid Build Coastguard Worker/* GPIOs used for Cr50 strapping options */ 195*4f2df630SAndroid Build Coastguard WorkerGPIO(STRAP_A0, PIN(1, 12), GPIO_INPUT) 196*4f2df630SAndroid Build Coastguard WorkerGPIO(STRAP_A1, PIN(1, 13), GPIO_INPUT) 197*4f2df630SAndroid Build Coastguard WorkerGPIO(STRAP_B0, PIN(1, 14), GPIO_INPUT) 198*4f2df630SAndroid Build Coastguard WorkerGPIO(STRAP_B1, PIN(1, 15), GPIO_INPUT) 199*4f2df630SAndroid Build Coastguard Worker 200*4f2df630SAndroid Build Coastguard WorkerGPIO(UNWEDGE_I2CP_SCL, PIN(1, 5), GPIO_OUT_HIGH) 201*4f2df630SAndroid Build Coastguard Worker 202*4f2df630SAndroid Build Coastguard Worker/* 203*4f2df630SAndroid Build Coastguard Worker * If you change the names of EN_PP3300_INA_L, I2C_SCL_INA, or I2C_SDA_INA, 204*4f2df630SAndroid Build Coastguard Worker * you also need to update the usage in closed_source_set1.c 205*4f2df630SAndroid Build Coastguard Worker */ 206*4f2df630SAndroid Build Coastguard Worker/* Control the load switch powering the INA 3.3V rail */ 207*4f2df630SAndroid Build Coastguard WorkerGPIO(EN_PP3300_INA_L, PIN(0, 11), GPIO_ODR_HIGH) 208*4f2df630SAndroid Build Coastguard Worker/* GPIOs used for I2CC pins for INAs */ 209*4f2df630SAndroid Build Coastguard WorkerGPIO(I2C_SCL_INA, PIN(0, 12), GPIO_INPUT) 210*4f2df630SAndroid Build Coastguard WorkerGPIO(I2C_SDA_INA, PIN(0, 13), GPIO_INPUT) 211*4f2df630SAndroid Build Coastguard Worker 212*4f2df630SAndroid Build Coastguard Worker/* 213*4f2df630SAndroid Build Coastguard Worker * Use this to poll the state of the I2CP SDA line. Note that this is not 214*4f2df630SAndroid Build Coastguard Worker * necessary if SPI interface is used to communicate with the AP, if needed, 215*4f2df630SAndroid Build Coastguard Worker * this GPIO could be reclaimed in that case. 216*4f2df630SAndroid Build Coastguard Worker * 217*4f2df630SAndroid Build Coastguard Worker * Actual attachment of this GPIO to the SDA line happens in board.c only when 218*4f2df630SAndroid Build Coastguard Worker * I2CP interface is required. Should this GPIO ever change, the code setting 219*4f2df630SAndroid Build Coastguard Worker * up the pinmux in board.c will have to change as well. 220*4f2df630SAndroid Build Coastguard Worker */ 221*4f2df630SAndroid Build Coastguard WorkerGPIO(I2CP_SDA, PIN(0, 14), GPIO_INPUT) 222*4f2df630SAndroid Build Coastguard Worker/* 223*4f2df630SAndroid Build Coastguard Worker * Fake open drain on EC_TX_CR50_RX_OUT. When asserted, the signal can be used 224*4f2df630SAndroid Build Coastguard Worker * to enable UART programming mode on the EC. The signal needs to fake open 225*4f2df630SAndroid Build Coastguard Worker * drain so it can still be used as the cr50 rx signal when it is deasserted. 226*4f2df630SAndroid Build Coastguard Worker * 227*4f2df630SAndroid Build Coastguard Worker * Disable sleep when cr50 sets it to 0. 228*4f2df630SAndroid Build Coastguard Worker */ 229*4f2df630SAndroid Build Coastguard WorkerGPIO(EC_TX_CR50_RX_OUT, PIN(0, 15), GPIO_ODR_HIGH | GPIO_SLEEP_DIS_LOW) 230*4f2df630SAndroid Build Coastguard Worker 231*4f2df630SAndroid Build Coastguard Worker/* 232*4f2df630SAndroid Build Coastguard Worker * ENTERING_RW is not a GPIO in H1, but an input pin to RBOX module. 233*4f2df630SAndroid Build Coastguard Worker * However, we declare it as 'UNIMPLEMENTED' to avoid a compile error in 234*4f2df630SAndroid Build Coastguard Worker * common/system.c. 235*4f2df630SAndroid Build Coastguard Worker */ 236*4f2df630SAndroid Build Coastguard WorkerUNIMPLEMENTED(ENTERING_RW) 237*4f2df630SAndroid Build Coastguard Worker 238*4f2df630SAndroid Build Coastguard Worker/* 239*4f2df630SAndroid Build Coastguard Worker * If we are included by generic GPIO code that doesn't know about the PINMUX 240*4f2df630SAndroid Build Coastguard Worker * macro we need to provide an empty definition so that the invocations don't 241*4f2df630SAndroid Build Coastguard Worker * interfere with other GPIO processing. 242*4f2df630SAndroid Build Coastguard Worker */ 243*4f2df630SAndroid Build Coastguard Worker#ifndef PINMUX 244*4f2df630SAndroid Build Coastguard Worker#define PINMUX(...) 245*4f2df630SAndroid Build Coastguard Worker#endif 246*4f2df630SAndroid Build Coastguard Worker 247*4f2df630SAndroid Build Coastguard Worker/* GPIOs - mark outputs as inputs too, to read back from the driven pad */ 248*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(INT_AP_L), A5, DIO_INPUT) 249*4f2df630SAndroid Build Coastguard Worker 250*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(DIOM4), M4, DIO_INPUT) 251*4f2df630SAndroid Build Coastguard Worker 252*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(EC_FLASH_SELECT), B2, DIO_INPUT) 253*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(MONITOR_I2CP_SDA), A1, DIO_INPUT) 254*4f2df630SAndroid Build Coastguard Worker 255*4f2df630SAndroid Build Coastguard Worker/* 256*4f2df630SAndroid Build Coastguard Worker * Update closed_source_set1.c if pinmux for EN_PP3300_INA_L is changed or 257*4f2df630SAndroid Build Coastguard Worker * removed. 258*4f2df630SAndroid Build Coastguard Worker */ 259*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(EN_PP3300_INA_L), B7, DIO_INPUT) 260*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(SYS_RST_L_OUT), M0, DIO_INPUT) 261*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(CCD_MODE_L), M1, DIO_INPUT) 262*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(BATT_PRES_L), M2, 0) 263*4f2df630SAndroid Build Coastguard Worker/* 264*4f2df630SAndroid Build Coastguard Worker * Update closed_source_set1.c if pinmux for I2C_SCL_INA or I2C_SDA_INA is 265*4f2df630SAndroid Build Coastguard Worker * changed or removed. 266*4f2df630SAndroid Build Coastguard Worker */ 267*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(I2C_SCL_INA), B0, DIO_INPUT) 268*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(I2C_SDA_INA), B1, DIO_INPUT) 269*4f2df630SAndroid Build Coastguard Worker/* UARTs */ 270*4f2df630SAndroid Build Coastguard WorkerPINMUX(FUNC(UART0_TX), A0, DIO_OUTPUT) /* Cr50 console */ 271*4f2df630SAndroid Build Coastguard WorkerPINMUX(FUNC(UART0_RX), A13, DIO_INPUT | DIO_WAKE_LOW) 272*4f2df630SAndroid Build Coastguard Worker/* 273*4f2df630SAndroid Build Coastguard Worker * UART1_TX and UART2_TX are configured in usart.c. They are not set as outputs 274*4f2df630SAndroid Build Coastguard Worker * here in order to avoid interfering with servo. They can be controlled using 275*4f2df630SAndroid Build Coastguard Worker * the 'uart' console command. 276*4f2df630SAndroid Build Coastguard Worker * UART1_TX = DIOA7 AP console 277*4f2df630SAndroid Build Coastguard Worker * UART2_TX = DIOB5 EC console 278*4f2df630SAndroid Build Coastguard Worker */ 279*4f2df630SAndroid Build Coastguard WorkerPINMUX(FUNC(UART1_RX), A3, DIO_INPUT) /* AP console */ 280*4f2df630SAndroid Build Coastguard WorkerPINMUX(FUNC(UART2_RX), B6, DIO_INPUT) /* EC console */ 281*4f2df630SAndroid Build Coastguard Worker/* 282*4f2df630SAndroid Build Coastguard Worker * Monitor UART RX/TX signals to detect state changes on the EC, AP, and servo. 283*4f2df630SAndroid Build Coastguard Worker * 284*4f2df630SAndroid Build Coastguard Worker * The idle state of the RX signals when the AP or EC are powered on is high. 285*4f2df630SAndroid Build Coastguard Worker * When they are not powered, the signals will remain low. When servo is 286*4f2df630SAndroid Build Coastguard Worker * connected it drives the TX signals high. The servo TX signals are wired 287*4f2df630SAndroid Build Coastguard Worker * to cr50's. Because the two device TX signals are directly wired together, 288*4f2df630SAndroid Build Coastguard Worker * driving the cr50 uart TX at the same time as servo is driving those pins may 289*4f2df630SAndroid Build Coastguard Worker * damage both servo and cr50. 290*4f2df630SAndroid Build Coastguard Worker */ 291*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(DETECT_AP_UART), A3, DIO_INPUT) 292*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(DETECT_EC_UART), B6, DIO_INPUT) 293*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(EC_TX_CR50_RX), B6, DIO_INPUT) 294*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(EC_TX_CR50_RX_OUT), B6, DIO_INPUT) 295*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(DETECT_SERVO), B5, DIO_INPUT) 296*4f2df630SAndroid Build Coastguard Worker 297*4f2df630SAndroid Build Coastguard Worker/* 298*4f2df630SAndroid Build Coastguard Worker * I2CP pins are bi-directional and would be configured here as shown. However, 299*4f2df630SAndroid Build Coastguard Worker * A1 is also used as a strapping option GPIO input which is configured 300*4f2df630SAndroid Build Coastguard Worker * above. If a board is configured (via the strapping pins) to support the I2CP 301*4f2df630SAndroid Build Coastguard Worker * driver, then the connection of A1 and A9 to/from the I2C0_SDA and I2C0_SCL 302*4f2df630SAndroid Build Coastguard Worker * lines is done in the function i2cp_set_pinmux() which lives in board.c. 303*4f2df630SAndroid Build Coastguard Worker * 304*4f2df630SAndroid Build Coastguard Worker * PINMUX(FUNC(I2C0_SCL), A9, DIO_INPUT) 305*4f2df630SAndroid Build Coastguard Worker * PINMUX(FUNC(I2C0_SDA), A1, DIO_INPUT) 306*4f2df630SAndroid Build Coastguard Worker*/ 307*4f2df630SAndroid Build Coastguard Worker 308*4f2df630SAndroid Build Coastguard Worker/* 309*4f2df630SAndroid Build Coastguard Worker * Both SPI controller and peripheral buses are wired directly to specific pads 310*4f2df630SAndroid Build Coastguard Worker * 311*4f2df630SAndroid Build Coastguard Worker * If CONFIG_SPP is defined, these pads are used: 312*4f2df630SAndroid Build Coastguard Worker * DIOA2 = SPS_MOSI (input) 313*4f2df630SAndroid Build Coastguard Worker * DIOA6 = SPS_CLK (input) 314*4f2df630SAndroid Build Coastguard Worker * DIOA10 = SPS_MISO (output) 315*4f2df630SAndroid Build Coastguard Worker * DIOA12 = SPS_CS_L (input) 316*4f2df630SAndroid Build Coastguard Worker * The digital inputs are enabled in spp.c 317*4f2df630SAndroid Build Coastguard Worker * 318*4f2df630SAndroid Build Coastguard Worker * If CONFIG_SPI_CONTROLLER is defined, these pads are used: 319*4f2df630SAndroid Build Coastguard Worker * DIOA4 = SPI_MOSI (output) 320*4f2df630SAndroid Build Coastguard Worker * DIOA8 = SPI_CLK (output) 321*4f2df630SAndroid Build Coastguard Worker * DIOA11 = SPI_MISO (input) 322*4f2df630SAndroid Build Coastguard Worker * DIOA14 = SPI_CS_L (output) 323*4f2df630SAndroid Build Coastguard Worker * The pads are only connected to the module outputs when SPI is enabled to 324*4f2df630SAndroid Build Coastguard Worker * avoid interfering with other things on the board. 325*4f2df630SAndroid Build Coastguard Worker * Note: Double-check to be sure these are configured in spi_controller.c 326*4f2df630SAndroid Build Coastguard Worker */ 327*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(SPI_MOSI), A4, DIO_OUTPUT) 328*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(SPI_CLK), A8, DIO_OUTPUT) 329*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(SPI_CS_L), A14, DIO_OUTPUT) 330*4f2df630SAndroid Build Coastguard Worker 331*4f2df630SAndroid Build Coastguard WorkerPINMUX(GPIO(DIOB4), B4, DIO_INPUT) 332*4f2df630SAndroid Build Coastguard Worker 333*4f2df630SAndroid Build Coastguard Worker 334*4f2df630SAndroid Build Coastguard Worker#undef PINMUX 335