lkml.org 
[lkml]   [2015]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRE: [PATCH V1 5/6] watchdog: da9062: DA9062 watchdog driver
    Date
    On 18 April 2015 16:53 Guenter Roeck wrote:

    Hi Guenter,

    There were some missing explanations in my previous e-mails for some of
    your comments. Please find them below.

    During the da9062_wdt_probe() there were several ignored error paths and
    a missing cleanup . I intend to rectify this with the following:

    --- a/linux-next/v4.0/drivers/watchdog/da9062_wdt.c
    +++ b/linux-next/v4.0/drivers/watchdog/da9062_wdt.c
    @@ -232,8 +232,11 @@ static int da9062_wdt_probe(struct platform_device *pdev)
    dev_set_drvdata(&pdev->dev, wdt);

    irq = platform_get_irq_byname(pdev, "WDG_WARN");
    - if (irq < 0)
    + if (irq < 0) {
    dev_err(wdt->hw->dev, "Failed to get IRQ.\n");
    + ret = irq;
    + goto error;
    + }

    ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
    da9062_wdt_wdg_warn_irq_handler,
    @@ -242,20 +245,23 @@ static int da9062_wdt_probe(struct platform_device *pdev)
    if (ret) {
    dev_err(wdt->hw->dev,
    "Failed to request watchdog device IRQ.\n");
    + goto error;
    }

    ret = watchdog_register_device(&wdt->wdtdev);
    - if (ret < 0)
    + if (ret < 0) {
    dev_err(wdt->hw->dev,
    "watchdog registration incomplete (%d)\n", ret);
    + goto error;
    + }

    da9062_set_window_start(wdt);

    ret = da9062_wdt_ping(&wdt->wdtdev);
    if (ret < 0)
    - dev_err(wdt->hw->dev,
    - "failed to ping the watchdog (%d)\n", ret);
    + watchdog_unregister_device(&wdt->wdtdev);

    +error:
    return ret;
    }

    Also there was an explanation required for the confusing ping() function
    inside the driver probe() ...
    > > + da9062_wdt_ping(&wdt->wdtdev);
    [...]
    > That ping is asking for an explanation. Does it imply that the watchdog is
    > known to be running and cannot be stopped ?

    Pinging the DA9062 watchdog has no effect if it is disabled. But I guessed that
    in a real application if the watchdog -was- enabled from start-up then the first
    thing the driver needed to do was kick the watchdog.

    I could have put protection around it, say by reading the TWDSCALE bit for
    whether the watchdog was enabled, and that would have made it more explicit
    but in this case it wouldn't matter.

    This can be removed if you prefer.

    Regards,
    Steve


    \
     
     \ /
      Last update: 2015-05-08 16:21    [W:3.457 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site