Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9efa340 authored by Franky Lin's avatar Franky Lin Committed by John W. Linville
Browse files

brcmfmac: switch to single message MSI



Use single message MSI to replace legacy interrupt.

Reviewed-by: default avatarArend Van Spriel <arend@broadcom.com>
Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarFranky Lin <frankyl@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 48fd818f
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -798,12 +798,14 @@ static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
	brcmf_dbg(PCIE, "Enter\n");
	brcmf_dbg(PCIE, "Enter\n");
	/* is it a v1 or v2 implementation */
	/* is it a v1 or v2 implementation */
	devinfo->irq_requested = false;
	devinfo->irq_requested = false;
	pci_enable_msi(pdev);
	if (devinfo->generic_corerev == BRCMF_PCIE_GENREV1) {
	if (devinfo->generic_corerev == BRCMF_PCIE_GENREV1) {
		if (request_threaded_irq(pdev->irq,
		if (request_threaded_irq(pdev->irq,
					 brcmf_pcie_quick_check_isr_v1,
					 brcmf_pcie_quick_check_isr_v1,
					 brcmf_pcie_isr_thread_v1,
					 brcmf_pcie_isr_thread_v1,
					 IRQF_SHARED, "brcmf_pcie_intr",
					 IRQF_SHARED, "brcmf_pcie_intr",
					 devinfo)) {
					 devinfo)) {
			pci_disable_msi(pdev);
			brcmf_err("Failed to request IRQ %d\n", pdev->irq);
			brcmf_err("Failed to request IRQ %d\n", pdev->irq);
			return -EIO;
			return -EIO;
		}
		}
@@ -813,6 +815,7 @@ static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
					 brcmf_pcie_isr_thread_v2,
					 brcmf_pcie_isr_thread_v2,
					 IRQF_SHARED, "brcmf_pcie_intr",
					 IRQF_SHARED, "brcmf_pcie_intr",
					 devinfo)) {
					 devinfo)) {
			pci_disable_msi(pdev);
			brcmf_err("Failed to request IRQ %d\n", pdev->irq);
			brcmf_err("Failed to request IRQ %d\n", pdev->irq);
			return -EIO;
			return -EIO;
		}
		}
@@ -839,6 +842,7 @@ static void brcmf_pcie_release_irq(struct brcmf_pciedev_info *devinfo)
		return;
		return;
	devinfo->irq_requested = false;
	devinfo->irq_requested = false;
	free_irq(pdev->irq, devinfo);
	free_irq(pdev->irq, devinfo);
	pci_disable_msi(pdev);


	msleep(50);
	msleep(50);
	count = 0;
	count = 0;