u-boot/drivers/watchdog
Fabio Estevam f861f51c46 ls102xa: Fix reset hang
Since commit 623d96e89aca6("imx: wdog: correct wcr register settings")
issuing a 'reset' command causes the system to hang.

Unlike i.MX and Vybrid, the watchdog controller on LS102x is big-endian.

This means that the watchdog on LS1021 has been working by accident as
it does not use the big-endian accessors in drivers/watchdog/imx_watchdog.c.
Commit 623d96e89aca6("imx: wdog: correct wcr register settings") only
revelead the endianness problem on LS102x.

In order to fix the reset hang, introduce a reset_cpu() implementation that
is specific for ls102x, which accesses the watchdog WCR register in big-endian
format. All that is required to reset LS102x is to clear the SRS bit.

This approach is a temporary workaround to avoid a regression for LS102x
in the 2015.10 release. The proper fix is to make the watchdog driver
endian-aware, so that it can work for i.MX, Vybrid and LS102x.

Reported-by: Sinan Akman <sinan@writeme.com>
Tested-by: Sinan Akman <sinan@writeme.com>
Reviewed-by: Wolfgang Denk <wd@denx.de>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
2015-10-12 12:56:32 -04:00
..
at91sam9_wdt.c arm, at91, wdt: make timeout configurable 2015-02-07 23:43:20 +01:00
bfin_wdt.c blackfin: Fix warning about undefined function 2014-07-07 19:47:09 -04:00
designware_wdt.c watchdog/denali: Adding DesignWare watchdog driver support 2014-07-05 00:24:16 +02:00
ftwdt010_wdt.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
imx_watchdog.c imx_watchdog: Add a header file for watchdog registers 2015-10-12 12:56:26 -04:00
Kconfig kconfig: add blank Kconfig files 2014-09-24 18:30:28 -04:00
Makefile ls102xa: Fix reset hang 2015-10-12 12:56:32 -04:00
omap_wdt.c arm, am335x: add watchdog support 2013-08-28 11:44:59 -04:00
s5p_wdt.c Coding Style cleanup: remove trailing white space 2013-10-14 16:06:53 -04:00
xilinx_tb_wdt.c microblaze: Fix watchdog initialization 2013-10-16 09:24:38 -04:00