From: Mark A. Greer <[email protected]>

The watchdog code currently hardcodes the base address
of the timer its using.  To support new SoCs, make it
support timers at any address.  Use davinci_soc_info
to do this.

Signed-off-by: Mark A. Greer <[email protected]>
---
 arch/arm/mach-davinci/dm355.c               |    1 +
 arch/arm/mach-davinci/dm644x.c              |    1 +
 arch/arm/mach-davinci/dm646x.c              |    1 +
 arch/arm/mach-davinci/include/mach/common.h |    1 +
 arch/arm/mach-davinci/include/mach/time.h   |    1 +
 arch/arm/mach-davinci/time.c                |    4 +---
 6 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 837570b..68e2320 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -649,6 +649,7 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
        .intc_type              = DAVINCI_INTC_TYPE_AINTC,
        .intc_num               = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm355_timer_info,
+       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
 };
 
 struct davinci_soc_info *dm355_get_soc_info(void)
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 5d63d46..3d3b05c 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -592,6 +592,7 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
        .intc_type              = DAVINCI_INTC_TYPE_AINTC,
        .intc_num               = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm644x_timer_info,
+       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
 };
 
 struct davinci_soc_info *dm644x_get_soc_info(void)
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 96ae370..5f49b30 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -571,6 +571,7 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
        .intc_type              = DAVINCI_INTC_TYPE_AINTC,
        .intc_num               = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm646x_timer_info,
+       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
 };
 
 struct davinci_soc_info *dm646x_get_soc_info(void)
diff --git a/arch/arm/mach-davinci/include/mach/common.h 
b/arch/arm/mach-davinci/include/mach/common.h
index 664655b..9a232b5 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -54,6 +54,7 @@ struct davinci_soc_info {
        int                             intc_type;
        unsigned long                   intc_num;
        struct davinci_timer_info       *timer_info;
+       void __iomem                    *wdt_base;
 };
 
 extern struct davinci_soc_info *davinci_soc_info;
diff --git a/arch/arm/mach-davinci/include/mach/time.h 
b/arch/arm/mach-davinci/include/mach/time.h
index 260d276..16cc89f 100644
--- a/arch/arm/mach-davinci/include/mach/time.h
+++ b/arch/arm/mach-davinci/include/mach/time.h
@@ -13,6 +13,7 @@
 
 #define DAVINCI_TIMER0_BASE            (IO_PHYS + 0x21400)
 #define DAVINCI_TIMER1_BASE            (IO_PHYS + 0x21800)
+#define DAVINCI_WDOG_BASE              (IO_PHYS + 0x21C00)
 
 enum {
        T0_BOT,
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index ab456e5..f07bac8 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -34,8 +34,6 @@
 static struct clock_event_device clockevent_davinci;
 static unsigned int davinci_clock_tick_rate;
 
-#define DAVINCI_WDOG_BASE   (IO_PHYS + 0x21C00)
-
 /*
  * This driver configures the 2 64-bit count-up timers as 4 independent
  * 32-bit count-up timers used as follows:
@@ -341,7 +339,7 @@ struct sys_timer davinci_timer = {
 /* reset board using watchdog timer */
 void davinci_watchdog_reset(void) {
        u32 tgcr, wdtcr;
-       void __iomem *base = IO_ADDRESS(DAVINCI_WDOG_BASE);
+       void __iomem *base = davinci_soc_info->wdt_base;
        struct device dev;
        struct clk *wd_clk;
 
-- 
1.6.0.3


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

Reply via email to