lkml.org 
[lkml]   [2013]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 3/5] watchdog: davinci: add GET_TIMELEFT option support
    Date
    Currently, the davinci watchdog can be read while counting,
    so we can add ability to report the remaining time before
    the system will reboot.

    Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
    ---
    drivers/watchdog/davinci_wdt.c | 26 ++++++++++++++++++++++++++
    1 file changed, 26 insertions(+)

    diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c
    index b6b82d1d..cd6ff9d 100644
    --- a/drivers/watchdog/davinci_wdt.c
    +++ b/drivers/watchdog/davinci_wdt.c
    @@ -116,6 +116,31 @@ static int davinci_wdt_ping(struct watchdog_device *wdd)
    return 0;
    }

    +static unsigned int davinci_wdt_get_timeleft(struct watchdog_device *wdd)
    +{
    + u64 timer_counter;
    + unsigned long freq;
    + u32 val;
    + struct davinci_wdt_device *davinci_wdt = watchdog_get_drvdata(wdd);
    +
    + /* if timeout has occured then return 0 */
    + val = ioread32(davinci_wdt->base + WDTCR);
    + if (val & WDFLAG)
    + return 0;
    +
    + freq = clk_get_rate(davinci_wdt->clk);
    +
    + if (!freq)
    + return 0;
    +
    + timer_counter = ioread32(davinci_wdt->base + TIM12);
    + timer_counter |= ((u64)ioread32(davinci_wdt->base + TIM34) << 32);
    +
    + do_div(timer_counter, freq);
    +
    + return wdd->timeout - timer_counter;
    +}
    +
    static const struct watchdog_info davinci_wdt_info = {
    .options = WDIOF_KEEPALIVEPING,
    .identity = "DaVinci Watchdog",
    @@ -126,6 +151,7 @@ static const struct watchdog_ops davinci_wdt_ops = {
    .start = davinci_wdt_start,
    .stop = davinci_wdt_ping,
    .ping = davinci_wdt_ping,
    + .get_timeleft = davinci_wdt_get_timeleft,
    };

    static int davinci_wdt_probe(struct platform_device *pdev)
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2013-12-04 21:41    [W:3.564 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site