• Nick Bowler's avatar
    watchdog: sp805: Don't write 0 to the load value register. · da3e5150
    Nick Bowler authored
    At least on the Versatile Express' V2M, calling wdt_disable followed by
    wdt_enable, for instance by running the following sequence:
    
      echo V > /dev/watchdog; echo V > /dev/watchdog
    
    results in an immediate reset.  The wdt_disable function writes 0 to the
    load register; while the watchdog interrupts are disabled at this point,
    this special value is defined to trigger an interrupt immediately.  It
    appears that in this instance, the reset happens when the interrupts
    are subsequently enabled by wdt_enable.
    
    Putting in a short delay after writing a new load value in wdt_enable
    solves the issue, but it seems cleaner to simply never write 0 to the
    load register at all: according to the hardware docs, writing 0 to the
    control register suffices to stop the counter, and the write of 0 to
    the load register is questionable anyway since this register resets to
    0xffffffff.
    Signed-off-by: default avatarNick Bowler <nbowler@elliptictech.com>
    Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
    da3e5150
sp805_wdt.c 8.49 KB