blob: e4d4e021bcd9ff0fb26cc6121a4c103ace7f1c5b [file] [log] [blame]
Simon Glass43bd1942011-10-07 13:53:38 +00001/*
2 * Copyright (c) 2011 The Chromium OS Authors.
Wolfgang Denk1a459662013-07-08 09:37:19 +02003 * SPDX-License-Identifier: GPL-2.0+
Simon Glass43bd1942011-10-07 13:53:38 +00004 */
5
6#include <common.h>
Simon Glass86bf6012014-02-27 13:26:13 -07007#include <cros_ec.h>
Simon Glasse2d8a712014-02-26 15:59:25 -07008#include <dm.h>
Matthias Weisserd99a6872011-11-29 12:16:40 +01009#include <os.h>
Simon Glass7d95f2a2014-02-27 13:26:19 -070010#include <asm/u-boot-sandbox.h>
Matthias Weisserd99a6872011-11-29 12:16:40 +010011
Simon Glass43bd1942011-10-07 13:53:38 +000012/*
13 * Pointer to initial global data area
14 *
15 * Here we initialize it.
16 */
17gd_t *gd;
18
Simon Glasse2d8a712014-02-26 15:59:25 -070019/* Add a simple GPIO device */
20U_BOOT_DEVICE(gpio_sandbox) = {
21 .name = "gpio_sandbox",
22};
23
Simon Glass43bd1942011-10-07 13:53:38 +000024void flush_cache(unsigned long start, unsigned long size)
25{
26}
27
Rob Herring28c860b2013-11-08 08:40:44 -060028unsigned long timer_read_counter(void)
Mike Frysinger6994ccf2012-02-21 00:21:17 -050029{
Rob Herring28c860b2013-11-08 08:40:44 -060030 return os_get_nsec() / 1000;
Simon Glass43bd1942011-10-07 13:53:38 +000031}
32
Simon Glass43bd1942011-10-07 13:53:38 +000033int dram_init(void)
34{
Simon Glassa733b062013-04-26 02:53:43 +000035 gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
Simon Glass43bd1942011-10-07 13:53:38 +000036 return 0;
37}
Simon Glass86bf6012014-02-27 13:26:13 -070038
Simon Glass7d95f2a2014-02-27 13:26:19 -070039#ifdef CONFIG_BOARD_EARLY_INIT_F
40int board_early_init_f(void)
41{
42#ifdef CONFIG_VIDEO_SANDBOX_SDL
43 int ret;
44
45 ret = sandbox_lcd_sdl_early_init();
46 if (ret) {
47 puts("Could not init sandbox LCD emulation\n");
48 return ret;
49 }
50#endif
51
52 return 0;
53}
54#endif
55
Simon Glass86bf6012014-02-27 13:26:13 -070056int arch_early_init_r(void)
57{
58#ifdef CONFIG_CROS_EC
59 if (cros_ec_board_init()) {
60 printf("%s: Failed to init EC\n", __func__);
61 return 0;
62 }
63#endif
64
65 return 0;
66}
67
68#ifdef CONFIG_BOARD_LATE_INIT
69int board_late_init(void)
70{
71 if (cros_ec_get_error()) {
72 /* Force console on */
73 gd->flags &= ~GD_FLG_SILENT;
74
75 printf("cros-ec communications failure %d\n",
76 cros_ec_get_error());
77 puts("\nPlease reset with Power+Refresh\n\n");
78 panic("Cannot init cros-ec device");
79 return -1;
80 }
81 return 0;
82}
83#endif