• Doug Anderson's avatar
    watchdog: dw_wdt: pat the watchdog before enabling it · a0085010
    Doug Anderson authored
    On some dw_wdt implementations the "top" register may be initted to 0
    at bootup.  In such a case, each "pat" of the watchdog will reset the
    timer to 0xffff.  That's pretty short.
    
    The input clock of the wdt can be any of a wide range of values.  On
    an rk3288 system, I've seen the wdt clock be 24.75 MHz.  That means
    each tick is ~40ns and we'll count to 0xffff in ~2.6ms.
    
    Because of the above two facts, it's a really good idea to pat the
    watchdog after initting the "top" register properly and before
    enabling the watchdog.  If you don't then there's no way we'll get the
    next heartbeat in time.
    
    Jisheng Zhang fixed this problem on some dw_wdt versions by using the
    TOP_INIT feature.  However, the dw_wdt on rk3288 doesn't have TOP_INIT
    so it's a good idea to also pat the watchdog manually.
    Signed-off-by: default avatarDoug Anderson <dianders@chromium.org>
    Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
    a0085010
dw_wdt.c 9.55 KB