Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright (c) 2010 Broadcom Corporation
0003  *
0004  * Permission to use, copy, modify, and/or distribute this software for any
0005  * purpose with or without fee is hereby granted, provided that the above
0006  * copyright notice and this permission notice appear in all copies.
0007  *
0008  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
0009  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
0010  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
0011  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0012  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
0013  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
0014  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0015  */
0016 
0017 #include <defs.h>
0018 #include "types.h"
0019 #include <ucode_loader.h>
0020 
0021 enum {
0022     D11UCODE_NAMETAG_START = 0,
0023     D11LCN0BSINITVALS24,
0024     D11LCN0INITVALS24,
0025     D11LCN1BSINITVALS24,
0026     D11LCN1INITVALS24,
0027     D11LCN2BSINITVALS24,
0028     D11LCN2INITVALS24,
0029     D11N0ABSINITVALS16,
0030     D11N0BSINITVALS16,
0031     D11N0INITVALS16,
0032     D11UCODE_OVERSIGHT16_MIMO,
0033     D11UCODE_OVERSIGHT16_MIMOSZ,
0034     D11UCODE_OVERSIGHT24_LCN,
0035     D11UCODE_OVERSIGHT24_LCNSZ,
0036     D11UCODE_OVERSIGHT_BOMMAJOR,
0037     D11UCODE_OVERSIGHT_BOMMINOR
0038 };
0039 
0040 int brcms_ucode_data_init(struct brcms_info *wl, struct brcms_ucode *ucode)
0041 {
0042     int rc;
0043 
0044     rc = brcms_check_firmwares(wl);
0045 
0046     rc = rc < 0 ? rc :
0047         brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0bsinitvals24,
0048                      D11LCN0BSINITVALS24);
0049     rc = rc < 0 ?
0050          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn0initvals24,
0051                        D11LCN0INITVALS24);
0052     rc = rc < 0 ?
0053          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1bsinitvals24,
0054                        D11LCN1BSINITVALS24);
0055     rc = rc < 0 ?
0056          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn1initvals24,
0057                        D11LCN1INITVALS24);
0058     rc = rc < 0 ? rc :
0059         brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2bsinitvals24,
0060                      D11LCN2BSINITVALS24);
0061     rc = rc < 0 ?
0062          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11lcn2initvals24,
0063                        D11LCN2INITVALS24);
0064     rc = rc < 0 ?
0065          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0absinitvals16,
0066                        D11N0ABSINITVALS16);
0067     rc = rc < 0 ?
0068          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0bsinitvals16,
0069                        D11N0BSINITVALS16);
0070     rc = rc < 0 ?
0071          rc : brcms_ucode_init_buf(wl, (void **)&ucode->d11n0initvals16,
0072                        D11N0INITVALS16);
0073     rc = rc < 0 ?
0074          rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_16_mimo,
0075                        D11UCODE_OVERSIGHT16_MIMO);
0076     rc = rc < 0 ?
0077          rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_16_mimosz,
0078                     D11UCODE_OVERSIGHT16_MIMOSZ);
0079     rc = rc < 0 ?
0080          rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_24_lcn,
0081                        D11UCODE_OVERSIGHT24_LCN);
0082     rc = rc < 0 ?
0083          rc : brcms_ucode_init_uint(wl, &ucode->bcm43xx_24_lcnsz,
0084                     D11UCODE_OVERSIGHT24_LCNSZ);
0085     rc = rc < 0 ?
0086          rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bommajor,
0087                        D11UCODE_OVERSIGHT_BOMMAJOR);
0088     rc = rc < 0 ?
0089          rc : brcms_ucode_init_buf(wl, (void **)&ucode->bcm43xx_bomminor,
0090                        D11UCODE_OVERSIGHT_BOMMINOR);
0091     return rc;
0092 }
0093 
0094 void brcms_ucode_data_free(struct brcms_ucode *ucode)
0095 {
0096     brcms_ucode_free_buf((void *)ucode->d11lcn0bsinitvals24);
0097     brcms_ucode_free_buf((void *)ucode->d11lcn0initvals24);
0098     brcms_ucode_free_buf((void *)ucode->d11lcn1bsinitvals24);
0099     brcms_ucode_free_buf((void *)ucode->d11lcn1initvals24);
0100     brcms_ucode_free_buf((void *)ucode->d11lcn2bsinitvals24);
0101     brcms_ucode_free_buf((void *)ucode->d11lcn2initvals24);
0102     brcms_ucode_free_buf((void *)ucode->d11n0absinitvals16);
0103     brcms_ucode_free_buf((void *)ucode->d11n0bsinitvals16);
0104     brcms_ucode_free_buf((void *)ucode->d11n0initvals16);
0105     brcms_ucode_free_buf((void *)ucode->bcm43xx_16_mimo);
0106     brcms_ucode_free_buf((void *)ucode->bcm43xx_24_lcn);
0107     brcms_ucode_free_buf((void *)ucode->bcm43xx_bommajor);
0108     brcms_ucode_free_buf((void *)ucode->bcm43xx_bomminor);
0109 }