diff options
author | Todd Broch <tbroch@chromium.org> | 2014-12-15 21:28:39 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-12-23 22:10:56 +0000 |
commit | b9b457173ea7f194c13a2d025496c3c49cf05792 (patch) | |
tree | f840953f110167bb9b591887b8c115f065dfcdc8 /board/hoho/board.c | |
parent | dc1a89a70aa27d90f0538a87f1cf20b284563397 (diff) | |
download | chrome-ec-b9b457173ea7f194c13a2d025496c3c49cf05792.tar.gz |
pd: hoho: mcdp28x0 serial driver.
Add initial serial driver for mdcp2850 dp->hdmi converter. Driver
implements 'get information' (cmd:0x40) to provide rudimentary method
to test mcdp for functionality and assert GPIO if successful.
Future CLs may expose more serial functionality if necessary.
Signed-off-by: Todd Broch <tbroch@chromium.org>
BRANCH=samus
BUG=chrome-os-partner:34122
TEST=manual, when compiles with #define MCDP_DEBUG see successful
serial communication and result from get info.
buf:[00]0x04 [01]0x40 [02]0x00 [03]0xbc
...
buf:[00]0x0f [01]0x40 [02]0x00 [03]0x0e
[04]0x00 [05]0x01 [06]0x01 [07]0x00
[08]0x00 [09]0x00 [10]0x00 [11]0x00
[12]0x00 [13]0x00
family:000e chipid:0001 irom:1.0.0 fw:0.0.0
Change-Id: I35f9d9b0437633d1bd6a6c9fa14413bedb12f5c2
Reviewed-on: https://chromium-review.googlesource.com/235930
Trybot-Ready: Todd Broch <tbroch@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Commit-Queue: Todd Broch <tbroch@chromium.org>
Diffstat (limited to 'board/hoho/board.c')
-rw-r--r-- | board/hoho/board.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/board/hoho/board.c b/board/hoho/board.c index 406bdebd77..324f79b2ef 100644 --- a/board/hoho/board.c +++ b/board/hoho/board.c @@ -10,6 +10,7 @@ #include "ec_version.h" #include "gpio.h" #include "hooks.h" +#include "mcdp28x0.h" #include "registers.h" #include "task.h" #include "usb.h" @@ -131,6 +132,21 @@ static void board_init_spi2(void) } #endif /* CONFIG_SPI_FLASH */ +static void factory_validation_deferred(void) +{ + struct mcdp_info info; + + mcdp_enable(); + + /* test mcdp via serial to validate function */ + if (!mcdp_get_info(&info) && (MCDP_FAMILY(info.family) == 0xe) && + (MCDP_CHIPID(info.chipid) == 0x1)) + gpio_set_level(GPIO_MCDP_READY, 1); + + mcdp_disable(); +} +DECLARE_DEFERRED(factory_validation_deferred); + /* Initialize board. */ static void board_init(void) { @@ -144,8 +160,8 @@ static void board_init(void) gpio_enable_interrupt(GPIO_DP_HPD); gpio_set_level(GPIO_STM_READY, 1); /* factory test only */ - /* TODO(crosbug.com/p/34122): Add real check for MCDP function */ - gpio_set_level(GPIO_MCDP_READY, 1); /* factory test only */ + /* Delay needed to allow HDMI MCU to boot. */ + hook_call_deferred(factory_validation_deferred, 200*MSEC); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); |