| From bfa74d8ca0c8996789ba65229b4ebc0279c0a003 Mon Sep 17 00:00:00 2001 |
| From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Date: Sat, 24 Nov 2018 21:14:16 +0300 |
| Subject: sata_rcar: fix deferred probing |
| |
| [ Upstream commit 9f83cfdb1ace3ef268ecc6fda50058d2ec37d603 ] |
| |
| The driver overrides the error codes returned by platform_get_irq() to |
| -EINVAL, so if it returns -EPROBE_DEFER, the driver would fail the probe |
| permanently instead of the deferred probing. Switch to propagating the |
| error code upstream, still checking/overriding IRQ0 as libata regards it |
| as "no IRQ" (thus polling) anyway... |
| |
| Fixes: 9ec36cafe43b ("of/irq: do irq resolution in platform_get_irq") |
| Reviewed-by: Simon Horman <horms+renesas@verge.net.au> |
| Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/ata/sata_rcar.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c |
| index ea1fbc1d4c5f..e7e259a6c732 100644 |
| --- a/drivers/ata/sata_rcar.c |
| +++ b/drivers/ata/sata_rcar.c |
| @@ -879,7 +879,9 @@ static int sata_rcar_probe(struct platform_device *pdev) |
| int ret = 0; |
| |
| irq = platform_get_irq(pdev, 0); |
| - if (irq <= 0) |
| + if (irq < 0) |
| + return irq; |
| + if (!irq) |
| return -EINVAL; |
| |
| priv = devm_kzalloc(&pdev->dev, sizeof(struct sata_rcar_priv), |
| -- |
| 2.19.1 |
| |