Skip to content

Commit 3c89eb5

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 23f67eb commit 3c89eb5

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
@@ -338,6 +338,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
338338
#define BRCMF_PCIE_CFGREG_PML1_SUB_CTRL1 0x248
339339
#define BRCMF_PCIE_CFGREG_REG_BAR2_CONFIG 0x4E0
340340
#define BRCMF_PCIE_CFGREG_REG_BAR3_CONFIG 0x4F4
341+
#define BRCMF_PCIE_CFGREG_TLCNTRL_5 0x814
341342
#define BRCMF_PCIE_LINK_STATUS_CTRL_ASPM_ENAB 3
342343

343344
/* Magic number at a magic location to find RAM size */
@@ -832,6 +833,21 @@ static int brcmf_pcie_enter_download_state(struct brcmf_pciedev_info *devinfo)
832833
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_ARMCR4REG_BANKPDA,
833834
0);
834835
}
836+
837+
/* Ensure all IRQs are masked so the firmware doesn't get
838+
* a hostready notification too early.
839+
*/
840+
841+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxmask, 0);
842+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxint,
843+
0xffffffff);
844+
845+
pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_INTMASK, 0);
846+
847+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGADDR,
848+
BRCMF_PCIE_CFGREG_TLCNTRL_5);
849+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGDATA,
850+
0xffffffff);
835851
return 0;
836852
}
837853

0 commit comments

Comments
 (0)