Kevin,

Timer cleanup patch now changed as you have suggested.

---Komal Shah
http://komalshah.blogspot.com

-- 
http://www.fastmail.fm - And now for something completely differentÂ…

From nobody Mon Sep 17 00:00:00 2001
From: Komal Shah <[EMAIL PROTECTED]>
Date: Fri, 1 Sep 2006 00:20:57 +0530
Subject: [PATCH] ARM: DaVinci: Timer cleanup

- Remove unnecessary header files.
- Update flags as per genirq patches.
- Use kernel coding style.

Signed-off-by: Komal Shah <[EMAIL PROTECTED]>

---

 arch/arm/mach-davinci/time.c |   46 ++++++++++++++++++------------------------
 1 files changed, 20 insertions(+), 26 deletions(-)

9529710fa5d14fd3925cfa20cff46188483245de
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 7ef377b..4fc0cfc 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -11,30 +11,24 @@
  * whether express or implied.
  *
  */
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
-#include <linux/time.h>
-#include <linux/timex.h>
 #include <linux/types.h>
-#include <linux/sched.h>
 #include <linux/interrupt.h>
 
 #include <asm/io.h>
 #include <asm/hardware.h>
 #include <asm/system.h>
-#include <asm/leds.h>
 #include <asm/irq.h>
 #include <asm/mach/irq.h>
 #include <asm/mach/time.h>
 
-#include <asm/arch/timex.h>
-#include <asm/arch/irqs.h>
 #include <asm/errno.h>
 
 enum {
 	T0_BOT = 0, T0_TOP, T1_BOT, T1_TOP, NUM_TIMERS,
 };
+
 #define IS_TIMER1(id)    (id & 0x2)
 #define IS_TIMER0(id)    (!IS_TIMER1(id))
 #define IS_TIMER_TOP(id) ((id & 0x1))
@@ -127,7 +121,8 @@ static inline unsigned long long cycles_
 	return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR;
 }
 
-static int davinci_timer32_config(davinci_timer_t *t) {
+static int davinci_timer32_config(davinci_timer_t *t)
+{
 	volatile davinci_timer_regs_t *regs = t->regs;
 	u32 enamode_shift, reset_shift;
 	int ret = 0;
@@ -154,11 +149,10 @@ static int davinci_timer32_config(davinc
 	/* Set enable mode */
 	if (t->opts & TIMER_ONE_SHOT) {
 		regs->tcr |= 0x1 << enamode_shift;
-	}
-	else if (t->opts & TIMER_CONTINUOUS) {
+	} else if (t->opts & TIMER_CONTINUOUS) {
 		regs->tcr |= 0x2 << enamode_shift;
 	}
-	else { /* TIMER_DISABLED */
+	else {	/* TIMER_DISABLED */
 		regs->tcr &= ~(0x3 << enamode_shift);
 	}
 
@@ -168,10 +162,11 @@ static int davinci_timer32_config(davinc
 	return ret;
 }
 
-static inline u32 davinci_timer32_read(davinci_timer_t *t) {
+static inline u32 davinci_timer32_read(davinci_timer_t *t)
+{
 	volatile davinci_timer_regs_t *regs = t->regs;
 
-	if IS_TIMER_TOP(t->id) {
+	if (IS_TIMER_TOP(t->id)) {
 		return regs->tim34;
 	}
 	else {
@@ -183,7 +178,8 @@ static inline u32 davinci_timer32_read(d
  * Last processed system timer interrupt
  */
 static unsigned long davinci_timer32_last = 0;
-static irqreturn_t system_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t system_timer_interrupt(int irq, void *dev_id,
+					  struct pt_regs *regs)
 {
 	unsigned long now, latency;
 
@@ -199,7 +195,7 @@ static irqreturn_t system_timer_interrup
 	return IRQ_HANDLED;
 }
 
-unsigned long davinci_gettimeoffset(void)
+static unsigned long davinci_gettimeoffset(void)
 {
 	unsigned long now, elapsed, nsec;
 
@@ -210,22 +206,20 @@ unsigned long davinci_gettimeoffset(void
 	return nsec / 1000;
 }
 
-static irqreturn_t freerun_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
+static irqreturn_t freerun_interrupt(int irq, void *dev_id,
+				     struct pt_regs *regs)
+{
 	/* TODO: keep track of roll-overs for 64-bit cycle-count */
 	return IRQ_HANDLED;
 }
 
-cycles_t davinci_get_cycles(void) {
-	return davinci_timer32_read(&davinci_timers[TID_FREERUN]);
-}
-
 static davinci_timer_t davinci_timers[NUM_TIMERS] = {
 	[TID_SYSTEM] = {
 		.name      = "system tick",
 		.period    = (CLOCK_TICK_RATE / (HZ)),
 		.opts      = TIMER_CONTINUOUS,
 		.irqaction = {
-			.flags   = SA_INTERRUPT,
+			.flags   = IRQF_DISABLED | IRQF_TIMER,
 			.handler = system_timer_interrupt,
 		}
 	},
@@ -234,13 +228,13 @@ static davinci_timer_t davinci_timers[NU
 		.period     = 0xffffffff,
 		.opts       = TIMER_CONTINUOUS,
 		.irqaction = {
-			.flags   = SA_INTERRUPT,
+			.flags   = IRQF_DISABLED | IRQF_TIMER,
 			.handler = freerun_interrupt,
 		}
 	},
 };
 
-void __init davinci_timer_init(void)
+static void __init davinci_timer_init(void)
 {
 	volatile davinci_timer_regs_t *t0 = davinci_timer_base(T0_BOT);
 	volatile davinci_timer_regs_t *t1 = davinci_timer_base(T1_BOT);
@@ -270,7 +264,7 @@ void __init davinci_timer_init(void)
 
 	set_cyc2ns_scale(CLOCK_TICK_RATE / 1000);
 
-	for(i=0; i<sizeof(davinci_timers)/sizeof(davinci_timer_t); i++) {
+	for (i=0; i< ARRAY_SIZE(davinci_timers); i++) {
 		davinci_timer_t *t = &davinci_timers[i];
 
 		if (t->name) {
@@ -309,9 +303,9 @@ void davinci_watchdog_reset(void) {
 	davinci_wdt->wdtcr = 0xA5C64000;
 
 	/* put watchdog in active state */
-	davinci_wdt->wdtcr = 0xDA7E4000;	
+	davinci_wdt->wdtcr = 0xDA7E4000;
 
-	/* write an invalid value to the WDKEY field to trigger 
+	/* write an invalid value to the WDKEY field to trigger
 	 * a watchdog reset */
 	davinci_wdt->wdtcr = 0x00004000;
 }
-- 
1.3.3

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to