pata_isapnp: Polled devices
If a card has no IRQ then pass no interrupt handler but allow polled usage. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
22d5c760c8
commit
91e33d3109
1 changed files with 7 additions and 4 deletions
|
@ -75,13 +75,16 @@ static int isapnp_init_one(struct pnp_dev *idev, const struct pnp_device_id *dev
|
||||||
struct ata_host *host;
|
struct ata_host *host;
|
||||||
struct ata_port *ap;
|
struct ata_port *ap;
|
||||||
void __iomem *cmd_addr, *ctl_addr;
|
void __iomem *cmd_addr, *ctl_addr;
|
||||||
|
int irq = 0;
|
||||||
|
irq_handler_t handler = NULL;
|
||||||
|
|
||||||
if (pnp_port_valid(idev, 0) == 0)
|
if (pnp_port_valid(idev, 0) == 0)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* FIXME: Should selected polled PIO here not fail */
|
if (pnp_irq_valid(idev, 0)) {
|
||||||
if (pnp_irq_valid(idev, 0) == 0)
|
irq = pnp_irq(idev, 0);
|
||||||
return -ENODEV;
|
handler = ata_interrupt;
|
||||||
|
}
|
||||||
|
|
||||||
/* allocate host */
|
/* allocate host */
|
||||||
host = ata_host_alloc(&idev->dev, 1);
|
host = ata_host_alloc(&idev->dev, 1);
|
||||||
|
@ -115,7 +118,7 @@ static int isapnp_init_one(struct pnp_dev *idev, const struct pnp_device_id *dev
|
||||||
(unsigned long long)pnp_port_start(idev, 1));
|
(unsigned long long)pnp_port_start(idev, 1));
|
||||||
|
|
||||||
/* activate */
|
/* activate */
|
||||||
return ata_host_activate(host, pnp_irq(idev, 0), ata_interrupt, 0,
|
return ata_host_activate(host, irq, handler, 0,
|
||||||
&isapnp_sht);
|
&isapnp_sht);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue