lkml.org 
[lkml]   [2009]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[107/119] ath5k: Linear PCDAC code fixes
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Nick Kossifidis <mick@madwifi-project.org>

    commit d1cb0bdac180a4afdd3c001acb2618d2a62d9abe upstream.

    * Set correct xpd curve indices for high/low gain curves during
    rfbuffer setup on RF5112B with both calibration curves available.

    * Don't return zero min power when we have the same pcdac value
    twice because it breaks interpolation. Instead return the right
    x barrier as we do when we have equal power levels for 2 different
    pcdac values.

    Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
    Acked-by: Bob Copeland <me@bobcopeland.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Cc: Dan Williams <dcbw@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/net/wireless/ath/ath5k/phy.c | 24 +++++++++++++++++-------
    1 file changed, 17 insertions(+), 7 deletions(-)

    --- a/drivers/net/wireless/ath/ath5k/phy.c
    +++ b/drivers/net/wireless/ath/ath5k/phy.c
    @@ -740,13 +740,22 @@ int ath5k_hw_rfregs_init(struct ath5k_hw
    AR5K_RF_XPD_GAIN, true);

    } else {
    - /* TODO: Set high and low gain bits */
    - ath5k_hw_rfb_op(ah, rf_regs,
    - ee->ee_x_gain[ee_mode],
    + u8 *pdg_curve_to_idx = ee->ee_pdc_to_idx[ee_mode];
    + if (ee->ee_pd_gains[ee_mode] > 1) {
    + ath5k_hw_rfb_op(ah, rf_regs,
    + pdg_curve_to_idx[0],
    AR5K_RF_PD_GAIN_LO, true);
    - ath5k_hw_rfb_op(ah, rf_regs,
    - ee->ee_x_gain[ee_mode],
    + ath5k_hw_rfb_op(ah, rf_regs,
    + pdg_curve_to_idx[1],
    AR5K_RF_PD_GAIN_HI, true);
    + } else {
    + ath5k_hw_rfb_op(ah, rf_regs,
    + pdg_curve_to_idx[0],
    + AR5K_RF_PD_GAIN_LO, true);
    + ath5k_hw_rfb_op(ah, rf_regs,
    + pdg_curve_to_idx[0],
    + AR5K_RF_PD_GAIN_HI, true);
    + }

    /* Lower synth voltage on Rev 2 */
    ath5k_hw_rfb_op(ah, rf_regs, 2,
    @@ -1897,8 +1906,9 @@ ath5k_get_linear_pcdac_min(const u8 *ste
    s16 min_pwrL, min_pwrR;
    s16 pwr_i;

    - if (WARN_ON(stepL[0] == stepL[1] || stepR[0] == stepR[1]))
    - return 0;
    + /* Some vendors write the same pcdac value twice !!! */
    + if (stepL[0] == stepL[1] || stepR[0] == stepR[1])
    + return max(pwrL[0], pwrR[0]);

    if (pwrL[0] == pwrL[1])
    min_pwrL = pwrL[0];



    \
     
     \ /
      Last update: 2009-12-07 01:25    [W:4.064 / U:23.736 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site