Skip to content

Commit fd9564e

Browse files
marcanjannau
authored andcommitted
wifi: brcmfmac: Mask all IRQs before starting firmware
Make sure the firmware can't get any early notifications by masking all IRQs explicitly before loading the firmware. Signed-off-by: Hector Martin <marcan@marcan.st>
1 parent ba89c37 commit fd9564e

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
334334
#define BRCMF_PCIE_CFGREG_PML1_SUB_CTRL1 0x248
335335
#define BRCMF_PCIE_CFGREG_REG_BAR2_CONFIG 0x4E0
336336
#define BRCMF_PCIE_CFGREG_REG_BAR3_CONFIG 0x4F4
337+
#define BRCMF_PCIE_CFGREG_TLCNTRL_5 0x814
337338
#define BRCMF_PCIE_LINK_STATUS_CTRL_ASPM_ENAB 3
338339

339340
/* Magic number at a magic location to find RAM size */
@@ -825,6 +826,21 @@ static int brcmf_pcie_enter_download_state(struct brcmf_pciedev_info *devinfo)
825826
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_ARMCR4REG_BANKPDA,
826827
0);
827828
}
829+
830+
/* Ensure all IRQs are masked so the firmware doesn't get
831+
* a hostready notification too early.
832+
*/
833+
834+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxmask, 0);
835+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxint,
836+
0xffffffff);
837+
838+
pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_INTMASK, 0);
839+
840+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGADDR,
841+
BRCMF_PCIE_CFGREG_TLCNTRL_5);
842+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGDATA,
843+
0xffffffff);
828844
return 0;
829845
}
830846

0 commit comments

Comments
 (0)