diff options
author | Julius Werner <jwerner@chromium.org> | 2018-08-07 14:02:55 -0700 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2018-08-10 04:16:06 +0000 |
commit | 73be9dd82c033a9bce3fc7ff11dab453e9cfde82 (patch) | |
tree | 3515ee34380e7e672ad65d631a2d54c1e45f7f56 | |
parent | af7f9eeddf1e2ffcc17c7a1840aaee76acf9aa8d (diff) | |
download | coreboot-73be9dd82c033a9bce3fc7ff11dab453e9cfde82.tar.xz |
arm64: Remove set_cntfrq() function
CNTFRQ_EL0 is a normal AArch64 architectural register like hundreds of
others that are all accessed through the raw_(read|write)_${register}()
family of functions. There's no reason why this register in particular
should have an inconsistent accessor, so replace all instances of
set_cntfrq() with raw_write_cntfrq_el0() and get rid of it.
Change-Id: I599519ba71c287d4085f9ad28d7349ef0b1eea9b
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/27947
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | src/arch/arm64/armv8/lib/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/arm64/armv8/lib/clock.c | 27 | ||||
-rw-r--r-- | src/arch/arm64/include/arch/clock.h | 23 | ||||
-rw-r--r-- | src/soc/cavium/cn81xx/timer.c | 4 | ||||
-rw-r--r-- | src/soc/nvidia/tegra210/ramstage.c | 4 |
5 files changed, 5 insertions, 55 deletions
diff --git a/src/arch/arm64/armv8/lib/Makefile.inc b/src/arch/arm64/armv8/lib/Makefile.inc index bfc87c38d7..8fc44de5b6 100644 --- a/src/arch/arm64/armv8/lib/Makefile.inc +++ b/src/arch/arm64/armv8/lib/Makefile.inc @@ -15,7 +15,7 @@ ## ################################################################################ -lib_access = pstate.c sysctrl.c cache.c tlb.c clock.c +lib_access = pstate.c sysctrl.c cache.c tlb.c ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV8_64),y) decompressor-y += $(lib_access) diff --git a/src/arch/arm64/armv8/lib/clock.c b/src/arch/arm64/armv8/lib/clock.c deleted file mode 100644 index f15adf404d..0000000000 --- a/src/arch/arm64/armv8/lib/clock.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2014 Google Inc - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; version 2 of - * the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * clock.c: Functions for accessing clock and timer related registers - * Reference: ARM Architecture Reference Manual, ARMv8-A edition - */ - -#include <stdint.h> - -#include <arch/clock.h> - -void set_cntfrq(uint32_t freq) -{ - __asm__ __volatile__("msr cntfrq_el0, %0" :: "r"((uint64_t)freq)); -} diff --git a/src/arch/arm64/include/arch/clock.h b/src/arch/arm64/include/arch/clock.h deleted file mode 100644 index 77d09d8ef0..0000000000 --- a/src/arch/arm64/include/arch/clock.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2014 Google Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -#ifndef __ARM_CLOCK_H_ -#define __ARM_CLOCK_H_ - -#include <types.h> - -void set_cntfrq(uint32_t); - -#endif /* __ARM_CLOCK_H_ */ diff --git a/src/soc/cavium/cn81xx/timer.c b/src/soc/cavium/cn81xx/timer.c index b1c2285b6d..f2a870adee 100644 --- a/src/soc/cavium/cn81xx/timer.c +++ b/src/soc/cavium/cn81xx/timer.c @@ -17,6 +17,7 @@ */ #include <arch/io.h> +#include <arch/lib_helpers.h> #include <console/console.h> #include <inttypes.h> #include <soc/clock.h> @@ -25,7 +26,6 @@ #include <timer.h> #include <soc/addressmap.h> #include <assert.h> -#include <arch/clock.h> /* Global System Timers Unit (GTI) registers */ struct cn81xx_timer { @@ -131,7 +131,7 @@ void init_timer(void) void soc_timer_init(void) { - set_cntfrq(tickrate); + raw_write_cntfrq_el0(tickrate); } /** diff --git a/src/soc/nvidia/tegra210/ramstage.c b/src/soc/nvidia/tegra210/ramstage.c index 18fdded800..86fae67c43 100644 --- a/src/soc/nvidia/tegra210/ramstage.c +++ b/src/soc/nvidia/tegra210/ramstage.c @@ -13,8 +13,8 @@ * GNU General Public License for more details. */ -#include <arch/clock.h> #include <arch/cpu.h> +#include <arch/lib_helpers.h> #include <arch/stages.h> #include <gic.h> #include <soc/addressmap.h> @@ -26,7 +26,7 @@ static void arm64_arch_timer_init(void) { uint32_t freq = clock_get_osc_khz() * 1000; // Set the cntfrq register. - set_cntfrq(freq); + raw_write_cntfrq_el0(freq); } static void mselect_enable_wrap(void) |