xref: /openbmc/u-boot/board/sandbox/sandbox.c (revision e77e65df)
1 /*
2  * Copyright (c) 2011 The Chromium OS Authors.
3  * SPDX-License-Identifier:	GPL-2.0+
4  */
5 
6 #include <common.h>
7 #include <cros_ec.h>
8 #include <dm.h>
9 #include <os.h>
10 #include <asm/u-boot-sandbox.h>
11 
12 /*
13  * Pointer to initial global data area
14  *
15  * Here we initialize it.
16  */
17 gd_t *gd;
18 
19 /* Add a simple GPIO device */
20 U_BOOT_DEVICE(gpio_sandbox) = {
21 	.name = "gpio_sandbox",
22 };
23 
24 void flush_cache(unsigned long start, unsigned long size)
25 {
26 }
27 
28 unsigned long timer_read_counter(void)
29 {
30 	return os_get_nsec() / 1000;
31 }
32 
33 int dram_init(void)
34 {
35 	gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
36 	return 0;
37 }
38 
39 #ifdef CONFIG_BOARD_EARLY_INIT_F
40 int 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 
56 int 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
69 int 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
84