1*b4c3e9b5SBjoern A. Zeeb /* 2*b4c3e9b5SBjoern A. Zeeb * Copyright (c) 2010 Broadcom Corporation 3*b4c3e9b5SBjoern A. Zeeb * 4*b4c3e9b5SBjoern A. Zeeb * Permission to use, copy, modify, and/or distribute this software for any 5*b4c3e9b5SBjoern A. Zeeb * purpose with or without fee is hereby granted, provided that the above 6*b4c3e9b5SBjoern A. Zeeb * copyright notice and this permission notice appear in all copies. 7*b4c3e9b5SBjoern A. Zeeb * 8*b4c3e9b5SBjoern A. Zeeb * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*b4c3e9b5SBjoern A. Zeeb * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*b4c3e9b5SBjoern A. Zeeb * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 11*b4c3e9b5SBjoern A. Zeeb * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*b4c3e9b5SBjoern A. Zeeb * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 13*b4c3e9b5SBjoern A. Zeeb * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14*b4c3e9b5SBjoern A. Zeeb * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*b4c3e9b5SBjoern A. Zeeb */ 16*b4c3e9b5SBjoern A. Zeeb #ifndef _BRCM_UCODE_H_ 17*b4c3e9b5SBjoern A. Zeeb #define _BRCM_UCODE_H_ 18*b4c3e9b5SBjoern A. Zeeb 19*b4c3e9b5SBjoern A. Zeeb #include "types.h" /* forward structure declarations */ 20*b4c3e9b5SBjoern A. Zeeb 21*b4c3e9b5SBjoern A. Zeeb #define MIN_FW_SIZE 40000 /* minimum firmware file size in bytes */ 22*b4c3e9b5SBjoern A. Zeeb #define MAX_FW_SIZE 150000 23*b4c3e9b5SBjoern A. Zeeb 24*b4c3e9b5SBjoern A. Zeeb #define UCODE_LOADER_API_VER 0 25*b4c3e9b5SBjoern A. Zeeb 26*b4c3e9b5SBjoern A. Zeeb struct d11init; 27*b4c3e9b5SBjoern A. Zeeb 28*b4c3e9b5SBjoern A. Zeeb struct brcms_ucode { 29*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn0bsinitvals24; 30*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn0initvals24; 31*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn1bsinitvals24; 32*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn1initvals24; 33*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn2bsinitvals24; 34*b4c3e9b5SBjoern A. Zeeb struct d11init *d11lcn2initvals24; 35*b4c3e9b5SBjoern A. Zeeb struct d11init *d11n0absinitvals16; 36*b4c3e9b5SBjoern A. Zeeb struct d11init *d11n0bsinitvals16; 37*b4c3e9b5SBjoern A. Zeeb struct d11init *d11n0initvals16; 38*b4c3e9b5SBjoern A. Zeeb __le32 *bcm43xx_16_mimo; 39*b4c3e9b5SBjoern A. Zeeb size_t bcm43xx_16_mimosz; 40*b4c3e9b5SBjoern A. Zeeb __le32 *bcm43xx_24_lcn; 41*b4c3e9b5SBjoern A. Zeeb size_t bcm43xx_24_lcnsz; 42*b4c3e9b5SBjoern A. Zeeb u32 *bcm43xx_bommajor; 43*b4c3e9b5SBjoern A. Zeeb u32 *bcm43xx_bomminor; 44*b4c3e9b5SBjoern A. Zeeb }; 45*b4c3e9b5SBjoern A. Zeeb 46*b4c3e9b5SBjoern A. Zeeb int brcms_ucode_data_init(struct brcms_info *wl, struct brcms_ucode *ucode); 47*b4c3e9b5SBjoern A. Zeeb 48*b4c3e9b5SBjoern A. Zeeb void brcms_ucode_data_free(struct brcms_ucode *ucode); 49*b4c3e9b5SBjoern A. Zeeb 50*b4c3e9b5SBjoern A. Zeeb int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, unsigned int idx); 51*b4c3e9b5SBjoern A. Zeeb int brcms_ucode_init_uint(struct brcms_info *wl, size_t *n_bytes, 52*b4c3e9b5SBjoern A. Zeeb unsigned int idx); 53*b4c3e9b5SBjoern A. Zeeb void brcms_ucode_free_buf(void *); 54*b4c3e9b5SBjoern A. Zeeb int brcms_check_firmwares(struct brcms_info *wl); 55*b4c3e9b5SBjoern A. Zeeb 56*b4c3e9b5SBjoern A. Zeeb #endif /* _BRCM_UCODE_H_ */ 57