coreboot/src/mainboard
Julius Werner ffaebcd378 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_early_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_early_init(0) again from platform code.)

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

Change-Id: Iece1614b7442d4fa9ca981010e1c8497bdea308d
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/234062
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2014-12-10 02:00:17 +00:00
..
a-trend coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
aaeon coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
abit coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
advansus coreboot: Introduce stage-specific architecture for coreboot 2014-05-09 04:41:47 +00:00
advantech coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
amd coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
aopen coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
arima coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
artecgroup coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
asi coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
asrock coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
asus coreboot: Introduce stage-specific architecture for coreboot 2014-05-09 04:41:47 +00:00
avalue coreboot: Introduce stage-specific architecture for coreboot 2014-05-09 04:41:47 +00:00
axus coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
azza coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
bachmann coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
bcom coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
bifferos coreboot: Introduce stage-specific architecture for coreboot 2014-05-09 04:41:47 +00:00
biostar coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
broadcom coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
compaq coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
digitallogic coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
eaglelion coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
ecs coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
emulation cbmem: Unify random on-CBMEM-init tasks under common CBMEM_INIT_HOOK() API 2014-12-04 04:01:59 +00:00
getac coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
gigabyte coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
gizmosphere vboot: Introduce kconfig variable for VBNV backing storage 2014-08-25 04:52:51 +00:00
google timer: Reestablish init_timer(), consolidate timer initialization calls 2014-12-10 02:00:17 +00:00
hp coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
ibase coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
ibm coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
iei coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
intel cbmem: Unify random on-CBMEM-init tasks under common CBMEM_INIT_HOOK() API 2014-12-04 04:01:59 +00:00
iwave coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
iwill coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
jetway coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
kontron coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
lanner coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
lenovo coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
lippert coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
mitac coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
msi coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
nec coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
newisys coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
nokia coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
nvidia coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
pcengines coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
rca coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
roda coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
samsung cbmem: Unify random on-CBMEM-init tasks under common CBMEM_INIT_HOOK() API 2014-12-04 04:01:59 +00:00
siemens coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
soyo coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
sunw coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
supermicro coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
technexion coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
technologic coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
televideo coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
thomson coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
traverse coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
tyan coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
via coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
winent coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
wyse coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
Kconfig smbios: Allow custom Type3 entry 2014-06-13 22:43:24 +00:00