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

📄 zdhw.c

📁 ZD1211LnxDrv_2_3_1_0無線網卡ZD1211
💻 C
📖 第 1 页 / 共 5 页
字号:
	pObj->SetReg(reg, ZD_CR44, 0x32);

	pObj->SetReg(reg, ZD_CR46, 0x90);
	pObj->SetReg(reg, ZD_CR79, 0x58); //for Atheros compability 4415
	pObj->SetReg(reg, ZD_CR80, 0x30); //for Atheros compability
	pObj->SetReg(reg, ZD_CR81, 0x30); //for Atheros compability
	pObj->SetReg(reg, ZD_CR89, 0x18);







	pObj->SetReg(reg, ZD_CR92, 0x0a);
	pObj->SetReg(reg, ZD_CR101, 0x13);
	pObj->SetReg(reg, ZD_CR102, 0x27);
	pObj->SetReg(reg, ZD_CR106, 0x20);
	pObj->SetReg(reg, ZD_CR107, 0x24);
	pObj->SetReg(reg, ZD_CR109, 0x09);
	pObj->SetReg(reg, ZD_CR110, 0x13);
	pObj->SetReg(reg, ZD_CR111, 0x13);
	pObj->SetReg(reg, ZD_CR112, 0x13);
	pObj->SetReg(reg, ZD_CR113, 0x27);
	pObj->SetReg(reg, ZD_CR114, 0x27);
	pObj->SetReg(reg, ZD_CR115, 0x24);
	pObj->SetReg(reg, ZD_CR116, 0x24);
	pObj->SetReg(reg, ZD_CR117, 0xf4);
	//pObj->SetReg(reg, ZD_CR118, 0xfa);
	pObj->SetReg(reg, ZD_CR118, 0x00); //4326
	pObj->SetReg(reg, ZD_CR120, 0x4f);
	//pObj->SetReg(reg, ZD_CR121, 0x77); //3n12
	//pObj->SetReg(reg, ZD_CR121, 0x13); //3d24
	pObj->SetReg(reg, ZD_CR121, 0x06); //4326
	pObj->SetReg(reg, ZD_CR122, 0xfe);
#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
#endif

	pObj->CR122Flag = 2;
	pObj->CR31Flag = 2;
	
	//UnLockPhyReg(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

	HW_Set_IF_Synthesizer(pObj, M2827BF2[ChannelNo]);
	HW_Set_IF_Synthesizer(pObj, M2827BN2[ChannelNo]);
	HW_Set_IF_Synthesizer(pObj, 0x00400);
	HW_Set_IF_Synthesizer(pObj, 0x00ca1);
	HW_Set_IF_Synthesizer(pObj, 0x10072);
	HW_Set_IF_Synthesizer(pObj, 0x18645);
	HW_Set_IF_Synthesizer(pObj, 0x04006);
	HW_Set_IF_Synthesizer(pObj, 0x000a7);
	HW_Set_IF_Synthesizer(pObj, 0x08258);

	HW_Set_IF_Synthesizer(pObj, 0x03fc9);
	HW_Set_IF_Synthesizer(pObj, 0x0040a);
	HW_Set_IF_Synthesizer(pObj, 0x0000b);
	HW_Set_IF_Synthesizer(pObj, 0x0026c);
#if	defined(ECCK_60_5)
	HW_Set_IF_Synthesizer(pObj, 0x04258);
#endif

#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) )

	pObj->SetReg(reg, ZD_PE1_PE2, 3);

#else
	//LockPhyReg(pObj);
	tmpvalue = pObj->GetReg(reg, ZD_CR203);
	tmpvalue |= BIT_4;
	pObj->SetReg(reg, ZD_CR203, tmpvalue);
	//UnLockPhyReg(pObj);
#endif
    UnLockPhyReg(pObj);
}


void
HW_Set_GCT_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)
{
	void *reg = pObj->reg;
	
	if (!InitChOnly){
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x1c);
		pObj->SetReg(reg, ZD_CR15, 0xdc);
		pObj->SetReg(reg, ZD_CR113, 0xc0); //3910
		pObj->SetReg(reg, ZD_CR20, 0x0c);
		pObj->SetReg(reg, ZD_CR17, 0x65);
		pObj->SetReg(reg, ZD_CR34, 0x04);
		pObj->SetReg(reg, ZD_CR35, 0x35);
		pObj->SetReg(reg, ZD_CR24, 0x20);
		pObj->SetReg(reg, ZD_CR9, 0xe0);
		pObj->SetReg(reg, ZD_CR127, 0x02);
		pObj->SetReg(reg, ZD_CR10, 0x91);
		pObj->SetReg(reg, ZD_CR23, 0x7f);
		pObj->SetReg(reg, ZD_CR27, 0x10);
		pObj->SetReg(reg, ZD_CR28, 0x7a);
		pObj->SetReg(reg, ZD_CR79, 0xb5);
		pObj->SetReg(reg, ZD_CR64, 0x80);
		//++ Enable D.C cancellation (CR33 Bit_5) to avoid
		//	 CCA always high.
		pObj->SetReg(reg, ZD_CR33, 0x28);
		//--                  

		pObj->SetReg(reg, ZD_CR38, 0x30);

		UnLockPhyReg(pObj);
	
		HW_Set_IF_Synthesizer(pObj, 0x1F0000);
		HW_Set_IF_Synthesizer(pObj, 0x1F0000);
		HW_Set_IF_Synthesizer(pObj, 0x1F0200);
		HW_Set_IF_Synthesizer(pObj, 0x1F0600);
		HW_Set_IF_Synthesizer(pObj, 0x1F8600);
		HW_Set_IF_Synthesizer(pObj, 0x1F8600);
		HW_Set_IF_Synthesizer(pObj, 0x002050);
		HW_Set_IF_Synthesizer(pObj, 0x1F8000);
		HW_Set_IF_Synthesizer(pObj, 0x1F8200);
		HW_Set_IF_Synthesizer(pObj, 0x1F8600);
		HW_Set_IF_Synthesizer(pObj, 0x1c0000);
		HW_Set_IF_Synthesizer(pObj, 0x10c458);

		HW_Set_IF_Synthesizer(pObj, 0x088e92);
		HW_Set_IF_Synthesizer(pObj, 0x187b82);
		HW_Set_IF_Synthesizer(pObj, 0x0401b4);
		HW_Set_IF_Synthesizer(pObj, 0x140816);
		HW_Set_IF_Synthesizer(pObj, 0x0c7000);
		HW_Set_IF_Synthesizer(pObj, 0x1c0000);
		HW_Set_IF_Synthesizer(pObj, 0x02ccae);
		HW_Set_IF_Synthesizer(pObj, 0x128023);
		HW_Set_IF_Synthesizer(pObj, 0x0a0000);
		HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]);
		HW_Set_IF_Synthesizer(pObj, 0x06e380);
		HW_Set_IF_Synthesizer(pObj, 0x16cb94);
		HW_Set_IF_Synthesizer(pObj, 0x0e1740);
		HW_Set_IF_Synthesizer(pObj, 0x014980);
		HW_Set_IF_Synthesizer(pObj, 0x116240);
		HW_Set_IF_Synthesizer(pObj, 0x090000);
		HW_Set_IF_Synthesizer(pObj, 0x192304);
		HW_Set_IF_Synthesizer(pObj, 0x05112f);
		HW_Set_IF_Synthesizer(pObj, 0x0d54a8);
		HW_Set_IF_Synthesizer(pObj, 0x0f8000);
		HW_Set_IF_Synthesizer(pObj, 0x1c0008);
		HW_Set_IF_Synthesizer(pObj, 0x1c0000);

		HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]);
		HW_Set_IF_Synthesizer(pObj, 0x1c0008);
		HW_Set_IF_Synthesizer(pObj, 0x150000);
		HW_Set_IF_Synthesizer(pObj, 0x0c7000);
		HW_Set_IF_Synthesizer(pObj, 0x150800);
		HW_Set_IF_Synthesizer(pObj, 0x150000);
	}	
	else{
		HW_Set_IF_Synthesizer(pObj, 0x1c0000);
		HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]);

		HW_Set_IF_Synthesizer(pObj, 0x1c0008);
	}
}


void
HW_Set_AL2210MPVB_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)
{
	void *reg = pObj->reg;
	U32	tmpvalue;

	pObj->SetReg(reg, ZD_PE1_PE2, 2);

	if (!InitChOnly){
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR9, 0xe0);
		pObj->SetReg(reg, ZD_CR10, 0x91);
		pObj->SetReg(reg, ZD_CR12, 0x90);
		pObj->SetReg(reg, ZD_CR15, 0xd0);
		pObj->SetReg(reg, ZD_CR16, 0x40);
		pObj->SetReg(reg, ZD_CR17, 0x58);
		pObj->SetReg(reg, ZD_CR18, 0x04);
		pObj->SetReg(reg, ZD_CR23, 0x66);
		pObj->SetReg(reg, ZD_CR24, 0x14);
		pObj->SetReg(reg, ZD_CR26, 0x90);
		pObj->SetReg(reg, ZD_CR27, 0x30);
		pObj->SetReg(reg, ZD_CR31, 0x80);
		pObj->SetReg(reg, ZD_CR34, 0x06);
		pObj->SetReg(reg, ZD_CR35, 0x3e);
		pObj->SetReg(reg, ZD_CR38, 0x38);
		pObj->SetReg(reg, ZD_CR46, 0x90);
		pObj->SetReg(reg, ZD_CR47, 0x10);
		pObj->SetReg(reg, ZD_CR64, 0x64);
		pObj->SetReg(reg, ZD_CR79, 0xb5);
		pObj->SetReg(reg, ZD_CR80, 0x38);
		pObj->SetReg(reg, ZD_CR81, 0x30);
		pObj->SetReg(reg, ZD_CR113, 0xc0);
		pObj->SetReg(reg, ZD_CR127, 0x03);
		UnLockPhyReg(pObj);
	
		HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]);
		HW_Set_IF_Synthesizer(pObj, 0x00fcb1);
		HW_Set_IF_Synthesizer(pObj, 0x358132);
		HW_Set_IF_Synthesizer(pObj, 0x0108b3);
		HW_Set_IF_Synthesizer(pObj, 0xc77804);
		HW_Set_IF_Synthesizer(pObj, 0x456415);
		HW_Set_IF_Synthesizer(pObj, 0xff2226);
		HW_Set_IF_Synthesizer(pObj, 0x806667);
		HW_Set_IF_Synthesizer(pObj, 0x7860f8);
		HW_Set_IF_Synthesizer(pObj, 0xbb01c9);
		HW_Set_IF_Synthesizer(pObj, 0x00000A);
		HW_Set_IF_Synthesizer(pObj, 0x00000B);

		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x0);
		tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD);

		tmpvalue &= ~BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		tmpvalue |= BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		pObj->SetReg(reg, ZD_RFCFG, 0x5);
		pObj->DelayUs(100);
		pObj->SetReg(reg, ZD_RFCFG, 0x0);
		pObj->SetReg(reg, ZD_CR47, 0x1c);
		UnLockPhyReg(pObj);
	}
	else {
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x0);
		tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD);
		tmpvalue &= ~BIT_0;

		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		tmpvalue |= BIT_0;



		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		pObj->SetReg(reg, ZD_RFCFG, 0x5);
		pObj->DelayUs(100);
		pObj->SetReg(reg, ZD_RFCFG, 0x0);
		pObj->SetReg(reg, ZD_CR47, 0x1c);
		UnLockPhyReg(pObj);
		HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]);
	}		
	
	pObj->SetReg(reg, ZD_PE1_PE2, 3);
}


void
HW_Set_AL2210_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)

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

	pObj->SetReg(reg, ZD_PE1_PE2, 2);

	if (!InitChOnly){
		LockPhyReg(pObj);



		pObj->SetReg(reg, ZD_CR9, 0xe0);
		pObj->SetReg(reg, ZD_CR10, 0x91);
		pObj->SetReg(reg, ZD_CR12, 0x90);
		pObj->SetReg(reg, ZD_CR15, 0xd0);
		pObj->SetReg(reg, ZD_CR16, 0x40);
		pObj->SetReg(reg, ZD_CR17, 0x58);
		pObj->SetReg(reg, ZD_CR18, 0x04);
		pObj->SetReg(reg, ZD_CR23, 0x66);
		pObj->SetReg(reg, ZD_CR24, 0x14);

		pObj->SetReg(reg, ZD_CR26, 0x90);

		pObj->SetReg(reg, ZD_CR31, 0x80);
		pObj->SetReg(reg, ZD_CR34, 0x06);
		pObj->SetReg(reg, ZD_CR35, 0x3e);
		pObj->SetReg(reg, ZD_CR38, 0x38);
		pObj->SetReg(reg, ZD_CR46, 0x90);
		pObj->SetReg(reg, ZD_CR47, 0x10);
		pObj->SetReg(reg, ZD_CR64, 0x64);
		pObj->SetReg(reg, ZD_CR79, 0xb5);
		pObj->SetReg(reg, ZD_CR80, 0x38);
		pObj->SetReg(reg, ZD_CR81, 0x30);
		pObj->SetReg(reg, ZD_CR113, 0xc0);
		pObj->SetReg(reg, ZD_CR127, 0x3);
		UnLockPhyReg(pObj);
	
		HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]);

		HW_Set_IF_Synthesizer(pObj, 0x00fcb1);
		HW_Set_IF_Synthesizer(pObj, 0x358132);
		HW_Set_IF_Synthesizer(pObj, 0x0108b3);
		HW_Set_IF_Synthesizer(pObj, 0xc77804);
		HW_Set_IF_Synthesizer(pObj, 0x456415);
		HW_Set_IF_Synthesizer(pObj, 0xff2226);
		HW_Set_IF_Synthesizer(pObj, 0x806667);
		HW_Set_IF_Synthesizer(pObj, 0x7860f8);
		HW_Set_IF_Synthesizer(pObj, 0xbb01c9);
		HW_Set_IF_Synthesizer(pObj, 0x00000A);
		HW_Set_IF_Synthesizer(pObj, 0x00000B);

		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x0);
		tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD);
		tmpvalue &= ~BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);

		tmpvalue |= BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		pObj->SetReg(reg, ZD_RFCFG, 0x5);
		pObj->DelayUs(100);
		pObj->SetReg(reg, ZD_RFCFG, 0x0);
 		pObj->SetReg(reg, ZD_CR47, 0x1c);
		UnLockPhyReg(pObj);
	}
	else {
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x0);
		tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD);
		tmpvalue &= ~BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		tmpvalue |= BIT_0;
		pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue);
		pObj->SetReg(reg, ZD_RFCFG, 0x5);
		pObj->DelayUs(100);
		pObj->SetReg(reg, ZD_RFCFG, 0x0);
 		pObj->SetReg(reg, ZD_CR47, 0x1c);
		UnLockPhyReg(pObj);
		HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]);
	}		

	pObj->SetReg(reg, ZD_PE1_PE2, 3);
}
//------------------------------------------------------------------------------
// 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);		

⌨️ 快捷键说明

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