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

The davinci timer code currently references the watchdog timer's
device structure and the base address for the WDT.  However,
the device structure is referenced by directly accessing the WDT's
platform_data and the base address is referenced via the soc_info
structure.  Instead of having two separate ways of accessing
WDT info, put a pointer to the WDT's platform_data in the soc_info
structure and get both pieces of information through it.

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

diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 5b21faf..7bdac60 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -224,6 +224,8 @@ void __init davinci_setup_mmc(int module, struct 
davinci_mmc_config *config)
 
 static struct resource wdt_resources[] = {
        {
+               .start  = DAVINCI_WDOG_BASE,
+               .end    = DAVINCI_WDOG_BASE + SZ_1K - 1,
                .flags  = IORESOURCE_MEM,
        },
 };
@@ -237,11 +239,6 @@ struct platform_device davinci_wdt_device = {
 
 static void davinci_init_wdt(void)
 {
-       struct davinci_soc_info *soc_info = davinci_get_soc_info();
-
-       wdt_resources[0].start = (resource_size_t)soc_info->wdt_base;
-       wdt_resources[0].end = (resource_size_t)soc_info->wdt_base + SZ_1K - 1;
-
        platform_device_register(&davinci_wdt_device);
 }
 
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index bccc5a8..1787444 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -704,7 +704,7 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
        .intc_irq_prios         = dm355_default_priorities,
        .intc_irq_num           = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm355_timer_info,
-       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
+       .wdt_dev                = &davinci_wdt_device,
        .gpio_base              = IO_ADDRESS(DAVINCI_GPIO_BASE),
        .gpio_num               = 104,
        .gpio_irq               = IRQ_DM355_GPIOBNK0,
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 45abac4..e8c4ccb 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -630,7 +630,7 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
        .intc_irq_prios         = dm644x_default_priorities,
        .intc_irq_num           = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm644x_timer_info,
-       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
+       .wdt_dev                = &davinci_wdt_device,
        .gpio_base              = IO_ADDRESS(DAVINCI_GPIO_BASE),
        .gpio_num               = 71,
        .gpio_irq               = IRQ_GPIOBNK0,
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 3cd09c1..6372ad2 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -609,7 +609,7 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
        .intc_irq_prios         = dm646x_default_priorities,
        .intc_irq_num           = DAVINCI_N_AINTC_IRQ,
        .timer_info             = &dm646x_timer_info,
-       .wdt_base               = IO_ADDRESS(DAVINCI_WDOG_BASE),
+       .wdt_dev                = &davinci_wdt_device,
        .gpio_base              = IO_ADDRESS(DAVINCI_GPIO_BASE),
        .gpio_num               = 43, /* Only 33 usable */
        .gpio_irq               = IRQ_DM646X_GPIOBNK0,
diff --git a/arch/arm/mach-davinci/include/mach/common.h 
b/arch/arm/mach-davinci/include/mach/common.h
index 352f365..f91ffdd 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -60,7 +60,7 @@ struct davinci_soc_info {
        u8                              *intc_irq_prios;
        unsigned long                   intc_irq_num;
        struct davinci_timer_info       *timer_info;
-       void __iomem                    *wdt_base;
+       struct platform_device          *wdt_dev;
        void __iomem                    *gpio_base;
        unsigned                        gpio_num;
        unsigned                        gpio_irq;
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 3269585..1f98eb7 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -398,10 +398,10 @@ void davinci_watchdog_reset(void)
 {
        u32 tgcr, wdtcr;
        struct davinci_soc_info *soc_info = davinci_get_soc_info();
-       void __iomem *base = soc_info->wdt_base;
+       void __iomem *base = IO_ADDRESS(soc_info->wdt_dev->resource[0].start);
        struct clk *wd_clk;
 
-       wd_clk = clk_get(&davinci_wdt_device.dev, NULL);
+       wd_clk = clk_get(&soc_info->wdt_dev->dev, NULL);
        if (WARN_ON(IS_ERR(wd_clk)))
                return;
        clk_enable(wd_clk);
-- 
1.6.1.2.MVISTA.907.g2b3c


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

Reply via email to