![Thomas Gleixner](/assets/img/avatar_default.png)
Based on 1 normalized pattern(s): this program is free software you can distribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is distributed in the hope 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 you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 32 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Steve Winslow <swinslow@gmail.com> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190528170026.531157061@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Carsten Langgaard, carstenl@mips.com
|
|
* Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
|
|
*
|
|
* Setting up the clock on the MIPS boards.
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/kernel_stat.h>
|
|
#include <linux/ptrace.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/mc146818rtc.h>
|
|
#include <linux/irq.h>
|
|
#include <linux/timex.h>
|
|
|
|
#include <asm/mipsregs.h>
|
|
#include <asm/time.h>
|
|
#include <asm/mach-rc32434/rc32434.h>
|
|
|
|
extern unsigned int idt_cpu_freq;
|
|
|
|
/*
|
|
* Figure out the r4k offset, the amount to increment the compare
|
|
* register for each time tick. There is no RTC available.
|
|
*
|
|
* The RC32434 counts at half the CPU *core* speed.
|
|
*/
|
|
static unsigned long __init cal_r4koff(void)
|
|
{
|
|
mips_hpt_frequency = idt_cpu_freq * IDT_CLOCK_MULT / 2;
|
|
|
|
return mips_hpt_frequency / HZ;
|
|
}
|
|
|
|
void __init plat_time_init(void)
|
|
{
|
|
unsigned int est_freq;
|
|
unsigned long flags, r4k_offset;
|
|
|
|
local_irq_save(flags);
|
|
|
|
printk(KERN_INFO "calculating r4koff... ");
|
|
r4k_offset = cal_r4koff();
|
|
printk("%08lx(%d)\n", r4k_offset, (int) r4k_offset);
|
|
|
|
est_freq = 2 * r4k_offset * HZ;
|
|
est_freq += 5000; /* round */
|
|
est_freq -= est_freq % 10000;
|
|
printk(KERN_INFO "CPU frequency %d.%02d MHz\n", est_freq / 1000000,
|
|
(est_freq % 1000000) * 100 / 1000000);
|
|
local_irq_restore(flags);
|
|
}
|