📄 physet.c
字号:
#include "wtprecomp.h"/*!<br>功能:与1.1G项目相关的<br><br>*/void Set1_1GRF(IN PWT_ADAPTER Adapter){// DBGPRINT(WT_SEND,("1.1G RF set \n")); ////////1M #ifdef __2_4__ WRITE_WT4(0x154,0x0000104a,4); ///////930mHz WRITE_WT4(0x154,0x0000200c,4); ///////930mHz WRITE_WT4(0x154,0x00003027,4); WRITE_WT4(0x154,0x00004c15,4); #endif WRITE_WT4(0x154,0x00001020,4); ///////930mHz WRITE_WT4(0x154,0x00002000,4); ///////930mHz WRITE_WT4(0x154,0x00003027,4); WRITE_WT4(0x154,0x00004c17,4); ////socket D 1# mismatch power 40h //addr is 78000154 ////I mismatch //data is 009f0000 WRITE_WT4(0x154,0x00009f06,4); //addr is 78000154 ////I mismatch //data is 04af0000 WRITE_WT4(0x154,0x0000af30,4); //addr is 78000154 ////q mismatch //data is 00bf0000 WRITE_WT4(0x154,0x0000bf00,4); //addr is 78000154 ////q mismatch //data is 0bcf0000 WRITE_WT4(0x154,0x0000cf01,4); }void Set1_1GAdapterInit(IN PWT_ADAPTER Adapter){ WRITE_WT4(0x170,0x1a23be,4); WRITE_WT4(0x174,0xc2803f,4); WRITE_WT4(0x184,0xd4,1); WRITE_WT4(0x1a4,0xd4,1); WRITE_WT4(0x14c,0x1040,4); WRITE_WT4(0x181,0x01,1); WRITE_WT4(0x188,0x10,1); WRITE_WT4(0x17a,0x02,1); WRITE_WT4(0x17b,0x12,1); WRITE_WT4(0x17e,0x22,1); WRITE_WT4(0x17f,0x26,1); WRITE_WT4(0x182,0x2e,1); WRITE_WT4(0x183,0x2e,1); WRITE_WT4(0x186,0x2e,1); WRITE_WT4(0x18a,0x2b,1); WRITE_WT4(0x18b,0x55,1); WRITE_WT4(0x18e,0xaa,1); WRITE_WT4(0x18f,0xd5,1); WRITE_WT4(0x196,0xff,1); WRITE_WT4(0x197,0xff,1); WRITE_WT4(0x19a,0xff,1); WRITE_WT4(0x19c,0x38,1); //WRITE_WT4(0x19c,0x0a,1); WRITE_WT4(0x1cc,0x5a,1); WRITE_WT4(0x1d8,0x11,1); WRITE_WT4(0x1f0,0x67,1); WRITE_WT4(0x18c,0x20,1); WRITE_WT4(0x178,0xf3,1); WRITE_WT4(0x17c,0x09,1); WRITE_WT4(0x19c,0x38,1);// DBGPRINT(WT_SEND,("1.1G RF set \n"));}/// <summary>/// 功能定义:扫描切换RF2230 rf 的信道/// </summary>///////// <param name="Adapter">适配器上下文环境</param>////// <returns>1</returns>////// <para>///函数实现: 根据信道号,从信道列表中找到对应的参数,然后逐一写到0x154寄存器即可。int RF2230_set(PWT_ADAPTER Adapter, int Channel){ int channeltotal = 0;// unsigned int data = 0; int i =0; RF_CONF_DAT rf_conf_array[] = { //频率;信道;寄存器0;寄存器1;寄存器4;保留 {2412, 1, 0x03f790, 0x033331, 0x0, 0x0 }, {2417, 2, 0x03f790, 0x0b3331, 0x0, 0x0 }, {2422, 3, 0x03e790, 0x033331, 0x0, 0x0 }, {2427, 4, 0x03e790, 0x0b3331, 0x0, 0x0 }, {2432, 5, 0x03f7a0, 0x033331, 0x0, 0x0 }, {2437, 6, 0x03f7a0, 0x0b3331, 0x0, 0x0 }, {2442, 7, 0x03e7a0, 0x033331, 0x0, 0x0 }, {2447, 8, 0x03e7a0, 0x0b3331, 0x0, 0x0 }, {2452, 9, 0x03f7b0, 0x033331, 0x0, 0x0 }, {2457, 10, 0x03f7b0, 0x0b3331, 0x0, 0x0 }, {2462, 11, 0x03e7b0, 0x033331, 0x0, 0x0 }, {2467, 12, 0x03e7b0, 0x0b3331, 0x0, 0x0 }, {2472, 13, 0x03f7c0, 0x033331, 0x0, 0x0 }, {2484, 14, 0x03e7c0, 0x066661, 0x0, 0x0 }, //{5180, 36, 0x0ff560, 0x0aaab1, 0x7fd784, 0x0 }, //{5200, 40, 0x0ff570, 0x155551, 0x7fd784, 0x0 }, //{5220, 44, 0x0ff570, 0x000001, 0x6fd784, 0x0 }, //{5240, 48, 0x0ff570, 0x0aaab1, 0x7fd784, 0x0 }, //{5260, 52, 0x0ff580, 0x155551, 0x7fd784, 0x0 }, //{5280, 56, 0x0ff580, 0x000001, 0x6fd784, 0x0 }, //{5300, 60, 0x0ff580, 0x0aaab1, 0x7fd784, 0x0 }, //{5320, 64, 0x0ff590, 0x155551, 0x7fd784, 0x0 }, //japan channel edit by wp 2006.2.6 /*{5170, 34, 0x000ff560, 0x00055551, 0x0007fd784, 0x0}, {5190, 38, 0x000ff570, 0x00100001, 0x0007fd784, 0x0}, {5210, 42, 0x000ff570, 0x001aaab1, 0x0007fd784, 0x0}, {5230, 46, 0x000ff570, 0x00055551, 0x0007fd784, 0x0},*/ }; if(Adapter->RegMacParameter.RfType != RF2230) return FALSE; channeltotal = (sizeof(rf_conf_array)/sizeof(RF_CONF_DAT)); for(i=0; i<channeltotal; i++) { if(rf_conf_array[i].ch_no == Channel) { if(Adapter->RegMacParameter.ABGMode == IEEE80211A_ONLY) { } else {// DBGPRINT(WT_TRACE, ("RFAiroha switch channel %d,\n", Channel)); WRITE_WT4( 0x154, rf_conf_array[i].reg0,4); WRITE_WT4( 0x154, rf_conf_array[i].reg1,4); udelay(SWITCH_CHANNEL_DELAY+6); udelay(SWITCH_CHANNEL_DELAY+6); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00d80f,4); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00780f,4); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00580f,4); } return TRUE; } } return FALSE;}void WtWlanInterMemInit( IN PWT_ADAPTER Adapter){ //TX USHORT nLen = 0; USHORT nHwKeyItemLen = 0; Adapter->MacHwCfg.ulHwHeadLen = MAX_HW_HEAD_LEN; Adapter->MacHwCfg.ulHwTxCellLen = MAX_TX_CELL_LEN; Adapter->MacHwCfg.ulHwRxCellLen = MAX_RX_CELL_LEN; Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;#ifndef WT_11B_SCO Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxHeadAddrBank4 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.TxBodyAddrBank4 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwTxCellLen;#endif //RX Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank0 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank1 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;#ifndef WT_11B_SCO Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank2 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxHeadAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwHeadLen; Adapter->MainMemAddress->HwCSMem.SysCfg.RxBodyAddrBank3 = host2ieee16( nLen ); nLen+=Adapter->MacHwCfg.ulHwRxCellLen;#endif Adapter->MacHwCfg.HeadLen =Adapter->MacHwCfg.ulHwHeadLen; Adapter->MacHwCfg.BodyLen = ( Adapter->MacHwCfg.ulHwTxCellLen > Adapter->MacHwCfg.ulHwRxCellLen ) ? Adapter->MacHwCfg.ulHwTxCellLen : Adapter->MacHwCfg.ulHwRxCellLen; nHwKeyItemLen = sizeof(WTWLAN_HWKEYTABLE); Adapter->MacHwCfg.KeyMapBaseAddr = nLen ; Adapter->MainMemAddress->HwCSMem.SysCfg.KeyMapAddr = host2ieee16( nLen ); Adapter->MainMemAddress->HwCSMem.SysCfg.KeyMapLen = (MAX_INTERNAL_MEM_LEN - nLen)/nHwKeyItemLen; memset( &(Adapter->MainMemAddress->HwKeyTable), 0, 0x400);}void WtWlanTestInit( IN PWT_ADAPTER Adapter){ // test value: WT_MEMCOPY( Adapter->MainMemAddress->HwCSMem.NetMacAddress.MacAddress, Adapter->PermanentAddress,6); WT_MEMCOPY( Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, Adapter->PermanentAddress,6);/* WT_MEMSET( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, 6, 0xFF );*/ //WRITE_WT4( 0x1c2, 0x00, 1); //mxx add 06.11.08 if(Adapter->RegMacParameter.RfType == RF2230) { WRITE_WT4( 0x184, 0xd0, 1);//RX vga增益控制输出 } else { WRITE_WT4( 0x184, 0xd4, 1); } if(Adapter->RegMacParameter.RfType == RFMD) { WRITE_WT4( 0x154, 0xe00000, 4); WRITE_WT4( 0x154, 0xc2bf60, 4); WRITE_WT4( 0x154, 0x9a9010, 4); WRITE_WT4( 0x154, 0x666670, 4); WRITE_WT4( 0x154, 0xfe5688, 4); WRITE_WT4( 0x154, 0xc2bb68, 4); WRITE_WT4( 0x154, 0x9f9818, 4); WRITE_WT4( 0x154, 0x666678, 4); WRITE_WT4( 0x154, 0xf6a284, 4); WRITE_WT4( 0x154, 0x5fe7a4, 4); WRITE_WT4( 0x154, 0x940094, 4); WRITE_WT4( 0x154, 0x34, 4); WRITE_WT4( 0x154, 0x0c, 4); WRITE_WT4( 0x154, 0xec, 4); WRITE_WT4( 0x154, 0xf0781c, 4); WRITE_WT4( 0x154, 0xf00036, 4); WRITE_WT4( 0x17a, 0x05, 1); WRITE_WT4( 0x17b, 0x0d, 1); WRITE_WT4( 0x17e, 0x1d, 1); WRITE_WT4( 0x17f, 0x2d, 1); WRITE_WT4( 0x182, 0x3d, 1); WRITE_WT4( 0x183, 0x4d, 1); WRITE_WT4( 0x186, 0x55, 1); WRITE_WT4( 0x18a, 0xc8, 1); WRITE_WT4( 0x18b, 0xc0, 1); WRITE_WT4( 0x18e, 0xb0, 1); WRITE_WT4( 0x18f, 0xa0, 1); WRITE_WT4( 0x196, 0x90, 1); WRITE_WT4( 0x197, 0x80, 1); WRITE_WT4( 0x19a, 0x78, 1); } //just for test by hk 2005.11.24 WRITE_WT4( 0x178, 0x33, 1); WRITE_WT4( 0x12c, 0x12, 1); WRITE_WT4( 0x6e, 0x30, 1); WRITE_WT4( 0x70, 0x04, 1); WRITE_WT4( 0x74, 0x1fffff, 4); WRITE_WT4( 0xb8, 0x0201, 2); WRITE_WT4( 0xc4, 0x61a8, 2); WRITE_WT4( 0xc0, 0x01, 1); WRITE_WT4( 0x194, 0x64, 1);#ifdef WT_1_1G_ADAPTER Set1_1GAdapterInit(Adapter);#endif //WT_1_1G_ADAPTER}void RF2230Init(IN PWT_ADAPTER Adapter){ printk("enter RF2230Init \n");// WRITE_WT4( 0x14c, 0x80002004, 4); WRITE_WT4( 0x14c, 0x80002044, 4); WRITE_WT4( 0x154, 0x03f790,4); WRITE_WT4( 0x154, 0x033331,4); WRITE_WT4( 0x154, 0x01b802,4); WRITE_WT4( 0x154, 0x00fff3,4); WRITE_WT4( 0x154, 0x0005a4,4); WRITE_WT4( 0x154, 0x044dc5,4); WRITE_WT4( 0x154, 0x0805b6,4); WRITE_WT4( 0x154, 0x0146c7,4); WRITE_WT4( 0x154, 0x000688,4); WRITE_WT4( 0x154, 0x0403b9,4); WRITE_WT4( 0x154, 0x00dbba,4); WRITE_WT4( 0x154, 0x00099b,4); WRITE_WT4( 0x154, 0x0bdffc,4); WRITE_WT4( 0x154, 0x00000d,4); WRITE_WT4( 0x154, 0x00580f,4); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00d80f,4); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00780f,4); udelay(SWITCH_CHANNEL_DELAY+6); WRITE_WT4( 0x154, 0x00580f,4);}void WtWlanInitWtRf(WT_ADAPTER *Adapter){ FN_ENTER; WRITE_WT4( 0x00, 0x28, 1); //chip frequence WtWlanHwRFReset(Adapter); WtWlanInterMemInit( Adapter ); WtWlanTestInit( Adapter ); WRITE_WT4( 0x5c, 0x09, 1); WRITE_WT4( 0x60, 0x10, 1); WRITE_WT4( 0x64, 0x140, 2); WRITE_WT4( 0x68, 0x30, 1); WRITE_WT4( 0x6c, 0x90, 1); WRITE_WT4( 0x70, 0x04, 1); WRITE_WT4( 0x74, 0x14, 1); WRITE_WT4( 0xb8, 0x00, 2); WRITE_WT4( 0xc4, 0x61a8, 2); WRITE_WT4( 0xc0, 0x01, 1); //WRITE_WT4( 0x12c, 0x12, 1); WRITE_WT4( 0x12c, 0x92, 1); WRITE_WT4( 0x14c, 0x1204, 2);//1206 WRITE_WT4( 0x170, 0x36, 1); WRITE_WT4( 0x174, 0x25, 1); WRITE_WT4( 0x178, 0xf3, 1); WRITE_WT4( 0x188, 0x08, 1); WRITE_WT4( 0x18c, 0x18, 1); WRITE_WT4( 0x194, 0x64, 1); WRITE_WT4( 0x19c, 0x38, 1); WRITE_WT4( 0x1cc, 0x28, 1); WRITE_WT4( 0x154, 0x2a9a6, 4); WRITE_WT4( 0x154, 0x33cc3, 4); WRITE_WT4( 0x154, 0x8ccc, 4); WRITE_WT4( 0x154, 0x214c0, 4); FN_EXIT(0,0);}//check endianvoid WtWlanSoftReset( IN PWT_ADAPTER Adapter)//like hardware reset{ CHIPCTRL RegCtrl; udelay( NIC_DELAY_DURING_RESET ); RegCtrl.RegChipCtrl = ieee2host16(Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl); udelay( NIC_DELAY_DURING_RESET ); RegCtrl.RegChipCtrl &= (~(unsigned short)MASK_SOFT_RESET); Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl); udelay( NIC_DELAY_DURING_RESET ); RegCtrl.RegChipCtrl |=MASK_SOFT_RESET; Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl); udelay( NIC_DELAY_DURING_RESET ); RegCtrl.RegChipCtrl &= (~(unsigned short)MASK_SOFT_RESET); Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl = host2ieee16(RegCtrl.RegChipCtrl); udelay( NIC_DELAY_DURING_RESET );}//对硬件进行复位void WtWlanHardRest(IN PWT_ADAPTER Adapter){ //NdisStallExecution( HARDWARE_RESET_DELAY ); //Adapter->MainMemAddress->HwCSMem.CSRAddress.ChipCtrl.RegChipCtrl |= 0x01; //NdisStallExecution( HARDWARE_RESET_DELAY ); //NdisStallExecution( 50 ); //NdisStallExecution( HARDWARE_RESET_DELAY ); //Adapter->MainMemAddress->HwCSMem.BBCSMem.OFDMCmdEn |= 0x0040; //NdisStallExecution( HARDWARE_RESET_DELAY ); //Adapter->MainMemAddress->HwCSMem.BBCSMem.OFDMCmdEn &= ~0x0040; //NdisStallExecution( HARDWARE_RESET_DELAY ); //NdisStallExecution( 50 ); //NdisStallExecution( 50 );}void WtWlanHwRFReset( IN PWT_ADAPTER Adapter){#if 0#define MASK_RF_SHUTDOWN 0X01#define MASK_RF_RADIOPE 0X02#define MASK_RF_RESET 0X04#endif //0x150 Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl = 4; udelay( NIC_RF_RESET_DELAY ); Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl =0; udelay( NIC_RF_RESET_DELAY ); Adapter->MainMemAddress->HwCSMem.CSRAddress.RFIfCtrl = 3; udelay( NIC_RF_RESET_DELAY ); }void WtWlanSetTTL( IN PWT_ADAPTER Adapter, ULONG MsduTTL){ Adapter->Ndis80211Parameter.dot11MaxReceiveLifetime = MsduTTL; Adapter->MainMemAddress->HwCSMem.ProtoParam.MsduTTL = host2ieee32( MsduTTL&0xFFFFFF );}void WtWlanSetHwSeq( IN PWT_ADAPTER Adapter, USHORT seq, UCHAR step){ Adapter->MacParameter.mSeqNum = seq; Adapter->MacParameter.mStep = step; Adapter->MainMemAddress->HwCSMem.ProtoParam.FrmSN = host2ieee16( seq ); Adapter->MainMemAddress->HwCSMem.ProtoParam.FrmSeqStep = step; Adapter->MacParameter.bHwSeq = TRUE;}void WtWlanPrivacyInit( IN PWT_ADAPTER Adapter){ Adapter->MainMemAddress->HwCSMem.EncyptCSMem.DecryptModeUnicast = ENCRYPT_NONE; Adapter->MainMemAddress->HwCSMem.EncyptCSMem.DecryptModeMulticast = ENCRYPT_NONE;}void WtWlanHwMacAddrInit( IN PWT_ADAPTER Adapter){ //78 WT_MEMCOPY( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.MacAddress, Adapter->MacParameter.dot11MacAddress,6 ); //80 WT_MEMCOPY( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, Adapter->MacParameter.mBssid,6 ); /* WT_MEMSET( &Adapter->MainMemAddress->HwCSMem.NetMacAddress.NetAddress, 6, 0xFF ); */ }void Test64BitReadAndWrite( IN PWT_ADAPTER Adapter){ unsigned long long systime, testa; testa = 0x0123456789abcdefull; WRITE64_WT4( OFFSET_SYSTIMER, 0x0123456789abcdefull ); READ64_WT4( OFFSET_SYSTIMER, systime); Dump((char *)(&systime), 8, TRUE, 1 ); Dump((char *)(&testa), 8, TRUE, 1 );}void WtWlanHwTimerInit( IN PWT_ADAPTER Adapter){ //a8 WRITE64_WT4( OFFSET_SYSTIMER, 0x12ull );// random data to initialize //b8 Adapter->MainMemAddress->HwCSMem.ProtoParam.HwNavTime = host2ieee16( 0x201 );}void WtWlanHwIntInit( IN PWT_ADAPTER Adapter){#if 0#define MASK_INT_ALL 0X01#define MASK_INT_TXEND 0X02#define MASK_INT_RXSTART 0X04#define MASK_INT_RXEND 0X08#define MASK_INT_TIMER_BEACON 0X10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -