lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 21 Aug 2018 19:16:21 +0200 From: Paul Cercueil <paul@...pouillou.net> To: Thomas Gleixner <tglx@...utronix.de>, Daniel Lezcano <daniel.lezcano@...aro.org>, Rob Herring <robh+dt@...nel.org>, Thierry Reding <thierry.reding@...il.com>, Mark Rutland <mark.rutland@....com>, Ralf Baechle <ralf@...ux-mips.org>, Paul Burton <paul.burton@...s.com>, Jonathan Corbet <corbet@....net> Cc: od@...c.me, Mathieu Malaterre <malat@...ian.org>, linux-pwm@...r.kernel.org, devicetree@...r.kernel.org, linux-kernel@...r.kernel.org, linux-watchdog@...r.kernel.org, linux-mips@...ux-mips.org, linux-doc@...r.kernel.org, linux-clk@...r.kernel.org, Paul Cercueil <paul@...pouillou.net> Subject: [PATCH v7 10/24] watchdog: jz4740: Avoid starting watchdog in set_timeout Previously the jz4740_wdt_set_timeout() function was starting the timer unconditionally, even if it was stopped when that function was entered. Now, the timer will be restarted only if it was already running before this function is called. Signed-off-by: Paul Cercueil <paul@...pouillou.net> Reviewed-by: Guenter Roeck <linux@...ck-us.net> --- Notes: v6: New patch v7: No change drivers/watchdog/jz4740_wdt.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/watchdog/jz4740_wdt.c b/drivers/watchdog/jz4740_wdt.c index 0f54306aee25..45d9495170e5 100644 --- a/drivers/watchdog/jz4740_wdt.c +++ b/drivers/watchdog/jz4740_wdt.c @@ -64,13 +64,15 @@ static int jz4740_wdt_set_timeout(struct watchdog_device *wdt_dev, { struct jz4740_wdt_drvdata *drvdata = watchdog_get_drvdata(wdt_dev); u16 timeout_value = (u16)(drvdata->clk_rate * new_timeout); + u32 tcer; + regmap_read(drvdata->map, TCU_REG_WDT_TCER, &tcer); regmap_write(drvdata->map, TCU_REG_WDT_TCER, 0); regmap_write(drvdata->map, TCU_REG_WDT_TDR, timeout_value); regmap_write(drvdata->map, TCU_REG_WDT_TCNT, 0); - regmap_write(drvdata->map, TCU_REG_WDT_TCER, TCU_WDT_TCER_TCEN); + regmap_write(drvdata->map, TCU_REG_WDT_TCER, tcer & TCU_WDT_TCER_TCEN); wdt_dev->timeout = new_timeout; return 0; @@ -86,6 +88,7 @@ static int jz4740_wdt_start(struct watchdog_device *wdt_dev) return ret; jz4740_wdt_set_timeout(wdt_dev, wdt_dev->timeout); + regmap_write(drvdata->map, TCU_REG_WDT_TCER, TCU_WDT_TCER_TCEN); return 0; } -- 2.11.0
Powered by blists - more mailing lists