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>
This commit is contained in:
parent
af7f9eeddf
commit
73be9dd82c
|
@ -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)
|
ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV8_64),y)
|
||||||
decompressor-y += $(lib_access)
|
decompressor-y += $(lib_access)
|
||||||
|
|
|
@ -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));
|
|
||||||
}
|
|
|
@ -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_ */
|
|
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
|
#include <arch/lib_helpers.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <soc/clock.h>
|
#include <soc/clock.h>
|
||||||
|
@ -25,7 +26,6 @@
|
||||||
#include <timer.h>
|
#include <timer.h>
|
||||||
#include <soc/addressmap.h>
|
#include <soc/addressmap.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <arch/clock.h>
|
|
||||||
|
|
||||||
/* Global System Timers Unit (GTI) registers */
|
/* Global System Timers Unit (GTI) registers */
|
||||||
struct cn81xx_timer {
|
struct cn81xx_timer {
|
||||||
|
@ -131,7 +131,7 @@ void init_timer(void)
|
||||||
|
|
||||||
void soc_timer_init(void)
|
void soc_timer_init(void)
|
||||||
{
|
{
|
||||||
set_cntfrq(tickrate);
|
raw_write_cntfrq_el0(tickrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <arch/clock.h>
|
|
||||||
#include <arch/cpu.h>
|
#include <arch/cpu.h>
|
||||||
|
#include <arch/lib_helpers.h>
|
||||||
#include <arch/stages.h>
|
#include <arch/stages.h>
|
||||||
#include <gic.h>
|
#include <gic.h>
|
||||||
#include <soc/addressmap.h>
|
#include <soc/addressmap.h>
|
||||||
|
@ -26,7 +26,7 @@ static void arm64_arch_timer_init(void)
|
||||||
{
|
{
|
||||||
uint32_t freq = clock_get_osc_khz() * 1000;
|
uint32_t freq = clock_get_osc_khz() * 1000;
|
||||||
// Set the cntfrq register.
|
// Set the cntfrq register.
|
||||||
set_cntfrq(freq);
|
raw_write_cntfrq_el0(freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mselect_enable_wrap(void)
|
static void mselect_enable_wrap(void)
|
||||||
|
|
Loading…
Reference in New Issue