watchdog: sp805: Set watchdog_device->timeout from ->set_timeout()
authorViresh Kumar <viresh.kumar@linaro.org>
Thu, 15 May 2014 04:31:59 +0000 (10:01 +0530)
committerWim Van Sebroeck <wim@iguana.be>
Tue, 10 Jun 2014 19:47:47 +0000 (21:47 +0200)
Implementation of ->set_timeout() is supposed to set 'timeout' field of 'struct
watchdog_device' passed to it. sp805 was rather setting this in a local
variable. Fix it.

Reported-by: Arun Ramamurthy <arun.ramamurthy@broadcom.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Cc: <stable@vger.kernel.org> # 2.6.36+
drivers/watchdog/sp805_wdt.c

index 47629d2..c1b03f4 100644 (file)
@@ -59,7 +59,6 @@
  * @adev: amba device structure of wdt
  * @status: current status of wdt
  * @load_val: load value to be set for current timeout
- * @timeout: current programmed timeout
  */
 struct sp805_wdt {
        struct watchdog_device          wdd;
@@ -68,7 +67,6 @@ struct sp805_wdt {
        struct clk                      *clk;
        struct amba_device              *adev;
        unsigned int                    load_val;
-       unsigned int                    timeout;
 };
 
 static bool nowayout = WATCHDOG_NOWAYOUT;
@@ -98,7 +96,7 @@ static int wdt_setload(struct watchdog_device *wdd, unsigned int timeout)
        spin_lock(&wdt->lock);
        wdt->load_val = load;
        /* roundup timeout to closest positive integer value */
-       wdt->timeout = div_u64((load + 1) * 2 + (rate / 2), rate);
+       wdd->timeout = div_u64((load + 1) * 2 + (rate / 2), rate);
        spin_unlock(&wdt->lock);
 
        return 0;