mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling
Users report about the unexpected behavior for setting timeouts above 15 sec on Raspberry Pi. According to watchdog-api.rst the ioctl WDIOC_SETTIMEOUT shouldn't fail because of hardware limitations. But looking at the code shows that max_timeout based on the register value PM_WDOG_TIME_SET, which is the maximum. Since664a39236e
("watchdog: Introduce hardware maximum heartbeat in watchdog core") the watchdog core is able to handle this problem. This fix has been tested with watchdog-test from selftests. Link: https://bugzilla.kernel.org/show_bug.cgi?id=217374 Fixes:664a39236e
("watchdog: Introduce hardware maximum heartbeat in watchdog core") Signed-off-by: Stefan Wahren <wahrenst@gmx.net> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20231112173251.4827-1-wahrenst@gmx.net Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
This commit is contained in:
parent
91c437ea47
commit
f33f5b1fd1
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
|
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
|
||||||
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
|
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
|
||||||
|
#define WDOG_TICKS_TO_MSECS(x) ((x) * 1000 >> 16)
|
||||||
|
|
||||||
struct bcm2835_wdt {
|
struct bcm2835_wdt {
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
@ -140,7 +141,7 @@ static struct watchdog_device bcm2835_wdt_wdd = {
|
|||||||
.info = &bcm2835_wdt_info,
|
.info = &bcm2835_wdt_info,
|
||||||
.ops = &bcm2835_wdt_ops,
|
.ops = &bcm2835_wdt_ops,
|
||||||
.min_timeout = 1,
|
.min_timeout = 1,
|
||||||
.max_timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET),
|
.max_hw_heartbeat_ms = WDOG_TICKS_TO_MSECS(PM_WDOG_TIME_SET),
|
||||||
.timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET),
|
.timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user