📄 zdhw.c
字号:
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, 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, 0x3c900); //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, 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); SET_IF_SYNTHESIZER(macp, 0xd8c010); SET_IF_SYNTHESIZER(macp, 0xf35d48); 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+3]); } 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]); } mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); //PLL_ON } } 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); pObj->CR203Flag = 2; if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch { tmpValue = pObj->GetReg(reg, E2P_PHY_REG); pObj->SetReg(reg, ZD_CR47, (tmpValue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature } if (pObj->HWFeature & BIT_21) //6321 for FCC regulation, enabled per HWFeature 6M band edge bit (for AL2230, AL2230S) { if (ChannelNo == 1 || ChannelNo == 11) //MARK_003, band edge, these may depend on PCB layout { pObj->SetReg(reg, ZD_CR128, 0x12); pObj->SetReg(reg, ZD_CR129, 0x12); pObj->SetReg(reg, ZD_CR130, 0x10); pObj->SetReg(reg, ZD_CR47, 0x1E); } else //(ChannelNo 2 ~ 10, 12 ~ 14) { pObj->SetReg(reg, ZD_CR128, 0x14); pObj->SetReg(reg, ZD_CR129, 0x12); pObj->SetReg(reg, ZD_CR130, 0x10); pObj->SetReg(reg, ZD_CR47, 0x1E); } } UnLockPhyReg(pObj); // pObj->CR31Flag = 2; // macp->PHY_G_6M_BandEdge_Flag = 0; // if(macp->PHY_36M_Setpoint_Flag != 0) // { // 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; // }}#else// 1215void 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); pObj->SetReg(reg, ZD_CR9, 0xe0); UnLockPhyReg(pObj); tmpValue = pObj->GetReg(reg, CtlReg1); tmpValue &= ~0x80; pObj->SetReg(reg, CtlReg1, tmpValue); if (!InitChOnly) { //mFILL_WRITE_REGISTER( ZD_CR9, 0xe0);//5119 mFILL_WRITE_REGISTER( ZD_CR10, 0x89); mFILL_WRITE_REGISTER( ZD_CR15, 0x20); mFILL_WRITE_REGISTER( ZD_CR17, 0x2B);//for newest(3rd cut)AL2230 mFILL_WRITE_REGISTER( ZD_CR20, 0x10);//4N25->Stone Request mFILL_WRITE_REGISTER( ZD_CR23, 0x40); mFILL_WRITE_REGISTER( ZD_CR24, 0x20); mFILL_WRITE_REGISTER( ZD_CR26, 0x93); mFILL_WRITE_REGISTER( ZD_CR28, 0x3e); mFILL_WRITE_REGISTER( ZD_CR29, 0x00); mFILL_WRITE_REGISTER( ZD_CR33, 0x28); //5613 mFILL_WRITE_REGISTER( ZD_CR34, 0x30); mFILL_WRITE_REGISTER( ZD_CR35, 0x3e); //for newest(3rd cut) AL2230 mFILL_WRITE_REGISTER( ZD_CR41, 0x24); mFILL_WRITE_REGISTER( ZD_CR44, 0x32); mFILL_WRITE_REGISTER( ZD_CR46, 0x99); //for newest(3rd cut) AL2230 mFILL_WRITE_REGISTER( ZD_CR47, 0x1e); mFILL_WRITE_REGISTER( ZD_CR48, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR49, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR51, 0x01); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR52, 0x80); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR53, 0x7e); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR65, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR66, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR67, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR68, 0x00); //ZD1215 5610 mFILL_WRITE_REGISTER( ZD_CR69, 0x28); //ZD1215 5610 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_CR90, 0x58); //5112 mFILL_WRITE_REGISTER( ZD_CR91, 0x00); //5613 mFILL_WRITE_REGISTER( ZD_CR92, 0x0a); mFILL_WRITE_REGISTER( ZD_CR98, 0x8d); //4804, for 1212 new algorithm mFILL_WRITE_REGISTER( ZD_CR99, 0x00); mFILL_WRITE_REGISTER( ZD_CR100, 0x02);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -