110 lines
		
	
	
	
		
			3.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
	
		
			3.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * 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); | ||
|  | } |