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:
Julius Werner 2018-08-07 14:02:55 -07:00
parent af7f9eeddf
commit 73be9dd82c
5 changed files with 5 additions and 55 deletions

View File

@ -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)

View File

@ -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));
}

View File

@ -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_ */

View File

@ -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);
}
/**

View File

@ -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)