libpayload: Replace majority of timer drivers with a generic one

Hardware / Coreboot - Julius Werner [chromium.org] - 17 October 2016 15:43 UTC

Currently every non-x86 platform supported by libpayload needs to provide its own timer driver. Most of the ones we have accumulated there look almost identical: For the frequency, return a preset constant. For the value, read a 32-bit register, possibly read another 32-bit register and shift+OR it with the previous one, then return that.

Let's replace this with a single .c file that can easily handle all of those cases. Menuconfig convenience can still be maintained by providing several presets that select different defaults for the driver's configuration options (register address(es) and frequency).

Removes an "enabled" check from Samsung MCT driver since coreboot always unconditionally enables that timer anyway.

CQ-DEPEND=CL:344809 BRANCH=None BUG=None TEST=Booted Oak and Veyron, observed how dev-mode delay was still ~30s

Change-Id: I61cb7d2ffd4902aa841c57f9afa9cd991f770acd

4fda9bd libpayload: Replace majority of timer drivers with a generic one
payloads/libpayload/drivers/Makefile.inc | 11 +--
payloads/libpayload/drivers/timer/Kconfig | 97 +++++++++------------
payloads/libpayload/drivers/timer/bg4cd.c | 26 ------
payloads/libpayload/drivers/timer/cygnus.c | 52 -----------
payloads/libpayload/drivers/timer/generic.c | 60 +++++++++++++
payloads/libpayload/drivers/timer/ipq40xx.c | 52 -----------
payloads/libpayload/drivers/timer/ipq806x.c | 58 -------------
payloads/libpayload/drivers/timer/mct.c | 115 -------------------------
payloads/libpayload/drivers/timer/mtk_timer.c | 30 -------
payloads/libpayload/drivers/timer/rktimer.c | 42 ---------
payloads/libpayload/drivers/timer/tegra_1us.c | 41 ---------
11 files changed, 105 insertions(+), 479 deletions(-)

Upstream: review.coreboot.org


  • Share