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

📄 zdhw.c

📁 ZD1211LnxDrv_2_3_1_0無線網卡ZD1211
💻 C
📖 第 1 页 / 共 5 页
字号:
			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);
			//mFILL_WRITE_REGISTER( ZD_CR31, 0x58);
			
			//NdisStallExecution(1000);
			SET_IF_SYNTHESIZER(macp, 0xf15d59);
			//NdisStallExecution(10000);
			SET_IF_SYNTHESIZER(macp, 0xf15d5c);
			//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, 0x8cccd0);
			if ( 1 || mOldMacMode != MAC_Mode )
			{
			SET_IF_SYNTHESIZER(macp, 0x4ff821);
			SET_IF_SYNTHESIZER(macp, 0xc5fbfc);
			SET_IF_SYNTHESIZER(macp, 0x21ebfe);  
			SET_IF_SYNTHESIZER(macp, 0xaad401);  
			SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
			SET_IF_SYNTHESIZER(macp, 0xe04073); 
			SET_IF_SYNTHESIZER(macp, 0x190d76);
			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);
			//AcquireCtrOfPhyReg(Adapter);
			//mFILL_WRITE_REGISTER( ZD_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);
            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, 0x7f);  //PLL_ON
			
			//NdisStallExecution(10);
			//SET_IF_SYNTHESIZER(macp, 0xf15d59);
			//NdisStallExecution(100);
			//SET_IF_SYNTHESIZER(macp, 0xf15d5c);
			//NdisStallExecution(100);
			//SET_IF_SYNTHESIZER(macp, 0xf15d58);
		}
		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, 0x21ebf6);  
			SET_IF_SYNTHESIZER(macp, 0xaafca1);  
			SET_IF_SYNTHESIZER(macp, 0x6cf56a);  
			SET_IF_SYNTHESIZER(macp, 0xe04073); 
			SET_IF_SYNTHESIZER(macp, 0x190d36);
			SET_IF_SYNTHESIZER(macp, 0x9dd844);  
			SET_IF_SYNTHESIZER(macp, 0x500607);  
			SET_IF_SYNTHESIZER(macp, 0xd8c010);		
			SET_IF_SYNTHESIZER(macp, 0xf35d48);
			//AcquireCtrOfPhyReg(Adapter);
			//mFILL_WRITE_REGISTER( ZD_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);
            mOldMacMode = MAC_Mode;
			}
			if((48 < ChannelNo) && (ChannelNo < 184)){												
				SET_IF_SYNTHESIZER(macp, 0x3c2800); 
			}
			else{
				SET_IF_SYNTHESIZER(macp, 0x3e2800); 
			}	
			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]);
				//SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+2]);
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]);
			       // SET_IF_SYNTHESIZER(macp, 0x3c2800);
			}
			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+2]);
				SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]);
				//SET_IF_SYNTHESIZER(macp, 0x3c2800);
			}
			mFILL_WRITE_REGISTER( ZD_CR251, 0x7f);  //PLL_ON
			//ZD1205_WRITE_REGISTER(Adapter, CR31, 0x58);
			
			//NdisStallExecution(10);
			//SET_IF_SYNTHESIZER(macp, 0xf15d59);
			//NdisStallExecution(100);
			//SET_IF_SYNTHESIZER(macp, 0xf15d5c);
			//NdisStallExecution(100);
			//SET_IF_SYNTHESIZER(macp, 0xf35d58);
		}

	}
	//ZD1205_WRITE_REGISTER(Adapter,CR138, 0x28);
	mFILL_WRITE_REGISTER( ZD_CR203, 0x06);
    ZD1211_WRITE_MULTI_REG(WriteAddr, WriteData, &WriteIndex);

	tmpvalue = pObj->GetReg(reg, CtlReg1);
	tmpvalue |= ~0x80;
	pObj->SetReg(reg, CtlReg1, tmpvalue);

	LockPhyReg(pObj);
	pObj->SetReg(reg, ZD_CR240, 0x80);
	//if(macp->PHYNEWLayout)
	//	pObj->SetReg(reg, ZD_CR9, 0xe1);
	pObj->SetReg(reg, ZD_CR203, 0x06);
	UnLockPhyReg(pObj);


	pObj->CR203Flag = 2;
	pObj->CR31Flag = 2;
	
//	macp->Change_SetPoint = 2;
//	macp->PHY_G_6M_BandEdge_Flag = 0;
//	if(macp->PHY_36M_Setpoint_Flag != 0)
//	{
		//for(i=0;i<14;i++)
		//	macp->SetPointOFDM[0][i] = macp->PHY_36M_G_Setpoint[i]; 
//		for(i=0;i<16;i++)
//			macp->a_Calibration_Data[2][i] = macp->PHY_36M_A_Calibration_Setpoint[i];
//		for(i=0;i<32;i++)
//			macp->a_Interpolation_Data[2][i] = macp->PHY_36M_A_Interpolation_Setpoint[i];
//		macp->PHY_36M_Setpoint_Flag = 0;
//	}


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

}
// end of AL7230B ZD1215
#endif

#ifdef ZD1211 
void
HW_Set_AL2230_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)
{

	void *reg = pObj->reg;
	U32	tmpvalue;

    LockPhyReg(pObj);
#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) )
	pObj->SetReg(reg, ZD_PE1_PE2, 2);
#else
	//LockPhyReg(pObj);
	//tmpvalue = pObj->GetReg(reg, ZD_CR203);
	tmpvalue &= ~BIT_4;
	//pObj->SetReg(reg, ZD_CR203, tmpvalue);
	//UnLockPhyReg(pObj);
#endif

	if (!InitChOnly){
		//LockPhyReg(pObj);
#ifdef ZD1211B
		pObj->SetReg(reg, ZD_CR10, 0x89);
#endif
		pObj->SetReg(reg, ZD_CR15, 0x20);
#ifdef ZD1211B
        pObj->SetReg(reg, ZD_CR17, 0x2B);
#endif
		pObj->SetReg(reg, ZD_CR23, 0x40);
		pObj->SetReg(reg, ZD_CR24, 0x20);
#ifdef ZD1211
		pObj->SetReg(reg, ZD_CR26, 0x11);
#elif defined(ZD1211B)
		pObj->SetReg(reg, ZD_CR26, 0x93);
#endif
		pObj->SetReg(reg, ZD_CR28, 0x3e);
		pObj->SetReg(reg, ZD_CR29, 0x00);
#ifdef ZD1211B
		pObj->SetReg(reg, ZD_CR33, 0x28);
#elif defined(ZD1211)
		pObj->SetReg(reg, ZD_CR44, 0x33);
		pObj->SetReg(reg, ZD_CR106, 0x2a);
		pObj->SetReg(reg, ZD_CR107, 0x1a);
		pObj->SetReg(reg, ZD_CR109, 0x9);
		pObj->SetReg(reg, ZD_CR110, 0x27);
		pObj->SetReg(reg, ZD_CR111, 0x2b);
		pObj->SetReg(reg, ZD_CR112, 0x2b);
		pObj->SetReg(reg, ZD_CR119, 0xa);
#endif

#if (defined(GCCK) && defined(OFDM))
		pObj->SetReg(reg, ZD_CR10, 0x89);
		pObj->SetReg(reg, ZD_CR17, 0x28); //for newest (3rd cut) AL2300
		pObj->SetReg(reg, ZD_CR26, 0x93);
		pObj->SetReg(reg, ZD_CR34, 0x30);
		pObj->SetReg(reg, ZD_CR35, 0x3E); //for newest (3rd cut) AL2300
		pObj->SetReg(reg, ZD_CR41, 0x24);

#ifdef HOST_IF_USB
		pObj->SetReg(reg, ZD_CR44, 0x32);
#else
		pObj->SetReg(reg, ZD_CR44, 0x32);
#endif
		pObj->SetReg(reg, ZD_CR46, 0x96); //for newest (3rd cut) AL2300
		pObj->SetReg(reg, ZD_CR47, 0x1e);
#ifdef ZD1211B
		pObj->SetReg(reg,ZD_CR48, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR49, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR51, 0x01);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR52, 0x80);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR53, 0x7e);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR65, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR66, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR67, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR68, 0x00);		//ZD1211B 05.06.10
		pObj->SetReg(reg,ZD_CR69, 0x28);		//ZD1211B 05.06.10
#endif
		pObj->SetReg(reg, ZD_CR79, 0x58);
		pObj->SetReg(reg, ZD_CR80, 0x30);
		pObj->SetReg(reg, ZD_CR81, 0x30);
		pObj->SetReg(reg, ZD_CR87, 0x0A);
		pObj->SetReg(reg, ZD_CR89, 0x04);


		pObj->SetReg(reg, ZD_CR92, 0x0a);
		pObj->SetReg(reg, ZD_CR99, 0x28);
		pObj->SetReg(reg, ZD_CR100, 0x00);
		pObj->SetReg(reg, ZD_CR101, 0x13);
		pObj->SetReg(reg, ZD_CR102, 0x27);
		pObj->SetReg(reg, ZD_CR106, 0x24);
		pObj->SetReg(reg, ZD_CR107, 0x2A);
		pObj->SetReg(reg, ZD_CR109, 0x09);
		pObj->SetReg(reg, ZD_CR110, 0x13);
		pObj->SetReg(reg, ZD_CR111, 0x1f);
		pObj->SetReg(reg, ZD_CR112, 0x1f);
		pObj->SetReg(reg, ZD_CR113, 0x27);
		pObj->SetReg(reg, ZD_CR114, 0x27);
		pObj->SetReg(reg, ZD_CR115, 0x24); //for newest (3rd cut) AL2300
		pObj->SetReg(reg, ZD_CR116, 0x24);
#ifdef ZD1211
		pObj->SetReg(reg, ZD_CR117, 0xf4);
		pObj->SetReg(reg, ZD_CR118, 0xfc);
#elif defined(ZD1211B)
        pObj->SetReg(reg, ZD_CR117, 0xfa);
        pObj->SetReg(reg, ZD_CR118, 0xfa);
#endif
		pObj->SetReg(reg, ZD_CR119, 0x10);
		pObj->SetReg(reg, ZD_CR120, 0x4f);
#ifdef ZD1211
		pObj->SetReg(reg, ZD_CR121, 0x77);
		pObj->SetReg(reg, ZD_CR122, 0xe0);
#elif defined(ZD1211B)
        pObj->SetReg(reg, ZD_CR121, 0x6c);
        pObj->SetReg(reg, ZD_CR122, 0xfc);
#endif
		pObj->SetReg(reg, ZD_CR137, 0x88);
#ifndef HOST_IF_USB
		pObj->SetReg(reg, ZD_CR150, 0x0D);
#endif
#elif (defined(ECCK_60_5))
		pObj->SetReg(reg, ZD_CR47, 0x18);
		pObj->SetReg(reg, ZD_CR106, 0x04);
		pObj->SetReg(reg, ZD_CR107, 0x00);
		pObj->SetReg(reg, ZD_CR14, 0x80);
		pObj->SetReg(reg, ZD_CR10, 0x89);
		pObj->SetReg(reg, ZD_CR11, 0x00);
		pObj->SetReg(reg, ZD_CR161, 0x28);
		pObj->SetReg(reg, ZD_CR162, 0x26);

		pObj->SetReg(reg, ZD_CR24, 0x0e);
		pObj->SetReg(reg, ZD_CR41, 0x24);
		pObj->SetReg(reg, ZD_CR159, 0x93);
		pObj->SetReg(reg, ZD_CR160, 0xfc);
		pObj->SetReg(reg, ZD_CR161, 0x20);
		pObj->SetReg(reg, ZD_CR162, 0x26);
#endif

		pObj->SetReg(reg, ZD_CR252, 0xff);
		pObj->SetReg(reg, ZD_CR253, 0xff);
                
		//UnLockPhyReg(pObj);
		
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]);
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]);
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]);
		HW_Set_IF_Synthesizer(pObj, 0x0b3331);
		HW_Set_IF_Synthesizer(pObj, 0x03b812);
		HW_Set_IF_Synthesizer(pObj, 0x00fff3);
		HW_Set_IF_Synthesizer(pObj, 0x000da4);
		HW_Set_IF_Synthesizer(pObj, 0x04edc5);
		HW_Set_IF_Synthesizer(pObj, 0x0805b6);
		HW_Set_IF_Synthesizer(pObj, 0x011687);
		HW_Set_IF_Synthesizer(pObj, 0x000688);
		HW_Set_IF_Synthesizer(pObj, 0x0403b9);   //External control TX power (CR31)
		HW_Set_IF_Synthesizer(pObj, 0x00dbba);
		HW_Set_IF_Synthesizer(pObj, 0x00099b);
		HW_Set_IF_Synthesizer(pObj, 0x0bdffc);
		HW_Set_IF_Synthesizer(pObj, 0x00000d);
		HW_Set_IF_Synthesizer(pObj, 0x00500f);

		//LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR251, 0x2f); // shdnb(PLL_ON)=0
		pObj->SetReg(reg, ZD_CR251, 0x3f); // shdnb(PLL_ON)=1
		pObj->DelayUs(10);
		//UnLockPhyReg(pObj);
		HW_Set_IF_Synthesizer(pObj, 0x000d00f);
		pObj->DelayUs(100);
		HW_Set_IF_Synthesizer(pObj, 0x0004c0f);
		pObj->DelayUs(100);
		HW_Set_IF_Synthesizer(pObj, 0x00540f);
		pObj->DelayUs(100);
		HW_Set_IF_Synthesizer(pObj, 0x00700f);
		pObj->DelayUs(100);
        HW_Set_IF_Synthesizer(pObj, 0x00500f);

	}
	else{
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]);
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]);
		HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]);
	}
	
    //LockPhyReg(pObj);
	pObj->SetReg(reg, ZD_CR138, 0x28);
    pObj->SetReg(reg, ZD_CR203, 0x06);
    //UnLockPhyReg(pObj);
	pObj->CR203Flag = 2;
	pObj->CR31Flag = 2;


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

    UnLockPhyReg(pObj);
}
#elif defined(ZD1211B)
void
HW_Set_AL2230_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)
{
    //ZDMacLog("HW_Set_AL2230_RF_Chips\n");

    void *reg = pObj->reg;
    U32 tmpvalue;

    LockPhyReg(pObj);
#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) )
    pObj->SetReg(reg, ZD_PE1_PE2, 2);
#else
    //LockPhyReg(pObj);
    //tmpvalue = pObj->GetReg(reg, ZD_CR203);
    tmpvalue &= ~BIT_4;
    //pObj->SetReg(reg, ZD_CR203, tmpvalue);
    //UnLockPhyReg(pObj);
#endif


//++
#ifndef ZD1211B
//#ifndef ZD1211B        ->1211

    if (!InitChOnly){
        //LockPhyReg(pObj);
        pObj->SetReg(reg, ZD_CR15, 0x20);
        pObj->SetReg(reg, ZD_CR23, 0x40);
        pObj->SetReg(reg, ZD_CR24, 0x20);
        pObj->SetReg(reg, ZD_CR26, 0x11);
        pObj->SetReg(reg, ZD_CR28, 0x3e);
        pObj->SetReg(reg, ZD_CR29, 0x00);
        pObj->SetReg(reg, ZD_CR44, 0x33);
        pObj->SetReg(reg, ZD_CR106, 0x2a);
        pObj->SetReg(reg, ZD_CR107, 0x1a);
        pObj->SetReg(reg, ZD_CR109, 0x9);
        pObj->SetReg(reg, ZD_CR110, 0x27);
        pObj->SetReg(reg, ZD_CR111, 0x2b);
        pObj->SetReg(reg, ZD_CR112, 0x2b);
        pObj->SetReg(reg, ZD_CR119, 0xa);
#if (defined(GCCK) && defined(OFDM))
        pObj->SetReg(reg, ZD_CR10, 0x89);
        pObj->SetReg(reg, ZD_CR17, 0x28); //for newest (3rd cut) AL2300
        pObj->SetReg(reg, ZD_CR26, 0x93);
        pObj->SetReg(reg, ZD_CR34, 0x30);
        pObj->SetReg(reg, ZD_CR35, 0x3E); //for newest (3rd cut) AL2300
        pObj->SetReg(reg, ZD_CR41, 0x24);

#ifdef HOST_IF_USB
        pObj->SetReg(reg, ZD_CR44, 0x32);
#else
        pObj->SetReg(reg, ZD_CR44, 0x32);
#endif
        pObj->SetReg(reg, ZD_CR46, 0x96); //for newest (3rd cut) AL23

⌨️ 快捷键说明

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