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>
This commit is contained in:
parent
bdec5a6b57
commit
94f2e94514
@ -638,5 +638,4 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
|
|||||||
.init_machine = da830_evm_init,
|
.init_machine = da830_evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = da8xx_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -1481,6 +1481,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
|
|||||||
.init_machine = da850_evm_init,
|
.init_machine = da850_evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = da8xx_restart,
|
|
||||||
.reserve = da8xx_rproc_reserve_cma,
|
.reserve = da8xx_rproc_reserve_cma,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -431,5 +431,4 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
|
|||||||
.init_machine = dm355_evm_init,
|
.init_machine = dm355_evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -275,5 +275,4 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
|
|||||||
.init_machine = dm355_leopard_init,
|
.init_machine = dm355_leopard_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -778,6 +778,5 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
|
|||||||
.init_machine = dm365_evm_init,
|
.init_machine = dm365_evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
|
@ -832,5 +832,4 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
|
|||||||
.init_machine = davinci_evm_init,
|
.init_machine = davinci_evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -801,7 +801,6 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
|
|||||||
.init_machine = evm_init,
|
.init_machine = evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
|
MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
|
||||||
@ -812,6 +811,5 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
|
|||||||
.init_machine = evm_init,
|
.init_machine = evm_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
|
@ -570,5 +570,4 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
|
|||||||
.init_machine = mityomapl138_init,
|
.init_machine = mityomapl138_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = da8xx_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -231,5 +231,4 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
|
|||||||
.init_machine = davinci_ntosd2_init,
|
.init_machine = davinci_ntosd2_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -334,6 +334,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
|
|||||||
.init_machine = omapl138_hawk_init,
|
.init_machine = omapl138_hawk_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = da8xx_restart,
|
|
||||||
.reserve = da8xx_rproc_reserve_cma,
|
.reserve = da8xx_rproc_reserve_cma,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -154,5 +154,4 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
|
|||||||
.init_machine = davinci_sffsdr_init,
|
.init_machine = davinci_sffsdr_init,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.dma_zone_size = SZ_128M,
|
.dma_zone_size = SZ_128M,
|
||||||
.restart = davinci_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -135,9 +135,6 @@ int davinci_clk_reset(struct clk *clk, bool reset);
|
|||||||
void davinci_clk_enable(struct clk *clk);
|
void davinci_clk_enable(struct clk *clk);
|
||||||
void davinci_clk_disable(struct clk *clk);
|
void davinci_clk_disable(struct clk *clk);
|
||||||
|
|
||||||
extern struct platform_device davinci_wdt_device;
|
|
||||||
extern void davinci_watchdog_reset(struct platform_device *);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -100,7 +100,6 @@ DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
|
|||||||
.init_machine = da850_init_machine,
|
.init_machine = da850_init_machine,
|
||||||
.dt_compat = da850_boards_compat,
|
.dt_compat = da850_boards_compat,
|
||||||
.init_late = davinci_init_late,
|
.init_late = davinci_init_late,
|
||||||
.restart = da8xx_restart,
|
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -370,19 +370,6 @@ static struct platform_device da8xx_wdt_device = {
|
|||||||
.resource = da8xx_watchdog_resources,
|
.resource = da8xx_watchdog_resources,
|
||||||
};
|
};
|
||||||
|
|
||||||
void da8xx_restart(enum reboot_mode mode, const char *cmd)
|
|
||||||
{
|
|
||||||
struct device *dev;
|
|
||||||
|
|
||||||
dev = bus_find_device_by_name(&platform_bus_type, NULL, "davinci-wdt");
|
|
||||||
if (!dev) {
|
|
||||||
pr_err("%s: failed to find watchdog device\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
davinci_watchdog_reset(to_platform_device(dev));
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init da8xx_register_watchdog(void)
|
int __init da8xx_register_watchdog(void)
|
||||||
{
|
{
|
||||||
return platform_device_register(&da8xx_wdt_device);
|
return platform_device_register(&da8xx_wdt_device);
|
||||||
|
@ -282,18 +282,13 @@ static struct resource wdt_resources[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
struct platform_device davinci_wdt_device = {
|
static struct platform_device davinci_wdt_device = {
|
||||||
.name = "davinci-wdt",
|
.name = "davinci-wdt",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.num_resources = ARRAY_SIZE(wdt_resources),
|
.num_resources = ARRAY_SIZE(wdt_resources),
|
||||||
.resource = wdt_resources,
|
.resource = wdt_resources,
|
||||||
};
|
};
|
||||||
|
|
||||||
void davinci_restart(enum reboot_mode mode, const char *cmd)
|
|
||||||
{
|
|
||||||
davinci_watchdog_reset(&davinci_wdt_device);
|
|
||||||
}
|
|
||||||
|
|
||||||
int davinci_init_wdt(void)
|
int davinci_init_wdt(void)
|
||||||
{
|
{
|
||||||
return platform_device_register(&davinci_wdt_device);
|
return platform_device_register(&davinci_wdt_device);
|
||||||
|
@ -81,7 +81,6 @@ extern struct davinci_soc_info davinci_soc_info;
|
|||||||
|
|
||||||
extern void davinci_common_init(const struct davinci_soc_info *soc_info);
|
extern void davinci_common_init(const struct davinci_soc_info *soc_info);
|
||||||
extern void davinci_init_ide(void);
|
extern void davinci_init_ide(void);
|
||||||
void davinci_restart(enum reboot_mode mode, const char *cmd);
|
|
||||||
void davinci_init_late(void);
|
void davinci_init_late(void);
|
||||||
|
|
||||||
#ifdef CONFIG_DAVINCI_RESET_CLOCKS
|
#ifdef CONFIG_DAVINCI_RESET_CLOCKS
|
||||||
|
@ -119,7 +119,6 @@ int da850_register_vpif_display
|
|||||||
(struct vpif_display_config *display_config);
|
(struct vpif_display_config *display_config);
|
||||||
int da850_register_vpif_capture
|
int da850_register_vpif_capture
|
||||||
(struct vpif_capture_config *capture_config);
|
(struct vpif_capture_config *capture_config);
|
||||||
void da8xx_restart(enum reboot_mode mode, const char *cmd);
|
|
||||||
void da8xx_rproc_reserve_cma(void);
|
void da8xx_rproc_reserve_cma(void);
|
||||||
int da8xx_register_rproc(void);
|
int da8xx_register_rproc(void);
|
||||||
int da850_register_gpio(void);
|
int da850_register_gpio(void);
|
||||||
|
@ -80,13 +80,6 @@ enum {
|
|||||||
#define TGCR_UNRESET 0x1
|
#define TGCR_UNRESET 0x1
|
||||||
#define TGCR_RESET_MASK 0x3
|
#define TGCR_RESET_MASK 0x3
|
||||||
|
|
||||||
#define WDTCR_WDEN_SHIFT 14
|
|
||||||
#define WDTCR_WDEN_DISABLE 0x0
|
|
||||||
#define WDTCR_WDEN_ENABLE 0x1
|
|
||||||
#define WDTCR_WDKEY_SHIFT 16
|
|
||||||
#define WDTCR_WDKEY_SEQ0 0xa5c6
|
|
||||||
#define WDTCR_WDKEY_SEQ1 0xda7e
|
|
||||||
|
|
||||||
struct timer_s {
|
struct timer_s {
|
||||||
char *name;
|
char *name;
|
||||||
unsigned int id;
|
unsigned int id;
|
||||||
@ -409,53 +402,3 @@ void __init davinci_timer_init(void)
|
|||||||
for (i=0; i< ARRAY_SIZE(timers); i++)
|
for (i=0; i< ARRAY_SIZE(timers); i++)
|
||||||
timer32_config(&timers[i]);
|
timer32_config(&timers[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset board using watchdog timer */
|
|
||||||
void davinci_watchdog_reset(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
u32 tgcr, wdtcr;
|
|
||||||
void __iomem *base;
|
|
||||||
struct clk *wd_clk;
|
|
||||||
|
|
||||||
base = ioremap(pdev->resource[0].start, SZ_4K);
|
|
||||||
if (WARN_ON(!base))
|
|
||||||
return;
|
|
||||||
|
|
||||||
wd_clk = clk_get(&pdev->dev, NULL);
|
|
||||||
if (WARN_ON(IS_ERR(wd_clk)))
|
|
||||||
return;
|
|
||||||
clk_prepare_enable(wd_clk);
|
|
||||||
|
|
||||||
/* disable, internal clock source */
|
|
||||||
__raw_writel(0, base + TCR);
|
|
||||||
|
|
||||||
/* reset timer, set mode to 64-bit watchdog, and unreset */
|
|
||||||
tgcr = 0;
|
|
||||||
__raw_writel(tgcr, base + TGCR);
|
|
||||||
tgcr = TGCR_TIMMODE_64BIT_WDOG << TGCR_TIMMODE_SHIFT;
|
|
||||||
tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) |
|
|
||||||
(TGCR_UNRESET << TGCR_TIM34RS_SHIFT);
|
|
||||||
__raw_writel(tgcr, base + TGCR);
|
|
||||||
|
|
||||||
/* clear counter and period regs */
|
|
||||||
__raw_writel(0, base + TIM12);
|
|
||||||
__raw_writel(0, base + TIM34);
|
|
||||||
__raw_writel(0, base + PRD12);
|
|
||||||
__raw_writel(0, base + PRD34);
|
|
||||||
|
|
||||||
/* put watchdog in pre-active state */
|
|
||||||
wdtcr = __raw_readl(base + WDTCR);
|
|
||||||
wdtcr = (WDTCR_WDKEY_SEQ0 << WDTCR_WDKEY_SHIFT) |
|
|
||||||
(WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
|
|
||||||
__raw_writel(wdtcr, base + WDTCR);
|
|
||||||
|
|
||||||
/* put watchdog in active state */
|
|
||||||
wdtcr = (WDTCR_WDKEY_SEQ1 << WDTCR_WDKEY_SHIFT) |
|
|
||||||
(WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
|
|
||||||
__raw_writel(wdtcr, base + WDTCR);
|
|
||||||
|
|
||||||
/* write an invalid value to the WDKEY field to trigger
|
|
||||||
* a watchdog reset */
|
|
||||||
wdtcr = 0x00004000;
|
|
||||||
__raw_writel(wdtcr, base + WDTCR);
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user