
Signed-off-by: Abhilash Kesavan a.kesavan@samsung.com Signed-off-by: Akshay Saraswat akshay.s@samsung.com Signed-off-by: Alim Akhtar alim.akhtar@samsung.com Signed-off-by: Bernie Thompson bhthompson@chromium.org Signed-off-by: Chander Kashyap chander.kashyap@linaro.org Signed-off-by: Che-Liang Chiou clchiou@chromium.org Signed-off-by: Doug Anderson dianders@chromium.org Signed-off-by: Gabe Black gabeblack@chromium.org Signed-off-by: Hatim Ali hatim.rv@samsung.com Signed-off-by: Prathyush K prathyush.k@samsung.com Signed-off-by: Sean Paul seanpaul@chromium.org Signed-off-by: Simon Glass sjg@chromium.org Signed-off-by: Taylor Hutt thutt@chromium.org Signed-off-by: Terry Lambert tlambert@chromium.org Signed-off-by: Tom Wai-Hong Tam waihong@chromium.org Signed-off-by: Vic Yang victoryang@chromium.org Signed-off-by: Vincent Palatin vpalatin@chromium.org Signed-off-by: Hung-ying Tyan tyanh@chromium.org --- board/samsung/smdk5250/smdk5250.c | 44 +++++++++++++++++++++++++++++++++++++++ include/configs/smdk5250.h | 14 +++++++++++++ 2 files changed, 58 insertions(+)
diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c index 7a5f132..eec4f53 100644 --- a/board/samsung/smdk5250/smdk5250.c +++ b/board/samsung/smdk5250/smdk5250.c @@ -21,6 +21,7 @@ */
#include <common.h> +#include <cros_ec.h> #include <fdtdec.h> #include <asm/io.h> #include <i2c.h> @@ -38,6 +39,13 @@
DECLARE_GLOBAL_DATA_PTR;
+struct local_info { + struct cros_ec_dev *cros_ec_dev; /* Pointer to cros_ec device */ + int cros_ec_err; /* Error for cros_ec, 0 if ok */ +}; + +static struct local_info local; + #ifdef CONFIG_USB_EHCI_EXYNOS int board_usb_vbus_init(void) { @@ -54,12 +62,30 @@ int board_usb_vbus_init(void) } #endif
+struct cros_ec_dev *board_get_cros_ec_dev(void) +{ + return local.cros_ec_dev; +} + +static int board_init_cros_ec_devices(const void *blob) +{ + local.cros_ec_err = cros_ec_init(blob, &local.cros_ec_dev); + if (local.cros_ec_err) + return -1; /* Will report in board_late_init() */ + + return 0; +} + int board_init(void) { gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); #ifdef CONFIG_EXYNOS_SPI spi_init(); #endif + + if (board_init_cros_ec_devices(gd->fdt_blob)) + return -1; + #ifdef CONFIG_USB_EHCI_EXYNOS board_usb_vbus_init(); #endif @@ -376,3 +402,21 @@ void init_panel_info(vidinfo_t *vid) exynos_set_dp_platform_data(&dp_platform_data); } #endif + +#ifdef CONFIG_BOARD_LATE_INIT +int board_late_init(void) +{ + stdio_print_current_devices(); + + if (local.cros_ec_err) { + /* Force console on */ + gd->flags &= ~GD_FLG_SILENT; + + printf("cros-ec communications failure %d\n", local.cros_ec_err); + puts("\nPlease reset with Power+Refresh\n\n"); + panic("Cannot init cros-ec device"); + return -1; + } + return 0; +} +#endif diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h index 81f83a8..4c61620 100644 --- a/include/configs/smdk5250.h +++ b/include/configs/smdk5250.h @@ -30,4 +30,18 @@ #undef CONFIG_DEFAULT_DEVICE_TREE #define CONFIG_DEFAULT_DEVICE_TREE exynos5250-smdk5250
+/* Enable keyboard */ +#define CONFIG_CROS_EC /* CROS_EC protocol */ +#define CONFIG_CROS_EC_SPI /* Support CROS_EC over SPI */ +#define CONFIG_CROS_EC_I2C /* Support CROS_EC over I2C */ +#define CONFIG_CROS_EC_KEYB /* CROS_EC keyboard input */ +#define CONFIG_CMD_CROS_EC +#define CONFIG_KEYBOARD + +#undef EXYNOS_DEVICE_SETTINGS +#define EXYNOS_DEVICE_SETTINGS "stdin=serial,cros-ec-keyb\0" \ + "stdout=serial,lcd\0" \ + "stderr=serial,lcd\0" + + #endif /* __CONFIG_SMDK_H */