AHCI: Move host activation code into ahci_host_activate()
authorAlexander Gordeev <agordeev@redhat.com>
Mon, 29 Sep 2014 16:25:59 +0000 (18:25 +0200)
committerTejun Heo <tj@kernel.org>
Mon, 6 Oct 2014 15:43:35 +0000 (11:43 -0400)
Currently host activation done by calling either function
ahci_host_activate() or ata_host_activate(). Consolidate
the code by only calling ahci_host_activate() for all AHCI
devices.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: linux-ide@vger.kernel.org
drivers/ata/acard-ahci.c
drivers/ata/ahci.c
drivers/ata/ahci.h
drivers/ata/libahci.c
drivers/ata/libahci_platform.c
drivers/ata/sata_highbank.c

index 25d0ac32e7215ce85b6776405ef32c24eb32a191..c962886d7e7149fdde2c7ecda9ecf68ab04379ce 100644 (file)
@@ -498,8 +498,7 @@ static int acard_ahci_init_one(struct pci_dev *pdev, const struct pci_device_id
        acard_ahci_pci_print_info(host);
 
        pci_set_master(pdev);
-       return ata_host_activate(host, pdev->irq, ahci_interrupt, IRQF_SHARED,
-                                &acard_ahci_sht);
+       return ahci_host_activate(host, pdev->irq, &acard_ahci_sht);
 }
 
 module_pci_driver(acard_ahci_pci_driver);
index 0b2160457046e7b58c2196a9c43b6fadb04860f9..d0ac38bd2d5155d7a6dfe22632fc30920374c37e 100644 (file)
@@ -1427,11 +1427,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        pci_set_master(pdev);
 
-       if (hpriv->flags & AHCI_HFLAG_MULTI_MSI)
-               return ahci_host_activate(host, pdev->irq, &ahci_sht);
-
-       return ata_host_activate(host, pdev->irq, ahci_interrupt, IRQF_SHARED,
-                                &ahci_sht);
+       return ahci_host_activate(host, pdev->irq, &ahci_sht);
 }
 
 module_pci_driver(ahci_pci_driver);
index 31b4c44e3f71078be4589fc2d9f1906c55701ade..6a22055151f0bf66bf9b3c9c421811f91082e58f 100644 (file)
@@ -388,9 +388,6 @@ int ahci_port_resume(struct ata_port *ap);
 void ahci_set_em_messages(struct ahci_host_priv *hpriv,
                          struct ata_port_info *pi);
 int ahci_reset_em(struct ata_host *host);
-irqreturn_t ahci_interrupt(int irq, void *dev_instance);
-irqreturn_t ahci_hw_interrupt(int irq, void *dev_instance);
-irqreturn_t ahci_thread_fn(int irq, void *dev_instance);
 void ahci_print_info(struct ata_host *host, const char *scc_s);
 int ahci_host_activate(struct ata_host *host, int irq,
                       struct scsi_host_template *sht);
index 21bb427d9df425c1d7e84077a81283abae49c47b..0080551f6e332d484d66ff441bc72a5b0ee7ca2a 100644 (file)
@@ -1789,7 +1789,7 @@ static void ahci_port_intr(struct ata_port *ap)
        ahci_handle_port_interrupt(ap, port_mmio, status);
 }
 
-irqreturn_t ahci_thread_fn(int irq, void *dev_instance)
+static irqreturn_t ahci_thread_fn(int irq, void *dev_instance)
 {
        struct ata_port *ap = dev_instance;
        struct ahci_port_priv *pp = ap->private_data;
@@ -1809,7 +1809,6 @@ irqreturn_t ahci_thread_fn(int irq, void *dev_instance)
 
        return IRQ_HANDLED;
 }
-EXPORT_SYMBOL_GPL(ahci_thread_fn);
 
 static void ahci_hw_port_interrupt(struct ata_port *ap)
 {
@@ -1823,7 +1822,7 @@ static void ahci_hw_port_interrupt(struct ata_port *ap)
        pp->intr_status |= status;
 }
 
-irqreturn_t ahci_hw_interrupt(int irq, void *dev_instance)
+static irqreturn_t ahci_hw_interrupt(int irq, void *dev_instance)
 {
        struct ata_port *ap_this = dev_instance;
        struct ahci_port_priv *pp = ap_this->private_data;
@@ -1877,9 +1876,8 @@ irqreturn_t ahci_hw_interrupt(int irq, void *dev_instance)
 
        return IRQ_WAKE_THREAD;
 }
-EXPORT_SYMBOL_GPL(ahci_hw_interrupt);
 
-irqreturn_t ahci_interrupt(int irq, void *dev_instance)
+static irqreturn_t ahci_interrupt(int irq, void *dev_instance)
 {
        struct ata_host *host = dev_instance;
        struct ahci_host_priv *hpriv;
@@ -1938,7 +1936,6 @@ irqreturn_t ahci_interrupt(int irq, void *dev_instance)
 
        return IRQ_RETVAL(handled);
 }
-EXPORT_SYMBOL_GPL(ahci_interrupt);
 
 unsigned int ahci_qc_issue(struct ata_queued_cmd *qc)
 {
@@ -2472,24 +2469,8 @@ void ahci_set_em_messages(struct ahci_host_priv *hpriv,
 }
 EXPORT_SYMBOL_GPL(ahci_set_em_messages);
 
-/**
- *     ahci_host_activate - start AHCI host, request IRQs and register it
- *     @host: target ATA host
- *     @irq: base IRQ number to request
- *     @sht: scsi_host_template to use when registering the host
- *
- *     Similar to ata_host_activate, but requests IRQs according to AHCI-1.1
- *     when multiple MSIs were allocated. That is one MSI per port, starting
- *     from @irq.
- *
- *     LOCKING:
- *     Inherited from calling layer (may sleep).
- *
- *     RETURNS:
- *     0 on success, -errno otherwise.
- */
-int ahci_host_activate(struct ata_host *host, int irq,
-                      struct scsi_host_template *sht)
+static int ahci_host_activate_multi_irqs(struct ata_host *host, int irq,
+                                        struct scsi_host_template *sht)
 {
        int i, rc;
 
@@ -2531,6 +2512,36 @@ out_free_irqs:
 
        return rc;
 }
+
+/**
+ *     ahci_host_activate - start AHCI host, request IRQs and register it
+ *     @host: target ATA host
+ *     @irq: base IRQ number to request
+ *     @sht: scsi_host_template to use when registering the host
+ *
+ *     Similar to ata_host_activate, but requests IRQs according to AHCI-1.1
+ *     when multiple MSIs were allocated. That is one MSI per port, starting
+ *     from @irq.
+ *
+ *     LOCKING:
+ *     Inherited from calling layer (may sleep).
+ *
+ *     RETURNS:
+ *     0 on success, -errno otherwise.
+ */
+int ahci_host_activate(struct ata_host *host, int irq,
+                      struct scsi_host_template *sht)
+{
+       struct ahci_host_priv *hpriv = host->private_data;
+       int rc;
+
+       if (hpriv->flags & AHCI_HFLAG_MULTI_MSI)
+               rc = ahci_host_activate_multi_irqs(host, irq, sht);
+       else
+               rc = ata_host_activate(host, irq, ahci_interrupt,
+                                      IRQF_SHARED, sht);
+       return rc;
+}
 EXPORT_SYMBOL_GPL(ahci_host_activate);
 
 MODULE_AUTHOR("Jeff Garzik");
index c7f787e9939b15bbb4fe6168068be3abbff3f0ac..0b03f90566924182e4c0411a798c66837d4530ac 100644 (file)
@@ -493,8 +493,7 @@ int ahci_platform_init_host(struct platform_device *pdev,
        ahci_init_controller(host);
        ahci_print_info(host, "platform");
 
-       return ata_host_activate(host, irq, ahci_interrupt, IRQF_SHARED,
-                                &ahci_platform_sht);
+       return ahci_host_activate(host, irq, &ahci_platform_sht);
 }
 EXPORT_SYMBOL_GPL(ahci_platform_init_host);
 
index da3bc2709c6318671c0d485751416f48fe973b68..ce2b99a1ed70211bfe54818e3510df8b8b71a4de 100644 (file)
@@ -568,8 +568,7 @@ static int ahci_highbank_probe(struct platform_device *pdev)
        ahci_init_controller(host);
        ahci_print_info(host, "platform");
 
-       rc = ata_host_activate(host, irq, ahci_interrupt, 0,
-                                       &ahci_highbank_platform_sht);
+       rc = ahci_host_activate(host, irq, &ahci_highbank_platform_sht);
        if (rc)
                goto err0;