Commit e379b40c authored by Sergey Shtylyov's avatar Sergey Shtylyov Committed by Jens Axboe

pata_ipx4xx_cf: fix IRQ check

The driver's probe() method is written as if platform_get_irq() returns 0
on error, while actually it returns a negative error code (with all the
other values considered valid IRQs).  Rewrite the driver's IRQ checking
code to pass the positive IRQ #s to ata_host_activate(), propagate errors
upstream, and treat IRQ0 as error, returning -EINVAL, as the libata code
treats 0  as  an indication that polling should be used anyway...

Fixes: 0df0d0a0 ("[libata] ARM: add ixp4xx PATA driver")
Signed-off-by: default avatarSergey Shtylyov <s.shtylyov@omprussia.ru>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent c7e8f404
...@@ -165,8 +165,12 @@ static int ixp4xx_pata_probe(struct platform_device *pdev) ...@@ -165,8 +165,12 @@ static int ixp4xx_pata_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
irq = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
if (irq) if (irq > 0)
irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING); irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
else if (irq < 0)
return irq;
else
return -EINVAL;
/* Setup expansion bus chip selects */ /* Setup expansion bus chip selects */
*data->cs0_cfg = data->cs0_bits; *data->cs0_cfg = data->cs0_bits;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment