aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2014-12-03 15:05:30 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-12-04 11:35:02 -0500
commite9efa340c173ccfe641c50ed102f68237f825c2c (patch)
tree8a95848f32c74fe1d7c82b8340b1b3b8a049ec74
parent48fd818f008e1f1fcc630381efa3c06c6320d156 (diff)
brcmfmac: switch to single message MSI
Use single message MSI to replace legacy interrupt. Reviewed-by: Arend Van Spriel <arend@broadcom.com> Reviewed-by: Hante Meuleman <meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/pcie.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
index b87b727967ea..a66481976d5c 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
@@ -798,12 +798,14 @@ static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
798 brcmf_dbg(PCIE, "Enter\n"); 798 brcmf_dbg(PCIE, "Enter\n");
799 /* is it a v1 or v2 implementation */ 799 /* is it a v1 or v2 implementation */
800 devinfo->irq_requested = false; 800 devinfo->irq_requested = false;
801 pci_enable_msi(pdev);
801 if (devinfo->generic_corerev == BRCMF_PCIE_GENREV1) { 802 if (devinfo->generic_corerev == BRCMF_PCIE_GENREV1) {
802 if (request_threaded_irq(pdev->irq, 803 if (request_threaded_irq(pdev->irq,
803 brcmf_pcie_quick_check_isr_v1, 804 brcmf_pcie_quick_check_isr_v1,
804 brcmf_pcie_isr_thread_v1, 805 brcmf_pcie_isr_thread_v1,
805 IRQF_SHARED, "brcmf_pcie_intr", 806 IRQF_SHARED, "brcmf_pcie_intr",
806 devinfo)) { 807 devinfo)) {
808 pci_disable_msi(pdev);
807 brcmf_err("Failed to request IRQ %d\n", pdev->irq); 809 brcmf_err("Failed to request IRQ %d\n", pdev->irq);
808 return -EIO; 810 return -EIO;
809 } 811 }
@@ -813,6 +815,7 @@ static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
813 brcmf_pcie_isr_thread_v2, 815 brcmf_pcie_isr_thread_v2,
814 IRQF_SHARED, "brcmf_pcie_intr", 816 IRQF_SHARED, "brcmf_pcie_intr",
815 devinfo)) { 817 devinfo)) {
818 pci_disable_msi(pdev);
816 brcmf_err("Failed to request IRQ %d\n", pdev->irq); 819 brcmf_err("Failed to request IRQ %d\n", pdev->irq);
817 return -EIO; 820 return -EIO;
818 } 821 }
@@ -839,6 +842,7 @@ static void brcmf_pcie_release_irq(struct brcmf_pciedev_info *devinfo)
839 return; 842 return;
840 devinfo->irq_requested = false; 843 devinfo->irq_requested = false;
841 free_irq(pdev->irq, devinfo); 844 free_irq(pdev->irq, devinfo);
845 pci_disable_msi(pdev);
842 846
843 msleep(50); 847 msleep(50);
844 count = 0; 848 count = 0;