| From 2bf44b21eaa550e24fc3062373727494d1f8fb7c Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 9 Aug 2021 18:20:31 +0200 |
| Subject: watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT |
| |
| From: Ahmad Fatoum <a.fatoum@pengutronix.de> |
| |
| [ Upstream commit 164483c735190775f29d0dcbac0363adc51a068d ] |
| |
| The fintek watchdog timer can configure timeouts of second granularity |
| only up to 255 seconds. Beyond that, the timeout needs to be configured |
| with minute granularity. WDIOC_GETTIMEOUT should report the actual |
| timeout configured, not just echo back the timeout configured by the |
| user. Do so. |
| |
| Fixes: 96cb4eb019ce ("watchdog: f71808e_wdt: new watchdog driver for Fintek F71808E and F71882FG") |
| Suggested-by: Guenter Roeck <linux@roeck-us.net> |
| Reviewed-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> |
| Link: https://lore.kernel.org/r/5e17960fe8cc0e3cb2ba53de4730b75d9a0f33d5.1628525954.git-series.a.fatoum@pengutronix.de |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/watchdog/f71808e_wdt.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c |
| index 893cef70c1599..aa57498009c34 100644 |
| --- a/drivers/watchdog/f71808e_wdt.c |
| +++ b/drivers/watchdog/f71808e_wdt.c |
| @@ -228,15 +228,17 @@ static int watchdog_set_timeout(int timeout) |
| |
| mutex_lock(&watchdog.lock); |
| |
| - watchdog.timeout = timeout; |
| if (timeout > 0xff) { |
| watchdog.timer_val = DIV_ROUND_UP(timeout, 60); |
| watchdog.minutes_mode = true; |
| + timeout = watchdog.timer_val * 60; |
| } else { |
| watchdog.timer_val = timeout; |
| watchdog.minutes_mode = false; |
| } |
| |
| + watchdog.timeout = timeout; |
| + |
| mutex_unlock(&watchdog.lock); |
| |
| return 0; |
| -- |
| 2.33.0 |
| |