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

📄 zdhw.c

📁 该代码为linux下通过usb驱动实现的无线网络驱动程序,在2.6.18的内核下调试通过
💻 C
📖 第 1 页 / 共 5 页
字号:
		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, 0x1E);
		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, 0x1E);
		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, 0x1E);
		UnLockPhyReg(pObj);
	}
	else {
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x1E);
		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, 0x1E);
		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, 0x1E);
		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, 0x1E);
		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, 0x1E);
		UnLockPhyReg(pObj);
	}
	else {
		LockPhyReg(pObj);
		pObj->SetReg(reg, ZD_CR47, 0x1E);
		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, 0x1E);
		UnLockPhyReg(pObj);
		HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]);
	}		

	pObj->SetReg(reg, ZD_PE1_PE2, 3);
}
*/
//------------------------------------------------------------------------------
// Procedure:	 HW_Set_UW2453_RF_Chips
//
// Description:  
//
// Arguments:
//		Adapter - ptr to Adapter object instance
//		ChannelNo
//		Initial Channel only
//
// Returns:		(none)
//
// Note:
//-------------------------------------------------------------------------------
void
HW_Set_UW2453_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly)
{
    U32       tmpvalue;
    U32       ChannelNo_temp;
    int         i;
    BOOLEAN     bLocked;
    void *reg = pObj->reg;

#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) )
    pObj->SetReg(reg, PE1_PE2, 2);
#else
    LockPhyReg(pObj);
    //pObj->GetReg(reg, ZD_CR203, &tmpvalue);
    tmpvalue &= ~BIT_4;
    //pObj->SetReg(reg, ZD_CR203, tmpvalue);
    UnLockPhyReg(pObj);
#endif
/*
    if(pObj->UW2453MiniCard)
    {
        if(pObj->UW2453NoTXfollowRX)
        {
            LockPhyReg(pObj);
            if(pObj->CardSetting.BSSType != PSEUDO_IBSS)
            {
                if(!pObj->UWDeafaltAntennt)
                {
                    if(!(pObj->UW2453ChannelSelectAntennaAUX[ChannelNo-1]))
                    {
                        ZD1205_WRITE_REGISTER(Adapter, CR9, 0xe0);
                    }
                    if(pObj->UW2453ChannelSelectAntennaAUX[ChannelNo-1])
                    {
                        ZD1205_WRITE_REGISTER(Adapter, CR9, 0xe4);
                    }
                }
                else
                {
                    if(!(pObj->UW2453ChannelSelectAntennaAUX[ChannelNo-1]))
                    {
                        ZD1205_WRITE_REGISTER(Adapter, CR9, 0xe4);  
                    }
                    if(pObj->UW2453ChannelSelectAntennaAUX[ChannelNo-1])
                    {
                        ZD1205_WRITE_REGISTER(Adapter, CR9, 0xe0);
                    }
                }
                pObj->UW2453SWDeafaultAntenna = TRUE;
                    
            }
            UnLockPhyReg(pObj);
        }
    }
*/
    if (!InitChOnly){
        LockPhyReg(pObj);
        pObj->SetReg(reg, ZD_CR10, 0x89);      
        pObj->SetReg(reg, ZD_CR15, 0x20);
        pObj->SetReg(reg, ZD_CR17, 0x28);  //6112  no change
        pObj->SetReg(reg, ZD_CR23, 0x38);
        pObj->SetReg(reg, ZD_CR24, 0x20);
        pObj->SetReg(reg, ZD_CR26, 0x93);
        pObj->SetReg(reg, ZD_CR27, 0x15);
        pObj->SetReg(reg, ZD_CR28, 0x3e);
        pObj->SetReg(reg, ZD_CR29, 0x00);
        pObj->SetReg(reg, ZD_CR33, 0x28);
        pObj->SetReg(reg, ZD_CR34, 0x30);
        pObj->SetReg(reg, ZD_CR35, 0x43);  //6112 3E->43
        pObj->SetReg(reg, ZD_CR41, 0x24);
        pObj->SetReg(reg, ZD_CR44, 0x32);
        pObj->SetReg(reg, ZD_CR46, 0x92);  //6112 96->92
        pObj->SetReg(reg, ZD_CR47, 0x1E);
        pObj->SetReg(reg, ZD_CR48, 0x04);  //5602 Roger
        pObj->SetReg(reg, ZD_CR49, 0xfa);
        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_CR91, 0x00);
        pObj->SetReg(reg, ZD_CR92, 0x0a);
        pObj->SetReg(reg, ZD_CR98, 0x8d);
        pObj->SetReg(reg, ZD_CR99, 0x28);
        pObj->SetReg(reg, ZD_CR100, 0x02);
        pObj->SetReg(reg, ZD_CR101, 0x09);  //6112 13->1f //6220 1f->13 //6407 13->9
        pObj->SetReg(reg, ZD_CR102, 0x27);
        pObj->SetReg(reg, ZD_CR106, 0x1c);  //5d07 //6112 1f->1c //6220 1c->1f //6221 1f->1c
        pObj->SetReg(reg, ZD_CR107, 0x1c);  //6220 1c->1a //6221 1a->1c
        pObj->SetReg(reg, ZD_CR109, 0x13);
        pObj->SetReg(reg, ZD_CR110, 0x1f);  //6112 13->1f //6221 1f->13 //6407 13->0x09
        pObj->SetReg(reg, ZD_CR111, 0x13);
        pObj->SetReg(reg, ZD_CR112, 0x1f);
        pObj->SetReg(reg, ZD_CR113, 0x27);
        pObj->SetReg(reg, ZD_CR114, 0x23); //6221 27->23
        pObj->SetReg(reg, ZD_CR115, 0x24); //6112 24->1c //6220 1c->24
        pObj->SetReg(reg, ZD_CR116, 0x24); //6220 1c->24
        pObj->SetReg(reg, ZD_CR117, 0xfa);   //6112 fa->f8 //6220 f8->f4 //6220 f4->fa
        pObj->SetReg(reg, ZD_CR118, 0xf0);   //5d07  //6112 f0->f2 //6220 f2->f0
        pObj->SetReg(reg, ZD_CR119, 0x1a);  //6112 1a->10 //6220 10->14 //6220 14->1a
        pObj->SetReg(reg, ZD_CR120, 0x4f);
        pObj->SetReg(reg, ZD_CR121, 0x1f); //6220 4f->1f
        pObj->SetReg(reg, ZD_CR122, 0xf0);
        pObj->SetReg(reg, ZD_CR123, 0x57);
        pObj->SetReg(reg, ZD_CR125, 0xad);
        pObj->SetReg(reg, ZD_CR126, 0x6c);
        pObj->SetReg(reg, ZD_CR127, 0x03);
        pObj->SetReg(reg, ZD_CR128, 0x14); //6302 12->11
        pObj->SetReg(reg, ZD_CR129, 0x12); //6301 10->0F
        pObj->SetReg(reg, ZD_CR130, 0x10); 
        pObj->SetReg(reg, ZD_CR137, 0x50);
        pObj->SetReg(reg, ZD_CR138, 0xa8);
        pObj->SetReg(reg, ZD_CR144, 0xac);
        pObj->SetReg(reg, ZD_CR146, 0x20);

        pObj->SetReg(reg, ZD_CR252, 0xff);
        pObj->SetReg(reg, ZD_CR253, 0xff);
                
        UnLockPhyReg(pObj);
                                    
        HW_Set_IF_Synthesizer(pObj, 0x40002b); 
        HW_Set_IF_Synthesizer(pObj, 0x519e4f);
        //Set_IF_Synthesizer(Adapter, 0x509e4f);     //5d02                            
        HW_Set_IF_Synthesizer(pObj, 0x6f81AD);      //6221    6f81ac-> 6f81ff   //6418       6f81ff ->   6f81ac         
        HW_Set_IF_Synthesizer(pObj, 0x73fffe);                                 
        //Set_IF_Synthesizer(Adapter, 0x025fcc);   // 5d01    cal_fil 
        HW_Set_IF_Synthesizer(pObj, 0x025f9c);     // 5d01    cal_fil 
                            
        HW_Set_IF_Synthesizer(pObj, 0x100047);                                 
        HW_Set_IF_Synthesizer(pObj, 0x200999); 
        HW_Set_IF_Synthesizer(pObj, 0x307602);    //5d01  
                                        
        HW_Set_IF_Synthesizer(pObj, 0x346063);
        HW_Set_IF_Synthesizer(pObj, 0x025f98);    //idle                             
        HW_Set_IF_Synthesizer(pObj, 0x025f9a);    //cal_vco    
        HW_Set_IF_Synthesizer(pObj, 0x025f94);    //rxtx_en (4)
        HW_Set_IF_Synthesizer(pObj, 0x027FD4);
        //Set_IF_Synthesizer(Adapter, 0x307602);    //5d01  //6109

        //Auto Lock RF Procedure
        pObj->UW2453RFTableIndex=0;
        bLocked=FALSE;
        for (i=0;i<10;i++) {
            //always try channel 1
/*
            if(pObj->UW2453MiniCard)
            {
                Set_IF_Synthesizer(Adapter, UW2453RF_minicard[i][1*3]); 
                Set_IF_Synthesizer(Adapter, UW2453RF_minicard[i][1*3+1]);   
                Set_IF_Synthesizer(Adapter, UW2453RF_minicard[i][1*3+2]);   
            }
            else
*/
            {
                HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[i][1*3]);   
                HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[i][1*3+1]); 
                HW_Set_IF_Synthesizer(pObj, UW2453RF_dongle[i][1*3+2]); 
            }
            //ack interrupt event

⌨️ 快捷键说明

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