From b9b457173ea7f194c13a2d025496c3c49cf05792 Mon Sep 17 00:00:00 2001 From: Todd Broch Date: Mon, 15 Dec 2014 21:28:39 -0800 Subject: 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 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 Tested-by: Todd Broch Reviewed-by: Vincent Palatin Commit-Queue: Todd Broch --- board/hoho/board.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'board/hoho/board.c') 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); -- cgit v1.2.1