/* * Copyright (c) 2010 Broadcom Corporation * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <defs.h> #include "types.h" #include <ucode_loader.h> enum { D11UCODE_NAMETAG_START = 0, D11LCN0BSINITVALS24, D11LCN0INITVALS24, D11LCN1BSINITVALS24, D11LCN1INITVALS24, D11LCN2BSINITVALS24, D11LCN2INITVALS24, D11N0ABSINITVALS16, D11N0BSINITVALS16, D11N0INITVALS16, D11UCODE_OVERSIGHT16_MIMO, D11UCODE_OVERSIGHT16_MIMOSZ, D11UCODE_OVERSIGHT24_LCN, D11UCODE_OVERSIGHT24_LCNSZ, D11UCODE_OVERSIGHT_BOMMAJOR, D11UCODE_OVERSIGHT_BOMMINOR }; int brcms_ucode_data_init(struct brcms_info *wl, struct brcms_ucode *ucode) { int rc; rc = brcms_check_firmwares(wl); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0bsinitvals24, D11LCN0BSINITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0initvals24, D11LCN0INITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1bsinitvals24, D11LCN1BSINITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1initvals24, D11LCN1INITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2bsinitvals24, D11LCN2BSINITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2initvals24, D11LCN2INITVALS24); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0absinitvals16, D11N0ABSINITVALS16); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0bsinitvals16, D11N0BSINITVALS16); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0initvals16, D11N0INITVALS16); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_16_mimo, D11UCODE_OVERSIGHT16_MIMO); rc = rc < 0 ? rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_16_mimosz, D11UCODE_OVERSIGHT16_MIMOSZ); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_24_lcn, D11UCODE_OVERSIGHT24_LCN); rc = rc < 0 ? rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_24_lcnsz, D11UCODE_OVERSIGHT24_LCNSZ); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bommajor, D11UCODE_OVERSIGHT_BOMMAJOR); rc = rc < 0 ? rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bomminor, D11UCODE_OVERSIGHT_BOMMINOR); return rc; } void brcms_ucode_data_free(struct brcms_ucode *ucode) { brcms_ucode_free_buf((void *)ucode->d11lcn0bsinitvals24); brcms_ucode_free_buf((void *)ucode->d11lcn0initvals24); brcms_ucode_free_buf((void *)ucode->d11lcn1bsinitvals24); brcms_ucode_free_buf((void *)ucode->d11lcn1initvals24); brcms_ucode_free_buf((void *)ucode->d11lcn2bsinitvals24); brcms_ucode_free_buf((void *)ucode->d11lcn2initvals24); brcms_ucode_free_buf((void *)ucode->d11n0absinitvals16); brcms_ucode_free_buf((void *)ucode->d11n0bsinitvals16); brcms_ucode_free_buf((void *)ucode->d11n0initvals16); brcms_ucode_free_buf((void *)ucode->bcm43xx_16_mimo); brcms_ucode_free_buf((void *)ucode->bcm43xx_24_lcn); brcms_ucode_free_buf((void *)ucode->bcm43xx_bommajor); brcms_ucode_free_buf((void *)ucode->bcm43xx_bomminor); }