Skip to content

Commit 41f573d

Browse files
Arend Van SprielKalle Valo
authored andcommitted
brcmfmac: derive firmware filenames from basename mapping
Instead of defining individual filenames for firmware and nvram use a basename and derive the names from that. Reviewed-by: Hante Meuleman <[email protected]> Reviewed-by: Pieter-Paul Giesberts <[email protected]> Reviewed-by: Franky Lin <[email protected]> Signed-off-by: Arend van Spriel <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 34789d0 commit 41f573d

File tree

5 files changed

+96
-98
lines changed

5 files changed

+96
-98
lines changed

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

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,13 @@ int brcmf_fw_get_firmwares(struct device *dev, u16 flags,
563563
0);
564564
}
565565

566+
static void brcmf_fw_get_full_name(char fw_name[BRCMF_FW_NAME_LEN],
567+
const char *fw_base, const char *extension)
568+
{
569+
strlcat(fw_name, fw_base, BRCMF_FW_NAME_LEN);
570+
strlcat(fw_name, extension, BRCMF_FW_NAME_LEN);
571+
}
572+
566573
int brcmf_fw_map_chip_to_name(u32 chip, u32 chiprev,
567574
struct brcmf_firmware_mapping mapping_table[],
568575
u32 table_size, char fw_name[BRCMF_FW_NAME_LEN],
@@ -587,25 +594,31 @@ int brcmf_fw_map_chip_to_name(u32 chip, u32 chiprev,
587594

588595
/* check if firmware path is provided by module parameter */
589596
if (brcmf_mp_global.firmware_path[0] != '\0') {
590-
strlcpy(fw_name, brcmf_mp_global.firmware_path,
591-
BRCMF_FW_NAME_LEN);
592-
if ((nvram_name) && (mapping_table[i].nvram))
597+
if (fw_name)
598+
strlcpy(fw_name, brcmf_mp_global.firmware_path,
599+
BRCMF_FW_NAME_LEN);
600+
if (nvram_name)
593601
strlcpy(nvram_name, brcmf_mp_global.firmware_path,
594602
BRCMF_FW_NAME_LEN);
595603

596604
end = brcmf_mp_global.firmware_path[
597605
strlen(brcmf_mp_global.firmware_path) - 1];
598606
if (end != '/') {
599-
strlcat(fw_name, "/", BRCMF_FW_NAME_LEN);
600-
if ((nvram_name) && (mapping_table[i].nvram))
607+
if (fw_name)
608+
strlcat(fw_name, "/", BRCMF_FW_NAME_LEN);
609+
if (nvram_name)
601610
strlcat(nvram_name, "/", BRCMF_FW_NAME_LEN);
602611
}
603612
}
604-
strlcat(fw_name, mapping_table[i].fw, BRCMF_FW_NAME_LEN);
605-
if ((nvram_name) && (mapping_table[i].nvram))
606-
strlcat(nvram_name, mapping_table[i].nvram, BRCMF_FW_NAME_LEN);
607613

608-
brcmf_info("using %s for chip %s\n", fw_name, chipname);
614+
brcmf_info("using %s for chip %s\n",
615+
mapping_table[i].fw_base, chipname);
616+
if (fw_name)
617+
brcmf_fw_get_full_name(fw_name,
618+
mapping_table[i].fw_base, ".bin");
619+
if (nvram_name)
620+
brcmf_fw_get_full_name(nvram_name,
621+
mapping_table[i].fw_base, ".txt");
609622

610623
return 0;
611624
}

drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.h

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,28 +38,16 @@
3838
struct brcmf_firmware_mapping {
3939
u32 chipid;
4040
u32 revmask;
41-
const char *fw;
42-
const char *nvram;
41+
const char *fw_base;
4342
};
4443

45-
#define BRCMF_FW_NVRAM_DEF(fw_nvram_name, fw, nvram) \
46-
static const char BRCM_ ## fw_nvram_name ## _FIRMWARE_NAME[] = \
47-
BRCMF_FW_DEFAULT_PATH fw; \
48-
static const char BRCM_ ## fw_nvram_name ## _NVRAM_NAME[] = \
49-
BRCMF_FW_DEFAULT_PATH nvram; \
50-
MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH fw);
51-
52-
#define BRCMF_FW_DEF(fw_name, fw) \
53-
static const char BRCM_ ## fw_name ## _FIRMWARE_NAME[] = \
54-
BRCMF_FW_DEFAULT_PATH fw; \
55-
MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH fw) \
56-
57-
#define BRCMF_FW_NVRAM_ENTRY(chipid, mask, name) \
58-
{ chipid, mask, \
59-
BRCM_ ## name ## _FIRMWARE_NAME, BRCM_ ## name ## _NVRAM_NAME }
44+
#define BRCMF_FW_DEF(fw_name, fw_base) \
45+
static const char BRCM_ ## fw_name ## _FIRMWARE_BASENAME[] = \
46+
BRCMF_FW_DEFAULT_PATH fw_base; \
47+
MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH fw_base ".bin")
6048

6149
#define BRCMF_FW_ENTRY(chipid, mask, name) \
62-
{ chipid, mask, BRCM_ ## name ## _FIRMWARE_NAME, NULL }
50+
{ chipid, mask, BRCM_ ## name ## _FIRMWARE_BASENAME }
6351

6452
int brcmf_fw_map_chip_to_name(u32 chip, u32 chiprev,
6553
struct brcmf_firmware_mapping mapping_table[],

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

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -46,36 +46,36 @@ enum brcmf_pcie_state {
4646
BRCMFMAC_PCIE_STATE_UP
4747
};
4848

49-
BRCMF_FW_NVRAM_DEF(43602, "brcmfmac43602-pcie.bin", "brcmfmac43602-pcie.txt");
50-
BRCMF_FW_NVRAM_DEF(4350, "brcmfmac4350-pcie.bin", "brcmfmac4350-pcie.txt");
51-
BRCMF_FW_NVRAM_DEF(4350C, "brcmfmac4350c2-pcie.bin", "brcmfmac4350c2-pcie.txt");
52-
BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-pcie.bin", "brcmfmac4356-pcie.txt");
53-
BRCMF_FW_NVRAM_DEF(43570, "brcmfmac43570-pcie.bin", "brcmfmac43570-pcie.txt");
54-
BRCMF_FW_NVRAM_DEF(4358, "brcmfmac4358-pcie.bin", "brcmfmac4358-pcie.txt");
55-
BRCMF_FW_NVRAM_DEF(4359, "brcmfmac4359-pcie.bin", "brcmfmac4359-pcie.txt");
56-
BRCMF_FW_NVRAM_DEF(4365B, "brcmfmac4365b-pcie.bin", "brcmfmac4365b-pcie.txt");
57-
BRCMF_FW_NVRAM_DEF(4365C, "brcmfmac4365c-pcie.bin", "brcmfmac4365c-pcie.txt");
58-
BRCMF_FW_NVRAM_DEF(4366B, "brcmfmac4366b-pcie.bin", "brcmfmac4366b-pcie.txt");
59-
BRCMF_FW_NVRAM_DEF(4366C, "brcmfmac4366c-pcie.bin", "brcmfmac4366c-pcie.txt");
60-
BRCMF_FW_NVRAM_DEF(4371, "brcmfmac4371-pcie.bin", "brcmfmac4371-pcie.txt");
49+
BRCMF_FW_DEF(43602, "brcmfmac43602-pcie");
50+
BRCMF_FW_DEF(4350, "brcmfmac4350-pcie");
51+
BRCMF_FW_DEF(4350C, "brcmfmac4350c2-pcie");
52+
BRCMF_FW_DEF(4356, "brcmfmac4356-pcie");
53+
BRCMF_FW_DEF(43570, "brcmfmac43570-pcie");
54+
BRCMF_FW_DEF(4358, "brcmfmac4358-pcie");
55+
BRCMF_FW_DEF(4359, "brcmfmac4359-pcie");
56+
BRCMF_FW_DEF(4365B, "brcmfmac4365b-pcie");
57+
BRCMF_FW_DEF(4365C, "brcmfmac4365c-pcie");
58+
BRCMF_FW_DEF(4366B, "brcmfmac4366b-pcie");
59+
BRCMF_FW_DEF(4366C, "brcmfmac4366c-pcie");
60+
BRCMF_FW_DEF(4371, "brcmfmac4371-pcie");
6161

6262
static struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
63-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43602_CHIP_ID, 0xFFFFFFFF, 43602),
64-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43465_CHIP_ID, 0xFFFFFFF0, 4366C),
65-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4350_CHIP_ID, 0x000000FF, 4350C),
66-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4350_CHIP_ID, 0xFFFFFF00, 4350),
67-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43525_CHIP_ID, 0xFFFFFFF0, 4365C),
68-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
69-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570),
70-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570),
71-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43570_CHIP_ID, 0xFFFFFFFF, 43570),
72-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4358_CHIP_ID, 0xFFFFFFFF, 4358),
73-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
74-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4365_CHIP_ID, 0x0000000F, 4365B),
75-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4365_CHIP_ID, 0xFFFFFFF0, 4365C),
76-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4366_CHIP_ID, 0x0000000F, 4366B),
77-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4366_CHIP_ID, 0xFFFFFFF0, 4366C),
78-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371),
63+
BRCMF_FW_ENTRY(BRCM_CC_43602_CHIP_ID, 0xFFFFFFFF, 43602),
64+
BRCMF_FW_ENTRY(BRCM_CC_43465_CHIP_ID, 0xFFFFFFF0, 4366C),
65+
BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0x000000FF, 4350C),
66+
BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0xFFFFFF00, 4350),
67+
BRCMF_FW_ENTRY(BRCM_CC_43525_CHIP_ID, 0xFFFFFFF0, 4365C),
68+
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
69+
BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570),
70+
BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570),
71+
BRCMF_FW_ENTRY(BRCM_CC_43570_CHIP_ID, 0xFFFFFFFF, 43570),
72+
BRCMF_FW_ENTRY(BRCM_CC_4358_CHIP_ID, 0xFFFFFFFF, 4358),
73+
BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
74+
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0x0000000F, 4365B),
75+
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0xFFFFFFF0, 4365C),
76+
BRCMF_FW_ENTRY(BRCM_CC_4366_CHIP_ID, 0x0000000F, 4366B),
77+
BRCMF_FW_ENTRY(BRCM_CC_4366_CHIP_ID, 0xFFFFFFF0, 4366C),
78+
BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371),
7979
};
8080

8181
#define BRCMF_PCIE_FW_UP_TIMEOUT 2000 /* msec */

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

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -600,47 +600,44 @@ static const struct sdiod_drive_str sdiod_drvstr_tab2_3v3[] = {
600600
{4, 0x1}
601601
};
602602

603-
BRCMF_FW_NVRAM_DEF(43143, "brcmfmac43143-sdio.bin", "brcmfmac43143-sdio.txt");
604-
BRCMF_FW_NVRAM_DEF(43241B0, "brcmfmac43241b0-sdio.bin",
605-
"brcmfmac43241b0-sdio.txt");
606-
BRCMF_FW_NVRAM_DEF(43241B4, "brcmfmac43241b4-sdio.bin",
607-
"brcmfmac43241b4-sdio.txt");
608-
BRCMF_FW_NVRAM_DEF(43241B5, "brcmfmac43241b5-sdio.bin",
609-
"brcmfmac43241b5-sdio.txt");
610-
BRCMF_FW_NVRAM_DEF(4329, "brcmfmac4329-sdio.bin", "brcmfmac4329-sdio.txt");
611-
BRCMF_FW_NVRAM_DEF(4330, "brcmfmac4330-sdio.bin", "brcmfmac4330-sdio.txt");
612-
BRCMF_FW_NVRAM_DEF(4334, "brcmfmac4334-sdio.bin", "brcmfmac4334-sdio.txt");
613-
BRCMF_FW_NVRAM_DEF(43340, "brcmfmac43340-sdio.bin", "brcmfmac43340-sdio.txt");
614-
BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", "brcmfmac4335-sdio.txt");
615-
BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", "brcmfmac43362-sdio.txt");
616-
BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", "brcmfmac4339-sdio.txt");
617-
BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin", "brcmfmac43430a0-sdio.txt");
603+
BRCMF_FW_DEF(43143, "brcmfmac43143-sdio");
604+
BRCMF_FW_DEF(43241B0, "brcmfmac43241b0-sdio");
605+
BRCMF_FW_DEF(43241B4, "brcmfmac43241b4-sdio");
606+
BRCMF_FW_DEF(43241B5, "brcmfmac43241b5-sdio");
607+
BRCMF_FW_DEF(4329, "brcmfmac4329-sdio");
608+
BRCMF_FW_DEF(4330, "brcmfmac4330-sdio");
609+
BRCMF_FW_DEF(4334, "brcmfmac4334-sdio");
610+
BRCMF_FW_DEF(43340, "brcmfmac43340-sdio");
611+
BRCMF_FW_DEF(4335, "brcmfmac4335-sdio");
612+
BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
613+
BRCMF_FW_DEF(4339, "brcmfmac4339-sdio");
614+
BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio");
618615
/* Note the names are not postfixed with a1 for backward compatibility */
619-
BRCMF_FW_NVRAM_DEF(43430A1, "brcmfmac43430-sdio.bin", "brcmfmac43430-sdio.txt");
620-
BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", "brcmfmac43455-sdio.txt");
621-
BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
622-
BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
623-
BRCMF_FW_NVRAM_DEF(4373, "brcmfmac4373-sdio.bin", "brcmfmac4373-sdio.txt");
616+
BRCMF_FW_DEF(43430A1, "brcmfmac43430-sdio");
617+
BRCMF_FW_DEF(43455, "brcmfmac43455-sdio");
618+
BRCMF_FW_DEF(4354, "brcmfmac4354-sdio");
619+
BRCMF_FW_DEF(4356, "brcmfmac4356-sdio");
620+
BRCMF_FW_DEF(4373, "brcmfmac4373-sdio");
624621

625622
static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
626-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
627-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0),
628-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4),
629-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43241_CHIP_ID, 0xFFFFFFC0, 43241B5),
630-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4329_CHIP_ID, 0xFFFFFFFF, 4329),
631-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
632-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
633-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
634-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340),
635-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
636-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
637-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),
638-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0),
639-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430A1),
640-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
641-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
642-
BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
643-
BRCMF_FW_NVRAM_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
623+
BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
624+
BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0),
625+
BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4),
626+
BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0xFFFFFFC0, 43241B5),
627+
BRCMF_FW_ENTRY(BRCM_CC_4329_CHIP_ID, 0xFFFFFFFF, 4329),
628+
BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
629+
BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
630+
BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
631+
BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340),
632+
BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
633+
BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
634+
BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),
635+
BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0),
636+
BRCMF_FW_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430A1),
637+
BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
638+
BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
639+
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
640+
BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
644641
};
645642

646643
static void pkt_align(struct sk_buff *p, int len, int align)

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@
4646
#define BRCMF_USB_CBCTL_READ 1
4747
#define BRCMF_USB_MAX_PKT_SIZE 1600
4848

49-
BRCMF_FW_DEF(43143, "brcmfmac43143.bin");
50-
BRCMF_FW_DEF(43236B, "brcmfmac43236b.bin");
51-
BRCMF_FW_DEF(43242A, "brcmfmac43242a.bin");
52-
BRCMF_FW_DEF(43569, "brcmfmac43569.bin");
53-
BRCMF_FW_DEF(4373, "brcmfmac4373.bin");
49+
BRCMF_FW_DEF(43143, "brcmfmac43143");
50+
BRCMF_FW_DEF(43236B, "brcmfmac43236b");
51+
BRCMF_FW_DEF(43242A, "brcmfmac43242a");
52+
BRCMF_FW_DEF(43569, "brcmfmac43569");
53+
BRCMF_FW_DEF(4373, "brcmfmac4373");
5454

5555
static struct brcmf_firmware_mapping brcmf_usb_fwnames[] = {
5656
BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),

0 commit comments

Comments
 (0)