
On Wed, Sep 30, 2015 at 3:33 PM, Sinan Akman sinan@writeme.com wrote:
Nope, AFAICS it doesn't make any difference.
Ok, the issue is due to endianness: on LS1021 the watchdog is big-endian, so that's why we can't use clrsetbits_le16().
Please check: http://git.freescale.com/git/cgit.cgi/layerscape/ls1021a/linux.git/commit/?i...
What about this?
--- a/drivers/watchdog/imx_watchdog.c +++ b/drivers/watchdog/imx_watchdog.c @@ -54,8 +54,11 @@ void hw_watchdog_init(void) void reset_cpu(ulong addr) { struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR; + int reg;
- clrsetbits_le16(&wdog->wcr, 0, WCR_WDE); + reg = readw(&wdog->wcr); + reg |= WCR_WDE; + writew(reg, &wdog->wcr);
writew(0x5555, &wdog->wsr); writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout */