⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.c

📁 atheros ar5001 5002 driver
💻 C
📖 第 1 页 / 共 2 页
字号:
/* eeprom.c - Contains the functions for printing the eeprom contents */

/* Copyright (c) 2000 Atheros Communications, Inc., All Rights Reserved */
#ident  "ACI $Id: //depot/sw/branches/ART_V45/sw/src/dk/mdk/devmld/eeprom.c#2 $, $Header: //depot/sw/branches/ART_V45/sw/src/dk/mdk/devmld/eeprom.c#2 $"

#ifdef _WINDOWS
 #include <windows.h>
#endif

#ifdef JUNGO
#include "mld.h"       /* Low level driver information for MLD */
#endif
#ifdef ANWI
#include "mld_anwi.h"
#endif
#ifdef LINUX
#include "mld_linux.h"
#endif

#ifdef __ATH_DJGPPDOS__
 #define __int64	long long
 #define HANDLE long
 typedef unsigned long DWORD;
 #define Sleep	delay
 #include <bios.h>
#endif	// #ifdef __ATH_DJGPPDOS__

#include <stdio.h>
 
#ifndef LINUX
#include <conio.h>
#else
#include "linux_ansi.h"
#endif
#include <string.h>
#include <stdlib.h>
#include "wlantype.h"
#include "mEeprom.h"
#include "mConfig.h"     
#include "art_if.h"
#include "test.h"
#ifdef __ATH_DJGPPDOS__
#include "mlibif_dos.h"
#endif

A_UINT16  xpdGainMapping[] = {0, 6, 9, 18};

void printHeaderInfo_16K
(
 MDK_EEP_HEADER_INFO	*pHeaderInfo,
 A_UINT32			mode
)
{
	A_CHAR binaryString[50];
	A_CHAR modeString[10];
	A_UINT16 i, j;
	MODE_HEADER_INFO	*pModeInfo;
	A_INT16  tmpVal;

	switch(mode) {
	case MODE_11A:
		pModeInfo = &(pHeaderInfo->info11a);
		sprintf(modeString, "11a");
		break;

	case MODE_11G:
		pModeInfo = &(pHeaderInfo->info11g);
		sprintf(modeString, "11g");
		break;

	case MODE_11O:
		pModeInfo = &(pHeaderInfo->info11g);
		sprintf(modeString, "11o");
		break;

	case MODE_11B:
		pModeInfo = &(pHeaderInfo->info11b);
		sprintf(modeString, "11b");
		break;

	default:

		printf("Illegal mode passed to printHeaderInfo_16K\n");
		return;
	} //end switch

	uiPrintf("\n");
	uiPrintf(" =================Header Information for mode %s===============\n", modeString);

	uiPrintf(" |  Major Version           %2d  ", pHeaderInfo->majorVersion);
	uiPrintf("|  Minor Version           %2d  |\n", pHeaderInfo->minorVersion);
	if(pHeaderInfo->majorVersion >= 4) {
		uiPrintf(" |  EAR Start            0x%3x  ", pHeaderInfo->earStartLocation);
		uiPrintf("|  Target Power Start   0x%3x  |\n", pHeaderInfo->trgtPowerStartLocation);
		uiPrintf(" |  EEP MAP                0x%1x  ", pHeaderInfo->eepMap);
		uiPrintf("|                              |\n");
   		uiPrintf(" |  Enable 32 khz            %1d  ", pHeaderInfo->enable32khz);

		if(pHeaderInfo->minorVersion >= 5) {
			uiPrintf("|  Old Enable 32 khz        %1d  |\n", pHeaderInfo->oldEnable32khz);
			uiPrintf(" |  Mask for Radio 0     %1d ", pHeaderInfo->maskRadio0);
			switch (pHeaderInfo->maskRadio0) {
			case 0:
				uiPrintf("   ");
				break;
			case 1:
				uiPrintf("  g");
				break;
			case 2:
				uiPrintf("  a");
				break;
			case 3:
				uiPrintf("a/g");
				break;
			default:
				uiPrintf("   ");
				break;
			}
			uiPrintf("  |  Mask for Radio 1     %1d ", pHeaderInfo->maskRadio1);
			switch (pHeaderInfo->maskRadio1) {
			case 0:
				uiPrintf("   ");
				break;
			case 1:
				uiPrintf("  g");
				break;
			case 2:
				uiPrintf("  a");
				break;
			case 3:
				uiPrintf("a/g");
				break;
			default:
				uiPrintf("   ");
				break;
			}
			uiPrintf("  |\n");
		} else {
			uiPrintf("|                              |\n");
		}

		if(pHeaderInfo->minorVersion >= 4) {
			uiPrintf(" |  EEP File Version       %3d  ", pHeaderInfo->eepFileVersion);
			uiPrintf("|  ART Build Number       %3d  |\n", pHeaderInfo->artBuildNumber);
			uiPrintf(" |  EAR File Identifier    %3d  ", pHeaderInfo->earFileIdentifier);
			uiPrintf("|  EAR File Version       %3d  |\n", pHeaderInfo->earFileVersion);
		}
	}
	uiPrintf(" |-------------------------------------------------------------|\n");

	if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 1)) 
			|| (pHeaderInfo->majorVersion == 4)){
		uiPrintf(" |  A Mode         %1d  ", pHeaderInfo->Amode);
		uiPrintf("|  B Mode         %1d  ", pHeaderInfo->Bmode);
		uiPrintf("|  G Mode        %1d  |\n", pHeaderInfo->Gmode);
	}
	else {
		uiPrintf(" |  A Mode                   %1d  ", pHeaderInfo->Amode);
		uiPrintf("|  B Mode                   %1d  |\n", pHeaderInfo->Bmode);
	}

	if(pHeaderInfo->countryCodeFlag) {
		uiPrintf(" |  Country Code %03x  ", pHeaderInfo->countryRegCode);
	} else {
		uiPrintf(" |  Reg. Domain  %03x  ", pHeaderInfo->countryRegCode);
	}

	uiPrintf("|  turbo Disable  %1d  ", pHeaderInfo->turboDisable);
	uiPrintf("|  RF Silent     %1d  |\n", pHeaderInfo->RFKill);
	uiPrintf(" |-------------------------------------------------------------|\n");
	if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 3)) 
			|| (pHeaderInfo->majorVersion == 4)){
		uiPrintf(" |  worldwide roaming        %1x  ", pHeaderInfo->worldwideRoaming);
		uiPrintf("|  False detect backoff  0x%02x  |\n", pModeInfo->falseDetectBackoff);
	}
	uiPrintf(" |  device type              %1x  ", pHeaderInfo->deviceType);

	uiPrintf("|  Switch Settling Time  0x%02x  |\n", pModeInfo->switchSettling);
	uiPrintf(" |  ADC Desired size       %2d  ", pModeInfo->adcDesiredSize);
	uiPrintf("|  XLNA Gain             0x%02x  |\n", pModeInfo->xlnaGain);

	uiPrintf(" |  tx end to XLNA on     0x%02x  ", pModeInfo->txEndToXLNAOn);
	uiPrintf("|  Threashold 62         0x%02x  |\n", pModeInfo->thresh62);

	uiPrintf(" |  tx end to XPA off     0x%02x  ", pModeInfo->txEndToXPAOff);
	uiPrintf("|  tx end to XPA on      0x%02x  |\n", pModeInfo->txFrameToXPAOn);

	uiPrintf(" |  PGA Desired size       %2d  ", pModeInfo->pgaDesiredSize);
	uiPrintf("|  Noise Threshold        %3d  |\n", pModeInfo->noisefloorThresh);

	uiPrintf(" |  XPD Gain              0x%02x  ", pModeInfo->xgain);
	uiPrintf("|  XPD                      %1d  |\n", pModeInfo->xpd);

	uiPrintf(" |  txrx Attenuation      0x%02x  ", pModeInfo->txrxAtten);
	
	
	uiPrintf("|  Antenna control  0  ");
	itoa(pModeInfo->antennaControl[0], binaryString, 2);
	for(i = 0; i < (6 - strlen(binaryString)); i++) {
		uiPrintf("0");
	}
	uiPrintf("%s  |\n", binaryString);
	for(j = 1; j <= 5; j++) {
		uiPrintf(" |  Antenna control %2d  ", j);

		itoa(pModeInfo->antennaControl[j], binaryString, 2);
		for(i = 0; i < (6 - strlen(binaryString)); i++) {
			uiPrintf("0");
		}
		uiPrintf("%s  ", binaryString);

		uiPrintf("|  Antenna control %2d  ", j+5);
		itoa(pModeInfo->antennaControl[j+5], binaryString, 2);
		for(i = 0; i < (6 - strlen(binaryString)); i++) {
			uiPrintf("0");
		}
		uiPrintf("%s  |\n", binaryString);
	}

	
	if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 4)) 
			|| (pHeaderInfo->majorVersion == 4)){
		uiPrintf(" |  Init GainI            0x%02x  ", pModeInfo->initialGainI);
//		if(mode == MODE_11B) {
//			uiPrintf("|                              |\n");
//		}
		if(mode != MODE_11B) {
			uiPrintf("|  Turbo 2W Pwr Max.       %2d  |\n", pModeInfo->turbo2wMaxPower);	
		}
		if((mode == MODE_11G) || (mode == MODE_11O)) {
			uiPrintf(" |  OFDM/CCK Delta        %4.1f  ", (float)(pHeaderInfo->scaledOfdmCckDelta)/10);
		}
		
		if (pHeaderInfo->majorVersion == 4) {
			if(mode != MODE_11A) {
	    		uiPrintf("|  Use Fixed dB Bias 2.4GHz %1d  |\n", pHeaderInfo->fixedBiasB);
			}
		} else {
			uiPrintf("|                              |\n");	
		}
	}

	if(pHeaderInfo->majorVersion == 4) {
		if(mode != MODE_11B) {
			tmpVal = pModeInfo->iqCalI ;
			if ((tmpVal >> 5) == 0x1) tmpVal = tmpVal - 64 ;
			uiPrintf(" |  IQ Cal I               %3d  ", tmpVal);
			tmpVal = pModeInfo->iqCalQ ;
			if ((tmpVal >> 4) == 0x1) tmpVal = tmpVal - 32 ;
			uiPrintf("|  IQ Cal Q               %3d  |\n", tmpVal);
		}
		if(mode == MODE_11A) {
			uiPrintf(" |  Use Fixed dB Bias 5GHz   %1d  ", pHeaderInfo->fixedBiasA);
			if(pHeaderInfo->minorVersion >= 1) {
				uiPrintf("|  rxtxMargin            0x%02x  |\n", pModeInfo->rxtxMargin);
			}
			else {
				uiPrintf("|                              |\n");
			}
		}
		if(pHeaderInfo->minorVersion >= 1) {
			if(mode != MODE_11A) {
				uiPrintf(" |  rxtxMargin            0x%02x  ", pModeInfo->rxtxMargin);				
			}
		}
		if((pHeaderInfo->minorVersion >= 2) && (mode == MODE_11G)){
			uiPrintf("|  OFDM/CCK Gain Delta   %4.1f  |\n", (float)(pHeaderInfo->ofdmCckGainDeltaX2)/2);
		} else if ((mode == MODE_11B) || (mode == MODE_11O)) {
			uiPrintf("|                              |\n");
		}
		if((pHeaderInfo->minorVersion >= 5) && ((mode == MODE_11G)||(mode == MODE_11O))){
			uiPrintf(" |  CH14 Filter CCK Delta %4.1f  ", (float)(pHeaderInfo->scaledCh14FilterCckDelta)/10);
			uiPrintf("|                              |\n");
		}

	}

	uiPrintf(" |-------------------------------------------------------------|\n");
	if(mode == MODE_11A) {
		uiPrintf(" |   OB_1   %1d   ", pModeInfo->ob_1);
		uiPrintf("|   OB_2    %1d   ", pModeInfo->ob_2);
		uiPrintf("|   OB_3   %1d  ", pModeInfo->ob_3);
		uiPrintf("|   OB_4     %1d   |\n", pModeInfo->ob_4);
		uiPrintf(" |   DB_1   %1d   ", pModeInfo->db_1);
		uiPrintf("|   DB_2    %1d   ", pModeInfo->db_2);
		uiPrintf("|   DB_3   %1d  ", pModeInfo->db_3);
		uiPrintf("|   DB_4     %1d   |\n", pModeInfo->db_4);
	}
	else {
	if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 1)) 
			|| (pHeaderInfo->majorVersion == 4)){
			uiPrintf(" |   OB_1   %1d   ", pModeInfo->ob_1);
			uiPrintf("|   B_OB    %1d   ", pModeInfo->ob_4);
			uiPrintf("|   DB_1   %1d  ", pModeInfo->db_1);
			uiPrintf("|   B_DB     %1d   |\n", pModeInfo->db_4);
		}
		else {
			uiPrintf(" |  OB_1                     %1d  ", pModeInfo->ob_1);
			uiPrintf("|  DB_1                     %1d  |\n", pModeInfo->db_1);
		}
		
	}

#if 0 
	if ((mode == MODE_11A) && (pHeaderInfo->minorVersion >= 2)) {
		uiPrintf(" |-------------------------------------------------------------|\n");
		for(i = 0; i < 4; i++) {
			uiPrintf(" |  Gsel_%1d  %1d   ", i, pHeaderInfo->cornerCal[i].gSel);
			uiPrintf("|  Pd84_%1d   %1d   ", i, pHeaderInfo->cornerCal[i].pd84);
			uiPrintf("|  Pd90_%1d  %1d  ", i, pHeaderInfo->cornerCal[i].pd90);
			uiPrintf("|  clip_%1d    %1d   |\n", i, pHeaderInfo->cornerCal[i].clip);
		}
	}
#endif
	uiPrintf(" ===============================================================\n");

	if(((pHeaderInfo->majorVersion == 3) && (pHeaderInfo->minorVersion >= 4)) 
			 && (mode != MODE_11A)) {
		if((pModeInfo->calPier1 != 0xff) || (pModeInfo->calPier2 != 0xff)) {
			uiPrintf("\nCalibration actually performed at channels: ");
			if(pModeInfo->calPier1 != 0xff) {
				uiPrintf("%d ", pModeInfo->calPier1);
			}	

			if(pModeInfo->calPier2 != 0xff) {
				uiPrintf("%d ", pModeInfo->calPier2);
			}	

			uiPrintf("\n");
		}
	}
		
	return;

}

void printChannelInfo_16K
(
 MDK_PCDACS_ALL_MODES	*pEepromData,
 A_UINT32			mode
)
{
	A_UINT16			i, j, k = 0;
	MDK_DATA_PER_CHANNEL	*pDataPerChannel;

	switch(mode) {
	case MODE_11A:
		pDataPerChannel = pEepromData->DataPerChannel_11a;
		break;

	case MODE_11G:
	case MODE_11O:
		pDataPerChannel = pEepromData->DataPerChannel_11g;
		break;

	case MODE_11B:
		pDataPerChannel = pEepromData->DataPerChannel_11b;
		break;

	default:
		printf("Illegal mode passed to printChannelInfo_16K\n");
		return;
	}
	
	uiPrintf("\n");
	if(mode == MODE_11A) {
		uiPrintf("=========================Calibration Information============================\n");
		
		for (k = 0; k < 10; k+=5) {
			for(i = k; i < k + 5; i++) {
				uiPrintf("|     %04d     ",
					pDataPerChannel[i].channelValue);
			}
			uiPrintf("|\n");
			
			uiPrintf("|==============|==============|==============|==============|==============|\n");
			for(i = k; i < k + 5; i++) {
				uiPrintf("|pcdac pwr(dBm)");
			}
			uiPrintf("|\n");

			for(j = 0; j < pDataPerChannel[0].numPcdacValues; j++) {
				for(i = k; i < k + 5; i++) {
					uiPrintf("|  %02d    %4.1f  ",
						pDataPerChannel[i].PcdacValues[j],
						((float)(pDataPerChannel[i].PwrValues[j]))/SCALE);
				}
				uiPrintf("|\n");
			}
			
			uiPrintf("|              |              |              |              |              |\n");	
			for (i = k; i < k + 5; i++) {
				uiPrintf("| pcdac min %02d ", pDataPerChannel[i].pcdacMin);
			}
			uiPrintf("|\n");
			for (i = k; i < k + 5; i++) {
				uiPrintf("| pcdac max %02d ", pDataPerChannel[i].pcdacMax);
			}
			uiPrintf("|\n");
			uiPrintf("|==============|==============|==============|==============|==============|\n");
		}
	} else {
		uiPrintf("               ==========Calibration Information=============\n");
		
		for(i = 0; i < 3; i++) {
			if(0 == i) {
				uiPrintf("               ");
			}
			uiPrintf("|     %04d     ",
				pDataPerChannel[i].channelValue);
		}
		uiPrintf("|\n");
		
		uiPrintf("               |==============|==============|==============|\n");
		for(i = 0; i < 3; i++) {
			if(0 == i) {
				uiPrintf("               ");
			}
			uiPrintf("|pcdac pwr(dBm)");
		}
		uiPrintf("|\n");

		for(j = 0; j < pDataPerChannel[0].numPcdacValues; j++) {
			for(i = 0; i < 3; i++) {
				if(0 == i) {
					uiPrintf("               ");
				}
				uiPrintf("|  %02d    %4.1f  ",
					pDataPerChannel[i].PcdacValues[j],
					((float)(pDataPerChannel[i].PwrValues[j]))/SCALE);
			}
			uiPrintf("|\n");
		}
		
		uiPrintf("               |              |              |              |\n");	
		uiPrintf("               ");
		for (i = 0; i < 3; i++) {
			uiPrintf("| pcdac min %02d ", pDataPerChannel[i].pcdacMin);
		}
		uiPrintf("|\n");
		uiPrintf("               ");
		for (i = 0; i < 3; i++) {
			uiPrintf("| pcdac max %02d ", pDataPerChannel[i].pcdacMax);
		}
		uiPrintf("|\n");
		uiPrintf("               |==============|==============|==============|\n");

	}
}

void printTargetPowerInfo_16K
(
 MDK_TRGT_POWER_ALL_MODES	*pPowerInfoAllModes,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -