lkml.org 
[lkml]   [2018]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 10/24] watchdog: jz4740: Avoid starting watchdog in set_timeout
    Date
    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@crapouillou.net>
    ---
    drivers/watchdog/jz4740_wdt.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    v6: New patch

    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
    \
     
     \ /
      Last update: 2018-08-09 23:46    [W:3.905 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site