aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/libata-core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index ec3ce120a517..89fd0e9ed746 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -7178,6 +7178,10 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
7178 * request IRQ and register it. This helper takes necessasry 7178 * request IRQ and register it. This helper takes necessasry
7179 * arguments and performs the three steps in one go. 7179 * arguments and performs the three steps in one go.
7180 * 7180 *
7181 * An invalid IRQ skips the IRQ registration and expects the host to
7182 * have set polling mode on the port. In this case, @irq_handler
7183 * should be NULL.
7184 *
7181 * LOCKING: 7185 * LOCKING:
7182 * Inherited from calling layer (may sleep). 7186 * Inherited from calling layer (may sleep).
7183 * 7187 *
@@ -7194,6 +7198,12 @@ int ata_host_activate(struct ata_host *host, int irq,
7194 if (rc) 7198 if (rc)
7195 return rc; 7199 return rc;
7196 7200
7201 /* Special case for polling mode */
7202 if (!irq) {
7203 WARN_ON(irq_handler);
7204 return ata_host_register(host, sht);
7205 }
7206
7197 rc = devm_request_irq(host->dev, irq, irq_handler, irq_flags, 7207 rc = devm_request_irq(host->dev, irq, irq_handler, irq_flags,
7198 dev_driver_string(host->dev), host); 7208 dev_driver_string(host->dev), host);
7199 if (rc) 7209 if (rc)