
30 Sep
2015
30 Sep
'15
9:03 p.m.
On Wed, Sep 30, 2015 at 3:56 PM, Fabio Estevam festevam@gmail.com wrote:
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;
ops, this should be u16 instead.
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 */