mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
watchdog: qcom: Propagate errors from optional IRQ lookup
platform_get_irq_optional() returns a positive IRQ number on success or a negative error code on failure. For an optional IRQ, -ENXIO indicates that no IRQ is available, while other errors should be propagated. Instead of only checking for -EPROBE_DEFER, propagate all error codes returned by platform_get_irq_optional() other than -ENXIO, so that failures are properly reported to the caller. Signed-off-by: bui duc phuc <phucduc.bui@gmail.com> Link: https://lore.kernel.org/r/20260810105101.55945-1-phucduc.bui@gmail.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
1f3c3fa76d
commit
2bab791e56
|
|
@ -303,21 +303,22 @@ static int qcom_wdt_probe(struct platform_device *pdev)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
wdt->wdd.info = &qcom_wdt_info;
|
||||
|
||||
/* check if there is pretimeout support */
|
||||
irq = platform_get_irq_optional(pdev, 0);
|
||||
if (data->pretimeout && irq > 0) {
|
||||
ret = devm_request_irq(dev, irq, qcom_wdt_isr, 0,
|
||||
"wdt_bark", &wdt->wdd);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (data->pretimeout) {
|
||||
irq = platform_get_irq_optional(pdev, 0);
|
||||
if (irq < 0 && irq != -ENXIO)
|
||||
return irq;
|
||||
if (irq > 0) {
|
||||
ret = devm_request_irq(dev, irq, qcom_wdt_isr, 0,
|
||||
"wdt_bark", &wdt->wdd);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
wdt->wdd.info = &qcom_wdt_pt_info;
|
||||
wdt->wdd.pretimeout = 1;
|
||||
} else {
|
||||
if (irq == -EPROBE_DEFER)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
wdt->wdd.info = &qcom_wdt_info;
|
||||
wdt->wdd.info = &qcom_wdt_pt_info;
|
||||
wdt->wdd.pretimeout = 1;
|
||||
}
|
||||
}
|
||||
|
||||
wdt->wdd.ops = &qcom_wdt_ops;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user