diff options
author | Sergey Shtylyov <s.shtylyov@omp.ru> | 2021-08-12 23:35:09 +0300 |
---|---|---|
committer | Wolfram Sang <wsa@kernel.org> | 2021-08-19 19:18:17 +0200 |
commit | a1299505162ad00def3573260c2c68b9c8e8d697 (patch) | |
tree | 48017b34f387db6f3cbe4bcdb9680ab771062adb | |
parent | 8d744da241b81f4211f4813b0d3c1981326fa9ca (diff) | |
download | linux-a1299505162ad00def3573260c2c68b9c8e8d697.tar.gz linux-a1299505162ad00def3573260c2c68b9c8e8d697.tar.bz2 linux-a1299505162ad00def3573260c2c68b9c8e8d697.zip |
i2c: iop3xx: fix deferred probing
When adding the code to handle platform_get_irq*() errors in the commit
489447380a29 ("handle errors returned by platform_get_irq*()"), the
actual error code was enforced to be -ENXIO in the driver for some
strange reason. This didn't matter much until the deferred probing was
introduced -- which requires an actual error code to be propagated
upstream from the failure site.
While fixing this, also stop overriding the errors from request_irq() to
-EIO (done since the pre-git era).
Fixes: 489447380a29 ("[PATCH] handle errors returned by platform_get_irq*()")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
-rw-r--r-- | drivers/i2c/busses/i2c-iop3xx.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-iop3xx.c b/drivers/i2c/busses/i2c-iop3xx.c index cfecaf18ccbb..4a6ff54d87fe 100644 --- a/drivers/i2c/busses/i2c-iop3xx.c +++ b/drivers/i2c/busses/i2c-iop3xx.c @@ -469,16 +469,14 @@ iop3xx_i2c_probe(struct platform_device *pdev) irq = platform_get_irq(pdev, 0); if (irq < 0) { - ret = -ENXIO; + ret = irq; goto unmap; } ret = request_irq(irq, iop3xx_i2c_irq_handler, 0, pdev->name, adapter_data); - if (ret) { - ret = -EIO; + if (ret) goto unmap; - } memcpy(new_adapter->name, pdev->name, strlen(pdev->name)); new_adapter->owner = THIS_MODULE; |