/* * 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 #include #include 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 }; struct d11init *d11lcn0bsinitvals24; struct d11init *d11lcn0initvals24; struct d11init *d11lcn1bsinitvals24; struct d11init *d11lcn1initvals24; struct d11init *d11lcn2bsinitvals24; struct d11init *d11lcn2initvals24; struct d11init *d11n0absinitvals16; struct d11init *d11n0bsinitvals16; struct d11init *d11n0initvals16; u32 *bcm43xx_16_mimo; u32 bcm43xx_16_mimosz; u32 *bcm43xx_24_lcn; u32 bcm43xx_24_lcnsz; u32 *bcm43xx_bommajor; u32 *bcm43xx_bomminor; int wl_ucode_data_init(struct wl_info *wl) { int rc; rc = wl_check_firmwares(wl); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn0bsinitvals24, D11LCN0BSINITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn0initvals24, D11LCN0INITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn1bsinitvals24, D11LCN1BSINITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn1initvals24, D11LCN1INITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn2bsinitvals24, D11LCN2BSINITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11lcn2initvals24, D11LCN2INITVALS24); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11n0absinitvals16, D11N0ABSINITVALS16); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11n0bsinitvals16, D11N0BSINITVALS16); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&d11n0initvals16, D11N0INITVALS16); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&bcm43xx_16_mimo, D11UCODE_OVERSIGHT16_MIMO); rc = rc < 0 ? rc : wl_ucode_init_uint(wl, &bcm43xx_16_mimosz, D11UCODE_OVERSIGHT16_MIMOSZ); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&bcm43xx_24_lcn, D11UCODE_OVERSIGHT24_LCN); rc = rc < 0 ? rc : wl_ucode_init_uint(wl, &bcm43xx_24_lcnsz, D11UCODE_OVERSIGHT24_LCNSZ); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&bcm43xx_bommajor, D11UCODE_OVERSIGHT_BOMMAJOR); rc = rc < 0 ? rc : wl_ucode_init_buf(wl, (void **)&bcm43xx_bomminor, D11UCODE_OVERSIGHT_BOMMINOR); return rc; } void wl_ucode_data_free(void) { wl_ucode_free_buf((void *)d11lcn0bsinitvals24); wl_ucode_free_buf((void *)d11lcn0initvals24); wl_ucode_free_buf((void *)d11lcn1bsinitvals24); wl_ucode_free_buf((void *)d11lcn1initvals24); wl_ucode_free_buf((void *)d11lcn2bsinitvals24); wl_ucode_free_buf((void *)d11lcn2initvals24); wl_ucode_free_buf((void *)d11n0absinitvals16); wl_ucode_free_buf((void *)d11n0bsinitvals16); wl_ucode_free_buf((void *)d11n0initvals16); wl_ucode_free_buf((void *)bcm43xx_16_mimo); wl_ucode_free_buf((void *)bcm43xx_24_lcn); wl_ucode_free_buf((void *)bcm43xx_bommajor); wl_ucode_free_buf((void *)bcm43xx_bomminor); return; }