mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 22:51:37 +00:00
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: Simon Glass <sjg@chromium.org> Signed-off-by: Vincent Palatin <vpalatin@chromium.org> Signed-off-by: Hung-ying Tyan <tyanh@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
60744a1187
commit
eb28fdac79
2 changed files with 54 additions and 1 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
#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)
|
||||||
}
|
}
|
||||||
#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)
|
||||||
#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)
|
||||||
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 @@
|
||||||
#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"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue