diff options
| -rw-r--r-- | board/samsung/smdk5250/exynos5-dt.c | 45 | ||||
| -rw-r--r-- | include/configs/exynos5250-dt.h | 10 | 
2 files changed, 54 insertions, 1 deletions
| diff --git a/board/samsung/smdk5250/exynos5-dt.c b/board/samsung/smdk5250/exynos5-dt.c index 813150586..aacf43eaa 100644 --- a/board/samsung/smdk5250/exynos5-dt.c +++ b/board/samsung/smdk5250/exynos5-dt.c @@ -21,6 +21,7 @@   */  #include <common.h> +#include <cros_ec.h>  #include <fdtdec.h>  #include <asm/io.h>  #include <errno.h> @@ -69,6 +70,13 @@ static void boot_temp_check(void)  }  #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  int board_usb_vbus_init(void)  { @@ -97,6 +105,20 @@ static void  board_enable_audio_codec(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); @@ -112,6 +134,10 @@ int board_init(void)  #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 @@ -421,3 +447,22 @@ void exynos_set_dp_phy(unsigned int onoff)  	set_dp_phy_ctrl(onoff);  }  #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/exynos5250-dt.h b/include/configs/exynos5250-dt.h index 163243572..c104a3704 100644 --- a/include/configs/exynos5250-dt.h +++ b/include/configs/exynos5250-dt.h @@ -82,11 +82,19 @@  #define CONFIG_BAUDRATE			115200  #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 */  #define CONFIG_CONSOLE_MUX  #define CONFIG_SYS_CONSOLE_IS_IN_ENV  #define EXYNOS_DEVICE_SETTINGS \ -		"stdin=serial\0" \ +		"stdin=serial,cros-ec-keyb\0" \  		"stdout=serial,lcd\0" \  		"stderr=serial,lcd\0" |