summaryrefslogtreecommitdiffstats
path: root/drivers/ata/acard-ahci.c
diff options
context:
space:
mode:
authorRobert Richter <rrichter@cavium.com>2015-05-31 13:55:18 +0200
committerTejun Heo <tj@kernel.org>2015-06-03 07:37:49 +0200
commit21bfd1aa9527811408d6073d45e5ac8283a28b72 (patch)
tree0a7320b2bfebf9e567175c1e4b86bd95f81d7238 /drivers/ata/acard-ahci.c
parentahci: Move interrupt enablement code to a separate function (diff)
downloadlinux-21bfd1aa9527811408d6073d45e5ac8283a28b72.tar.xz
linux-21bfd1aa9527811408d6073d45e5ac8283a28b72.zip
ahci: Store irq number in struct ahci_host_priv
Currently, ahci supports only msi and intx. To also support msix the handling of the irq number need to be changed. The irq number for msix devices is taken from msi_list instead of pci_dev. Thus, the irq number of a device needs to be stored in struct ahci_host_priv now. This allows the host controller to be activated in a generic way. This change is only intended for ahci drivers. For that reason the irq number is stored in struct ahci_host_priv used only by ahci drivers. Thus, the ABI changes only for ahci_host_activate(), but existing ata drivers (about 50) are unaffected and keep unchanged. All users of ahci_host_activate() have been updated. While touching drivers/ata/libahci.c, doing a small code cleanup in ahci_port_start(). Signed-off-by: Robert Richter <rrichter@cavium.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata/acard-ahci.c')
-rw-r--r--drivers/ata/acard-ahci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/ata/acard-ahci.c b/drivers/ata/acard-ahci.c
index 12489ce863c4..ed6a30cd681a 100644
--- a/drivers/ata/acard-ahci.c
+++ b/drivers/ata/acard-ahci.c
@@ -433,6 +433,8 @@ static int acard_ahci_init_one(struct pci_dev *pdev, const struct pci_device_id
hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL);
if (!hpriv)
return -ENOMEM;
+
+ hpriv->irq = pdev->irq;
hpriv->flags |= (unsigned long)pi.private_data;
if (!(hpriv->flags & AHCI_HFLAG_NO_MSI))
@@ -498,7 +500,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 ahci_host_activate(host, pdev->irq, &acard_ahci_sht);
+ return ahci_host_activate(host, &acard_ahci_sht);
}
module_pci_driver(acard_ahci_pci_driver);