ath9k中的EEPROM


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文件系統了定義了查看這些變量值的接口,其交互的接口如下:

  1. typedef struct ospreyEeprom {  
  2.     u_int8_t  eepromVersion;  
  3.     u_int8_t  templateVersion;  
  4.     u_int8_t  macAddr[6];  
  5.     u_int8_t  custData[OSPREY_CUSTOMER_DATA_SIZE];  
  6.   
  7.     OSPREY_BASE_EEP_HEADER    baseEepHeader;  
  8.   
  9.     OSPREY_MODAL_EEP_HEADER   modalHeader2G;  
  10.     OSPREY_BASE_EXTENSION_1 base_ext1;  
  11.     u_int8_t            calFreqPier2G[OSPREY_NUM_2G_CAL_PIERS];  
  12.     OSP_CAL_DATA_PER_FREQ_OP_LOOP calPierData2G[OSPREY_MAX_CHAINS][OSPREY_NUM_2G_CAL_PIERS];  
  13.     u_int8_t calTarget_freqbin_Cck[OSPREY_NUM_2G_CCK_TARGET_POWERS];  
  14.     u_int8_t calTarget_freqbin_2G[OSPREY_NUM_2G_20_TARGET_POWERS];  
  15.     u_int8_t calTarget_freqbin_2GHT20[OSPREY_NUM_2G_20_TARGET_POWERS];  
  16.     u_int8_t calTarget_freqbin_2GHT40[OSPREY_NUM_2G_40_TARGET_POWERS];  
  17.     CAL_TARGET_POWER_LEG calTargetPowerCck[OSPREY_NUM_2G_CCK_TARGET_POWERS];  
  18.     CAL_TARGET_POWER_LEG calTargetPower2G[OSPREY_NUM_2G_20_TARGET_POWERS];  
  19.     OSP_CAL_TARGET_POWER_HT  calTargetPower2GHT20[OSPREY_NUM_2G_20_TARGET_POWERS];  
  20.     OSP_CAL_TARGET_POWER_HT  calTargetPower2GHT40[OSPREY_NUM_2G_40_TARGET_POWERS];  
  21.     u_int8_t   ctlIndex_2G[OSPREY_NUM_CTLS_2G];  
  22.     u_int8_t   ctl_freqbin_2G[OSPREY_NUM_CTLS_2G][OSPREY_NUM_BAND_EDGES_2G];  
  23.     OSP_CAL_CTL_DATA_2G   ctlPowerData_2G[OSPREY_NUM_CTLS_2G];  
  24.   
  25.     OSPREY_MODAL_EEP_HEADER   modalHeader5G;  
  26.     OSPREY_BASE_EXTENSION_2 base_ext2;  
  27.     u_int8_t            calFreqPier5G[OSPREY_NUM_5G_CAL_PIERS];  
  28.     OSP_CAL_DATA_PER_FREQ_OP_LOOP calPierData5G[OSPREY_MAX_CHAINS][OSPREY_NUM_5G_CAL_PIERS];  
  29.     u_int_t calTarget_freqbin_5G[OSPREY_NUM_5G_20_TARGET_POWERS];  
  30.     u_int8_t calTarget_freqbin_5GHT20[OSPREY_NUM_5G_20_TARGET_POWERS];  
  31.     u_int8_t calTarget_freqbin_5GHT40[OSPREY_NUM_5G_40_TARGET_POWERS];  
  32.     CAL_TARGET_POWER_LEG calTargetPower5G[OSPREY_NUM_5G_20_TARGET_POWERS];  
  33.     OSP_CAL_TARGET_POWER_HT  calTargetPower5GHT20[OSPREY_NUM_5G_20_TARGET_POWERS];  
  34.     OSP_CAL_TARGET_POWER_HT  calTargetPower5GHT40[OSPREY_NUM_5G_40_TARGET_POWERS];  
  35.     u_int8_t   ctlIndex_5G[OSPREY_NUM_CTLS_5G];  
  36.     u_int8_t   ctl_freqbin_5G[OSPREY_NUM_CTLS_5G][OSPREY_NUM_BAND_EDGES_5G];  
  37.     OSP_CAL_CTL_DATA_5G   ctlPowerData_5G[OSPREY_NUM_CTLS_5G];  
  38. } __packed ar9300_eeprom_t;  

root@OpenWrt:/sys/kernel/debug/ieee80211# ls

phy0  phy1 此處說明系統有倆個wifi網卡,每一張都有自己的狀態信息。主要的文件有:modal_eepromrx_chainmasktx_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);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章