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@xxxxxxxxxxxx> > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > .../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[] = > + { 8, 6, 6, 4, 4, 16, 43, 1, 1 }; > static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f }; > u32 leg_data_weights; > u8 chan_freq_range = 0; > @@ -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[] = > + { 8, 6, 6, 4, 4, 16, 43, 1, 1 }; > s16 alpha0, alpha1, alpha2; > s16 beta0, beta1, beta2; > u32 leg_data_weights, ht_data_weights, nss1_data_weights, > @@ -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) >