staging: rtl8188eu: Rework function ODM_TxPwrTrackAdjust88E()
Signed-off-by: navin patidar <navin.patidar@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a97c49af79
commit
4de93b1ab7
|
@ -43,66 +43,49 @@ static u8 get_right_chnl_for_iqk(u8 chnl)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 3 Tx Power Tracking */
|
void rtl88eu_dm_txpower_track_adjust(struct odm_dm_struct *dm_odm, u8 type,
|
||||||
/*
|
u8 *direction, u32 *out_write_val)
|
||||||
* Function: ODM_TxPwrTrackAdjust88E()
|
|
||||||
*
|
|
||||||
* Overview: 88E we can not write 0xc80/c94/c4c/ 0xa2x. Instead of write TX agc.
|
|
||||||
* No matter OFDM & CCK use the same method.
|
|
||||||
*
|
|
||||||
* Revised History:
|
|
||||||
* When Who Remark
|
|
||||||
* 04/23/2012 MHC Create Version 0.
|
|
||||||
* 04/23/2012 MHC Adjust TX agc directly not throughput BB digital.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void ODM_TxPwrTrackAdjust88E(struct odm_dm_struct *dm_odm, u8 Type,/* 0 = OFDM, 1 = CCK */
|
|
||||||
u8 *pDirection, /* 1 = +(increase) 2 = -(decrease) */
|
|
||||||
u32 *pOutWriteVal /* Tx tracking CCK/OFDM BB swing index adjust */
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
u8 pwr_value = 0;
|
u8 pwr_value = 0;
|
||||||
/* Tx power tracking BB swing table. */
|
/* Tx power tracking BB swing table. */
|
||||||
/* The base index = 12. +((12-n)/2)dB 13~?? = decrease tx pwr by -((n-12)/2)dB */
|
if (type == 0) { /* For OFDM adjust */
|
||||||
if (Type == 0) { /* For OFDM afjust */
|
|
||||||
ODM_RT_TRACE(dm_odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
ODM_RT_TRACE(dm_odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||||
("BbSwingIdxOfdm = %d BbSwingFlagOfdm=%d\n",
|
("BbSwingIdxOfdm = %d BbSwingFlagOfdm=%d\n",
|
||||||
dm_odm->BbSwingIdxOfdm, dm_odm->BbSwingFlagOfdm));
|
dm_odm->BbSwingIdxOfdm, dm_odm->BbSwingFlagOfdm));
|
||||||
|
|
||||||
if (dm_odm->BbSwingIdxOfdm <= dm_odm->BbSwingIdxOfdmBase) {
|
if (dm_odm->BbSwingIdxOfdm <= dm_odm->BbSwingIdxOfdmBase) {
|
||||||
*pDirection = 1;
|
*direction = 1;
|
||||||
pwr_value = (dm_odm->BbSwingIdxOfdmBase - dm_odm->BbSwingIdxOfdm);
|
pwr_value = (dm_odm->BbSwingIdxOfdmBase -
|
||||||
|
dm_odm->BbSwingIdxOfdm);
|
||||||
} else {
|
} else {
|
||||||
*pDirection = 2;
|
*direction = 2;
|
||||||
pwr_value = (dm_odm->BbSwingIdxOfdm - dm_odm->BbSwingIdxOfdmBase);
|
pwr_value = (dm_odm->BbSwingIdxOfdm -
|
||||||
|
dm_odm->BbSwingIdxOfdmBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
ODM_RT_TRACE(dm_odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
} else if (type == 1) { /* For CCK adjust. */
|
||||||
("BbSwingIdxOfdm = %d BbSwingFlagOfdm=%d\n",
|
|
||||||
dm_odm->BbSwingIdxOfdm, dm_odm->BbSwingFlagOfdm));
|
|
||||||
} else if (Type == 1) { /* For CCK adjust. */
|
|
||||||
ODM_RT_TRACE(dm_odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
ODM_RT_TRACE(dm_odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,
|
||||||
("dm_odm->BbSwingIdxCck = %d dm_odm->BbSwingIdxCckBase = %d\n",
|
("dm_odm->BbSwingIdxCck = %d dm_odm->BbSwingIdxCckBase = %d\n",
|
||||||
dm_odm->BbSwingIdxCck, dm_odm->BbSwingIdxCckBase));
|
dm_odm->BbSwingIdxCck, dm_odm->BbSwingIdxCckBase));
|
||||||
|
|
||||||
if (dm_odm->BbSwingIdxCck <= dm_odm->BbSwingIdxCckBase) {
|
if (dm_odm->BbSwingIdxCck <= dm_odm->BbSwingIdxCckBase) {
|
||||||
*pDirection = 1;
|
*direction = 1;
|
||||||
pwr_value = (dm_odm->BbSwingIdxCckBase - dm_odm->BbSwingIdxCck);
|
pwr_value = (dm_odm->BbSwingIdxCckBase -
|
||||||
|
dm_odm->BbSwingIdxCck);
|
||||||
} else {
|
} else {
|
||||||
*pDirection = 2;
|
*direction = 2;
|
||||||
pwr_value = (dm_odm->BbSwingIdxCck - dm_odm->BbSwingIdxCckBase);
|
pwr_value = (dm_odm->BbSwingIdxCck -
|
||||||
|
dm_odm->BbSwingIdxCckBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
if (pwr_value >= ODM_TXPWRTRACK_MAX_IDX_88E && *direction == 1)
|
||||||
/* 2012/04/25 MH According to Ed/Luke.Lees estimate for EVM the max tx power tracking */
|
|
||||||
/* need to be less than 6 power index for 88E. */
|
|
||||||
/* */
|
|
||||||
if (pwr_value >= ODM_TXPWRTRACK_MAX_IDX_88E && *pDirection == 1)
|
|
||||||
pwr_value = ODM_TXPWRTRACK_MAX_IDX_88E;
|
pwr_value = ODM_TXPWRTRACK_MAX_IDX_88E;
|
||||||
|
|
||||||
*pOutWriteVal = pwr_value | (pwr_value<<8) | (pwr_value<<16) | (pwr_value<<24);
|
*out_write_val = pwr_value | (pwr_value<<8) | (pwr_value<<16) |
|
||||||
} /* ODM_TxPwrTrackAdjust88E */
|
(pwr_value<<24);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function: odm_TxPwrTrackSetPwr88E()
|
* Function: odm_TxPwrTrackSetPwr88E()
|
||||||
|
|
|
@ -101,7 +101,8 @@ void rtl88eu_phy_rf6052_set_cck_txpower(struct adapter *adapt, u8 *powerlevel)
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ODM_TxPwrTrackAdjust88E(&hal_data->odmpriv, 1, &direction, &pwrtrac_value);
|
rtl88eu_dm_txpower_track_adjust(&hal_data->odmpriv, 1, &direction,
|
||||||
|
&pwrtrac_value);
|
||||||
|
|
||||||
if (direction == 1) {
|
if (direction == 1) {
|
||||||
/* Increase TX power */
|
/* Increase TX power */
|
||||||
|
@ -297,7 +298,8 @@ void rtl88eu_phy_rf6052_set_ofdm_txpower(struct adapter *adapt,
|
||||||
getpowerbase88e(adapt, pwr_level_ofdm, pwr_level_bw20, pwr_level_bw40,
|
getpowerbase88e(adapt, pwr_level_ofdm, pwr_level_bw20, pwr_level_bw40,
|
||||||
channel, &powerbase0[0], &powerbase1[0]);
|
channel, &powerbase0[0], &powerbase1[0]);
|
||||||
|
|
||||||
ODM_TxPwrTrackAdjust88E(&hal_data->odmpriv, 0, &direction, &pwrtrac_value);
|
rtl88eu_dm_txpower_track_adjust(&hal_data->odmpriv, 0, &direction,
|
||||||
|
&pwrtrac_value);
|
||||||
|
|
||||||
for (index = 0; index < 6; index++) {
|
for (index = 0; index < 6; index++) {
|
||||||
get_rx_power_val_by_reg(adapt, channel, index,
|
get_rx_power_val_by_reg(adapt, channel, index,
|
||||||
|
|
|
@ -27,12 +27,12 @@
|
||||||
#define AVG_THERMAL_NUM_88E 4
|
#define AVG_THERMAL_NUM_88E 4
|
||||||
#define ODM_TARGET_CHNL_NUM_2G_5G 59
|
#define ODM_TARGET_CHNL_NUM_2G_5G 59
|
||||||
|
|
||||||
void ODM_TxPwrTrackAdjust88E(struct odm_dm_struct *pDM_Odm,
|
void rtl88eu_dm_txpower_track_adjust(struct odm_dm_struct *dm_odm,
|
||||||
u8 Type, /* 0 = OFDM, 1 = CCK */
|
u8 type, /* 0 = OFDM, 1 = CCK */
|
||||||
u8 *pDirection,/* 1 = +(incr) 2 = -(decr) */
|
u8 *dir, /* 1 = +(incr), 2 = -(decr) */
|
||||||
u32 *pOutWriteVal); /* Tx tracking CCK/OFDM BB
|
u32 *out_write); /* Tx tracking CCK/OFDM BB
|
||||||
* swing index adjust */
|
* swing index adjust
|
||||||
|
*/
|
||||||
|
|
||||||
void odm_TXPowerTrackingCallback_ThermalMeter_8188E(struct adapter *Adapter);
|
void odm_TXPowerTrackingCallback_ThermalMeter_8188E(struct adapter *Adapter);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue