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>
This commit is contained in:
Artem Lytkin
2026-02-16 20:20:11 +00:00
committed by Greg Kroah-Hartman
parent 6edec96a66
commit b8232ea5d1

View File

@@ -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);