summaryrefslogtreecommitdiff
path: root/board/hyperdebug/gpio.inc
diff options
context:
space:
mode:
Diffstat (limited to 'board/hyperdebug/gpio.inc')
-rw-r--r--board/hyperdebug/gpio.inc186
1 files changed, 186 insertions, 0 deletions
diff --git a/board/hyperdebug/gpio.inc b/board/hyperdebug/gpio.inc
new file mode 100644
index 0000000000..5dc0cebc1b
--- /dev/null
+++ b/board/hyperdebug/gpio.inc
@@ -0,0 +1,186 @@
+/* -*- mode:c -*-
+ *
+ * Copyright 2022 The ChromiumOS Authors
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/*
+ * List of all GPIO pins available for Host computer to manipulate.
+ * The are named based on their location on the two 70-pin DIL
+ * connectors on either side of the HyperDebug board. Pins with
+ * special functions are commented out, and declared with relevant
+ * symbolic name further below.
+ */
+
+GPIO(CN7_1, PIN(C, 6), GPIO_INPUT)
+/*GPIO(CN7_2, PIN(B, 8), GPIO_INPUT) I2C1 */
+GPIO(CN7_3, PIN(D, 11), GPIO_INPUT)
+/*GPIO(CN7_4, PIN(B, 9), GPIO_INPUT) I2C1 */
+GPIO(CN7_5, PIN(B, 13), GPIO_INPUT)
+/* CN7_6 is VREFP */
+GPIO(CN7_7, PIN(D, 12), GPIO_INPUT)
+/* CN7_8 is GND */
+/*GPIO(CN7_9, PIN(A, 4), GPIO_INPUT) CC1 */
+/*GPIO(CN7_10, PIN(A, 5), GPIO_INPUT) CC2 */
+GPIO(CN7_11, PIN(B, 4), GPIO_INPUT)
+GPIO(CN7_12, PIN(A, 6), GPIO_INPUT)
+/*GPIO(CN7_13, PIN(B, 5), GPIO_INPUT) Nucleo USB-C */
+GPIO(CN7_14, PIN(A, 7), GPIO_INPUT)
+GPIO(CN7_15, PIN(B, 3), GPIO_INPUT)
+GPIO(CN7_16, PIN(D, 14), GPIO_INPUT)
+/*GPIO(CN7_17, PIN(A, 4), GPIO_INPUT)*/
+GPIO(CN7_18, PIN(D, 15), GPIO_INPUT)
+/*GPIO(CN7_19, PIN(B, 4), GPIO_INPUT)*/
+GPIO(CN7_20, PIN(F, 12), GPIO_INPUT)
+
+/* CN8_1 is NC */
+GPIO(CN8_2, PIN(C, 8), GPIO_INPUT)
+/* CN8_3 is IOREF */
+GPIO(CN8_4, PIN(C, 9), GPIO_INPUT)
+/* CN8_5 is NRST */
+/*GPIO(CN8_6, PIN(C, 10), GPIO_INPUT) UART4 */
+/* CN8_7 is 3V3 */
+/*GPIO(CN8_8, PIN(C, 11), GPIO_INPUT) UART4 */
+/* CN8_9 is 5V */
+/*GPIO(CN8_10, PIN(C, 12), GPIO_INPUT) UART5 */
+/* CN8_11 is GND */
+/*GPIO(CN8_12, PIN(D, 2), GPIO_INPUT) UART5 */
+/* CN8_13 is GND */
+GPIO(CN8_14, PIN(F, 3), GPIO_INPUT)
+/* CN8_15 is VIN */
+GPIO(CN8_16, PIN(F, 5), GPIO_INPUT)
+
+GPIO(CN9_1, PIN(A, 3), GPIO_INPUT)
+GPIO(CN9_2, PIN(D, 7), GPIO_INPUT)
+GPIO(CN9_3, PIN(A, 2), GPIO_INPUT)
+/*GPIO(CN9_4, PIN(D, 6), GPIO_INPUT) UART2 */
+GPIO(CN9_5, PIN(C, 3), GPIO_INPUT)
+/*GPIO(CN9_6, PIN(D, 5), GPIO_INPUT) UART2 */
+GPIO(CN9_7, PIN(B, 0), GPIO_INPUT)
+/*GPIO(CN9_8, PIN(D, 4), GPIO_INPUT) SPI2 */
+/*GPIO(CN9_9, PIN(C, 1), GPIO_INPUT) I2C3 */
+/*GPIO(CN9_10, PIN(D, 3), GPIO_INPUT) SPI2 */
+/*GPIO(CN9_11, PIN(C, 0), GPIO_INPUT) I2C3 */
+/* CN9_12 is GND */
+GPIO(CN9_13, PIN(B, 2), GPIO_INPUT)
+GPIO(CN9_14, PIN(E, 2), GPIO_INPUT)
+GPIO(CN9_15, PIN(B, 6), GPIO_INPUT)
+GPIO(CN9_16, PIN(E, 4), GPIO_INPUT)
+GPIO(CN9_17, PIN(F, 2), GPIO_INPUT)
+GPIO(CN9_18, PIN(E, 5), GPIO_INPUT)
+/*GPIO(CN9_19, PIN(F, 1), GPIO_INPUT) I2C2 */
+GPIO(CN9_20, PIN(E, 6), GPIO_INPUT)
+/*GPIO(CN9_21, PIN(F, 0), GPIO_INPUT) I2C2 */
+GPIO(CN9_22, PIN(E, 3), GPIO_INPUT)
+/* CN9_23 is GND */
+GPIO(CN9_24, PIN(F, 8), GPIO_INPUT)
+/*GPIO(CN9_25, PIN(D, 0), GPIO_INPUT) SPI2 */
+GPIO(CN9_26, PIN(F, 7), GPIO_INPUT)
+/*GPIO(CN9_27, PIN(D, 1), GPIO_INPUT) SPI2 */
+GPIO(CN9_28, PIN(F, 9), GPIO_INPUT)
+GPIO(CN9_29, PIN(G, 0), GPIO_INPUT)
+GPIO(CN9_30, PIN(G, 1), GPIO_INPUT)
+
+/* CN10_1 is AVDD */
+GPIO(CN10_2, PIN(F, 13), GPIO_INPUT)
+/* CN10_3 is AGND */
+GPIO(CN10_4, PIN(E, 9), GPIO_INPUT)
+/* CN10_5 is GND */
+/*GPIO(CN10_6, PIN(E, 11), GPIO_INPUT) QSPI */
+GPIO(CN10_7, PIN(B, 1), GPIO_INPUT)
+GPIO(CN10_8, PIN(F, 14), GPIO_INPUT)
+/*GPIO(CN10_9, PIN(C, 2), GPIO_INPUT) Nucleo USB VBUS sense */
+/*GPIO(CN10_10, PIN(E, 13), GPIO_INPUT) QSPI */
+GPIO(CN10_11, PIN(A, 1), GPIO_INPUT)
+GPIO(CN10_12, PIN(F, 15), GPIO_INPUT)
+/*GPIO(CN10_13, PIN(A, 2), GPIO_INPUT)*/
+/*GPIO(CN10_14, PIN(D, 8), GPIO_INPUT) UART3 */
+GPIO(CN10_15, PIN(B, 10), GPIO_INPUT)
+/*GPIO(CN10_16, PIN(D, 9), GPIO_INPUT) UART3 */
+/* CN10_17 is GND */
+GPIO(CN10_18, PIN(E, 8), GPIO_INPUT)
+/*GPIO(CN10_19, PIN(E, 15), GPIO_INPUT) QSPI */
+GPIO(CN10_20, PIN(E, 7), GPIO_INPUT)
+/*GPIO(CN10_21, PIN(B, 0), GPIO_INPUT)*/
+/* CN10_22 is GND */
+/*GPIO(CN10_23, PIN(E, 12), GPIO_INPUT) QSPI */
+/*GPIO(CN10_24, PIN(E, 10), GPIO_INPUT) QSPI */
+/*GPIO(CN10_25, PIN(E, 14), GPIO_INPUT) QSPI */
+/*GPIO(CN10_26, PIN(E, 12), GPIO_INPUT) QSPI */
+/* CN10_27 is GND */
+/*GPIO(CN10_28, PIN(E, 14), GPIO_INPUT) QSPI */
+GPIO(CN10_29, PIN(A, 0), GPIO_INPUT)
+/*GPIO(CN10_30, PIN(E, 15), GPIO_INPUT) QSPI */
+GPIO(CN10_31, PIN(A, 8), GPIO_INPUT)
+/*GPIO(CN10_32, PIN(B, 10), GPIO_INPUT)*/
+GPIO(CN10_33, PIN(E, 0), GPIO_INPUT)
+GPIO(CN10_34, PIN(B, 11), GPIO_INPUT)
+
+
+/* QSPI controller */
+GPIO(QSPI_DEV_CLK, PIN(E, 10), GPIO_INPUT)
+GPIO(QSPI_DEV_CS_L, PIN(E, 11), GPIO_INPUT)
+GPIO(QSPI_DEV_D0, PIN(E, 12), GPIO_INPUT)
+GPIO(QSPI_DEV_D1, PIN(E, 13), GPIO_INPUT)
+GPIO(QSPI_DEV_D2, PIN(E, 14), GPIO_INPUT)
+GPIO(QSPI_DEV_D3, PIN(E, 15), GPIO_INPUT)
+
+/* I2C pins should be configured as inputs until I2C module is */
+/* initialized. This will avoid driving the lines unintentionally.*/
+GPIO(TPM_I2C1_HOST_SCL, PIN(B, 8), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+GPIO(TPM_I2C1_HOST_SDA, PIN(B, 9), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+GPIO(INA_I2C2_DEV_SCL, PIN(F, 1), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+GPIO(INA_I2C2_DEV_SDA, PIN(F, 0), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+GPIO(AUX_I2C3_DEV_SCL, PIN(C, 0), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+GPIO(AUX_I2C3_DEV_SDA, PIN(C, 1), GPIO_OUTPUT | GPIO_OPEN_DRAIN)
+
+/* These pins are used for USART and are set to alternate mode below */
+GPIO(USART2_OT_TX, PIN(D, 5), GPIO_INPUT)
+GPIO(USART2_OT_RX, PIN(D, 6), GPIO_INPUT)
+GPIO(USART4_AP_TX, PIN(C, 10), GPIO_INPUT)
+GPIO(USART4_AP_RX, PIN(C, 11), GPIO_INPUT)
+GPIO(USART5_FPMCU_TX, PIN(C, 12), GPIO_INPUT)
+GPIO(USART5_FPMCU_RX, PIN(D, 2), GPIO_INPUT)
+GPIO(USART3_EC_TX, PIN(D, 8), GPIO_INPUT)
+GPIO(USART3_EC_RX, PIN(D, 9), GPIO_INPUT)
+GPIO(LPUART1_HYPER_RX, PIN(G, 7), GPIO_INPUT)
+GPIO(LPUART1_HYPER_TX, PIN(G, 8), GPIO_INPUT)
+
+/* Additional SPI controller, only available on CN11/CN12 */
+GPIO(SPI2_CS, PIN(D, 0), GPIO_OUT_HIGH)
+GPIO(SPI2_SCK, PIN(D, 1), GPIO_ALTERNATE)
+GPIO(SPI2_CIDO, PIN(D, 3), GPIO_ALTERNATE)
+GPIO(SPI2_CODI, PIN(D, 4), GPIO_ALTERNATE)
+
+/* USB pins */
+GPIO(USB_FS_DM, PIN(A, 11), GPIO_ALTERNATE)
+GPIO(USB_FS_DP, PIN(A, 12), GPIO_ALTERNATE)
+GPIO(CC1, PIN(A, 4), GPIO_ANALOG)
+GPIO(CC2, PIN(A, 5), GPIO_ANALOG)
+
+/* Signals for hardware on the Nucleo board itself */
+GPIO(NUCLEO_LED1, PIN(C, 7), GPIO_OUT_HIGH) /* Green */
+GPIO(NUCLEO_LED2, PIN(B, 7), GPIO_OUT_LOW) /* Blue */
+GPIO(NUCLEO_LED3, PIN(A, 9), GPIO_OUT_LOW) /* Red */
+
+/* Unimplemented signals since we are not an EC */
+UNIMPLEMENTED(ENTERING_RW)
+UNIMPLEMENTED(WP_L)
+
+
+ALTERNATE(PIN_MASK(A, 0x1800), 10, MODULE_USB, 0) /* USB: PA11/12 */
+
+ALTERNATE(PIN_MASK(D, 0x0060), 7, MODULE_UART, 0) /* USART2: PD5/PD6 - OT UART */
+ALTERNATE(PIN_MASK(C, 0x0C00), 8, MODULE_UART, 0) /* USART4: PC10/PC11 - AP UART */
+ALTERNATE(PIN_MASK(D, 0x0300), 7, MODULE_UART, 0) /* USART3: PD8/PD9 - EC UART */
+ALTERNATE(PIN_MASK(C, 0x1000), 8, MODULE_UART, 0) /* USART5: PC12 - FP MCU UART */
+ALTERNATE(PIN_MASK(D, 0x0004), 8, MODULE_UART, 0) /* USART5: PD2 - FP MCU UART */
+ALTERNATE(PIN_MASK(G, 0x0180), 8, MODULE_UART, 0) /* LPUART1: PG7/PG8 - HyperDebug console */
+
+ALTERNATE(PIN_MASK(F, 0x0003), 4, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C2: PF0/PF1 */
+ALTERNATE(PIN_MASK(B, 0x0300), 4, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C1: PB8/PB9 */
+ALTERNATE(PIN_MASK(C, 0x0003), 4, MODULE_I2C, GPIO_OPEN_DRAIN) /* I2C3: PC0/PC1 */
+/*ALTERNATE(PIN_MASK(E, 0xFC00), 10, MODULE_SPI_FLASH, 0) / * QSPI: PE10-15 */
+/*ALTERNATE(PIN_MASK(D, 0x0001), 5, MODULE_SPI, 0) / * SPI2: PD0 CS */
+ALTERNATE(PIN_MASK(D, 0x001A), 5, MODULE_SPI, 0) /* SPI2: PD1/PD3/PD4 SCK/CIDO/DOCI */