diff options
author | Nick Sanders <nsanders@chromium.org> | 2016-08-11 16:28:03 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-08-21 04:11:10 -0700 |
commit | cc68693cda0d520229971b73c116d434c48bdd65 (patch) | |
tree | 29978c73b634ae6ebd505a361c96de9c697db083 /board/stm32f446e-eval | |
parent | 153c2cf49c6c225508e09a942eb90611c9d3cef9 (diff) | |
download | chrome-ec-cc68693cda0d520229971b73c116d434c48bdd65.tar.gz |
sweetberry: add i2c support
stm32f446 has two types of i2c blocks, the traditional
stm i2c, and "fast mode plus" i2c, which need different drivers.
This commit adds both, muxed in i2c-stm32f4, as the ec
codebase doesn't really support multiple types of the same interface.
BUG=chromium:608039
TEST=i2c works on all 4 channels
BRANCH=None
Change-Id: I6a9ac632f44142bd809ffee5782a192ae47af1f0
Signed-off-by: Nick Sanders <nsanders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/368358
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/stm32f446e-eval')
-rw-r--r-- | board/stm32f446e-eval/board.c | 12 | ||||
-rw-r--r-- | board/stm32f446e-eval/board.h | 5 | ||||
-rw-r--r-- | board/stm32f446e-eval/gpio.inc | 2 |
3 files changed, 18 insertions, 1 deletions
diff --git a/board/stm32f446e-eval/board.c b/board/stm32f446e-eval/board.c index 0b8691278c..e7af5dad6c 100644 --- a/board/stm32f446e-eval/board.c +++ b/board/stm32f446e-eval/board.c @@ -9,9 +9,21 @@ #include "gpio.h" #include "gpio_list.h" #include "hooks.h" +#include "i2c.h" #include "registers.h" #include "stm32-dma.h" + +/* I2C ports */ +const struct i2c_port_t i2c_ports[] = { + {"i2c1", I2C_PORT_0, 100, + GPIO_I2C1_SCL, GPIO_I2C1_SDA}, + {"fmpi2c4", FMPI2C_PORT_3, 100, + GPIO_FMPI2C_SCL, GPIO_FMPI2C_SDA}, +}; +const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); + + #define GPIO_SET_HS(bank, number) \ (STM32_GPIO_OSPEEDR(GPIO_##bank) |= (0x3 << (number * 2))) diff --git a/board/stm32f446e-eval/board.h b/board/stm32f446e-eval/board.h index 24735a2dc7..f70ddd5bb5 100644 --- a/board/stm32f446e-eval/board.h +++ b/board/stm32f446e-eval/board.h @@ -27,6 +27,11 @@ #define CONFIG_UART_TX_REQ_CH 4 #define CONFIG_UART_RX_REQ_CH 4 +#define CONFIG_I2C +#define CONFIG_I2C_MASTER +#define I2C_PORT_0 0 +#define FMPI2C_PORT_3 3 + /* This is not actually an EC so disable some features. */ #undef CONFIG_WATCHDOG_HELP #undef CONFIG_LID_SWITCH diff --git a/board/stm32f446e-eval/gpio.inc b/board/stm32f446e-eval/gpio.inc index 3d1753d43b..afc8d1e486 100644 --- a/board/stm32f446e-eval/gpio.inc +++ b/board/stm32f446e-eval/gpio.inc @@ -52,7 +52,7 @@ ALTERNATE(PIN_MASK(A, 0x0100), 0, MODULE_MCO, 0) /* MCO1: PA8 */ ALTERNATE(PIN_MASK(C, 0x0200), 0, MODULE_MCO, 0) /* MCO2: PC9 */ ALTERNATE(PIN_MASK(B, 0x0300), 4, MODULE_I2C, GPIO_ODR_HIGH | GPIO_PULL_UP) /* I2C1: PB8-9 */ -ALTERNATE(PIN_MASK(C, 0x00c0), 4, MODULE_I2C, GPIO_ODR_HIGH | GPIO_PULL_UP) /* FMPI2C MASTER:PC6/7 */ +ALTERNATE(PIN_MASK(D, 0x3000), 4, MODULE_I2C, GPIO_ODR_HIGH | GPIO_PULL_UP) /* FMPI2C MASTER:PD12/13 */ ALTERNATE(PIN_MASK(A, 0x1800), 10, MODULE_USB, 0) /* DWC USB OTG: PA11/12 */ |