|  | /* | 
|  | * 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); | 
|  | } |