Davinci: watchdog reset separation across socs
The earlier watchdog reset mechanism had a couple of limitations. First, it embedded a reference to "davinci_wdt_device" inside common code. This forced all derived platforms (da8xx and tnetv107x) to define such a device. This also would have caused problems in including multiple socs in a single build due to symbol redefinition. With this patch, davinci_watchdog_reset() now takes the platform device as an argument. The davinci_soc_info struct has been extended to include a reset function and a watchdog platform_device. arch_reset() then uses these elements to reset the system in a SoC specific fashion. Signed-off-by: Cyril Chemparathy <cyril@ti.com> Tested-by: Sandeep Paulraj <s-paulraj@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
committed by
Kevin Hilman
parent
5b3a05ca91
commit
c78a5bc2e7
@ -399,13 +399,16 @@ struct sys_timer davinci_timer = {
|
||||
|
||||
|
||||
/* reset board using watchdog timer */
|
||||
void davinci_watchdog_reset(void)
|
||||
void davinci_watchdog_reset(struct platform_device *pdev)
|
||||
{
|
||||
u32 tgcr, wdtcr;
|
||||
struct platform_device *pdev = &davinci_wdt_device;
|
||||
void __iomem *base = IO_ADDRESS(pdev->resource[0].start);
|
||||
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;
|
||||
|
Reference in New Issue
Block a user