Skip to content

Commit 2a0ba32

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 be878ac commit 2a0ba32

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 */
@@ -830,6 +831,21 @@ static int brcmf_pcie_enter_download_state(struct brcmf_pciedev_info *devinfo)
830831
brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_ARMCR4REG_BANKPDA,
831832
0);
832833
}
834+
835+
/* Ensure all IRQs are masked so the firmware doesn't get
836+
* a hostready notification too early.
837+
*/
838+
839+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxmask, 0);
840+
brcmf_pcie_write_pcie32(devinfo, devinfo->reginfo->mailboxint,
841+
0xffffffff);
842+
843+
pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_INTMASK, 0);
844+
845+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGADDR,
846+
BRCMF_PCIE_CFGREG_TLCNTRL_5);
847+
brcmf_pcie_write_pcie32(devinfo, BRCMF_PCIE_PCIE2REG_CONFIGDATA,
848+
0xffffffff);
833849
return 0;
834850
}
835851

0 commit comments

Comments
 (0)