static void wlc_phy_workarounds_nphy_rev7()

in wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c [16052:16552]


static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
{
	static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
		NPHY_REV3_RFSEQ_CMD_NOP,
		NPHY_REV3_RFSEQ_CMD_RXG_FBW,
		NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
		NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
		NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
		NPHY_REV3_RFSEQ_CMD_TX_GAIN,
		NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
		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 u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
	u32 leg_data_weights;
	u8 chan_freq_range = 0;
	static const u16 dac_control = 0x0002;
	u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
	u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
	u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
	s32 min_nvar_val = 0x18d;
	s32 min_nvar_offset_6mbps = 20;
	u8 pdetrange;
	u16 afectrl_adc_ctrl1_rev7 = 0x20;
	u16 afectrl_adc_ctrl2_rev7 = 0x0;
	u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
	u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
	u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
	static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
	static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
	static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
	u16 ipalvlshift_3p3_war_en = 0;
	u16 rccal_bcap_val, rccal_scap_val;
	u16 rccal_tx20_11b_bcap = 0;
	u16 rccal_tx20_11b_scap = 0;
	u16 rccal_tx20_11n_bcap = 0;
	u16 rccal_tx20_11n_scap = 0;
	u16 rccal_tx40_11n_bcap = 0;
	u16 rccal_tx40_11n_scap = 0;
	u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
	u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
	u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
	u16 tx_lpf_bw_ofdm_20mhz = 0;
	u16 tx_lpf_bw_ofdm_40mhz = 0;
	u16 tx_lpf_bw_11b = 0;
	u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
	u16 txgm_idac_bleed = 0;
	bool rccal_ovrd = false;
	u16 freq;
	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_GE(pi->pubpi.phy_rev, 8))
		mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));

	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_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_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);

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

	mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
	mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));

	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 (PHY_IPA(pi)) {

		if (((pi->pubpi.radiorev == 5)
		     && (CHSPEC_IS40(pi->radio_chanspec) == 1))
		    || (pi->pubpi.radiorev == 7)
		    || (pi->pubpi.radiorev == 8)) {

			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;

			if ((pi->pubpi.radiorev == 5) &&
			    (CHSPEC_IS40(pi->radio_chanspec) == 1)) {

				rccal_tx20_11n_bcap = rccal_bcap_val;
				rccal_tx20_11n_scap = rccal_scap_val;
				rccal_tx40_11n_bcap = 0xc;
				rccal_tx40_11n_scap = 0xc;

				rccal_ovrd = true;

			} else if ((pi->pubpi.radiorev == 7)
				   || (pi->pubpi.radiorev == 8)) {

				tx_lpf_bw_ofdm_20mhz = 4;
				tx_lpf_bw_11b = 1;

				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 {

		if (pi->pubpi.radiorev == 5) {

			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_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_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;

		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);
		}

		wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
						  NPHY_REV7_RFCTRLOVERRIDE_ID2);
	}

	write_phy_reg(pi, 0x32f, 0x3);

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

	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 {

			ipa2g_mainbias = 0x2b;

			ipa2g_casconv = 0x7f;

			ipa2g_biasfilt = 0xee;
		}

		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);
			}
		}
	}

	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);
			}

			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,
							 0, IPA2G_IMAIN, 0x16);
					WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
							 1, IPA2G_IMAIN, 0x16);
				}
			}

		} 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,
						 TXMIX2G_TUNE_BOOST_PU, 0x61);
				WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
						 TXGM_IDAC_BLEED, 0x70);
			}
		}
	}

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

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

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

	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, 2, 0x138, 16,
				 &rfseq_pktgn_lpf_hpc_rev7);

	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_RFSEQ, 3, 0x133, 16,
				 &rfseq_htpktgn_lpf_hpc_rev7);

	wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
				 &rfseq_cckpktgn_lpf_hpc_rev7);

	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_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 == 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;
		}
	}

	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);
}