@@ -76,6 +76,7 @@ MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.*.txt");
7676/* per-board firmware binaries */
7777MODULE_FIRMWARE (BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.*.bin" );
7878MODULE_FIRMWARE (BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.*.clm_blob" );
79+ MODULE_FIRMWARE (BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.*.txcap_blob" );
7980
8081static const struct brcmf_firmware_mapping brcmf_pcie_fwnames [] = {
8182 BRCMF_FW_ENTRY (BRCM_CC_43602_CHIP_ID , 0xFFFFFFFF , 43602 ),
@@ -329,7 +330,9 @@ struct brcmf_pciedev_info {
329330 char fw_name [BRCMF_FW_NAME_LEN ];
330331 char nvram_name [BRCMF_FW_NAME_LEN ];
331332 char clm_name [BRCMF_FW_NAME_LEN ];
333+ char txcap_name [BRCMF_FW_NAME_LEN ];
332334 const struct firmware * clm_fw ;
335+ const struct firmware * txcap_fw ;
333336 const struct brcmf_pcie_reginfo * reginfo ;
334337 void __iomem * regs ;
335338 void __iomem * tcm ;
@@ -1520,6 +1523,10 @@ static int brcmf_pcie_get_blob(struct device *dev, const struct firmware **fw,
15201523 * fw = devinfo -> clm_fw ;
15211524 devinfo -> clm_fw = NULL ;
15221525 break ;
1526+ case BRCMF_BLOB_TXCAP :
1527+ * fw = devinfo -> txcap_fw ;
1528+ devinfo -> txcap_fw = NULL ;
1529+ break ;
15231530 default :
15241531 return - ENOENT ;
15251532 }
@@ -2109,6 +2116,7 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
21092116#define BRCMF_PCIE_FW_CODE 0
21102117#define BRCMF_PCIE_FW_NVRAM 1
21112118#define BRCMF_PCIE_FW_CLM 2
2119+ #define BRCMF_PCIE_FW_TXCAP 3
21122120
21132121static void brcmf_pcie_setup (struct device * dev , int ret ,
21142122 struct brcmf_fw_request * fwreq )
@@ -2135,6 +2143,7 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
21352143 nvram = fwreq -> items [BRCMF_PCIE_FW_NVRAM ].nv_data .data ;
21362144 nvram_len = fwreq -> items [BRCMF_PCIE_FW_NVRAM ].nv_data .len ;
21372145 devinfo -> clm_fw = fwreq -> items [BRCMF_PCIE_FW_CLM ].binary ;
2146+ devinfo -> txcap_fw = fwreq -> items [BRCMF_PCIE_FW_TXCAP ].binary ;
21382147 kfree (fwreq );
21392148
21402149 ret = brcmf_chip_get_raminfo (devinfo -> ci );
@@ -2216,6 +2225,7 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
22162225 { ".bin" , devinfo -> fw_name },
22172226 { ".txt" , devinfo -> nvram_name },
22182227 { ".clm_blob" , devinfo -> clm_name },
2228+ { ".txcap_blob" , devinfo -> txcap_name },
22192229 };
22202230
22212231 fwreq = brcmf_fw_alloc_request (devinfo -> ci -> chip , devinfo -> ci -> chiprev ,
@@ -2230,6 +2240,8 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
22302240 fwreq -> items [BRCMF_PCIE_FW_NVRAM ].flags = BRCMF_FW_REQF_OPTIONAL ;
22312241 fwreq -> items [BRCMF_PCIE_FW_CLM ].type = BRCMF_FW_TYPE_BINARY ;
22322242 fwreq -> items [BRCMF_PCIE_FW_CLM ].flags = BRCMF_FW_REQF_OPTIONAL ;
2243+ fwreq -> items [BRCMF_PCIE_FW_TXCAP ].type = BRCMF_FW_TYPE_BINARY ;
2244+ fwreq -> items [BRCMF_PCIE_FW_TXCAP ].flags = BRCMF_FW_REQF_OPTIONAL ;
22332245 /* NVRAM reserves PCI domain 0 for Broadcom's SDK faked bus */
22342246 fwreq -> domain_nr = pci_domain_nr (devinfo -> pdev -> bus ) + 1 ;
22352247 fwreq -> bus_nr = devinfo -> pdev -> bus -> number ;
@@ -2527,6 +2539,7 @@ brcmf_pcie_remove(struct pci_dev *pdev)
25272539 brcmf_pcie_reset_device (devinfo );
25282540 brcmf_pcie_release_resource (devinfo );
25292541 release_firmware (devinfo -> clm_fw );
2542+ release_firmware (devinfo -> txcap_fw );
25302543
25312544 if (devinfo -> ci )
25322545 brcmf_chip_detach (devinfo -> ci );
0 commit comments