diff options
| author | Yoichi Yuasa <yuasa@hh.iij4u.or.jp> | 2005-03-04 17:36:48 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-03-04 17:36:48 -0800 |
| commit | ce4ddcb1b0f3c04f2d115281d97db417a1853a69 (patch) | |
| tree | beb00c89ad1f3f255f351d8837dc132bf7242249 | |
| parent | 7c751453da9f53fff644bc49578f9a2930279c68 (diff) | |
[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: Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/mips/vr41xx/common/bcu.c | 25 | ||||
| -rw-r--r-- | arch/mips/vr41xx/common/init.c | 17 | ||||
| -rw-r--r-- | arch/mips/vr41xx/common/ksyms.c | 3 | ||||
| -rw-r--r-- | include/asm-mips/vr41xx/vr41xx.h | 1 |
4 files changed, 27 insertions, 19 deletions
diff --git a/arch/mips/vr41xx/common/bcu.c b/arch/mips/vr41xx/common/bcu.c index d14dae150b8a..cdfa4273a1c5 100644 --- a/arch/mips/vr41xx/common/bcu.c +++ b/arch/mips/vr41xx/common/bcu.c @@ -3,7 +3,7 @@ * * Copyright (C) 2002 MontaVista Software Inc. * 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 * it under the terms of the GNU General Public License as published by @@ -28,20 +28,16 @@ * Yoichi Yuasa <yuasa@hh.iij4u.or.jp> * - Added support for NEC VR4133. */ -#include <linux/init.h> -#include <linux/ioport.h> #include <linux/kernel.h> +#include <linux/module.h> #include <linux/smp.h> #include <linux/types.h> #include <asm/cpu.h> #include <asm/io.h> -#define IO_MEM_RESOURCE_START 0UL -#define IO_MEM_RESOURCE_END 0x1fffffffUL - -#define CLKSPEEDREG_TYPE1 KSEG1ADDR(0x0b000014) -#define CLKSPEEDREG_TYPE2 KSEG1ADDR(0x0f000014) +#define CLKSPEEDREG_TYPE1 (void __iomem *)KSEG1ADDR(0x0b000014) +#define CLKSPEEDREG_TYPE2 (void __iomem *)KSEG1ADDR(0x0f000014) #define CLKSP(x) ((x) & 0x001f) #define CLKSP_VR4133(x) ((x) & 0x0007) @@ -63,11 +59,15 @@ unsigned long vr41xx_get_vtclock_frequency(void) return vr41xx_vtclock; } +EXPORT_SYMBOL_GPL(vr41xx_get_vtclock_frequency); + unsigned long vr41xx_get_tclock_frequency(void) { return vr41xx_tclock; } +EXPORT_SYMBOL_GPL(vr41xx_get_tclock_frequency); + static inline uint16_t read_clkspeed(void) { switch (current_cpu_data.cputype) { @@ -207,7 +207,7 @@ static inline unsigned long calculate_tclock(uint16_t clkspeed, unsigned long pc return tclock; } -static int __init vr41xx_bcu_init(void) +void vr41xx_calculate_clock_frequency(void) { unsigned long pclock; uint16_t clkspeed; @@ -217,11 +217,6 @@ static int __init vr41xx_bcu_init(void) pclock = calculate_pclock(clkspeed); vr41xx_vtclock = calculate_vtclock(clkspeed, pclock); 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); diff --git a/arch/mips/vr41xx/common/init.c b/arch/mips/vr41xx/common/init.c index ffc8e1c36b67..c189b0df5071 100644 --- a/arch/mips/vr41xx/common/init.c +++ b/arch/mips/vr41xx/common/init.c @@ -1,7 +1,7 @@ /* * 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 * it under the terms of the GNU General Public License as published by @@ -18,9 +18,20 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <linux/init.h> +#include <linux/ioport.h> #include <linux/string.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) { @@ -35,6 +46,10 @@ void __init prom_init(void) if (i < (argc - 1)) strcat(arcs_cmdline, " "); } + + vr41xx_calculate_clock_frequency(); + + iomem_resource_init(); } unsigned long __init prom_free_prom_memory (void) diff --git a/arch/mips/vr41xx/common/ksyms.c b/arch/mips/vr41xx/common/ksyms.c index a2014106360d..c8c0d0a727d2 100644 --- a/arch/mips/vr41xx/common/ksyms.c +++ b/arch/mips/vr41xx/common/ksyms.c @@ -22,9 +22,6 @@ #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_read_rtclong1_counter); EXPORT_SYMBOL(vr41xx_set_rtclong2_cycle); diff --git a/include/asm-mips/vr41xx/vr41xx.h b/include/asm-mips/vr41xx/vr41xx.h index c57c8dca6117..8ac8487e2790 100644 --- a/include/asm-mips/vr41xx/vr41xx.h +++ b/include/asm-mips/vr41xx/vr41xx.h @@ -45,6 +45,7 @@ /* * Bus Control Uint */ +extern unsigned long vr41xx_calculate_clock_frequency(void); extern unsigned long vr41xx_get_vtclock_frequency(void); extern unsigned long vr41xx_get_tclock_frequency(void); |
