On Wed, Sep 30, 2015 at 3:56 PM, Fabio Estevam <feste...@gmail.com> wrote: > On Wed, Sep 30, 2015 at 3:33 PM, Sinan Akman <si...@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/?id=b53a344d20f6ffdc383d990a9636efb53ce272a9 > > 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 */ _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot