|
@@ -7178,6 +7178,10 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht)
|
|
|
* request IRQ and register it. This helper takes necessasry
|
|
|
* arguments and performs the three steps in one go.
|
|
|
*
|
|
|
+ * An invalid IRQ skips the IRQ registration and expects the host to
|
|
|
+ * have set polling mode on the port. In this case, @irq_handler
|
|
|
+ * should be NULL.
|
|
|
+ *
|
|
|
* LOCKING:
|
|
|
* Inherited from calling layer (may sleep).
|
|
|
*
|
|
@@ -7194,6 +7198,12 @@ int ata_host_activate(struct ata_host *host, int irq,
|
|
|
if (rc)
|
|
|
return rc;
|
|
|
|
|
|
+ /* Special case for polling mode */
|
|
|
+ if (!irq) {
|
|
|
+ WARN_ON(irq_handler);
|
|
|
+ return ata_host_register(host, sht);
|
|
|
+ }
|
|
|
+
|
|
|
rc = devm_request_irq(host->dev, irq, irq_handler, irq_flags,
|
|
|
dev_driver_string(host->dev), host);
|
|
|
if (rc)
|