summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Lytkin <iprintercanon@gmail.com>2026-02-16 20:20:11 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-02-23 15:44:44 +0100
commitb8232ea5d1612cde68563075bfaf2ead304b9cd5 (patch)
tree4c2d98928f12f9164885dca0c1d410cb62b67942
parent6edec96a66cac874e39e19c7f69ea042f90d7155 (diff)
staging: nvec: propagate error codes in tegra_nvec_probe()
Several error paths in tegra_nvec_probe() return -ENODEV instead of propagating the actual error code from the called function. This prevents probe deferral from working correctly when a dependency (clock, IRQ) is not yet available. Fix this for platform_get_irq(), devm_clk_get(), and devm_request_irq() by propagating their return values. Use dev_err_probe() for the latter two to suppress log messages during deferred probing. The remaining -ENODEV returns for missing device tree node and slave-addr property are left unchanged as those are permanent configuration errors unrelated to probe deferral. Signed-off-by: Artem Lytkin <iprintercanon@gmail.com> Link: https://patch.msgid.link/20260216202011.1806-1-iprintercanon@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/nvec/nvec.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index e9af66a08448..c6be750bee9d 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -811,13 +811,12 @@ static int tegra_nvec_probe(struct platform_device *pdev)
nvec->irq = platform_get_irq(pdev, 0);
if (nvec->irq < 0)
- return -ENODEV;
+ return nvec->irq;
i2c_clk = devm_clk_get(dev, "div-clk");
- if (IS_ERR(i2c_clk)) {
- dev_err(dev, "failed to get controller clock\n");
- return -ENODEV;
- }
+ if (IS_ERR(i2c_clk))
+ return dev_err_probe(dev, PTR_ERR(i2c_clk),
+ "failed to get controller clock\n");
nvec->rst = devm_reset_control_get_exclusive(dev, "i2c");
if (IS_ERR(nvec->rst)) {
@@ -849,10 +848,8 @@ static int tegra_nvec_probe(struct platform_device *pdev)
err = devm_request_irq(dev, nvec->irq, nvec_interrupt, IRQF_NO_AUTOEN,
"nvec", nvec);
- if (err) {
- dev_err(dev, "couldn't request irq\n");
- return -ENODEV;
- }
+ if (err)
+ return dev_err_probe(dev, err, "couldn't request irq\n");
tegra_init_i2c_slave(nvec);