On 2-3-2017 17:38, Arnd Bergmann wrote:
In the previous commit I left the indentation alone to help reviewing the patch, this one now runs the three new functions through 'indent -kr -8' with some manual fixups to avoid silliness.
No changes other than whitespace are intended here.
Acked-by: Arend van Spriel arend.vanspriel@broadcom.com
Signed-off-by: Arnd Bergmann arnd@arndb.de
.../broadcom/brcm80211/brcmsmac/phy/phy_n.c | 1507 +++++++++----------- 1 file changed, 697 insertions(+), 810 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c index d76c092bb6b4..9b39789c673d 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c @@ -16074,7 +16074,8 @@ static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi) NPHY_REV3_RFSEQ_CMD_INT_PA_PU, NPHY_REV3_RFSEQ_CMD_END };
- static const u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
- static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f }; u32 leg_data_weights; u8 chan_freq_range = 0;{ 8, 6, 6, 4, 4, 16, 43, 1, 1 };@@ -16114,526 +16115,452 @@ static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi) int coreNum;
if (NREV_IS(pi->pubpi.phy_rev, 7)) {mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));}if (NREV_LE(pi->pubpi.phy_rev, 8)) {write_phy_reg(pi, 0x23f, 0x1b0);write_phy_reg(pi, 0x240, 0x1b0);}
- if (NREV_IS(pi->pubpi.phy_rev, 7)) {
mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));- }
if (NREV_GE(pi->pubpi.phy_rev, 8))mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
- if (NREV_LE(pi->pubpi.phy_rev, 8)) {
write_phy_reg(pi, 0x23f, 0x1b0);write_phy_reg(pi, 0x240, 0x1b0);- }
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,&dac_control);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,&dac_control);
- if (NREV_GE(pi->pubpi.phy_rev, 8))
mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 0, 32, &leg_data_weights);leg_data_weights = leg_data_weights & 0xffffff;wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 0, 32, &leg_data_weights);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
&dac_control);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
&dac_control);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,2, 0x15e, 16,rfseq_rx2tx_dacbufpu_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,rfseq_rx2tx_dacbufpu_rev7);
- wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 0, 32, &leg_data_weights);- leg_data_weights = leg_data_weights & 0xffffff;
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 0, 32, &leg_data_weights);
if (PHY_IPA(pi))wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3_ipa,rfseq_rx2tx_dlys_rev3_ipa,ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
rfseq_rx2tx_dacbufpu_rev7);
mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
- if (PHY_IPA(pi))
wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3_ipa,rfseq_rx2tx_dlys_rev3_ipa,ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
- mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
- mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
if (PHY_IPA(pi)) {
- tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
- tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
- tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
if (((pi->pubpi.radiorev == 5)&& (CHSPEC_IS40(pi->radio_chanspec) == 1))|| (pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {
- if (PHY_IPA(pi)) {
rccal_bcap_val =read_radio_reg(pi,RADIO_2057_RCCAL_BCAP_VAL);rccal_scap_val =read_radio_reg(pi,RADIO_2057_RCCAL_SCAP_VAL);
if (((pi->pubpi.radiorev == 5)&& (CHSPEC_IS40(pi->radio_chanspec) == 1))|| (pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {
rccal_tx20_11b_bcap = rccal_bcap_val;rccal_tx20_11b_scap = rccal_scap_val;
rccal_bcap_val =read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);rccal_scap_val =read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
if ((pi->pubpi.radiorev == 5) &&(CHSPEC_IS40(pi->radio_chanspec) == 1)) {
rccal_tx20_11b_bcap = rccal_bcap_val;rccal_tx20_11b_scap = rccal_scap_val;
rccal_tx20_11n_bcap = rccal_bcap_val;rccal_tx20_11n_scap = rccal_scap_val;rccal_tx40_11n_bcap = 0xc;rccal_tx40_11n_scap = 0xc;
if ((pi->pubpi.radiorev == 5) &&(CHSPEC_IS40(pi->radio_chanspec) == 1)) {
rccal_ovrd = true;
rccal_tx20_11n_bcap = rccal_bcap_val;rccal_tx20_11n_scap = rccal_scap_val;rccal_tx40_11n_bcap = 0xc;rccal_tx40_11n_scap = 0xc;
} else if ((pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {
rccal_ovrd = true;
tx_lpf_bw_ofdm_20mhz = 4;tx_lpf_bw_11b = 1;
} else if ((pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {
if (CHSPEC_IS2G(pi->radio_chanspec)) {rccal_tx20_11n_bcap = 0xc;rccal_tx20_11n_scap = 0xc;rccal_tx40_11n_bcap = 0xa;rccal_tx40_11n_scap = 0xa;} else {rccal_tx20_11n_bcap = 0x14;rccal_tx20_11n_scap = 0x14;rccal_tx40_11n_bcap = 0xf;rccal_tx40_11n_scap = 0xf;}
tx_lpf_bw_ofdm_20mhz = 4;tx_lpf_bw_11b = 1;
rccal_ovrd = true;
if (CHSPEC_IS2G(pi->radio_chanspec)) {rccal_tx20_11n_bcap = 0xc;rccal_tx20_11n_scap = 0xc;rccal_tx40_11n_bcap = 0xa;rccal_tx40_11n_scap = 0xa;} else {rccal_tx20_11n_bcap = 0x14;rccal_tx20_11n_scap = 0x14;rccal_tx40_11n_bcap = 0xf;rccal_tx40_11n_scap = 0xf; }rccal_ovrd = true; }}
} else {
- } else {
if (pi->pubpi.radiorev == 5) {
if (pi->pubpi.radiorev == 5) {
tx_lpf_bw_ofdm_20mhz = 1;tx_lpf_bw_ofdm_40mhz = 3;
tx_lpf_bw_ofdm_20mhz = 1;tx_lpf_bw_ofdm_40mhz = 3;
rccal_bcap_val =read_radio_reg(pi,RADIO_2057_RCCAL_BCAP_VAL);rccal_scap_val =read_radio_reg(pi,RADIO_2057_RCCAL_SCAP_VAL);
rccal_bcap_val =read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);rccal_scap_val =read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
rccal_tx20_11b_bcap = rccal_bcap_val;rccal_tx20_11b_scap = rccal_scap_val;
rccal_tx20_11b_bcap = rccal_bcap_val;rccal_tx20_11b_scap = rccal_scap_val;
rccal_tx20_11n_bcap = 0x13;rccal_tx20_11n_scap = 0x11;rccal_tx40_11n_bcap = 0x13;rccal_tx40_11n_scap = 0x11;
rccal_tx20_11n_bcap = 0x13;rccal_tx20_11n_scap = 0x11;rccal_tx40_11n_bcap = 0x13;rccal_tx40_11n_scap = 0x11;
rccal_ovrd = true;}
}rccal_ovrd = true;- }
if (rccal_ovrd) {rx2tx_lpf_rc_lut_tx20_11b =(rccal_tx20_11b_bcap << 8) |(rccal_tx20_11b_scap << 3) |tx_lpf_bw_11b;rx2tx_lpf_rc_lut_tx20_11n =(rccal_tx20_11n_bcap << 8) |(rccal_tx20_11n_scap << 3) |tx_lpf_bw_ofdm_20mhz;rx2tx_lpf_rc_lut_tx40_11n =(rccal_tx40_11n_bcap << 8) |(rccal_tx40_11n_scap << 3) |tx_lpf_bw_ofdm_40mhz;
- if (rccal_ovrd) {
for (coreNum = 0; coreNum <= 1; coreNum++) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x152 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx20_11b);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x153 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx20_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x154 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx20_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x155 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x156 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x157 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x158 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,1,0x159 + coreNum * 0x10,16,&rx2tx_lpf_rc_lut_tx40_11n);}
rx2tx_lpf_rc_lut_tx20_11b =(rccal_tx20_11b_bcap << 8) |(rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;rx2tx_lpf_rc_lut_tx20_11n =(rccal_tx20_11n_bcap << 8) |(rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;rx2tx_lpf_rc_lut_tx40_11n =(rccal_tx40_11n_bcap << 8) |(rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4),1, 0x3, 0,NPHY_REV7_RFCTRLOVERRIDE_ID2);
for (coreNum = 0; coreNum <= 1; coreNum++) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x152 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx20_11b);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x153 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx20_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x154 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx20_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x155 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x156 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x157 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x158 + coreNum * 0x10, 16,&rx2tx_lpf_rc_lut_tx40_11n);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,0x159 + coreNum * 0x10, 16, }&rx2tx_lpf_rc_lut_tx40_11n);
write_phy_reg(pi, 0x32f, 0x3);
wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,NPHY_REV7_RFCTRLOVERRIDE_ID2);- }
if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2),1, 0x3, 0,NPHY_REV7_RFCTRLOVERRIDE_ID0);
- write_phy_reg(pi, 0x32f, 0x3);
if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||(pi->pubpi.radiorev == 6)) {if ((pi->sh->sromrev >= 8)&& (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))ipalvlshift_3p3_war_en = 1;if (ipalvlshift_3p3_war_en) {write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,0x5);write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,0x30);write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);or_radio_reg(pi,RADIO_2057_RXTXBIAS_CONFIG_CORE0,0x1);or_radio_reg(pi,RADIO_2057_RXTXBIAS_CONFIG_CORE1,0x1);ipa2g_mainbias = 0x1f;ipa2g_casconv = 0x6f;ipa2g_biasfilt = 0xaa;} else {
- if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,NPHY_REV7_RFCTRLOVERRIDE_ID0);
ipa2g_mainbias = 0x2b;
- if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
(pi->pubpi.radiorev == 6)) {if ((pi->sh->sromrev >= 8)&& (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))ipalvlshift_3p3_war_en = 1;
ipa2g_casconv = 0x7f;
if (ipalvlshift_3p3_war_en) {write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
ipa2g_biasfilt = 0xee;}
ipa2g_mainbias = 0x1f;
if (CHSPEC_IS2G(pi->radio_chanspec)) {for (coreNum = 0; coreNum <= 1; coreNum++) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum, IPA2G_IMAIN,ipa2g_mainbias);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum, IPA2G_CASCONV,ipa2g_casconv);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum,IPA2G_BIAS_FILTER,ipa2g_biasfilt);}}}
ipa2g_casconv = 0x6f;
if (PHY_IPA(pi)) {if (CHSPEC_IS2G(pi->radio_chanspec)) {if ((pi->pubpi.radiorev == 3)|| (pi->pubpi.radiorev == 4)|| (pi->pubpi.radiorev == 6))txgm_idac_bleed = 0x7f;
ipa2g_biasfilt = 0xaa;} else {
for (coreNum = 0; coreNum <= 1; coreNum++) {if (txgm_idac_bleed != 0)WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,TXGM_IDAC_BLEED,txgm_idac_bleed);}
ipa2g_mainbias = 0x2b;
if (pi->pubpi.radiorev == 5) {for (coreNum = 0; coreNum <= 1;coreNum++) {WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_CASCONV,0x13);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_IMAIN,0x1f);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_BIAS_FILTER,0xee);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,PAD2G_IDACS,0x8a);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,PAD_BIAS_FILTER_BWS,0x3e);}
ipa2g_casconv = 0x7f;
} else if ((pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {
ipa2g_biasfilt = 0xee;}
if (CHSPEC_IS40(pi->radio_chanspec) ==0) {WRITE_RADIO_REG4(pi, RADIO_2057,CORE, 0,IPA2G_IMAIN,0x14);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, 1,IPA2G_IMAIN,0x12);} else {WRITE_RADIO_REG4(pi, RADIO_2057,CORE, 0,IPA2G_IMAIN,0x16);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, 1,IPA2G_IMAIN,0x16);}}
if (CHSPEC_IS2G(pi->radio_chanspec)) {for (coreNum = 0; coreNum <= 1; coreNum++) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum, IPA2G_IMAIN,ipa2g_mainbias);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum, IPA2G_CASCONV,ipa2g_casconv);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,coreNum,IPA2G_BIAS_FILTER,ipa2g_biasfilt);}}- }
} else {freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));if (((freq >= 5180) && (freq <= 5230))|| ((freq >= 5745) && (freq <= 5805))) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE,0, IPA5G_BIAS_FILTER,0xff);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,1, IPA5G_BIAS_FILTER,0xff);}
- if (PHY_IPA(pi)) {
if (CHSPEC_IS2G(pi->radio_chanspec)) {if ((pi->pubpi.radiorev == 3)|| (pi->pubpi.radiorev == 4)|| (pi->pubpi.radiorev == 6))txgm_idac_bleed = 0x7f;for (coreNum = 0; coreNum <= 1; coreNum++) {if (txgm_idac_bleed != 0)WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,TXGM_IDAC_BLEED,txgm_idac_bleed); }
} else {
if (pi->pubpi.radiorev != 5) {
if (pi->pubpi.radiorev == 5) { for (coreNum = 0; coreNum <= 1; coreNum++) {WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_CASCONV,0x13);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_IMAIN,0x1f);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,IPA2G_BIAS_FILTER,0xee);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,PAD2G_IDACS,0x8a);WRITE_RADIO_REG4(pi, RADIO_2057,CORE, coreNum,PAD_BIAS_FILTER_BWS,0x3e);}} else if ((pi->pubpi.radiorev == 7) ||(pi->pubpi.radiorev == 8)) {if (CHSPEC_IS40(pi->radio_chanspec) == 0) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE,0, IPA2G_IMAIN, 0x14);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,1, IPA2G_IMAIN, 0x12);} else { WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
coreNum,TXMIX2G_TUNE_BOOST_PU,0x61);
0, IPA2G_IMAIN, 0x16); WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
coreNum,TXGM_IDAC_BLEED, 0x70);
1, IPA2G_IMAIN, 0x16); } }
}
if (pi->pubpi.radiorev == 4) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,0x05, 16,&afectrl_adc_ctrl1_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,0x15, 16,&afectrl_adc_ctrl1_rev7);
} else {freq =CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));if (((freq >= 5180) && (freq <= 5230))|| ((freq >= 5745) && (freq <= 5805))) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE,0, IPA5G_BIAS_FILTER, 0xff);WRITE_RADIO_REG4(pi, RADIO_2057, CORE,1, IPA5G_BIAS_FILTER, 0xff);}}- } else {
if (pi->pubpi.radiorev != 5) { for (coreNum = 0; coreNum <= 1; coreNum++) { WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
AFE_VCM_CAL_MASTER, 0x0);WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,AFE_SET_VCM_I, 0x3f);
TXMIX2G_TUNE_BOOST_PU, 0x61); WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
AFE_SET_VCM_Q, 0x3f);
TXGM_IDAC_BLEED, 0x70); }
} else {mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,0x05, 16,&afectrl_adc_ctrl2_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,0x15, 16,&afectrl_adc_ctrl2_rev7);mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);mod_phy_reg(pi, 0xa7, (0x1 << 2), 0); }mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
- }
write_phy_reg(pi, 0x6a, 0x2);
- if (pi->pubpi.radiorev == 4) {
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,&afectrl_adc_ctrl1_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,&afectrl_adc_ctrl1_rev7);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,&min_nvar_offset_6mbps);
for (coreNum = 0; coreNum <= 1; coreNum++) {WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,AFE_VCM_CAL_MASTER, 0x0);WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,AFE_SET_VCM_I, 0x3f);WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,AFE_SET_VCM_Q, 0x3f);}- } else {
mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,&rfseq_pktgn_lpf_hpc_rev7);
mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,&rfseq_pktgn_lpf_h_hpc_rev7);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,&afectrl_adc_ctrl2_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,&afectrl_adc_ctrl2_rev7);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,&rfseq_htpktgn_lpf_hpc_rev7);
mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);- }
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,&rfseq_cckpktgn_lpf_hpc_rev7);
- write_phy_reg(pi, 0x6a, 0x2);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,&rfseq_tx2rx_lpf_h_hpc_rev7);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
&min_nvar_offset_6mbps);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,&rfseq_rx2tx_lpf_h_hpc_rev7);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
&rfseq_pktgn_lpf_hpc_rev7);
if (CHSPEC_IS40(pi->radio_chanspec) == 0) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);} else {min_nvar_val = noise_var_tbl_rev7[3];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
&rfseq_pktgn_lpf_h_hpc_rev7);
min_nvar_val = noise_var_tbl_rev7[127];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);}
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
&rfseq_htpktgn_lpf_hpc_rev7);
wlc_phy_workarounds_nphy_gainctrl(pi);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
&rfseq_cckpktgn_lpf_hpc_rev7);
pdetrange =(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
&rfseq_tx2rx_lpf_h_hpc_rev7);
if (pdetrange == 0) {chan_freq_range =wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x70;aux_adc_vmid_rev7_core1[3] = 0x70;aux_adc_gain_rev7[3] = 2;} else {aux_adc_vmid_rev7_core0[3] = 0x80;aux_adc_vmid_rev7_core1[3] = 0x80;aux_adc_gain_rev7[3] = 3;}} else if (pdetrange == 1) {if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x7c;aux_adc_vmid_rev7_core1[3] = 0x7c;aux_adc_gain_rev7[3] = 2;} else {aux_adc_vmid_rev7_core0[3] = 0x8c;aux_adc_vmid_rev7_core1[3] = 0x8c;aux_adc_gain_rev7[3] = 1;}} else if (pdetrange == 2) {if (pi->pubpi.radioid == BCM2057_ID) {if ((pi->pubpi.radiorev == 5)|| (pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {if (chan_freq_range ==WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] =0x8c;aux_adc_vmid_rev7_core1[3] =0x8c;aux_adc_gain_rev7[3] = 0;} else {aux_adc_vmid_rev7_core0[3] =0x96;aux_adc_vmid_rev7_core1[3] =0x96;aux_adc_gain_rev7[3] = 0;}
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
&rfseq_rx2tx_lpf_h_hpc_rev7);- if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);- } else {
min_nvar_val = noise_var_tbl_rev7[3];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);min_nvar_val = noise_var_tbl_rev7[127];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);- }
- wlc_phy_workarounds_nphy_gainctrl(pi);
- pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;- if (pdetrange == 0) {
chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x70;aux_adc_vmid_rev7_core1[3] = 0x70;aux_adc_gain_rev7[3] = 2;} else {aux_adc_vmid_rev7_core0[3] = 0x80;aux_adc_vmid_rev7_core1[3] = 0x80;aux_adc_gain_rev7[3] = 3;}- } else if (pdetrange == 1) {
if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x7c;aux_adc_vmid_rev7_core1[3] = 0x7c;aux_adc_gain_rev7[3] = 2;} else {aux_adc_vmid_rev7_core0[3] = 0x8c;aux_adc_vmid_rev7_core1[3] = 0x8c;aux_adc_gain_rev7[3] = 1;}- } else if (pdetrange == 2) {
if (pi->pubpi.radioid == BCM2057_ID) {if ((pi->pubpi.radiorev == 5)|| (pi->pubpi.radiorev == 7)|| (pi->pubpi.radiorev == 8)) {if (chan_freq_range ==WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x8c;aux_adc_vmid_rev7_core1[3] = 0x8c;aux_adc_gain_rev7[3] = 0;} else {aux_adc_vmid_rev7_core0[3] = 0x96;aux_adc_vmid_rev7_core1[3] = 0x96;aux_adc_gain_rev7[3] = 0; } }}
} else if (pdetrange == 3) {if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x89;aux_adc_vmid_rev7_core1[3] = 0x89;aux_adc_gain_rev7[3] = 0;}
- } else if (pdetrange == 3) {
if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x89;aux_adc_vmid_rev7_core1[3] = 0x89;aux_adc_gain_rev7[3] = 0;}
} else if (pdetrange == 5) {
- } else if (pdetrange == 5) {
if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x80;aux_adc_vmid_rev7_core1[3] = 0x80;aux_adc_gain_rev7[3] = 3;} else {aux_adc_vmid_rev7_core0[3] = 0x70;aux_adc_vmid_rev7_core1[3] = 0x70;aux_adc_gain_rev7[3] = 2;}
if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {aux_adc_vmid_rev7_core0[3] = 0x80;aux_adc_vmid_rev7_core1[3] = 0x80;aux_adc_gain_rev7[3] = 3;} else {aux_adc_vmid_rev7_core0[3] = 0x70;aux_adc_vmid_rev7_core1[3] = 0x70; }aux_adc_gain_rev7[3] = 2;- }
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,&aux_adc_vmid_rev7_core0);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,&aux_adc_vmid_rev7_core1);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,&aux_adc_gain_rev7);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,&aux_adc_gain_rev7);
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
&aux_adc_vmid_rev7_core0);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
&aux_adc_vmid_rev7_core1);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
&aux_adc_gain_rev7);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
&aux_adc_gain_rev7);} static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi) @@ -16672,7 +16599,8 @@ static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi) NPHY_REV3_RFSEQ_CMD_INT_PA_PU, NPHY_REV3_RFSEQ_CMD_END };
- static const u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
- static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
s16 alpha0, alpha1, alpha2; s16 beta0, beta1, beta2; u32 leg_data_weights, ht_data_weights, nss1_data_weights,{ 8, 6, 6, 4, 4, 16, 43, 1, 1 };@@ -16691,330 +16619,290 @@ static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi) u8 pdetrange; u8 triso;
write_phy_reg(pi, 0x23f, 0x1f8);write_phy_reg(pi, 0x240, 0x1f8);wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 0, 32, &leg_data_weights);leg_data_weights = leg_data_weights & 0xffffff;wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 0, 32, &leg_data_weights);alpha0 = 293;alpha1 = 435;alpha2 = 261;beta0 = 366;beta1 = 205;beta2 = 32;write_phy_reg(pi, 0x145, alpha0);write_phy_reg(pi, 0x146, alpha1);write_phy_reg(pi, 0x147, alpha2);write_phy_reg(pi, 0x148, beta0);write_phy_reg(pi, 0x149, beta1);write_phy_reg(pi, 0x14a, beta2);write_phy_reg(pi, 0x38, 0xC);write_phy_reg(pi, 0x2ae, 0xC);wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,rfseq_tx2rx_events_rev3,rfseq_tx2rx_dlys_rev3,ARRAY_SIZE(rfseq_tx2rx_events_rev3));if (PHY_IPA(pi))wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3_ipa,rfseq_rx2tx_dlys_rev3_ipa,ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));if ((pi->sh->hw_phyrxchain != 0x3) &&(pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {if (PHY_IPA(pi)) {rfseq_rx2tx_dlys_rev3[5] = 59;rfseq_rx2tx_dlys_rev3[6] = 1;rfseq_rx2tx_events_rev3[7] =NPHY_REV3_RFSEQ_CMD_END;}wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3,rfseq_rx2tx_dlys_rev3,ARRAY_SIZE(rfseq_rx2tx_events_rev3));}
- write_phy_reg(pi, 0x23f, 0x1f8);
- write_phy_reg(pi, 0x240, 0x1f8);
- wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 0, 32, &leg_data_weights);- leg_data_weights = leg_data_weights & 0xffffff;
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 0, 32, &leg_data_weights);- alpha0 = 293;
- alpha1 = 435;
- alpha2 = 261;
- beta0 = 366;
- beta1 = 205;
- beta2 = 32;
- write_phy_reg(pi, 0x145, alpha0);
- write_phy_reg(pi, 0x146, alpha1);
- write_phy_reg(pi, 0x147, alpha2);
- write_phy_reg(pi, 0x148, beta0);
- write_phy_reg(pi, 0x149, beta1);
- write_phy_reg(pi, 0x14a, beta2);
- write_phy_reg(pi, 0x38, 0xC);
- write_phy_reg(pi, 0x2ae, 0xC);
- wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
rfseq_tx2rx_events_rev3,rfseq_tx2rx_dlys_rev3,ARRAY_SIZE(rfseq_tx2rx_events_rev3));
if (CHSPEC_IS2G(pi->radio_chanspec))write_phy_reg(pi, 0x6a, 0x2);elsewrite_phy_reg(pi, 0x6a, 0x9c40);mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
- if (PHY_IPA(pi))
wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3_ipa,rfseq_rx2tx_dlys_rev3_ipa,ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
if (CHSPEC_IS40(pi->radio_chanspec) == 0) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);} else {min_nvar_val = noise_var_tbl_rev3[3];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);
- if ((pi->sh->hw_phyrxchain != 0x3) &&
(pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
min_nvar_val = noise_var_tbl_rev3[127];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);
if (PHY_IPA(pi)) {rfseq_rx2tx_dlys_rev3[5] = 59;rfseq_rx2tx_dlys_rev3[6] = 1; }rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
wlc_phy_workarounds_nphy_gainctrl(pi);
wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,rfseq_rx2tx_events_rev3,rfseq_rx2tx_dlys_rev3,ARRAY_SIZE (rfseq_rx2tx_events_rev3));- }
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,&dac_control);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,&dac_control);
- if (CHSPEC_IS2G(pi->radio_chanspec))
write_phy_reg(pi, 0x6a, 0x2);- else
write_phy_reg(pi, 0x6a, 0x9c40);
pdetrange =(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
- mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
if (pdetrange == 0) {if (NREV_GE(pi->pubpi.phy_rev, 4)) {aux_adc_vmid = aux_adc_vmid_rev4;aux_adc_gain = aux_adc_gain_rev4;} else {aux_adc_vmid = aux_adc_vmid_rev3;aux_adc_gain = aux_adc_gain_rev3;}chan_freq_range =wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {switch (chan_freq_range) {case WL_CHAN_FREQ_RANGE_5GL:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;case WL_CHAN_FREQ_RANGE_5GM:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;case WL_CHAN_FREQ_RANGE_5GH:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;default:break;}}wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, aux_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, aux_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, aux_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, aux_adc_gain);} else if (pdetrange == 1) {wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, sk_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, sk_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, sk_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, sk_adc_gain);} else if (pdetrange == 2) {
- if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);- } else {
min_nvar_val = noise_var_tbl_rev3[3];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,32, &min_nvar_val);
u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
min_nvar_val = noise_var_tbl_rev3[127];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,127, 32, &min_nvar_val);- }
if (NREV_GE(pi->pubpi.phy_rev, 6)) {chan_freq_range =wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {bcm_adc_vmid[3] = 0x8e;bcm_adc_gain[3] = 0x03;} else {bcm_adc_vmid[3] = 0x94;bcm_adc_gain[3] = 0x03;}} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {bcm_adc_vmid[3] = 0x84;bcm_adc_gain[3] = 0x02;}
- wlc_phy_workarounds_nphy_gainctrl(pi);
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, bcm_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, bcm_adc_gain);} else if (pdetrange == 3) {chan_freq_range =wlc_phy_get_chan_freq_range_nphy(pi, 0);if ((NREV_GE(pi->pubpi.phy_rev, 4))&& (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
&dac_control);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
&dac_control);
u16 auxadc_vmid[] = {0xa2, 0xb4, 0xb4, 0x270};u16 auxadc_gain[] = {0x02, 0x02, 0x02, 0x00};
- pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
wlc_phy_table_write_nphy(pi,NPHY_TBL_ID_AFECTRL, 4,0x08, 16, auxadc_vmid);wlc_phy_table_write_nphy(pi,NPHY_TBL_ID_AFECTRL, 4,0x18, 16, auxadc_vmid);wlc_phy_table_write_nphy(pi,NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, auxadc_gain);wlc_phy_table_write_nphy(pi,NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, auxadc_gain);
- if (pdetrange == 0) {
if (NREV_GE(pi->pubpi.phy_rev, 4)) {aux_adc_vmid = aux_adc_vmid_rev4;aux_adc_gain = aux_adc_gain_rev4;} else {aux_adc_vmid = aux_adc_vmid_rev3;aux_adc_gain = aux_adc_gain_rev3;}chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {switch (chan_freq_range) {case WL_CHAN_FREQ_RANGE_5GL:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;case WL_CHAN_FREQ_RANGE_5GM:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;case WL_CHAN_FREQ_RANGE_5GH:aux_adc_vmid[3] = 0x89;aux_adc_gain[3] = 0;break;default:break; }
} else if ((pdetrange == 4) || (pdetrange == 5)) {u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };u16 Vmid[2], Av[2];
}wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, aux_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, aux_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, aux_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, aux_adc_gain);- } else if (pdetrange == 1) {
wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, sk_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, sk_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, sk_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, sk_adc_gain);- } else if (pdetrange == 2) {
u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
if (NREV_GE(pi->pubpi.phy_rev, 6)) { chan_freq_range =
wlc_phy_get_chan_freq_range_nphy(pi, 0);
wlc_phy_get_chan_freq_range_nphy(pi, 0); if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;Av[0] = (pdetrange == 4) ? 2 : 0;Av[1] = (pdetrange == 4) ? 2 : 0;
bcm_adc_vmid[3] = 0x8e;bcm_adc_gain[3] = 0x03; } else {
Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;Av[0] = (pdetrange == 4) ? 2 : 0;Av[1] = (pdetrange == 4) ? 2 : 0;
bcm_adc_vmid[3] = 0x94;bcm_adc_gain[3] = 0x03; }} else if (NREV_IS(pi->pubpi.phy_rev, 5)) {bcm_adc_vmid[3] = 0x84;bcm_adc_gain[3] = 0x02;}wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, bcm_adc_gain);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, bcm_adc_gain);- } else if (pdetrange == 3) {
chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&(chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
bcm_adc_vmid[3] = Vmid[0];bcm_adc_gain[3] = Av[0]; wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, bcm_adc_vmid);
0x08, 16, auxadc_vmid); wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
0x0c, 16, bcm_adc_gain);bcm_adc_vmid[3] = Vmid[1];bcm_adc_gain[3] = Av[1];
0x18, 16, auxadc_vmid); wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
0x18, 16, bcm_adc_vmid);
0x0c, 16, auxadc_gain); wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
0x1c, 16, bcm_adc_gain);
}0x1c, 16, auxadc_gain);- } else if ((pdetrange == 4) || (pdetrange == 5)) {
u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };u16 Vmid[2], Av[2];
write_radio_reg(pi,(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),0x0);write_radio_reg(pi,(RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),0x0);
chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;Av[0] = (pdetrange == 4) ? 2 : 0;Av[1] = (pdetrange == 4) ? 2 : 0;} else {Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;Av[0] = (pdetrange == 4) ? 2 : 0;Av[1] = (pdetrange == 4) ? 2 : 0;}
write_radio_reg(pi,(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),0x6);write_radio_reg(pi,(RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),0x6);
bcm_adc_vmid[3] = Vmid[0];bcm_adc_gain[3] = Av[0];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x08, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x0c, 16, bcm_adc_gain);bcm_adc_vmid[3] = Vmid[1];bcm_adc_gain[3] = Av[1];wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x18, 16, bcm_adc_vmid);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,0x1c, 16, bcm_adc_gain);- }
write_radio_reg(pi,(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),0x7);write_radio_reg(pi,(RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),0x7);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
write_radio_reg(pi,(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),0x88);write_radio_reg(pi,(RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),0x88);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
write_radio_reg(pi,(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),0x0);write_radio_reg(pi,(RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),0x0);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
write_radio_reg(pi,(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),0x0);write_radio_reg(pi,(RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),0x0);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
triso =(CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso : pi->srom_fem2g.triso;if (triso == 7) {wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);}
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
- write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
- write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
- write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&(CHSPEC_IS5G(pi->radio_chanspec))) ||(((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||(pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&(CHSPEC_IS2G(pi->radio_chanspec)))) {nss1_data_weights = 0x00088888;ht_data_weights = 0x00088888;stbc_data_weights = 0x00088888;} else {nss1_data_weights = 0x88888888;ht_data_weights = 0x88888888;stbc_data_weights = 0x88888888;}wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 1, 32, &nss1_data_weights);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 2, 32, &ht_data_weights);wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,1, 3, 32, &stbc_data_weights);if (NREV_IS(pi->pubpi.phy_rev, 4)) {if (CHSPEC_IS5G(pi->radio_chanspec)) {write_radio_reg(pi,RADIO_2056_TX_GMBB_IDAC |RADIO_2056_TX0, 0x70);write_radio_reg(pi,RADIO_2056_TX_GMBB_IDAC |RADIO_2056_TX1, 0x70);}}
- triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
pi->srom_fem5g.triso : pi->srom_fem2g.triso;- if (triso == 7) {
wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);- }
if (!pi->edcrs_threshold_lock) {write_phy_reg(pi, 0x224, 0x3eb);write_phy_reg(pi, 0x225, 0x3eb);write_phy_reg(pi, 0x226, 0x341);write_phy_reg(pi, 0x227, 0x341);write_phy_reg(pi, 0x228, 0x42b);write_phy_reg(pi, 0x229, 0x42b);write_phy_reg(pi, 0x22a, 0x381);write_phy_reg(pi, 0x22b, 0x381);write_phy_reg(pi, 0x22c, 0x42b);write_phy_reg(pi, 0x22d, 0x42b);write_phy_reg(pi, 0x22e, 0x381);write_phy_reg(pi, 0x22f, 0x381);
- wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
- if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
(CHSPEC_IS5G(pi->radio_chanspec))) ||(((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||(pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&(CHSPEC_IS2G(pi->radio_chanspec)))) {nss1_data_weights = 0x00088888;ht_data_weights = 0x00088888;stbc_data_weights = 0x00088888;- } else {
nss1_data_weights = 0x88888888;ht_data_weights = 0x88888888;stbc_data_weights = 0x88888888;- }
- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 1, 32, &nss1_data_weights);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 2, 32, &ht_data_weights);- wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
1, 3, 32, &stbc_data_weights);- if (NREV_IS(pi->pubpi.phy_rev, 4)) {
if (CHSPEC_IS5G(pi->radio_chanspec)) {write_radio_reg(pi,RADIO_2056_TX_GMBB_IDAC |RADIO_2056_TX0, 0x70);write_radio_reg(pi,RADIO_2056_TX_GMBB_IDAC | }RADIO_2056_TX1, 0x70);- }
if (NREV_GE(pi->pubpi.phy_rev, 6)) {
- if (!pi->edcrs_threshold_lock) {
write_phy_reg(pi, 0x224, 0x3eb);write_phy_reg(pi, 0x225, 0x3eb);write_phy_reg(pi, 0x226, 0x341);write_phy_reg(pi, 0x227, 0x341);write_phy_reg(pi, 0x228, 0x42b);write_phy_reg(pi, 0x229, 0x42b);write_phy_reg(pi, 0x22a, 0x381);write_phy_reg(pi, 0x22b, 0x381);write_phy_reg(pi, 0x22c, 0x42b);write_phy_reg(pi, 0x22d, 0x42b);write_phy_reg(pi, 0x22e, 0x381);write_phy_reg(pi, 0x22f, 0x381);- }
if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)wlapi_bmac_mhf(pi->sh->physhim, MHF4,MHF4_BPHY_TXCORE0,MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);}
- if (NREV_GE(pi->pubpi.phy_rev, 6)) {
if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)wlapi_bmac_mhf(pi->sh->physhim, MHF4,MHF4_BPHY_TXCORE0,MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);- }
} void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi) @@ -17043,102 +16931,101 @@ void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi) s16 beta0, beta1, beta2; u16 regval;
if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||(pi->sh->boardtype == 0x8b)) {uint i;u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)rfseq_rx2tx_dlys[i] = war_dlys[i];}
- if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
(pi->sh->boardtype == 0x8b)) {uint i;u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)rfseq_rx2tx_dlys[i] = war_dlys[i];- }
if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);} else {or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);}
- if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);- } else {
or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);- }
regval = 0x000a;wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, ®val);
- regval = 0x000a;
- wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, ®val);
- wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, ®val);
if (NREV_LT(pi->pubpi.phy_rev, 3)) {regval = 0xcdaa;wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, ®val);}
- if (NREV_LT(pi->pubpi.phy_rev, 3)) {
regval = 0xcdaa;wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, ®val);- }
if (NREV_LT(pi->pubpi.phy_rev, 2)) {regval = 0x0000;wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, ®val);
- if (NREV_LT(pi->pubpi.phy_rev, 2)) {
regval = 0x0000;wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, ®val);
regval = 0x7aab;wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, ®val);
regval = 0x7aab;wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, ®val);
regval = 0x0800;wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, ®val);}
regval = 0x0800;wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, ®val);wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, ®val);- }
write_phy_reg(pi, 0xf8, 0x02d8);write_phy_reg(pi, 0xf9, 0x0301);write_phy_reg(pi, 0xfa, 0x02d8);write_phy_reg(pi, 0xfb, 0x0301);
- write_phy_reg(pi, 0xf8, 0x02d8);
- write_phy_reg(pi, 0xf9, 0x0301);
- write_phy_reg(pi, 0xfa, 0x02d8);
- write_phy_reg(pi, 0xfb, 0x0301);
wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,rfseq_rx2tx_dlys,ARRAY_SIZE(rfseq_rx2tx_events));
- wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
rfseq_rx2tx_dlys,ARRAY_SIZE(rfseq_rx2tx_events));
wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,rfseq_tx2rx_dlys,ARRAY_SIZE(rfseq_tx2rx_events));
- wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
rfseq_tx2rx_dlys,ARRAY_SIZE(rfseq_tx2rx_events));
wlc_phy_workarounds_nphy_gainctrl(pi);
- wlc_phy_workarounds_nphy_gainctrl(pi);
if (NREV_LT(pi->pubpi.phy_rev, 2)) {
- if (NREV_LT(pi->pubpi.phy_rev, 2)) {
if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)wlapi_bmac_mhf(pi->sh->physhim, MHF3,MHF3_NPHY_MLADV_WAR,MHF3_NPHY_MLADV_WAR,BRCM_BAND_ALL);
if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)wlapi_bmac_mhf(pi->sh->physhim, MHF3,MHF3_NPHY_MLADV_WAR,MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
} else if (NREV_IS(pi->pubpi.phy_rev, 2)) {write_phy_reg(pi, 0x1e3, 0x0);write_phy_reg(pi, 0x1e4, 0x0);}
- } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
write_phy_reg(pi, 0x1e3, 0x0);write_phy_reg(pi, 0x1e4, 0x0);- }
if (NREV_LT(pi->pubpi.phy_rev, 2))mod_phy_reg(pi, 0x90, (0x1 << 7), 0);alpha0 = 293;alpha1 = 435;alpha2 = 261;beta0 = 366;beta1 = 205;beta2 = 32;write_phy_reg(pi, 0x145, alpha0);write_phy_reg(pi, 0x146, alpha1);write_phy_reg(pi, 0x147, alpha2);write_phy_reg(pi, 0x148, beta0);write_phy_reg(pi, 0x149, beta1);write_phy_reg(pi, 0x14a, beta2);if (NREV_LT(pi->pubpi.phy_rev, 3)) {mod_phy_reg(pi, 0x142, (0xf << 12), 0);write_phy_reg(pi, 0x192, 0xb5);write_phy_reg(pi, 0x193, 0xa4);write_phy_reg(pi, 0x194, 0x0);}
- if (NREV_LT(pi->pubpi.phy_rev, 2))
mod_phy_reg(pi, 0x90, (0x1 << 7), 0);- alpha0 = 293;
- alpha1 = 435;
- alpha2 = 261;
- beta0 = 366;
- beta1 = 205;
- beta2 = 32;
- write_phy_reg(pi, 0x145, alpha0);
- write_phy_reg(pi, 0x146, alpha1);
- write_phy_reg(pi, 0x147, alpha2);
- write_phy_reg(pi, 0x148, beta0);
- write_phy_reg(pi, 0x149, beta1);
- write_phy_reg(pi, 0x14a, beta2);
- if (NREV_LT(pi->pubpi.phy_rev, 3)) {
mod_phy_reg(pi, 0x142, (0xf << 12), 0);write_phy_reg(pi, 0x192, 0xb5);write_phy_reg(pi, 0x193, 0xa4);write_phy_reg(pi, 0x194, 0x0);- }
if (NREV_IS(pi->pubpi.phy_rev, 2))mod_phy_reg(pi, 0x221,NPHY_FORCESIG_DECODEGATEDCLKS,NPHY_FORCESIG_DECODEGATEDCLKS);
- if (NREV_IS(pi->pubpi.phy_rev, 2))
mod_phy_reg(pi, 0x221,NPHY_FORCESIG_DECODEGATEDCLKS,NPHY_FORCESIG_DECODEGATEDCLKS);} static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)