diff options
author | Alexandru M Stan <amstan@chromium.org> | 2019-08-27 17:15:56 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-24 02:25:54 +0000 |
commit | 56662a29b010870338c4338c32a3f6afd9912cb7 (patch) | |
tree | 24c7921a8008a0da499146349c308254b6094682 /common/main.c | |
parent | 5f683e3de7f605302ec8af791044cff23b0920ee (diff) | |
download | chrome-ec-56662a29b010870338c4338c32a3f6afd9912cb7.tar.gz |
main: Initialize I2C pretty early
Some devices (like the keyboard, CBI) need I2C access pretty early.
Until now I2C would get initialized pretty late in a hook, which was far
too late for some stuff.
As a result from this change, CONFIG_I2C_MASTER now implies the i2c_init()
function will be called at board boot. Some chips (cr50, host tests)
needed a stub i2c_init in order to compile cleanly.
BUG=b/138384267
TEST=EFS doesn't happen significantly later than it used to
TEST=Recovery keys now work with I2C keyboard on jacuzzi
TEST=make buildall
TEST=Sanity check i2c behavior (booting, "i2scan", "battery") on a variety
of ECs:
* ampton (ite EC, x86 AP)
* bobba (npcx EC, x86 AP)
* jacuzzi (stm32f0 EC, ARM AP)
* cheza (npcx EC, ARM AP)
BRANCH=master
Change-Id: Ifa830e8e509ff16b36b4dcc86617869b1cb86ac3
Signed-off-by: Alexandru M Stan <amstan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1772490
Reviewed-by: Jett Rink <jettrink@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Diffstat (limited to 'common/main.c')
-rw-r--r-- | common/main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/common/main.c b/common/main.c index d7a3935b2f..5bbe6f8a55 100644 --- a/common/main.c +++ b/common/main.c @@ -17,6 +17,7 @@ #include "flash.h" #include "gpio.h" #include "hooks.h" +#include "i2c.h" #include "keyboard_scan.h" #include "link_defs.h" #include "lpc.h" @@ -180,6 +181,13 @@ test_mockable __keep int main(void) #ifdef CONFIG_HOSTCMD_X86 lpc_init_mask(); #endif + if (IS_ENABLED(CONFIG_I2C_MASTER)) { + /* + * Some devices (like the I2C keyboards, CBI) need I2C access + * pretty early, so let's initialize the controller now. + */ + i2c_init(); + } #ifdef HAS_TASK_KEYSCAN keyboard_scan_init(); #endif |