提交 eb28fdac 编写于 作者: H Hung-ying Tyan 提交者: Tom Rini

cros: exynos: enable cros-ec for smdk5250

This patch initiates cros-ec in board_init() to enable it for smdk5250.

This patch depends on the patch in the MMC series that brings in exynos5-dt.c.
Refer to http://patchwork.ozlabs.org/patch/240084.
Signed-off-by: NSimon Glass <sjg@chromium.org>
Signed-off-by: NVincent Palatin <vpalatin@chromium.org>
Signed-off-by: NHung-ying Tyan <tyanh@chromium.org>
Acked-by: NSimon Glass <sjg@chromium.org>
上级 60744a11
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
*/ */
#include <common.h> #include <common.h>
#include <cros_ec.h>
#include <fdtdec.h> #include <fdtdec.h>
#include <asm/io.h> #include <asm/io.h>
#include <errno.h> #include <errno.h>
...@@ -69,6 +70,13 @@ static void boot_temp_check(void) ...@@ -69,6 +70,13 @@ static void boot_temp_check(void)
} }
#endif #endif
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 #ifdef CONFIG_USB_EHCI_EXYNOS
int board_usb_vbus_init(void) int board_usb_vbus_init(void)
{ {
...@@ -97,6 +105,20 @@ static void board_enable_audio_codec(void) ...@@ -97,6 +105,20 @@ static void board_enable_audio_codec(void)
} }
#endif #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) int board_init(void)
{ {
gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
...@@ -112,6 +134,10 @@ int board_init(void) ...@@ -112,6 +134,10 @@ int board_init(void)
#ifdef CONFIG_EXYNOS_SPI #ifdef CONFIG_EXYNOS_SPI
spi_init(); spi_init();
#endif #endif
if (board_init_cros_ec_devices(gd->fdt_blob))
return -1;
#ifdef CONFIG_USB_EHCI_EXYNOS #ifdef CONFIG_USB_EHCI_EXYNOS
board_usb_vbus_init(); board_usb_vbus_init();
#endif #endif
...@@ -421,3 +447,22 @@ void exynos_set_dp_phy(unsigned int onoff) ...@@ -421,3 +447,22 @@ void exynos_set_dp_phy(unsigned int onoff)
set_dp_phy_ctrl(onoff); set_dp_phy_ctrl(onoff);
} }
#endif #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
...@@ -82,11 +82,19 @@ ...@@ -82,11 +82,19 @@
#define CONFIG_BAUDRATE 115200 #define CONFIG_BAUDRATE 115200
#define EXYNOS5_DEFAULT_UART_OFFSET 0x010000 #define EXYNOS5_DEFAULT_UART_OFFSET 0x010000
/* 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
/* Console configuration */ /* Console configuration */
#define CONFIG_CONSOLE_MUX #define CONFIG_CONSOLE_MUX
#define CONFIG_SYS_CONSOLE_IS_IN_ENV #define CONFIG_SYS_CONSOLE_IS_IN_ENV
#define EXYNOS_DEVICE_SETTINGS \ #define EXYNOS_DEVICE_SETTINGS \
"stdin=serial\0" \ "stdin=serial,cros-ec-keyb\0" \
"stdout=serial,lcd\0" \ "stdout=serial,lcd\0" \
"stderr=serial,lcd\0" "stderr=serial,lcd\0"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册