| From 4ca02479ef3dc5e71d93398617750e64823f955f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 12 Aug 2021 23:35:09 +0300 |
| Subject: i2c: iop3xx: fix deferred probing |
| |
| From: Sergey Shtylyov <s.shtylyov@omp.ru> |
| |
| [ Upstream commit a1299505162ad00def3573260c2c68b9c8e8d697 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/i2c/busses/i2c-iop3xx.c | 6 ++---- |
| 1 file changed, 2 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/i2c/busses/i2c-iop3xx.c b/drivers/i2c/busses/i2c-iop3xx.c |
| index 2f8b8050a223..899624721c1e 100644 |
| --- a/drivers/i2c/busses/i2c-iop3xx.c |
| +++ b/drivers/i2c/busses/i2c-iop3xx.c |
| @@ -467,16 +467,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; |
| -- |
| 2.30.2 |
| |