lkml.org 
[lkml]   [2022]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v2 03/35] brcmfmac: firmware: Handle per-board clm_blob files
    From
    On 1/4/2022 8:26 AM, Hector Martin wrote:
    > Teach brcm_alt_fw_paths to correctly split off variable length
    > extensions, and enable alt firmware lookups for the CLM blob firmware
    > requests.
    >
    > Apple platforms have per-board CLM blob files.

    Are you sure? I am not involved in development for Apple platforms, but
    in general we build a CLM blob specific for a chip revision. As always
    with the blobs they are created at a certain point in time and that is
    mostly why you need another one for a newer platform. Apple tends to do
    things a bit different so you could be right though. Anyway, despite my
    doubts on this it does not change the need for per-board firmware files.

    Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    > Acked-by: Linus Walleij <linus.walleij@linaro.org>
    > Signed-off-by: Hector Martin <marcan@marcan.st>
    > ---
    > .../broadcom/brcm80211/brcmfmac/firmware.c | 16 ++++++++--------
    > 1 file changed, 8 insertions(+), 8 deletions(-)
    >
    > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
    > index 0eb13e5df517..0497b721136a 100644
    > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
    > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
    > @@ -595,16 +595,16 @@ static int brcmf_fw_complete_request(const struct firmware *fw,
    > static char *brcm_alt_fw_path(const char *path, const char *board_type)
    > {
    > char alt_path[BRCMF_FW_NAME_LEN];
    > - char suffix[5];
    > + const char *suffix;
    >
    > - strscpy(alt_path, path, BRCMF_FW_NAME_LEN);
    > - /* At least one character + suffix */
    > - if (strlen(alt_path) < 5)
    > + suffix = strrchr(path, '.');
    > + if (!suffix || suffix == path)
    > return NULL;
    >
    > - /* strip .txt or .bin at the end */
    > - strscpy(suffix, alt_path + strlen(alt_path) - 4, 5);
    > - alt_path[strlen(alt_path) - 4] = 0;
    > + /* strip extension at the end */
    > + strscpy(alt_path, path, BRCMF_FW_NAME_LEN);
    > + alt_path[suffix - path] = 0;
    > +
    > strlcat(alt_path, ".", BRCMF_FW_NAME_LEN);
    > strlcat(alt_path, board_type, BRCMF_FW_NAME_LEN);
    > strlcat(alt_path, suffix, BRCMF_FW_NAME_LEN);
    > @@ -619,7 +619,7 @@ static int brcmf_fw_request_firmware(const struct firmware **fw,
    > int ret;
    >
    > /* Files can be board-specific, first try a board-specific path */
    > - if (cur->type == BRCMF_FW_TYPE_NVRAM && fwctx->req->board_type) {
    > + if (fwctx->req->board_type) {
    > char *alt_path;
    >
    > alt_path = brcm_alt_fw_path(cur->path, fwctx->req->board_type);

    So all firmware files are attempted with board-specific path now.
    [unhandled content-type:application/pkcs7-signature]
    \
     
     \ /
      Last update: 2022-01-06 11:21    [W:4.322 / U:0.260 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site