12dabac13SMasahiro Yamada /* 22dabac13SMasahiro Yamada * Copyright (c) 2011 The Chromium OS Authors. 32dabac13SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 42dabac13SMasahiro Yamada */ 52dabac13SMasahiro Yamada 62dabac13SMasahiro Yamada #include <common.h> 72dabac13SMasahiro Yamada #include <cros_ec.h> 82dabac13SMasahiro Yamada #include <dm.h> 92dabac13SMasahiro Yamada #include <os.h> 10909bd6d9SJoe Hershberger #include <asm/test.h> 112dabac13SMasahiro Yamada #include <asm/u-boot-sandbox.h> 122dabac13SMasahiro Yamada 132dabac13SMasahiro Yamada /* 142dabac13SMasahiro Yamada * Pointer to initial global data area 152dabac13SMasahiro Yamada * 162dabac13SMasahiro Yamada * Here we initialize it. 172dabac13SMasahiro Yamada */ 182dabac13SMasahiro Yamada gd_t *gd; 192dabac13SMasahiro Yamada 202dabac13SMasahiro Yamada /* Add a simple GPIO device */ 212dabac13SMasahiro Yamada U_BOOT_DEVICE(gpio_sandbox) = { 222dabac13SMasahiro Yamada .name = "gpio_sandbox", 232dabac13SMasahiro Yamada }; 242dabac13SMasahiro Yamada flush_cache(unsigned long start,unsigned long size)252dabac13SMasahiro Yamadavoid flush_cache(unsigned long start, unsigned long size) 262dabac13SMasahiro Yamada { 272dabac13SMasahiro Yamada } 282dabac13SMasahiro Yamada 29*9961a0b6SThomas Chou #ifndef CONFIG_TIMER 30909bd6d9SJoe Hershberger /* system timer offset in ms */ 31909bd6d9SJoe Hershberger static unsigned long sandbox_timer_offset; 32909bd6d9SJoe Hershberger sandbox_timer_add_offset(unsigned long offset)33909bd6d9SJoe Hershbergervoid sandbox_timer_add_offset(unsigned long offset) 34909bd6d9SJoe Hershberger { 35909bd6d9SJoe Hershberger sandbox_timer_offset += offset; 36909bd6d9SJoe Hershberger } 37909bd6d9SJoe Hershberger timer_read_counter(void)382dabac13SMasahiro Yamadaunsigned long timer_read_counter(void) 392dabac13SMasahiro Yamada { 40909bd6d9SJoe Hershberger return os_get_nsec() / 1000 + sandbox_timer_offset * 1000; 412dabac13SMasahiro Yamada } 42*9961a0b6SThomas Chou #endif 432dabac13SMasahiro Yamada dram_init(void)442dabac13SMasahiro Yamadaint dram_init(void) 452dabac13SMasahiro Yamada { 462dabac13SMasahiro Yamada gd->ram_size = CONFIG_SYS_SDRAM_SIZE; 472dabac13SMasahiro Yamada return 0; 482dabac13SMasahiro Yamada } 492dabac13SMasahiro Yamada 502dabac13SMasahiro Yamada #ifdef CONFIG_BOARD_LATE_INIT board_late_init(void)512dabac13SMasahiro Yamadaint board_late_init(void) 522dabac13SMasahiro Yamada { 532dabac13SMasahiro Yamada if (cros_ec_get_error()) { 542dabac13SMasahiro Yamada /* Force console on */ 552dabac13SMasahiro Yamada gd->flags &= ~GD_FLG_SILENT; 562dabac13SMasahiro Yamada 572dabac13SMasahiro Yamada printf("cros-ec communications failure %d\n", 582dabac13SMasahiro Yamada cros_ec_get_error()); 592dabac13SMasahiro Yamada puts("\nPlease reset with Power+Refresh\n\n"); 602dabac13SMasahiro Yamada panic("Cannot init cros-ec device"); 612dabac13SMasahiro Yamada return -1; 622dabac13SMasahiro Yamada } 632dabac13SMasahiro Yamada return 0; 642dabac13SMasahiro Yamada } 652dabac13SMasahiro Yamada #endif 66