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

📄 zdhw.c

📁 该代码为linux下通过usb驱动实现的无线网络驱动程序,在2.6.18的内核下调试通过
💻 C
📖 第 1 页 / 共 5 页
字号:
            pObj->SetReg(reg, 0x85C1, 0x0F);
            //ZD1211_WRITE_REGISTER(Adapter, 0x85C1, 0x0F, FALSE);
            tmpvalue = pObj->GetReg(reg, 0x85C1);
            //ZD1211_READ_REGISTER(Adapter, 0x85C1, &tmpvalue, FALSE);
            if ((tmpvalue & 0xf) == 0x0 ) {
                bLocked=TRUE;
                pObj->UW2453RFTableIndex = i+1;
                break;
            }
        }
        if(!bLocked)
        {
            pObj->UW2453RFTableIndex = i+1;
        }


        //if (bLocked) {    
/*
        if(pObj->UW2453MiniCard)
        {
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][1*3]);   
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][1*3+1]); 
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][1*3+2]); 
        }
        else
*/
        {
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][1*3]); 
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][1*3+1]);   
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][1*3+2]);   
        }
        //} else {  //turn off RF when we can't lock
        //  Set_IF_Synthesizer(Adapter, 0x025f90);  
        //  LockPhyReg(pObj);
        //  ZD1205_WRITE_REGISTER(Adapter, CR11, 0x04);
        //  ZD1205_WRITE_REGISTER(Adapter, CR251, 0x2f); 
        //  UnLockPhyReg(pObj);            
        //}

    }
    else{   
          //Set_IF_Synthesizer(Adapter, 0x40002b);//6109
          //Set_IF_Synthesizer(Adapter, 0x519e4f);//6109
          //Set_IF_Synthesizer(Adapter, 0x6f81ac);//6109
          //Set_IF_Synthesizer(Adapter, 0x73fffe);//6109
          //Set_IF_Synthesizer(Adapter, 0x025f9c);//6109
          //Set_IF_Synthesizer(Adapter, 0x025fcc);     // 5d01 //6109
/*
          if(pObj->UW2453MiniCard)
          {
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][ChannelNo*3]);
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][ChannelNo*3+1]);
            Set_IF_Synthesizer(Adapter, UW2453RF_minicard[pObj->UW2453RFTableIndex][ChannelNo*3+2]);
          }
          else
*/
          {
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][ChannelNo*3]);
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][ChannelNo*3+1]);
            HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[pObj->UW2453RFTableIndex][ChannelNo*3+2]);
          }
          //Set_IF_Synthesizer(Adapter, 0x340060);
          HW_Set_IF_Synthesizer(pObj, 0x025f98);   //5d02
          HW_Set_IF_Synthesizer(pObj, 0x025f9a);  
          HW_Set_IF_Synthesizer(pObj, 0x025f94);
          HW_Set_IF_Synthesizer(pObj, 0x027FD4);
          //Set_IF_Synthesizer(Adapter, UW2453RF[ChannelNo*3+2]);  //5d02//6109
          
        
    }
    LockPhyReg(pObj);
    //Band Edge issue
    if(PURE_A_MODE != mMacMode)
    {
        if(pObj->HWFeature & BIT_21)
        {
            if(ChannelNo == 1 || ChannelNo == 11)
            {
                if(pObj->PHY_Decrease_CR128_state)
                {
                    pObj->SetReg(reg, ZD_CR128, 0x12);
                    pObj->SetReg(reg, ZD_CR129, 0x12);
                    pObj->SetReg(reg, ZD_CR130, 0x10);
                }
                else
                {
                    pObj->SetReg(reg, ZD_CR128, 0x10);
                    pObj->SetReg(reg, ZD_CR129, 0x10);
                    pObj->SetReg(reg, ZD_CR130, 0x10);
                }
            }
            else
            {
                pObj->SetReg(reg, ZD_CR128, 0x14);
                pObj->SetReg(reg, ZD_CR129, 0x12);
                pObj->SetReg(reg, ZD_CR130, 0x10);
            }
        }
        else
        {
            pObj->SetReg(reg, ZD_CR128, 0x14);
            pObj->SetReg(reg, ZD_CR129, 0x12);
            pObj->SetReg(reg, ZD_CR130, 0x10);
        }
    }
    pObj->SetReg(reg, ZD_CR80, 0x30);
    pObj->SetReg(reg, ZD_CR81, 0x30);
    pObj->SetReg(reg, ZD_CR79, 0x58);
    pObj->SetReg(reg, ZD_CR12, 0xF0);
    pObj->SetReg(reg, ZD_CR77, 0x1B);
    pObj->SetReg(reg, ZD_CR78, 0x58);

    UnLockPhyReg(pObj);
    //UW Tx Power
    for(i=0;i<19;i++)
    {
    if(pObj->IntValue[ChannelNo - 1] == ZD_UWTxGain[i].UWTxGainLevel)
        break;
    }
    if(i<19)
    {
        pObj->UWCurrentTxLevel = ZD_UWTxGain[i].UWTxGainLevel;
        pObj->UWDefaulTxLevel  = ZD_UWTxGain[i].UWTxGainLevel;
        PHY_UWTxPower(pObj, pObj->UWDefaulTxLevel);
    }
    LockPhyReg(pObj);
    //ZD1205_WRITE_REGISTER(Adapter, CR203, 0x06);
    pObj->SetReg(reg, ZD_CR203, 0x06);
    UnLockPhyReg(pObj);
    pObj->CR203Flag = 2;
    pObj->CR31Flag = 2;
    //pObj->PHY_G_BandEdge_Flag = 0;
    //pObj->UWStrongSingalFlag = 2;
    //pObj->UW2453CCKSetFlag = 0;
    //pObj->UW24532MIssue  = 0;


#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) )
    pObj->SetReg(reg, PE1_PE2, 3);
#endif
}

//------------------------------------------------------------------------------
// Procedure:	 HW_Set_AL7230B_Chips
//
// Description:  
//
// Arguments:
//		Adapter - ptr to Adapter object instance
//		ChannelNo
//		Initial Channel only
//
// Returns:		(none)
//
// Note:
//-------------------------------------------------------------------------------
#ifndef ZD1211B
// 1211
void HW_Set_AL7230B_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly, U8 MAC_Mode)
{
	void	*reg = pObj->reg;
	U32		tmpValue;
	U32		ChannelNo_temp;
	//int     i;
	static u8 mOldMacMode = MIXED_MODE;
	U16     WriteAddr[256];          
    U16     WriteData[256];  
	U16     WriteIndex = 0;
	
	LockPhyReg(pObj);
	pObj->SetReg(reg, ZD_CR240, 0x57);
	UnLockPhyReg(pObj);
	
	tmpValue = pObj->GetReg(reg, CtlReg1);
	tmpValue &= ~0x80;
	pObj->SetReg(reg, CtlReg1, tmpValue);

	if (!InitChOnly){
		mFILL_WRITE_REGISTER( ZD_CR15, 0x20);
		mFILL_WRITE_REGISTER( ZD_CR23, 0x40);
		mFILL_WRITE_REGISTER( ZD_CR24, 0x20);
		mFILL_WRITE_REGISTER( ZD_CR26, 0x11);
		mFILL_WRITE_REGISTER( ZD_CR28, 0x3e);
		mFILL_WRITE_REGISTER( ZD_CR29, 0x00);
		mFILL_WRITE_REGISTER( ZD_CR44, 0x33);
		mFILL_WRITE_REGISTER( ZD_CR106, 0x22);  //from 0x2a to 0x22 for AL7230B
		mFILL_WRITE_REGISTER( ZD_CR107, 0x1a);
		mFILL_WRITE_REGISTER( ZD_CR109, 0x9);
		mFILL_WRITE_REGISTER( ZD_CR110, 0x27);
		mFILL_WRITE_REGISTER( ZD_CR111, 0x2b);  
		mFILL_WRITE_REGISTER( ZD_CR112, 0x2b);
		mFILL_WRITE_REGISTER( ZD_CR119, 0xa);
		mFILL_WRITE_REGISTER( ZD_CR122, 0xfc); //from /e0 to fc for AL7230B
		mFILL_WRITE_REGISTER( ZD_CR10, 0x89);		
		mFILL_WRITE_REGISTER( ZD_CR17, 0x28);  
		mFILL_WRITE_REGISTER( ZD_CR26, 0x93);
		mFILL_WRITE_REGISTER( ZD_CR34, 0x30);
		mFILL_WRITE_REGISTER( ZD_CR35, 0x3E);  
		mFILL_WRITE_REGISTER( ZD_CR41, 0x24);
		mFILL_WRITE_REGISTER( ZD_CR44, 0x32);
		mFILL_WRITE_REGISTER( ZD_CR46, 0x96);  
		mFILL_WRITE_REGISTER( ZD_CR47, 0x1e);
		mFILL_WRITE_REGISTER( ZD_CR79, 0x58);
		mFILL_WRITE_REGISTER( ZD_CR80, 0x30);
		mFILL_WRITE_REGISTER( ZD_CR81, 0x30);
		mFILL_WRITE_REGISTER( ZD_CR87, 0x0A);
		mFILL_WRITE_REGISTER( ZD_CR89, 0x04);
		mFILL_WRITE_REGISTER( ZD_CR92, 0x0a);
		mFILL_WRITE_REGISTER( ZD_CR99, 0x28);
		mFILL_WRITE_REGISTER( ZD_CR100, 0x02);
		mFILL_WRITE_REGISTER( ZD_CR101, 0x13);
		mFILL_WRITE_REGISTER( ZD_CR102, 0x27);
		mFILL_WRITE_REGISTER( ZD_CR106, 0x22); //from 0x20 to 0x22 for AL7230B
		mFILL_WRITE_REGISTER( ZD_CR107, 0x3f);
		mFILL_WRITE_REGISTER( ZD_CR109, 0x09);
		mFILL_WRITE_REGISTER( ZD_CR110, 0x1f);  
		mFILL_WRITE_REGISTER( ZD_CR111, 0x1f);
		mFILL_WRITE_REGISTER( ZD_CR112, 0x1f);
		mFILL_WRITE_REGISTER( ZD_CR113, 0x27);
		mFILL_WRITE_REGISTER( ZD_CR114, 0x27);
		mFILL_WRITE_REGISTER( ZD_CR115, 0x24);  
		mFILL_WRITE_REGISTER( ZD_CR116, 0x3f);
		mFILL_WRITE_REGISTER( ZD_CR117, 0xfa);
		mFILL_WRITE_REGISTER( ZD_CR118, 0xfc);
		mFILL_WRITE_REGISTER( ZD_CR119, 0x10);
		mFILL_WRITE_REGISTER( ZD_CR120, 0x4f);
		mFILL_WRITE_REGISTER( ZD_CR121, 0x77);
		mFILL_WRITE_REGISTER( ZD_CR137, 0x88);
		mFILL_WRITE_REGISTER( ZD_CR138, 0xa8);
		mFILL_WRITE_REGISTER( ZD_CR252, 0x34);
		mFILL_WRITE_REGISTER( ZD_CR253, 0x34);
       // mFILL_WRITE_REGISTER( ZD_CR240, 0x57);

		if( MAC_Mode != PURE_A_MODE )
		{
			mFILL_WRITE_REGISTER( ZD_CR251, 0x2f);  //PLL_OFF
			SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]);
			SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]);
			//SET_IF_SYNTHESIZER(macp, 0x8cccd0);
			SET_IF_SYNTHESIZER(macp, 0x4ff821);
			SET_IF_SYNTHESIZER(macp, 0xc5fbfc);
			SET_IF_SYNTHESIZER(macp, 0x21ebfe);  
			SET_IF_SYNTHESIZER(macp, 0xafd401);  //freq shift 0xaad401
			SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
			SET_IF_SYNTHESIZER(macp, 0xe04073); 
			SET_IF_SYNTHESIZER(macp, 0x193d76);
			SET_IF_SYNTHESIZER(macp, 0x9dd844);  
			SET_IF_SYNTHESIZER(macp, 0x500007);  
			SET_IF_SYNTHESIZER(macp, 0xd8c010);  
			SET_IF_SYNTHESIZER(macp, 0x3c9000);  
			//Adapter->AL7230CCKSetFlag=0;	
			SET_IF_SYNTHESIZER(macp, 0xbfffff); 
			SET_IF_SYNTHESIZER(macp, 0x700000); 
			SET_IF_SYNTHESIZER(macp, 0xf15d58);
			//AcquireCtrOfPhyReg(Adapter);
			//ZD1205_WRITE_REGISTER(Adapter, CR251, 0x2f);  //PLL_OFF
			mFILL_WRITE_REGISTER( ZD_CR251, 0x3f);  //PLL_ON
			mFILL_WRITE_REGISTER( ZD_CR128, 0x14);
			mFILL_WRITE_REGISTER( ZD_CR129, 0x12);
			mFILL_WRITE_REGISTER( ZD_CR130, 0x10);
			mFILL_WRITE_REGISTER( ZD_CR38, 0x38);
			mFILL_WRITE_REGISTER( ZD_CR136, 0xdf);
			///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(1000);
			SET_IF_SYNTHESIZER(macp, 0xf15d59);
			///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(10000);
			SET_IF_SYNTHESIZER(macp, 0xf15d5c);
			///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(10000);
			SET_IF_SYNTHESIZER(macp, 0xf15d58);
		}
		else
		{
			mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0		
			if((34 <= ChannelNo) && (ChannelNo <= 48)){
				ChannelNo_temp=(ChannelNo/2)-13;		
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]);
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]);
			}
			else{
				ChannelNo_temp=(ChannelNo/4)-1;
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]);
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]);
			}
			SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]);
			SET_IF_SYNTHESIZER(macp, 0x47f8a2);
			SET_IF_SYNTHESIZER(macp, 0xc5fbfa);
			//SET_IF_SYNTHESIZER(macp, 0x21ebf6);  
			SET_IF_SYNTHESIZER(macp, 0xaafca1);  
			SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
			SET_IF_SYNTHESIZER(macp, 0xe04073); 
			SET_IF_SYNTHESIZER(macp, 0x193d76);
			SET_IF_SYNTHESIZER(macp, 0x9dd844);  
			SET_IF_SYNTHESIZER(macp, 0x500607);  
			SET_IF_SYNTHESIZER(macp, 0xd8c010);
			if((48 < ChannelNo) && (ChannelNo < 184)){												
				SET_IF_SYNTHESIZER(macp, 0x3c2800); 
			}
			else{
				SET_IF_SYNTHESIZER(macp, 0x3e2800); 
			}
			SET_IF_SYNTHESIZER(macp, 0xbfffff); 
			SET_IF_SYNTHESIZER(macp, 0x700000); 
			SET_IF_SYNTHESIZER(macp, 0xf35d48);
			//AcquireCtrOfPhyReg(Adapter);
			//ZD1205_WRITE_REGISTER(Adapter, CR251, 0x2f); // shdnb(PLL_ON)=0
			mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); // shdnb(PLL_ON)=1  
			mFILL_WRITE_REGISTER( ZD_CR128, 0x12);
			mFILL_WRITE_REGISTER( ZD_CR129, 0x10);
			mFILL_WRITE_REGISTER( ZD_CR130, 0x10);
			mFILL_WRITE_REGISTER( ZD_CR38, 0x7f);
			mFILL_WRITE_REGISTER( ZD_CR136, 0x5f);
            ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(1000);
			SET_IF_SYNTHESIZER(macp, 0xf15d59);
			///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(10000);
			SET_IF_SYNTHESIZER(macp, 0xf15d5c);
			///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex);
			///NdisStallExecution(10000);
			SET_IF_SYNTHESIZER(macp, 0xf35d48);
		}

	}
	else{
		if( MAC_Mode != PURE_A_MODE )
		{
			mFILL_WRITE_REGISTER( ZD_CR251, 0x2f);  //PLL_OFF
			//SET_IF_SYNTHESIZER(macp, 0x0b3331);
			if ( 1 || mOldMacMode != MAC_Mode )
			{
				SET_IF_SYNTHESIZER(macp, 0x4ff821);
				SET_IF_SYNTHESIZER(macp, 0xc5fbfc);
				SET_IF_SYNTHESIZER(macp, 0x21ebfe);  
				SET_IF_SYNTHESIZER(macp, 0xafd401);  //fix freq shift, 0xaad401
				SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
				SET_IF_SYNTHESIZER(macp, 0xe04073); 
				SET_IF_SYNTHESIZER(macp, 0x193d76);
				SET_IF_SYNTHESIZER(macp, 0x9dd844);  
				SET_IF_SYNTHESIZER(macp, 0x500007);  
				SET_IF_SYNTHESIZER(macp, 0xd8c010);  
				SET_IF_SYNTHESIZER(macp, 0x3c9000);  
				SET_IF_SYNTHESIZER(macp, 0xf15d58);

				mFILL_WRITE_REGISTER( ZD_CR128, 0x14);
				mFILL_WRITE_REGISTER( ZD_CR129, 0x12);
				mFILL_WRITE_REGISTER( ZD_CR130, 0x10);
				mFILL_WRITE_REGISTER( ZD_CR38, 0x38);
				mFILL_WRITE_REGISTER( ZD_CR136, 0xdf);
				mOldMacMode = MAC_Mode;
			}
			//Adapter->AL7230CCKSetFlag=0;	
			SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]);
			SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]);
			SET_IF_SYNTHESIZER(macp, 0x3c9000);
			mFILL_WRITE_REGISTER( ZD_CR251, 0x3f);  //PLL_ON
		}
		else
		{ 
			mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0

			if ( 1 || mOldMacMode != MAC_Mode )
			{
				SET_IF_SYNTHESIZER(macp, 0x47f8a2);
				SET_IF_SYNTHESIZER(macp, 0xc5fbfa);
				SET_IF_SYNTHESIZER(macp, 0xaafca1);  
				SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
				SET_IF_SYNTHESIZER(macp, 0xe04073); 
				SET_IF_SYNTHESIZER(macp, 0x193d76);
				SET_IF_SYNTHESIZER(macp, 0x9dd844);  
				SET_IF_SYNTHESIZER(macp, 0x500607);  
			

⌨️ 快捷键说明

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