Path: blob/main/sys/contrib/dev/broadcom/brcm80211/brcmsmac/ucode_loader.c
178665 views
/*1* Copyright (c) 2010 Broadcom Corporation2*3* Permission to use, copy, modify, and/or distribute this software for any4* purpose with or without fee is hereby granted, provided that the above5* copyright notice and this permission notice appear in all copies.6*7* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES8* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF9* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY10* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES11* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION12* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN13* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.14*/1516#include <defs.h>17#include "types.h"18#include <ucode_loader.h>1920enum {21D11UCODE_NAMETAG_START = 0,22D11LCN0BSINITVALS24,23D11LCN0INITVALS24,24D11LCN1BSINITVALS24,25D11LCN1INITVALS24,26D11LCN2BSINITVALS24,27D11LCN2INITVALS24,28D11N0ABSINITVALS16,29D11N0BSINITVALS16,30D11N0INITVALS16,31D11UCODE_OVERSIGHT16_MIMO,32D11UCODE_OVERSIGHT16_MIMOSZ,33D11UCODE_OVERSIGHT24_LCN,34D11UCODE_OVERSIGHT24_LCNSZ,35D11UCODE_OVERSIGHT_BOMMAJOR,36D11UCODE_OVERSIGHT_BOMMINOR37};3839int brcms_ucode_data_init(struct brcms_info *wl, struct brcms_ucode *ucode)40{41int rc;4243rc = brcms_check_firmwares(wl);4445rc = rc < 0 ? rc :46brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0bsinitvals24,47D11LCN0BSINITVALS24);48rc = rc < 0 ?49rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0initvals24,50D11LCN0INITVALS24);51rc = rc < 0 ?52rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1bsinitvals24,53D11LCN1BSINITVALS24);54rc = rc < 0 ?55rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1initvals24,56D11LCN1INITVALS24);57rc = rc < 0 ? rc :58brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2bsinitvals24,59D11LCN2BSINITVALS24);60rc = rc < 0 ?61rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2initvals24,62D11LCN2INITVALS24);63rc = rc < 0 ?64rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0absinitvals16,65D11N0ABSINITVALS16);66rc = rc < 0 ?67rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0bsinitvals16,68D11N0BSINITVALS16);69rc = rc < 0 ?70rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0initvals16,71D11N0INITVALS16);72rc = rc < 0 ?73rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_16_mimo,74D11UCODE_OVERSIGHT16_MIMO);75rc = rc < 0 ?76rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_16_mimosz,77D11UCODE_OVERSIGHT16_MIMOSZ);78rc = rc < 0 ?79rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_24_lcn,80D11UCODE_OVERSIGHT24_LCN);81rc = rc < 0 ?82rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_24_lcnsz,83D11UCODE_OVERSIGHT24_LCNSZ);84rc = rc < 0 ?85rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bommajor,86D11UCODE_OVERSIGHT_BOMMAJOR);87rc = rc < 0 ?88rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bomminor,89D11UCODE_OVERSIGHT_BOMMINOR);90return rc;91}9293void brcms_ucode_data_free(struct brcms_ucode *ucode)94{95brcms_ucode_free_buf((void *)ucode->d11lcn0bsinitvals24);96brcms_ucode_free_buf((void *)ucode->d11lcn0initvals24);97brcms_ucode_free_buf((void *)ucode->d11lcn1bsinitvals24);98brcms_ucode_free_buf((void *)ucode->d11lcn1initvals24);99brcms_ucode_free_buf((void *)ucode->d11lcn2bsinitvals24);100brcms_ucode_free_buf((void *)ucode->d11lcn2initvals24);101brcms_ucode_free_buf((void *)ucode->d11n0absinitvals16);102brcms_ucode_free_buf((void *)ucode->d11n0bsinitvals16);103brcms_ucode_free_buf((void *)ucode->d11n0initvals16);104brcms_ucode_free_buf((void *)ucode->bcm43xx_16_mimo);105brcms_ucode_free_buf((void *)ucode->bcm43xx_24_lcn);106brcms_ucode_free_buf((void *)ucode->bcm43xx_bommajor);107brcms_ucode_free_buf((void *)ucode->bcm43xx_bomminor);108}109110111