reference:
AR93xx_AR94xx_AR95xx_EEPROM_Device_Configuration
compat-wireless-2014-03-31\drivers\net\wireless\ath\ath9k\ Ar9003_eeprom.h中定义了
struct ar9300_eeprom 其中保存了校准相关的数据变量, 如MAC地址,eepromVersion;
此数据结构值得研究,同时在sys文件系统了定义了查看这些变量值的接口,其交互的接口如下:
- typedef struct ospreyEeprom {
- u_int8_t eepromVersion;
- u_int8_t templateVersion;
- u_int8_t macAddr[6];
- u_int8_t custData[OSPREY_CUSTOMER_DATA_SIZE];
- OSPREY_BASE_EEP_HEADER baseEepHeader;
- OSPREY_MODAL_EEP_HEADER modalHeader2G;
- OSPREY_BASE_EXTENSION_1 base_ext1;
- u_int8_t calFreqPier2G[OSPREY_NUM_2G_CAL_PIERS];
- OSP_CAL_DATA_PER_FREQ_OP_LOOP calPierData2G[OSPREY_MAX_CHAINS][OSPREY_NUM_2G_CAL_PIERS];
- u_int8_t calTarget_freqbin_Cck[OSPREY_NUM_2G_CCK_TARGET_POWERS];
- u_int8_t calTarget_freqbin_2G[OSPREY_NUM_2G_20_TARGET_POWERS];
- u_int8_t calTarget_freqbin_2GHT20[OSPREY_NUM_2G_20_TARGET_POWERS];
- u_int8_t calTarget_freqbin_2GHT40[OSPREY_NUM_2G_40_TARGET_POWERS];
- CAL_TARGET_POWER_LEG calTargetPowerCck[OSPREY_NUM_2G_CCK_TARGET_POWERS];
- CAL_TARGET_POWER_LEG calTargetPower2G[OSPREY_NUM_2G_20_TARGET_POWERS];
- OSP_CAL_TARGET_POWER_HT calTargetPower2GHT20[OSPREY_NUM_2G_20_TARGET_POWERS];
- OSP_CAL_TARGET_POWER_HT calTargetPower2GHT40[OSPREY_NUM_2G_40_TARGET_POWERS];
- u_int8_t ctlIndex_2G[OSPREY_NUM_CTLS_2G];
- u_int8_t ctl_freqbin_2G[OSPREY_NUM_CTLS_2G][OSPREY_NUM_BAND_EDGES_2G];
- OSP_CAL_CTL_DATA_2G ctlPowerData_2G[OSPREY_NUM_CTLS_2G];
- OSPREY_MODAL_EEP_HEADER modalHeader5G;
- OSPREY_BASE_EXTENSION_2 base_ext2;
- u_int8_t calFreqPier5G[OSPREY_NUM_5G_CAL_PIERS];
- OSP_CAL_DATA_PER_FREQ_OP_LOOP calPierData5G[OSPREY_MAX_CHAINS][OSPREY_NUM_5G_CAL_PIERS];
- u_int_t calTarget_freqbin_5G[OSPREY_NUM_5G_20_TARGET_POWERS];
- u_int8_t calTarget_freqbin_5GHT20[OSPREY_NUM_5G_20_TARGET_POWERS];
- u_int8_t calTarget_freqbin_5GHT40[OSPREY_NUM_5G_40_TARGET_POWERS];
- CAL_TARGET_POWER_LEG calTargetPower5G[OSPREY_NUM_5G_20_TARGET_POWERS];
- OSP_CAL_TARGET_POWER_HT calTargetPower5GHT20[OSPREY_NUM_5G_20_TARGET_POWERS];
- OSP_CAL_TARGET_POWER_HT calTargetPower5GHT40[OSPREY_NUM_5G_40_TARGET_POWERS];
- u_int8_t ctlIndex_5G[OSPREY_NUM_CTLS_5G];
- u_int8_t ctl_freqbin_5G[OSPREY_NUM_CTLS_5G][OSPREY_NUM_BAND_EDGES_5G];
- OSP_CAL_CTL_DATA_5G ctlPowerData_5G[OSPREY_NUM_CTLS_5G];
- } __packed ar9300_eeprom_t;
root@OpenWrt:/sys/kernel/debug/ieee80211# ls
phy0 phy1 此处说明系统有俩个wifi网卡,每一张都有自己的状态信息。主要的文件有:modal_eeprom,rx_chainmask,tx_chainmask。
代码当然入口点如下:
[ 16.300000] ath_ahb_eeprom_read
[ 16.300000] ath9k_hw_use_flash
ar9300EepromDumpSupport(struct ath_hal *ah, void **ppE)
{
printk("ar9300EepromDumpSupport \n");
*ppE = &(AH9300(ah)->ah_eeprom);
return sizeof(ar9300_eeprom_t);
}