123456789101112131415161718192021222324252627282930313233343536373839 |
- From 9ef77fbedad9ea8895cd5d7fb7aee16071f527dc Mon Sep 17 00:00:00 2001
- From: Wright Feng <Wright.Feng@cypress.com>
- Date: Fri, 26 Apr 2019 03:12:32 +0000
- Subject: [PATCH] brcmfmac: send mailbox interrupt twice for specific hardware
- device
- For PCIE wireless device with core revision less than 14, device may miss
- PCIE to System Backplane Interrupt via PCIEtoSBMailbox. So add sending
- mail box interrupt twice as a hardware workaround.
- Signed-off-by: Wright Feng <wright.feng@cypress.com>
- Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- ---
- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
- @@ -671,6 +671,7 @@ static int
- brcmf_pcie_send_mb_data(struct brcmf_pciedev_info *devinfo, u32 htod_mb_data)
- {
- struct brcmf_pcie_shared_info *shared;
- + struct brcmf_core *core;
- u32 addr;
- u32 cur_htod_mb_data;
- u32 i;
- @@ -694,7 +695,11 @@ brcmf_pcie_send_mb_data(struct brcmf_pci
-
- brcmf_pcie_write_tcm32(devinfo, addr, htod_mb_data);
- pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
- - pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
- +
- + /* Send mailbox interrupt twice as a hardware workaround */
- + core = brcmf_chip_get_core(devinfo->ci, BCMA_CORE_PCIE2);
- + if (core->rev <= 13)
- + pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
-
- return 0;
- }
|