coreboot/src/lib
Julius Werner 44cf870cb0 timer: Reestablish init_timer(), consolidate timer initialization calls
We have known for a while that the old x86 model of calling init_timer()
in ramstage doesn't make sense on other archs (and is questionable in
general), and finally removed it with CL:219719. However, now timer
initialization is completely buried in the platform code, and it's hard
to ensure it is done in time to set up timestamps. For three out of four
non-x86 SoC vendors we have brought up for now, the timers need some
kind of SoC-specific initialization.

This patch reintroduces init_timer() as a weak function that can be
overridden by platform code. The call in ramstage is restricted to x86
(and should probably eventually be removed from there as well), and
other archs should call them at the earliest reasonable point in their
bootblock. (Only changing arm for now since arm64 and mips bootblocks
are still in very early state and should sync up to features in arm once
their requirements are better understood.) This allows us to move
timestamp_init() into arch code, so that we can rely on timestamps
being available at a well-defined point and initialize our base value as
early as possible. (Platforms who know that their timers start at zero
can still safely call timestamp_init(0) again from platform code.)

BRANCH=None
BUG=None
TEST=Booted Pinky, Blaze and Storm, compiled Daisy and Pit.

Change-Id: I1b064ba3831c0c5b7965b1d88a6f4a590789c891
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: ffaebcd378
Original-Change-Id: Iece1614b7442d4fa9ca981010e1c8497bdea308d
Original-Signed-off-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/234062
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/9606
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2015-04-14 09:03:28 +02:00
..
loaders New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
bootblock.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
bootmem.c coreboot: introduce notion of bootmem for memory map at boot 2014-03-03 21:47:27 +01:00
bootmode.c ChromeOS: Remove oprom_is_loaded 2014-05-01 15:39:26 +02:00
cbfs.c cbfs: Enforce media->map() result checking, improve error messages 2015-04-07 23:02:18 +02:00
cbfs_core.c CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbfs_core.h CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbfs_spi.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
cbmem_common.c coreboot: fix munged license text 2015-03-09 02:32:19 +01:00
cbmem_console.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
clog2.c src/lib/clog2.c: Fix style and clarity, remove some cruft 2014-06-20 08:06:51 +02:00
compute_ip_checksum.c lib: Fix spelling 2013-07-10 20:17:51 +02:00
coreboot_table.c ramoops: Add support for passing ramoops region through cb tables. 2015-04-10 16:48:30 +02:00
debug.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
delay.c
dynamic_cbmem.c hardwaremain: explicitly call cbmem_initialize() early 2015-04-07 23:02:32 +02:00
edid.c drivers/xgi/z9s: Port Linux framebuffer initialization to coreboot 2015-02-05 17:37:05 +01:00
fallback_boot.c lib: Add Kconfig option to enable/disable auto fallback control 2015-03-17 04:22:23 +01:00
gcc.c lib: Trivial - drop trailing blank lines at EOF 2014-07-08 13:52:15 +02:00
gcov-glue.c bootstate: use structure pointers for scheduling callbacks 2015-03-18 16:41:43 +01:00
gcov-io.c
gcov-io.h lib: Fix spelling 2013-07-10 20:17:51 +02:00
gcov-iov.h
generic_dump_spd.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
generic_sdram.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
gpio.c gpio: add a function to read GPIO array as base-2 value 2015-04-10 11:59:30 +02:00
halt.c Introduce halt() 2014-11-30 12:20:05 +01:00
hardwaremain.c timer: Reestablish init_timer(), consolidate timer initialization calls 2015-04-14 09:03:28 +02:00
hexdump.c lib/hexdump: Use size_t for length parameter of hexdump32() 2014-05-05 08:59:05 +02:00
jpeg.c
jpeg.h
libgcov.c Fix whitespace leaked into tree 2013-09-17 21:04:35 +02:00
lzma.c Add and consistently use wrapper macro for romstage static variables 2015-03-09 22:42:28 +01:00
lzmadecode.c RISCV: get RISCV to build again 2014-12-04 19:17:51 +01:00
lzmadecode.h
Makefile.inc gpio: compile gpio.c at all stages 2015-04-10 12:00:25 +02:00
malloc.c lib/malloc.c: Remove pre-proc guard around include 2014-11-11 12:33:01 +01:00
memchr.c
memcmp.c
memcpy.c
memmove.c
memrange.c coreboot memrange: Two changes for zero size or empty memrange 2015-03-04 19:55:19 +01:00
memset.c
primitive_memtest.c Primitive memory test 2015-01-09 16:50:55 +01:00
prog_ops.c program loading: add prog_run() function 2015-04-03 14:52:47 +02:00
ramstage.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
ramstage_cache.c program loading: introduce struct prog 2015-04-03 14:51:51 +02:00
ramtest.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
reg_script.c baytrail: Change all SoC headers to <soc/headername.h> system 2015-04-07 18:23:21 +02:00
rmodule.c rmodule: remove cbmem_entry usage 2015-04-07 23:03:45 +02:00
rmodule.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
romstage.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
selfboot.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
stack.c stack check: cosmetics 2014-09-12 22:03:53 +02:00
thread.c Possible thread stack implementation. 2014-08-07 23:55:15 +02:00
timer.c timer: Reestablish init_timer(), consolidate timer initialization calls 2015-04-14 09:03:28 +02:00
timer_queue.c coreboot: add timer queue implementation 2013-05-01 07:19:12 +02:00
timestamp.c timestamps: Switch from tsc_t to uint64_t 2015-01-05 22:21:49 +01:00
tlcl.c vboot: Include vb2_api.h, instead of lower-level vboot2 header files 2015-04-10 16:49:15 +02:00
tlcl_internal.h vboot2: read secdata and nvdata 2015-03-23 19:51:47 +01:00
tlcl_structures.h vboot2: copy tlcl from vboot_reference as a preparation for vboot2 integration 2015-01-27 01:43:57 +01:00
tpm_error_messages.h TPM: Fix whitespace 2015-02-06 00:25:59 +01:00
trace.c
version.c build.h: remove variable for the builduser, -hostname and -domain 2015-03-09 17:53:16 +01:00