📄 zdhw.c
字号:
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 + -