|
@@ -80,13 +80,6 @@ enum {
|
|
|
#define TGCR_UNRESET 0x1
|
|
|
#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 {
|
|
|
char *name;
|
|
|
unsigned int id;
|
|
@@ -409,53 +402,3 @@ void __init davinci_timer_init(void)
|
|
|
for (i=0; i< ARRAY_SIZE(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);
|
|
|
-}
|