ARM: SAMSUNG: Let platforms use the new watchdog reset driver
authorTomasz Figa <tomasz.figa@gmail.com>
Mon, 17 Jun 2013 14:45:37 +0000 (23:45 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Tue, 18 Jun 2013 18:13:16 +0000 (03:13 +0900)
This patch moves all platforms using the legacy watchdog reset helper
function to the new watchdog reset driver.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Tested-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/Kconfig
arch/arm/mach-s3c24xx/Kconfig
arch/arm/mach-s3c24xx/s3c2410.c
arch/arm/mach-s3c24xx/s3c244x.c
arch/arm/mach-s3c64xx/common.c
arch/arm/mach-s5p64x0/common.c
arch/arm/mach-s5pc100/common.c

index 49d993cee51232874a81814fe39ca99e09b88bad..40f63f4e9e5426ecb02cd00b01b671a03f82c911 100644 (file)
@@ -729,6 +729,7 @@ config ARCH_S3C64XX
        select SAMSUNG_CLKSRC
        select SAMSUNG_GPIOLIB_4BIT
        select SAMSUNG_IRQ_VIC_TIMER
+       select SAMSUNG_WDT_RESET
        select USB_ARCH_HAS_OHCI
        help
          Samsung S3C64XX series based systems
@@ -744,6 +745,7 @@ config ARCH_S5P64X0
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        select HAVE_S3C_RTC if RTC_CLASS
        select NEED_MACH_GPIO_H
+       select SAMSUNG_WDT_RESET
        help
          Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
          SMDK6450.
@@ -760,6 +762,7 @@ config ARCH_S5PC100
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        select HAVE_S3C_RTC if RTC_CLASS
        select NEED_MACH_GPIO_H
+       select SAMSUNG_WDT_RESET
        help
          Samsung S5PC100 series based systems
 
index f2f7088bfd221c9bb50df7180f1dbbc51a9e2e2d..f8d1912f103ec0ce3cd755b2a443a1ef0f210417 100644 (file)
@@ -31,6 +31,7 @@ config CPU_S3C2410
        select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
        select S3C2410_PM if PM
        select SAMSUNG_HRT
+       select SAMSUNG_WDT_RESET
        help
          Support for S3C2410 and S3C2410A family from the S3C24XX line
          of Samsung Mobile CPUs.
@@ -81,6 +82,7 @@ config CPU_S3C2442
 config CPU_S3C244X
        def_bool y
        depends on CPU_S3C2440 || CPU_S3C2442
+       select SAMSUNG_WDT_RESET
 
 config CPU_S3C2443
        bool "SAMSUNG S3C2443"
index d850ea5adac26f142beb8beb8b1c03c2637ffc58..ff384acc65b21ca35e4ace52851464e569ea3266 100644 (file)
@@ -138,6 +138,7 @@ void __init s3c2410_init_clocks(int xtal)
        s3c2410_baseclk_add();
        s3c24xx_register_clock(&s3c2410_armclk);
        clkdev_add_table(s3c2410_clk_lookup, ARRAY_SIZE(s3c2410_clk_lookup));
+       samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
 }
 
 struct bus_type s3c2410_subsys = {
@@ -201,7 +202,7 @@ void s3c2410_restart(char mode, const char *cmd)
                soft_restart(0);
        }
 
-       arch_wdt_reset();
+       samsung_wdt_reset();
 
        /* we'll take a jump through zero as a poor second */
        soft_restart(0);
index 2a35edb6735499b9f78c8fb01e3d2fba07548522..d0423e2544c16bd7f74084516c35ad128798d9ce 100644 (file)
@@ -133,6 +133,7 @@ void __init s3c244x_init_clocks(int xtal)
        s3c24xx_register_baseclocks(xtal);
        s3c244x_setup_clocks();
        s3c2410_baseclk_add();
+       samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
 }
 
 /* Since the S3C2442 and S3C2440 share items, put both subsystems here */
@@ -202,7 +203,7 @@ void s3c244x_restart(char mode, const char *cmd)
        if (mode == 's')
                soft_restart(0);
 
-       arch_wdt_reset();
+       samsung_wdt_reset();
 
        /* we'll take a jump through zero as a poor second */
        soft_restart(0);
index 0b9c0ba448347b7f513b1bfbd5ed7672141d4fe8..1aed6f4be1cebd6adc4820d85ded8b5ad73b7d06 100644 (file)
@@ -183,6 +183,12 @@ core_initcall(s3c64xx_dev_init);
 
 void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
 {
+       /*
+        * FIXME: there is no better place to put this at the moment
+        * (samsung_wdt_reset_init needs clocks)
+        */
+       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
+
        printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
 
        /* initialise the pair of VICs */
@@ -378,7 +384,7 @@ arch_initcall(s3c64xx_init_irq_eint);
 void s3c64xx_restart(char mode, const char *cmd)
 {
        if (mode != 's')
-               arch_wdt_reset();
+               samsung_wdt_reset();
 
        /* if all else fails, or mode was for soft, jump to 0 */
        soft_restart(0);
index 8ae5800e807fa4f7e2c187acfbce0046612def3e..76d0053bf5641c5c2fdaafc1040c4d8c627a601c 100644 (file)
@@ -173,6 +173,8 @@ void __init s5p64x0_init_io(struct map_desc *mach_desc, int size)
        s5p_init_cpu(S5P64X0_SYS_ID);
 
        s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids));
+       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
+
 }
 
 void __init s5p6440_map_io(void)
@@ -440,7 +442,7 @@ arch_initcall(s5p64x0_init_irq_eint);
 void s5p64x0_restart(char mode, const char *cmd)
 {
        if (mode != 's')
-               arch_wdt_reset();
+               samsung_wdt_reset();
 
        soft_restart(0);
 }
index cc6e561c99588430f7e3b99993d761ffebecf949..511031564d35ca130736c30fbb40012ae7ad4e79 100644 (file)
@@ -178,6 +178,7 @@ void __init s5pc100_init_clocks(int xtal)
        s5p_register_clocks(xtal);
        s5pc100_register_clocks();
        s5pc100_setup_clocks();
+       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
 }
 
 void __init s5pc100_init_irq(void)
@@ -219,7 +220,7 @@ void __init s5pc100_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 void s5pc100_restart(char mode, const char *cmd)
 {
        if (mode != 's')
-               arch_wdt_reset();
+               samsung_wdt_reset();
 
        soft_restart(0);
 }