aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lechner <david@lechnology.com>2018-01-06 22:10:15 -0500
committerSekhar Nori <nsekhar@ti.com>2018-02-19 05:55:15 -0500
commit94f2e94514e5dea6677b4379efd3479105519bdc (patch)
tree8a349e5a86204d4514507b8238dc4c54283a8c8c
parentbdec5a6b57896da81bc47262868468717a06bb69 (diff)
ARM: davinci: remove watchdog reset
This removes the watchdog reset code. The reset has been moved to drivers/watchdog/davinci_wdt.c. The watchdog driver registers the reset with the kernel so defining a reset for each machine is no longer needed. Signed-off-by: David Lechner <david@lechnology.com> Acked-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-dm355-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-dm355-leopard.c1
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c1
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c1
-rw-r--r--arch/arm/mach-davinci/board-neuros-osd2.c1
-rw-r--r--arch/arm/mach-davinci/board-omapl138-hawk.c1
-rw-r--r--arch/arm/mach-davinci/board-sffsdr.c1
-rw-r--r--arch/arm/mach-davinci/clock.h3
-rw-r--r--arch/arm/mach-davinci/da8xx-dt.c1
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c13
-rw-r--r--arch/arm/mach-davinci/devices.c7
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h1
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h1
-rw-r--r--arch/arm/mach-davinci/time.c57
18 files changed, 1 insertions, 94 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index f960cbef6538..d3ee02c12014 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -638,5 +638,4 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
638 .init_machine = da830_evm_init, 638 .init_machine = da830_evm_init,
639 .init_late = davinci_init_late, 639 .init_late = davinci_init_late,
640 .dma_zone_size = SZ_128M, 640 .dma_zone_size = SZ_128M,
641 .restart = da8xx_restart,
642MACHINE_END 641MACHINE_END
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 26bdb10a8927..b3a764feae11 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -1481,6 +1481,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
1481 .init_machine = da850_evm_init, 1481 .init_machine = da850_evm_init,
1482 .init_late = davinci_init_late, 1482 .init_late = davinci_init_late,
1483 .dma_zone_size = SZ_128M, 1483 .dma_zone_size = SZ_128M,
1484 .restart = da8xx_restart,
1485 .reserve = da8xx_rproc_reserve_cma, 1484 .reserve = da8xx_rproc_reserve_cma,
1486MACHINE_END 1485MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index e457f299cd44..29dbfc944e02 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -431,5 +431,4 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
431 .init_machine = dm355_evm_init, 431 .init_machine = dm355_evm_init,
432 .init_late = davinci_init_late, 432 .init_late = davinci_init_late,
433 .dma_zone_size = SZ_128M, 433 .dma_zone_size = SZ_128M,
434 .restart = davinci_restart,
435MACHINE_END 434MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
index be997243447b..1e7e9b8f3bae 100644
--- a/arch/arm/mach-davinci/board-dm355-leopard.c
+++ b/arch/arm/mach-davinci/board-dm355-leopard.c
@@ -275,5 +275,4 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
275 .init_machine = dm355_leopard_init, 275 .init_machine = dm355_leopard_init,
276 .init_late = davinci_init_late, 276 .init_late = davinci_init_late,
277 .dma_zone_size = SZ_128M, 277 .dma_zone_size = SZ_128M,
278 .restart = davinci_restart,
279MACHINE_END 278MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index e75741fb2c1d..17b2c29f4053 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -778,6 +778,5 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
778 .init_machine = dm365_evm_init, 778 .init_machine = dm365_evm_init,
779 .init_late = davinci_init_late, 779 .init_late = davinci_init_late,
780 .dma_zone_size = SZ_128M, 780 .dma_zone_size = SZ_128M,
781 .restart = davinci_restart,
782MACHINE_END 781MACHINE_END
783 782
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index 85e6fb33b1ee..35e1274183e1 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -832,5 +832,4 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
832 .init_machine = davinci_evm_init, 832 .init_machine = davinci_evm_init,
833 .init_late = davinci_init_late, 833 .init_late = davinci_init_late,
834 .dma_zone_size = SZ_128M, 834 .dma_zone_size = SZ_128M,
835 .restart = davinci_restart,
836MACHINE_END 835MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index cb0a41e83582..003bbe5c24fd 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -801,7 +801,6 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
801 .init_machine = evm_init, 801 .init_machine = evm_init,
802 .init_late = davinci_init_late, 802 .init_late = davinci_init_late,
803 .dma_zone_size = SZ_128M, 803 .dma_zone_size = SZ_128M,
804 .restart = davinci_restart,
805MACHINE_END 804MACHINE_END
806 805
807MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM") 806MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
@@ -812,6 +811,5 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
812 .init_machine = evm_init, 811 .init_machine = evm_init,
813 .init_late = davinci_init_late, 812 .init_late = davinci_init_late,
814 .dma_zone_size = SZ_128M, 813 .dma_zone_size = SZ_128M,
815 .restart = davinci_restart,
816MACHINE_END 814MACHINE_END
817 815
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 9e7388ba413c..72748e5df43c 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -570,5 +570,4 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
570 .init_machine = mityomapl138_init, 570 .init_machine = mityomapl138_init,
571 .init_late = davinci_init_late, 571 .init_late = davinci_init_late,
572 .dma_zone_size = SZ_128M, 572 .dma_zone_size = SZ_128M,
573 .restart = da8xx_restart,
574MACHINE_END 573MACHINE_END
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c
index 4da210a1a110..51a3ae19d765 100644
--- a/arch/arm/mach-davinci/board-neuros-osd2.c
+++ b/arch/arm/mach-davinci/board-neuros-osd2.c
@@ -231,5 +231,4 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
231 .init_machine = davinci_ntosd2_init, 231 .init_machine = davinci_ntosd2_init,
232 .init_late = davinci_init_late, 232 .init_late = davinci_init_late,
233 .dma_zone_size = SZ_128M, 233 .dma_zone_size = SZ_128M,
234 .restart = davinci_restart,
235MACHINE_END 234MACHINE_END
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index baab7eb61632..ae37bc46bc8c 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -334,6 +334,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
334 .init_machine = omapl138_hawk_init, 334 .init_machine = omapl138_hawk_init,
335 .init_late = davinci_init_late, 335 .init_late = davinci_init_late,
336 .dma_zone_size = SZ_128M, 336 .dma_zone_size = SZ_128M,
337 .restart = da8xx_restart,
338 .reserve = da8xx_rproc_reserve_cma, 337 .reserve = da8xx_rproc_reserve_cma,
339MACHINE_END 338MACHINE_END
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index d85accf7f760..1f02d4ec6144 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -154,5 +154,4 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
154 .init_machine = davinci_sffsdr_init, 154 .init_machine = davinci_sffsdr_init,
155 .init_late = davinci_init_late, 155 .init_late = davinci_init_late,
156 .dma_zone_size = SZ_128M, 156 .dma_zone_size = SZ_128M,
157 .restart = davinci_restart,
158MACHINE_END 157MACHINE_END
diff --git a/arch/arm/mach-davinci/clock.h b/arch/arm/mach-davinci/clock.h
index fa2b83752e03..d7894d5aaa25 100644
--- a/arch/arm/mach-davinci/clock.h
+++ b/arch/arm/mach-davinci/clock.h
@@ -135,9 +135,6 @@ int davinci_clk_reset(struct clk *clk, bool reset);
135void davinci_clk_enable(struct clk *clk); 135void davinci_clk_enable(struct clk *clk);
136void davinci_clk_disable(struct clk *clk); 136void davinci_clk_disable(struct clk *clk);
137 137
138extern struct platform_device davinci_wdt_device;
139extern void davinci_watchdog_reset(struct platform_device *);
140
141#endif 138#endif
142 139
143#endif 140#endif
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index f06db6700ab2..779e8ce887c3 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -100,7 +100,6 @@ DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
100 .init_machine = da850_init_machine, 100 .init_machine = da850_init_machine,
101 .dt_compat = da850_boards_compat, 101 .dt_compat = da850_boards_compat,
102 .init_late = davinci_init_late, 102 .init_late = davinci_init_late,
103 .restart = da8xx_restart,
104MACHINE_END 103MACHINE_END
105 104
106#endif 105#endif
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index 166bf29b1296..24422ba07cc7 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -370,19 +370,6 @@ static struct platform_device da8xx_wdt_device = {
370 .resource = da8xx_watchdog_resources, 370 .resource = da8xx_watchdog_resources,
371}; 371};
372 372
373void da8xx_restart(enum reboot_mode mode, const char *cmd)
374{
375 struct device *dev;
376
377 dev = bus_find_device_by_name(&platform_bus_type, NULL, "davinci-wdt");
378 if (!dev) {
379 pr_err("%s: failed to find watchdog device\n", __func__);
380 return;
381 }
382
383 davinci_watchdog_reset(to_platform_device(dev));
384}
385
386int __init da8xx_register_watchdog(void) 373int __init da8xx_register_watchdog(void)
387{ 374{
388 return platform_device_register(&da8xx_wdt_device); 375 return platform_device_register(&da8xx_wdt_device);
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 3ae70f2909b0..0edda4093e47 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -282,18 +282,13 @@ static struct resource wdt_resources[] = {
282 }, 282 },
283}; 283};
284 284
285struct platform_device davinci_wdt_device = { 285static struct platform_device davinci_wdt_device = {
286 .name = "davinci-wdt", 286 .name = "davinci-wdt",
287 .id = -1, 287 .id = -1,
288 .num_resources = ARRAY_SIZE(wdt_resources), 288 .num_resources = ARRAY_SIZE(wdt_resources),
289 .resource = wdt_resources, 289 .resource = wdt_resources,
290}; 290};
291 291
292void davinci_restart(enum reboot_mode mode, const char *cmd)
293{
294 davinci_watchdog_reset(&davinci_wdt_device);
295}
296
297int davinci_init_wdt(void) 292int davinci_init_wdt(void)
298{ 293{
299 return platform_device_register(&davinci_wdt_device); 294 return platform_device_register(&davinci_wdt_device);
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 433a008ff796..19b9346e147e 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -81,7 +81,6 @@ extern struct davinci_soc_info davinci_soc_info;
81 81
82extern void davinci_common_init(const struct davinci_soc_info *soc_info); 82extern void davinci_common_init(const struct davinci_soc_info *soc_info);
83extern void davinci_init_ide(void); 83extern void davinci_init_ide(void);
84void davinci_restart(enum reboot_mode mode, const char *cmd);
85void davinci_init_late(void); 84void davinci_init_late(void);
86 85
87#ifdef CONFIG_DAVINCI_RESET_CLOCKS 86#ifdef CONFIG_DAVINCI_RESET_CLOCKS
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index 03f37ef4297f..fe2d77654c06 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -119,7 +119,6 @@ int da850_register_vpif_display
119 (struct vpif_display_config *display_config); 119 (struct vpif_display_config *display_config);
120int da850_register_vpif_capture 120int da850_register_vpif_capture
121 (struct vpif_capture_config *capture_config); 121 (struct vpif_capture_config *capture_config);
122void da8xx_restart(enum reboot_mode mode, const char *cmd);
123void da8xx_rproc_reserve_cma(void); 122void da8xx_rproc_reserve_cma(void);
124int da8xx_register_rproc(void); 123int da8xx_register_rproc(void);
125int da850_register_gpio(void); 124int da850_register_gpio(void);
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 034f865fe78e..1bb991ad9c1e 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -80,13 +80,6 @@ enum {
80#define TGCR_UNRESET 0x1 80#define TGCR_UNRESET 0x1
81#define TGCR_RESET_MASK 0x3 81#define TGCR_RESET_MASK 0x3
82 82
83#define WDTCR_WDEN_SHIFT 14
84#define WDTCR_WDEN_DISABLE 0x0
85#define WDTCR_WDEN_ENABLE 0x1
86#define WDTCR_WDKEY_SHIFT 16
87#define WDTCR_WDKEY_SEQ0 0xa5c6
88#define WDTCR_WDKEY_SEQ1 0xda7e
89
90struct timer_s { 83struct timer_s {
91 char *name; 84 char *name;
92 unsigned int id; 85 unsigned int id;
@@ -409,53 +402,3 @@ void __init davinci_timer_init(void)
409 for (i=0; i< ARRAY_SIZE(timers); i++) 402 for (i=0; i< ARRAY_SIZE(timers); i++)
410 timer32_config(&timers[i]); 403 timer32_config(&timers[i]);
411} 404}
412
413/* reset board using watchdog timer */
414void davinci_watchdog_reset(struct platform_device *pdev)
415{
416 u32 tgcr, wdtcr;
417 void __iomem *base;
418 struct clk *wd_clk;
419
420 base = ioremap(pdev->resource[0].start, SZ_4K);
421 if (WARN_ON(!base))
422 return;
423
424 wd_clk = clk_get(&pdev->dev, NULL);
425 if (WARN_ON(IS_ERR(wd_clk)))
426 return;
427 clk_prepare_enable(wd_clk);
428
429 /* disable, internal clock source */
430 __raw_writel(0, base + TCR);
431
432 /* reset timer, set mode to 64-bit watchdog, and unreset */
433 tgcr = 0;
434 __raw_writel(tgcr, base + TGCR);
435 tgcr = TGCR_TIMMODE_64BIT_WDOG << TGCR_TIMMODE_SHIFT;
436 tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) |
437 (TGCR_UNRESET << TGCR_TIM34RS_SHIFT);
438 __raw_writel(tgcr, base + TGCR);
439
440 /* clear counter and period regs */
441 __raw_writel(0, base + TIM12);
442 __raw_writel(0, base + TIM34);
443 __raw_writel(0, base + PRD12);
444 __raw_writel(0, base + PRD34);
445
446 /* put watchdog in pre-active state */
447 wdtcr = __raw_readl(base + WDTCR);
448 wdtcr = (WDTCR_WDKEY_SEQ0 << WDTCR_WDKEY_SHIFT) |
449 (WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
450 __raw_writel(wdtcr, base + WDTCR);
451
452 /* put watchdog in active state */
453 wdtcr = (WDTCR_WDKEY_SEQ1 << WDTCR_WDKEY_SHIFT) |
454 (WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
455 __raw_writel(wdtcr, base + WDTCR);
456
457 /* write an invalid value to the WDKEY field to trigger
458 * a watchdog reset */
459 wdtcr = 0x00004000;
460 __raw_writel(wdtcr, base + WDTCR);
461}