blob: 80eaa6334cb56cccbeadaee9e0a3bf68c9a07c40 [file] [log] [blame]
Simon Glassf1a6c762011-10-07 13:53:38 +00001/*
2 * Copyright (c) 2011 The Chromium OS Authors.
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02003 * SPDX-License-Identifier: GPL-2.0+
Simon Glassf1a6c762011-10-07 13:53:38 +00004 */
5
6#include <common.h>
Simon Glassfd173402014-02-27 13:26:13 -07007#include <cros_ec.h>
Simon Glassb4d70702014-02-26 15:59:25 -07008#include <dm.h>
Matthias Weisser0d3dd142011-11-29 12:16:40 +01009#include <os.h>
Joe Hershberger74961352015-04-21 13:57:18 -050010#include <asm/test.h>
Simon Glassb9ddbf42014-02-27 13:26:19 -070011#include <asm/u-boot-sandbox.h>
Matthias Weisser0d3dd142011-11-29 12:16:40 +010012
Simon Glassf1a6c762011-10-07 13:53:38 +000013/*
14 * Pointer to initial global data area
15 *
16 * Here we initialize it.
17 */
18gd_t *gd;
19
Simon Glassb4d70702014-02-26 15:59:25 -070020/* Add a simple GPIO device */
21U_BOOT_DEVICE(gpio_sandbox) = {
22 .name = "gpio_sandbox",
23};
24
Simon Glassf1a6c762011-10-07 13:53:38 +000025void flush_cache(unsigned long start, unsigned long size)
26{
27}
28
Joe Hershberger74961352015-04-21 13:57:18 -050029/* system timer offset in ms */
30static unsigned long sandbox_timer_offset;
31
32void sandbox_timer_add_offset(unsigned long offset)
33{
34 sandbox_timer_offset += offset;
35}
36
Rob Herring86bd4e82013-11-08 08:40:44 -060037unsigned long timer_read_counter(void)
Simon Glassf1a6c762011-10-07 13:53:38 +000038{
Joe Hershberger74961352015-04-21 13:57:18 -050039 return os_get_nsec() / 1000 + sandbox_timer_offset * 1000;
Simon Glassf1a6c762011-10-07 13:53:38 +000040}
41
Simon Glassf1a6c762011-10-07 13:53:38 +000042int dram_init(void)
43{
Simon Glass62cf9122013-04-26 02:53:43 +000044 gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
Simon Glassf1a6c762011-10-07 13:53:38 +000045 return 0;
46}
Simon Glassfd173402014-02-27 13:26:13 -070047
Simon Glassb9ddbf42014-02-27 13:26:19 -070048#ifdef CONFIG_BOARD_EARLY_INIT_F
49int board_early_init_f(void)
50{
51#ifdef CONFIG_VIDEO_SANDBOX_SDL
52 int ret;
53
54 ret = sandbox_lcd_sdl_early_init();
55 if (ret) {
56 puts("Could not init sandbox LCD emulation\n");
57 return ret;
58 }
59#endif
60
61 return 0;
62}
63#endif
64
Simon Glassfd173402014-02-27 13:26:13 -070065#ifdef CONFIG_BOARD_LATE_INIT
66int board_late_init(void)
67{
68 if (cros_ec_get_error()) {
69 /* Force console on */
70 gd->flags &= ~GD_FLG_SILENT;
71
72 printf("cros-ec communications failure %d\n",
73 cros_ec_get_error());
74 puts("\nPlease reset with Power+Refresh\n\n");
75 panic("Cannot init cros-ec device");
76 return -1;
77 }
78 return 0;
79}
80#endif