Convert at91 watchdog driver to new SoC access
This converts the at91 watchdog driver to new c structure type to access registers of the SoC Signed-off-by: Achim Ehrlich <aehrlich@taskit.de>
This commit is contained in:
parent
c9f72b3da8
commit
f936aa0528
@ -42,11 +42,10 @@
|
|||||||
static int at91_wdt_settimeout(unsigned int timeout)
|
static int at91_wdt_settimeout(unsigned int timeout)
|
||||||
{
|
{
|
||||||
unsigned int reg;
|
unsigned int reg;
|
||||||
unsigned int mr;
|
at91_wdt_t *wd = (at91_wdt_t *) AT91_WDT_BASE;
|
||||||
|
|
||||||
/* Check if disabled */
|
/* Check if disabled */
|
||||||
mr = at91_sys_read(AT91_WDT_MR);
|
if (readl(&wd->mr) & AT91_WDT_MR_WDDIS) {
|
||||||
if (mr & AT91_WDT_WDDIS) {
|
|
||||||
printf("sorry, watchdog is disabled\n");
|
printf("sorry, watchdog is disabled\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -57,19 +56,21 @@ static int at91_wdt_settimeout(unsigned int timeout)
|
|||||||
* Since WDV is a 12-bit counter, the maximum period is
|
* Since WDV is a 12-bit counter, the maximum period is
|
||||||
* 4096 / 256 = 16 seconds.
|
* 4096 / 256 = 16 seconds.
|
||||||
*/
|
*/
|
||||||
reg = AT91_WDT_WDRSTEN /* causes watchdog reset */
|
|
||||||
/* | AT91_WDT_WDRPROC causes processor reset only */
|
reg = AT91_WDT_MR_WDRSTEN /* causes watchdog reset */
|
||||||
| AT91_WDT_WDDBGHLT /* disabled in debug mode */
|
| AT91_WDT_MR_WDDBGHLT /* disabled in debug mode */
|
||||||
| AT91_WDT_WDD /* restart at any time */
|
| AT91_WDT_MR_WDD(0xfff) /* restart at any time */
|
||||||
| (timeout & AT91_WDT_WDV); /* timer value */
|
| AT91_WDT_MR_WDV(timeout); /* timer value */
|
||||||
at91_sys_write(AT91_WDT_MR, reg);
|
|
||||||
|
writel(reg, &wd->mr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hw_watchdog_reset(void)
|
void hw_watchdog_reset(void)
|
||||||
{
|
{
|
||||||
at91_sys_write(AT91_WDT_CR, AT91_WDT_KEY | AT91_WDT_WDRSTT);
|
at91_wdt_t *wd = (at91_wdt_t *) AT91_WDT_BASE;
|
||||||
|
writel(AT91_WDT_CR_WDRSTT | AT91_WDT_CR_KEY, &wd->cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hw_watchdog_init(void)
|
void hw_watchdog_init(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user