• Fabio Estevam's avatar
    ls102xa: Fix reset hang · f861f51c
    Fabio Estevam authored
    Since commit 623d96e8("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 623d96e8
    
    ("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: default avatarSinan Akman <sinan@writeme.com>
    Tested-by: default avatarSinan Akman <sinan@writeme.com>
    Reviewed-by: default avatarWolfgang Denk <wd@denx.de>
    Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
    f861f51c