diff options
author | Eli Hsu <eli.hsu@ite.com.tw> | 2016-04-14 16:33:33 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-14 21:08:00 -0700 |
commit | b72c096f20a0520ff794cc871073677bdb0cdec7 (patch) | |
tree | 1c383686906a5daa1f45093310d0647d39fc3409 /board | |
parent | a1b00c1797d3695c1a55dff2cc161ce2fbc8ada5 (diff) | |
download | chrome-ec-b72c096f20a0520ff794cc871073677bdb0cdec7.tar.gz |
chip: it83xx: Add i2c channel d/e/f function
[board]
1. Add i2c channel d/e/f setting.
2. Add i2c channel d/e/f pin definition.
[chip]
3. change i2c port number.
4. Add i2c channel d/e/f function.
5. Add i2c channel d/e/f interrupt.
6. Add i2c channel d/e/f registers.
Signed-off-by: Eli Hsu <eli.hsu@ite.com.tw>
BRANCH=none
BUG=none
TEST=Test by console command "i2cscan","i2cxfer" and "battery"
Change-Id: I928f333ec129924795c3b594ad6a2bfdd0b3d220
Reviewed-on: https://chromium-review.googlesource.com/336560
Commit-Ready: Eli Hsu <eli.hsu@ite.com.tw>
Tested-by: Eli Hsu <eli.hsu@ite.com.tw>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/it8380dev/board.c | 21 | ||||
-rw-r--r-- | board/it8380dev/board.h | 6 | ||||
-rw-r--r-- | board/it8380dev/gpio.inc | 9 |
3 files changed, 31 insertions, 5 deletions
diff --git a/board/it8380dev/board.c b/board/it8380dev/board.c index d7bf4388ab..b63f6b9dcb 100644 --- a/board/it8380dev/board.c +++ b/board/it8380dev/board.c @@ -213,13 +213,28 @@ struct keyboard_scan_config keyscan_config = { * In order to set frequency independently for each channels, * We use timing registers 09h~0Bh, and the supported frequency will be: * 50KHz, 100KHz, 400KHz, or 1MHz. + * I2C channels (D, E and F) can be set different frequency on different ports. + * The I2C(D/E/F) frequency depend on the frequency of SMBus Module and + * the individual prescale register. + * The frequency of SMBus module is 24MHz on default. + * The allowed range of I2C(D/E/F) frequency is as following setting. + * SMBus Module Freq = PLL_CLOCK / ((IT83XX_ECPM_SCDCR2 & 0x0F) + 1) + * (SMBus Module Freq / 510) <= I2C Freq <= (SMBus Module Freq / 8) + * Channel D has multi-function and can be used as UART interface. + * Channel F is reserved for EC debug. */ + /* I2C ports */ const struct i2c_port_t i2c_ports[] = { - {"battery", 2, 100, GPIO_I2C_C_SCL, GPIO_I2C_C_SDA}, - {"evb-1", 0, 100, GPIO_I2C_A_SCL, GPIO_I2C_A_SDA}, - {"evb-2", 1, 100, GPIO_I2C_B_SCL, GPIO_I2C_B_SDA}, + {"battery", IT83XX_I2C_CH_C, 100, GPIO_I2C_C_SCL, GPIO_I2C_C_SDA}, + {"evb-1", IT83XX_I2C_CH_A, 100, GPIO_I2C_A_SCL, GPIO_I2C_A_SDA}, + {"evb-2", IT83XX_I2C_CH_B, 100, GPIO_I2C_B_SCL, GPIO_I2C_B_SDA}, +#ifndef CONFIG_UART_HOST + {"opt-3", IT83XX_I2C_CH_D, 100, GPIO_I2C_D_SCL, GPIO_I2C_D_SDA}, +#endif + {"opt-4", IT83XX_I2C_CH_E, 100, GPIO_I2C_E_SCL, GPIO_I2C_E_SDA}, }; + const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); /* SPI devices */ diff --git a/board/it8380dev/board.h b/board/it8380dev/board.h index 2655c8ec74..b2cf093968 100644 --- a/board/it8380dev/board.h +++ b/board/it8380dev/board.h @@ -39,8 +39,10 @@ #ifndef __ASSEMBLER__ -#define I2C_PORT_CHARGER 2 -#define I2C_PORT_BATTERY 2 +#include "registers.h" + +#define I2C_PORT_CHARGER IT83XX_I2C_CH_C +#define I2C_PORT_BATTERY IT83XX_I2C_CH_C #include "gpio_signal.h" diff --git a/board/it8380dev/gpio.inc b/board/it8380dev/gpio.inc index a76527e0c3..51c9167b92 100644 --- a/board/it8380dev/gpio.inc +++ b/board/it8380dev/gpio.inc @@ -36,9 +36,15 @@ GPIO(I2C_C_SCL, PIN(F, 6), GPIO_INPUT) #endif GPIO(I2C_C_SDA, PIN(F, 7), GPIO_INPUT) +GPIO(I2C_E_SCL, PIN(E, 0), GPIO_INPUT) +GPIO(I2C_E_SDA, PIN(E, 7), GPIO_INPUT) + #ifdef CONFIG_UART_HOST GPIO(UART2_SIN1, PIN(H, 1), GPIO_INPUT) GPIO(UART2_SOUT1, PIN(H, 2), GPIO_INPUT) +#else +GPIO(I2C_D_SCL, PIN(H, 1), GPIO_INPUT) +GPIO(I2C_D_SDA, PIN(H, 2), GPIO_INPUT) #endif /* KSO/KSI pins can be used as GPIO input. */ @@ -52,6 +58,8 @@ UNIMPLEMENTED(ENTERING_RW) ALTERNATE(PIN_MASK(B, 0x03), 1, MODULE_UART, GPIO_PULL_UP) /* UART1 */ #ifdef CONFIG_UART_HOST ALTERNATE(PIN_MASK(H, 0x06), 1, MODULE_UART, 0) /* UART2 */ +#else +ALTERNATE(PIN_MASK(H, 0x06), 1, MODULE_I2C, 0) /* I2C D SCL/SDA H1/H2 */ #endif ALTERNATE(PIN_MASK(A, 0x40), 3, MODULE_SPI, 0) /* SSCK of SPI */ ALTERNATE(PIN_MASK(C, 0x28), 3, MODULE_SPI, 0) /* SMOSI/SMISO of SPI */ @@ -67,3 +75,4 @@ ALTERNATE(PIN_MASK(F, 0x80), 1, MODULE_I2C, 0) /* I2C C SDA */ ALTERNATE(PIN_MASK(C, 0x06), 1, MODULE_I2C, 0) /* I2C B SCL/SDA */ ALTERNATE(PIN_MASK(F, 0xC0), 1, MODULE_I2C, 0) /* I2C C SCL/SDA */ #endif +ALTERNATE(PIN_MASK(E, 0x81), 1, MODULE_I2C, 0) /* I2C E SCL/SDA E0/E7 */ |