Commit ce4ddcb1 authored by Yoichi Yuasa's avatar Yoichi Yuasa Committed by Linus Torvalds

[PATCH] mips: calculate clock at any time

This patch changes bcu.c to calculate clock at any time.  Because clock can
be changed.  Moreover, EXPORT_SYMBOL_GPLs are added to it.
Signed-off-by: default avatarYoichi Yuasa <yuasa@hh.iij4u.or.jp>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 7c751453
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (C) 2002 MontaVista Software Inc. * Copyright (C) 2002 MontaVista Software Inc.
* Author: Yoichi Yuasa <yyuasa@mvista.com, or source@mvista.com> * Author: Yoichi Yuasa <yyuasa@mvista.com, or source@mvista.com>
* Copyright (C) 2003-2004 Yoichi Yuasa <yuasa@hh.iij4u.or.jp> * Copyright (C) 2003-2005 Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -28,20 +28,16 @@ ...@@ -28,20 +28,16 @@
* Yoichi Yuasa <yuasa@hh.iij4u.or.jp> * Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
* - Added support for NEC VR4133. * - Added support for NEC VR4133.
*/ */
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/types.h> #include <linux/types.h>
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/io.h> #include <asm/io.h>
#define IO_MEM_RESOURCE_START 0UL #define CLKSPEEDREG_TYPE1 (void __iomem *)KSEG1ADDR(0x0b000014)
#define IO_MEM_RESOURCE_END 0x1fffffffUL #define CLKSPEEDREG_TYPE2 (void __iomem *)KSEG1ADDR(0x0f000014)
#define CLKSPEEDREG_TYPE1 KSEG1ADDR(0x0b000014)
#define CLKSPEEDREG_TYPE2 KSEG1ADDR(0x0f000014)
#define CLKSP(x) ((x) & 0x001f) #define CLKSP(x) ((x) & 0x001f)
#define CLKSP_VR4133(x) ((x) & 0x0007) #define CLKSP_VR4133(x) ((x) & 0x0007)
...@@ -63,11 +59,15 @@ unsigned long vr41xx_get_vtclock_frequency(void) ...@@ -63,11 +59,15 @@ unsigned long vr41xx_get_vtclock_frequency(void)
return vr41xx_vtclock; return vr41xx_vtclock;
} }
EXPORT_SYMBOL_GPL(vr41xx_get_vtclock_frequency);
unsigned long vr41xx_get_tclock_frequency(void) unsigned long vr41xx_get_tclock_frequency(void)
{ {
return vr41xx_tclock; return vr41xx_tclock;
} }
EXPORT_SYMBOL_GPL(vr41xx_get_tclock_frequency);
static inline uint16_t read_clkspeed(void) static inline uint16_t read_clkspeed(void)
{ {
switch (current_cpu_data.cputype) { switch (current_cpu_data.cputype) {
...@@ -207,7 +207,7 @@ static inline unsigned long calculate_tclock(uint16_t clkspeed, unsigned long pc ...@@ -207,7 +207,7 @@ static inline unsigned long calculate_tclock(uint16_t clkspeed, unsigned long pc
return tclock; return tclock;
} }
static int __init vr41xx_bcu_init(void) void vr41xx_calculate_clock_frequency(void)
{ {
unsigned long pclock; unsigned long pclock;
uint16_t clkspeed; uint16_t clkspeed;
...@@ -217,11 +217,6 @@ static int __init vr41xx_bcu_init(void) ...@@ -217,11 +217,6 @@ static int __init vr41xx_bcu_init(void)
pclock = calculate_pclock(clkspeed); pclock = calculate_pclock(clkspeed);
vr41xx_vtclock = calculate_vtclock(clkspeed, pclock); vr41xx_vtclock = calculate_vtclock(clkspeed, pclock);
vr41xx_tclock = calculate_tclock(clkspeed, pclock, vr41xx_vtclock); vr41xx_tclock = calculate_tclock(clkspeed, pclock, vr41xx_vtclock);
iomem_resource.start = IO_MEM_RESOURCE_START;
iomem_resource.end = IO_MEM_RESOURCE_END;
return 0;
} }
early_initcall(vr41xx_bcu_init); EXPORT_SYMBOL_GPL(vr41xx_calculate_clock_frequency);
/* /*
* init.c, Common initialization routines for NEC VR4100 series. * init.c, Common initialization routines for NEC VR4100 series.
* *
* Copyright (C) 2003-2004 Yoichi Yuasa <yuasa@hh.iij4u.or.jp> * Copyright (C) 2003-2005 Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -18,9 +18,20 @@ ...@@ -18,9 +18,20 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/ioport.h>
#include <linux/string.h> #include <linux/string.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/vr41xx/vr41xx.h>
#define IO_MEM_RESOURCE_START 0UL
#define IO_MEM_RESOURCE_END 0x1fffffffUL
static void __init iomem_resource_init(void)
{
iomem_resource.start = IO_MEM_RESOURCE_START;
iomem_resource.end = IO_MEM_RESOURCE_END;
}
void __init prom_init(void) void __init prom_init(void)
{ {
...@@ -35,6 +46,10 @@ void __init prom_init(void) ...@@ -35,6 +46,10 @@ void __init prom_init(void)
if (i < (argc - 1)) if (i < (argc - 1))
strcat(arcs_cmdline, " "); strcat(arcs_cmdline, " ");
} }
vr41xx_calculate_clock_frequency();
iomem_resource_init();
} }
unsigned long __init prom_free_prom_memory (void) unsigned long __init prom_free_prom_memory (void)
......
...@@ -22,9 +22,6 @@ ...@@ -22,9 +22,6 @@
#include <asm/vr41xx/vr41xx.h> #include <asm/vr41xx/vr41xx.h>
EXPORT_SYMBOL(vr41xx_get_vtclock_frequency);
EXPORT_SYMBOL(vr41xx_get_tclock_frequency);
EXPORT_SYMBOL(vr41xx_set_rtclong1_cycle); EXPORT_SYMBOL(vr41xx_set_rtclong1_cycle);
EXPORT_SYMBOL(vr41xx_read_rtclong1_counter); EXPORT_SYMBOL(vr41xx_read_rtclong1_counter);
EXPORT_SYMBOL(vr41xx_set_rtclong2_cycle); EXPORT_SYMBOL(vr41xx_set_rtclong2_cycle);
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
/* /*
* Bus Control Uint * Bus Control Uint
*/ */
extern unsigned long vr41xx_calculate_clock_frequency(void);
extern unsigned long vr41xx_get_vtclock_frequency(void); extern unsigned long vr41xx_get_vtclock_frequency(void);
extern unsigned long vr41xx_get_tclock_frequency(void); extern unsigned long vr41xx_get_tclock_frequency(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment