Message ID | 20170302163834.2273519-11-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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[] = > + { 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) >
Arend Van Spriel <arend.vanspriel@broadcom.com> writes: > 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(-) >> Arend, please edit your quotes. Leaving 1000 lines of unnecessary quotes in your reply makes my use of patchwork horrible: https://patchwork.kernel.org/patch/9601155/
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)
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. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- .../broadcom/brcm80211/brcmsmac/phy/phy_n.c | 1507 +++++++++----------- 1 file changed, 697 insertions(+), 810 deletions(-)