lkml.org 
[lkml]   [2019]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 065/135] watchdog: pm8916_wdt: fix pretimeout registration flow
    Date
    From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>

    [ Upstream commit 1993f1d7ca3f315e0459c58c8e7038039a96dd85 ]

    When an IRQ is present in the dts, the probe function shall fail if
    the interrupt can not be registered.

    The probe function shall also be retried if getting the irq is being
    deferred.

    Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
    Reviewed-by: Loic Poulain <loic.poulain@linaro.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/watchdog/pm8916_wdt.c | 15 +++++++++++----
    1 file changed, 11 insertions(+), 4 deletions(-)

    diff --git a/drivers/watchdog/pm8916_wdt.c b/drivers/watchdog/pm8916_wdt.c
    index 2d3652004e39c..1213179f863c2 100644
    --- a/drivers/watchdog/pm8916_wdt.c
    +++ b/drivers/watchdog/pm8916_wdt.c
    @@ -163,9 +163,17 @@ static int pm8916_wdt_probe(struct platform_device *pdev)

    irq = platform_get_irq(pdev, 0);
    if (irq > 0) {
    - if (devm_request_irq(dev, irq, pm8916_wdt_isr, 0, "pm8916_wdt",
    - wdt))
    - irq = 0;
    + err = devm_request_irq(dev, irq, pm8916_wdt_isr, 0,
    + "pm8916_wdt", wdt);
    + if (err)
    + return err;
    +
    + wdt->wdev.info = &pm8916_wdt_pt_ident;
    + } else {
    + if (irq == -EPROBE_DEFER)
    + return -EPROBE_DEFER;
    +
    + wdt->wdev.info = &pm8916_wdt_ident;
    }

    /* Configure watchdog to hard-reset mode */
    @@ -177,7 +185,6 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
    return err;
    }

    - wdt->wdev.info = (irq > 0) ? &pm8916_wdt_pt_ident : &pm8916_wdt_ident,
    wdt->wdev.ops = &pm8916_wdt_ops,
    wdt->wdev.parent = dev;
    wdt->wdev.min_timeout = PM8916_WDT_MIN_TIMEOUT;
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-04 00:11    [W:4.137 / U:1.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site