diff options
-rw-r--r-- | baseboard/honeybuns/baseboard.c | 10 | ||||
-rw-r--r-- | baseboard/honeybuns/baseboard.h | 13 | ||||
-rw-r--r-- | board/gingerbread/gpio.inc | 22 | ||||
-rw-r--r-- | board/quiche/gpio.inc | 23 |
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) |