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