xref: /aosp_15_r20/external/gsc-utils/board/cr50/gpio.inc (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
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