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);
else
write_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)