Skip to content

Commit 4550eb4

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 4b8d1b5 commit 4550eb4

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
@@ -336,6 +336,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
336336
#define BRCMF_PCIE_CFGREG_PML1_SUB_CTRL1 0x248
337337
#define BRCMF_PCIE_CFGREG_REG_BAR2_CONFIG 0x4E0
338338
#define BRCMF_PCIE_CFGREG_REG_BAR3_CONFIG 0x4F4
339+
#define BRCMF_PCIE_CFGREG_TLCNTRL_5 0x814
339340
#define BRCMF_PCIE_LINK_STATUS_CTRL_ASPM_ENAB 3
340341

341342
/* Magic number at a magic location to find RAM size */
@@ -828,6 +829,21 @@ static int brcmf_pcie_enter_download_state(struct brcmf_pciedev_info *devinfo)
828829
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_ARMCR4REG_BANKPDA,
829830
0);
830831
}
832+
833+
/* Ensure all IRQs are masked so the firmware doesn't get
834+
* a hostready notification too early.
835+
*/
836+
837+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxmask, 0);
838+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxint,
839+
0xffffffff);
840+
841+
pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_INTMASK, 0);
842+
843+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGADDR,
844+
BRCMF_PCIE_CFGREG_TLCNTRL_5);
845+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGDATA,
846+
0xffffffff);
831847
return 0;
832848
}
833849

0 commit comments

Comments
 (0)