26.12.2021 18:35, Hector Martin пишет: > Apple platforms have firmware and config files identified with multiple > dimensions. We want to be able to find the most specific firmware > available for any given platform, progressively trying more general > firmwares. > > First, add support for having multiple alternate firmware paths. > > Signed-off-by: Hector Martin <marcan@xxxxxxxxx> > --- > .../broadcom/brcm80211/brcmfmac/firmware.c | 73 ++++++++++++++----- > 1 file changed, 55 insertions(+), 18 deletions(-) ... > -static char *brcm_alt_fw_path(const char *path, const char *board_type) > +static const char **brcm_alt_fw_paths(const char *path, const char *board_type) ... > static int brcmf_fw_request_firmware(const struct firmware **fw, > struct brcmf_fw *fwctx) > { > struct brcmf_fw_item *cur = &fwctx->req->items[fwctx->curpos]; > - int ret; > + int ret, i; > > /* Files can be board-specific, first try a board-specific path */ > if (cur->type == BRCMF_FW_TYPE_NVRAM && fwctx->req->board_type) { > - char *alt_path; > + const char **alt_paths = brcm_alt_fw_paths(cur->path, fwctx); The brcm_alt_fw_paths() takes "board_type" argument, while you're passing the "fwctx" to it. This patch doesn't compile. If this code is changed by a further patch, then please use "git rebase --exec" to compile-test all the patches. drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c: In function ‘brcmf_fw_request_firmware’: drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c:642:71: error: passing argument 2 of ‘brcm_alt_fw_paths’ from incompatible pointer type [-Werror=incompatible-pointer-types] 642 | const char **alt_paths = brcm_alt_fw_paths(cur->path, fwctx); | ^~~~~ | | | struct brcmf_fw * drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c:597:69: note: expected ‘const char *’ but argument is of type ‘struct brcmf_fw *’ 597 | static const char **brcm_alt_fw_paths(const char *path, const char *board_type) | ~~~~~~~~~~~~^~~~~~~~~~ drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c: In function ‘brcmf_fw_get_firmwares’: drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c:752:59: error: passing argument 2 of ‘brcm_alt_fw_paths’ from incompatible pointer type [-Werror=incompatible-pointer-types] 752 | fwctx->alt_paths = brcm_alt_fw_paths(first->path, fwctx); | ^~~~~ | | | struct brcmf_fw * drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c:597:69: note: expected ‘const char *’ but argument is of type ‘struct brcmf_fw *’ 597 | static const char **brcm_alt_fw_paths(const char *path, const char *board_type) | ~~~~~~~~~~~~^~~~~~~~~~ cc1: some warnings being treated as errors