summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/honeybuns/baseboard.c10
-rw-r--r--baseboard/honeybuns/baseboard.h13
-rw-r--r--board/gingerbread/gpio.inc22
-rw-r--r--board/quiche/gpio.inc23
4 files changed, 68 insertions, 0 deletions
diff --git a/baseboard/honeybuns/baseboard.c b/baseboard/honeybuns/baseboard.c
index e423d5fa16..bb0a1c832d 100644
--- a/baseboard/honeybuns/baseboard.c
+++ b/baseboard/honeybuns/baseboard.c
@@ -7,6 +7,7 @@
#include "console.h"
#include "gpio.h"
#include "hooks.h"
+#include "i2c.h"
#include "timer.h"
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
@@ -29,6 +30,15 @@ static void board_power_sequence(void)
}
}
+/******************************************************************************/
+/* I2C port map configuration */
+const struct i2c_port_t i2c_ports[] = {
+ {"usbc", I2C_PORT_USBC, 400, GPIO_EC_I2C1_SCL, GPIO_EC_I2C1_SDA},
+ {"usb_mst", I2C_PORT_MST, 400, GPIO_EC_I2C2_SCL, GPIO_EC_I2C2_SDA},
+ {"eeprom", I2C_PORT_EEPROM, 400, GPIO_EC_I2C3_SCL, GPIO_EC_I2C3_SDA},
+};
+const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
+
static void baseboard_init(void)
{
/* Turn on power rails */
diff --git a/baseboard/honeybuns/baseboard.h b/baseboard/honeybuns/baseboard.h
index 392539489c..0703ea0b33 100644
--- a/baseboard/honeybuns/baseboard.h
+++ b/baseboard/honeybuns/baseboard.h
@@ -34,11 +34,24 @@
#define CONFIG_UART_TX_DMA_CH STM32_DMAC_USART3_TX
#define CONFIG_UART_TX_DMA_PH DMAMUX_REQ_USART3_TX
+/* CBI Configs */
+#define I2C_ADDR_EEPROM_FLAGS 0x50
+#define CONFIG_CROS_BOARD_INFO
+#define CONFIG_BOARD_VERSION_CBI
+#define CONFIG_CMD_CBI
+
+
/* USB Type C and USB PD defines */
/* BC 1.2 */
/* I2C Bus Configuration */
+#define CONFIG_I2C
+#define CONFIG_I2C_MASTER
+#define I2C_PORT_USBC 0
+#define I2C_PORT_MST 1
+#define I2C_PORT_EEPROM 2
+
/*
* Macros for GPIO signals used in common code that don't match the
diff --git a/board/gingerbread/gpio.inc b/board/gingerbread/gpio.inc
index 90064bfdff..052124289c 100644
--- a/board/gingerbread/gpio.inc
+++ b/board/gingerbread/gpio.inc
@@ -44,8 +44,30 @@ GPIO(EC_HUB1_RESET_L, PIN(E, 13), GPIO_ODR_LOW)
GPIO(EC_HUB2_RESET_L, PIN(E, 14), GPIO_ODR_LOW)
/* Misc Signals */
+
+/*
+ * I2C SCL/SDA pins. These will normally be under control of the peripheral from
+ * alt fucntion setting below. But if a port gets wedged, the unwedge code uses
+ * these signals as regular GPIOs.
+ */
+GPIO(EC_I2C1_SCL, PIN(A, 15), GPIO_ODR_HIGH)
+GPIO(EC_I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
+GPIO(EC_I2C2_SDA, PIN(A, 8), GPIO_ODR_HIGH)
+GPIO(EC_I2C2_SCL, PIN(A, 9), GPIO_ODR_HIGH)
+GPIO(EC_I2C3_SCL, PIN(C, 8), GPIO_ODR_HIGH)
+GPIO(EC_I2C3_SDA, PIN(C, 9), GPIO_ODR_HIGH)
+
UNIMPLEMENTED(EC_ENTERING_RW)
UNIMPLEMENTED(EC_WP_L)
/* UART */
+/* I2C Ports
+ * I2C1: SDA/SCL -> PB7/PA15
+ * I2C2: SDA/SCL -> PA8/PA9
+ * I2C3: SDA/SCL -> PC8/PC9
+ */
+ALTERNATE(PIN_MASK(B, 0x0080), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(A, 0X8000), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(A, 0x0300), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(C, 0x0300), 8, MODULE_I2C, GPIO_OPEN_DRAIN)
diff --git a/board/quiche/gpio.inc b/board/quiche/gpio.inc
index 26b12adfa2..e6264c741e 100644
--- a/board/quiche/gpio.inc
+++ b/board/quiche/gpio.inc
@@ -45,8 +45,31 @@ GPIO(EC_HUB3_RESET_L, PIN(C, 10), GPIO_ODR_LOW)
GPIO(EC_FLASH_WP_ODL, PIN(A, 3), GPIO_ODR_HIGH)
GPIO(EC_WP_L, PIN(E, 11), GPIO_INT_BOTH)
+/*
+ * I2C SCL/SDA pins. These will normally be under control of the peripheral from
+ * alt fucntion setting below. But if a port gets wedged, the unwedge code uses
+ * these signals as regular GPIOs.
+ */
+GPIO(EC_I2C1_SCL, PIN(A, 15), GPIO_ODR_HIGH)
+GPIO(EC_I2C1_SDA, PIN(B, 7), GPIO_ODR_HIGH)
+GPIO(EC_I2C2_SDA, PIN(A, 8), GPIO_ODR_HIGH)
+GPIO(EC_I2C2_SCL, PIN(A, 9), GPIO_ODR_HIGH)
+GPIO(EC_I2C3_SCL, PIN(C, 8), GPIO_ODR_HIGH)
+GPIO(EC_I2C3_SDA, PIN(C, 9), GPIO_ODR_HIGH)
+
/* Unimplemented signals since we are not an EC */
UNIMPLEMENTED(ENTERING_RW)
/* USART3_TX/RX GPIOC 10-11*/
ALTERNATE(PIN_MASK(C, 0x0C00), 7, MODULE_UART, GPIO_PULL_UP)
+/* I2C Ports
+ * I2C1: SDA/SCL -> PB7/PA15
+ * I2C2: SDA/SCL -> PA8/PA9
+ * I2C3: SDA/SCL -> PC8/PC9
+ */
+ALTERNATE(PIN_MASK(B, 0x0080), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(A, 0X8000), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(A, 0x0300), 4, MODULE_I2C, GPIO_OPEN_DRAIN)
+ALTERNATE(PIN_MASK(C, 0x0300), 8, MODULE_I2C, GPIO_OPEN_DRAIN)
+/* GPIOA4-7: SPI Signals */
+ALTERNATE(PIN_MASK(A, 0x00F0), 5, MODULE_SPI, 0)