Commit 9595e2c3 authored by Sascha Hauer's avatar Sascha Hauer Committed by Russell King

[ARM] Update h720x for timer changes.

Patch from Sascha Hauser

Update H720x for system timer changes.
parent 113da4d2
/*
* linux/arch/arm/mach-h720x/common.h
*
* Copyright (C) 2003 Thomas Gleixner <tglx@linutronix.de>
* 2003 Robert Schwebel <r.schwebel@pengutronix.de>
* 2004 Sascha Hauer <s.hauer@pengutronix.de>
*
* Architecture specific stuff for Hynix GMS30C7201 development board
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
extern unsigned long h720x_gettimeoffset(void);
extern void __init h720x_init_irq (void);
extern void __init h720x_map_io(void);
#ifdef CONFIG_ARCH_H7202
extern struct sys_timer h7202_timer;
extern void __init init_hw_h7202(void);
extern void __init h7202_init_irq (void);
extern void __init h7202_init_time(void);
#endif
#ifdef CONFIG_ARCH_H7201
extern struct sys_timer h7201_timer;
#endif
...@@ -22,10 +22,7 @@ ...@@ -22,10 +22,7 @@
#include <asm/arch/irqs.h> #include <asm/arch/irqs.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include "common.h"
extern unsigned long h720x_gettimeoffset(void);
extern void __init h720x_init_irq (void);
/* /*
* Timer interrupt handler * Timer interrupt handler
*/ */
...@@ -53,8 +50,6 @@ static struct irqaction h7201_timer_irq = { ...@@ -53,8 +50,6 @@ static struct irqaction h7201_timer_irq = {
*/ */
void __init h7201_init_time(void) void __init h7201_init_time(void)
{ {
gettimeoffset = h720x_gettimeoffset;
CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH; CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET; CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START;
...@@ -62,3 +57,8 @@ void __init h7201_init_time(void) ...@@ -62,3 +57,8 @@ void __init h7201_init_time(void)
setup_irq(IRQ_TIMER0, &h7201_timer_irq); setup_irq(IRQ_TIMER0, &h7201_timer_irq);
} }
struct sys_timer h7201_timer = {
.init = h7201_init_time,
.offset = h720x_gettimeoffset,
};
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/serial_8250.h> #include <linux/serial_8250.h>
#include "common.h"
static struct resource h7202ps2_resources[] = { static struct resource h7202ps2_resources[] = {
[0] = { [0] = {
...@@ -94,9 +95,6 @@ static struct platform_device *devices[] __initdata = { ...@@ -94,9 +95,6 @@ static struct platform_device *devices[] __initdata = {
&serial_device, &serial_device,
}; };
extern unsigned long h720x_gettimeoffset(void);
extern void __init h720x_init_irq (void);
/* Although we have two interrupt lines for the timers, we only have one /* Although we have two interrupt lines for the timers, we only have one
* status register which clears all pending timer interrupts on reading. So * status register which clears all pending timer interrupts on reading. So
* we have to handle all timer interrupts in one place. * we have to handle all timer interrupts in one place.
...@@ -176,8 +174,6 @@ static struct irqaction h7202_timer_irq = { ...@@ -176,8 +174,6 @@ static struct irqaction h7202_timer_irq = {
*/ */
void __init h7202_init_time(void) void __init h7202_init_time(void)
{ {
gettimeoffset = h720x_gettimeoffset;
CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH; CPU_REG (TIMER_VIRT, TM0_PERIOD) = LATCH;
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET; CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_RESET;
CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START; CPU_REG (TIMER_VIRT, TM0_CTRL) = TM_REPEAT | TM_START;
...@@ -186,6 +182,11 @@ void __init h7202_init_time(void) ...@@ -186,6 +182,11 @@ void __init h7202_init_time(void)
setup_irq(IRQ_TIMER0, &h7202_timer_irq); setup_irq(IRQ_TIMER0, &h7202_timer_irq);
} }
struct sys_timer h7202_timer = {
.init = h7202_init_time,
.offset = h720x_gettimeoffset,
};
void __init h7202_init_irq (void) void __init h7202_init_irq (void)
{ {
int irq; int irq;
......
...@@ -27,10 +27,7 @@ ...@@ -27,10 +27,7 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include "common.h"
extern void h720x_init_irq (void);
extern void h7201_init_time(void);
extern void __init h720x_map_io(void);
MACHINE_START(H7201, "Hynix GMS30C7201") MACHINE_START(H7201, "Hynix GMS30C7201")
MAINTAINER("Robert Schwebel, Pengutronix") MAINTAINER("Robert Schwebel, Pengutronix")
...@@ -38,5 +35,5 @@ MACHINE_START(H7201, "Hynix GMS30C7201") ...@@ -38,5 +35,5 @@ MACHINE_START(H7201, "Hynix GMS30C7201")
BOOT_PARAMS(0xc0001000) BOOT_PARAMS(0xc0001000)
MAPIO(h720x_map_io) MAPIO(h720x_map_io)
INITIRQ(h720x_init_irq) INITIRQ(h720x_init_irq)
INITTIME(h7201_init_time) .timer = &h7201_timer,
MACHINE_END MACHINE_END
...@@ -27,11 +27,7 @@ ...@@ -27,11 +27,7 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include "common.h"
extern void __init init_hw_h7202(void);
extern void __init h7202_init_irq (void);
extern void __init h7202_init_time(void);
extern void __init h720x_map_io(void);
static struct resource cirrus_resources[] = { static struct resource cirrus_resources[] = {
[0] = { [0] = {
...@@ -80,6 +76,6 @@ MACHINE_START(H7202, "Hynix HMS30C7202") ...@@ -80,6 +76,6 @@ MACHINE_START(H7202, "Hynix HMS30C7202")
BOOT_PARAMS(0x40000100) BOOT_PARAMS(0x40000100)
MAPIO(h720x_map_io) MAPIO(h720x_map_io)
INITIRQ(h7202_init_irq) INITIRQ(h7202_init_irq)
INITTIME(h7202_init_time) .timer = &h7202_timer,
INIT_MACHINE(init_eval_h7202) INIT_MACHINE(init_eval_h7202)
MACHINE_END MACHINE_END
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