Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 938626d9 authored by Viresh Kumar's avatar Viresh Kumar Committed by Wim Van Sebroeck
Browse files

watchdog: sp805: Set watchdog_device->timeout from ->set_timeout()



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: default avatarArun Ramamurthy <arun.ramamurthy@broadcom.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
Cc: <stable@vger.kernel.org> # 2.6.36+
parent d2deebab
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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;