Loading drivers/net/wireless/b43/phy_n.c +30 −15 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,21 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field, static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field, static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field, u16 value, u8 core); u16 value, u8 core); static inline bool b43_empty_chanspec(struct b43_chanspec *chanspec) { return !chanspec->channel && !chanspec->sideband && !chanspec->b_width && !chanspec->b_freq; } static inline bool b43_eq_chanspecs(struct b43_chanspec *chanspec1, struct b43_chanspec *chanspec2) { return (chanspec1->channel == chanspec2->channel && chanspec1->sideband == chanspec2->sideband && chanspec1->b_width == chanspec2->b_width && chanspec1->b_freq == chanspec2->b_freq); } void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna) void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna) {//TODO {//TODO } } Loading Loading @@ -768,7 +783,7 @@ static void b43_nphy_spur_workaround(struct b43_wldev *dev) { { struct b43_phy_n *nphy = dev->phy.n; struct b43_phy_n *nphy = dev->phy.n; unsigned int channel; u8 channel = nphy->radio_chanspec.channel; int tone[2] = { 57, 58 }; int tone[2] = { 57, 58 }; u32 noise[2] = { 0x3FF, 0x3FF }; u32 noise[2] = { 0x3FF, 0x3FF }; Loading @@ -777,8 +792,6 @@ static void b43_nphy_spur_workaround(struct b43_wldev *dev) if (nphy->hang_avoid) if (nphy->hang_avoid) b43_nphy_stay_in_carrier_search(dev, 1); b43_nphy_stay_in_carrier_search(dev, 1); /* FIXME: channel = radio_chanspec */ if (nphy->gband_spurwar_en) { if (nphy->gband_spurwar_en) { /* TODO: N PHY Adjust Analog Pfbw (7) */ /* TODO: N PHY Adjust Analog Pfbw (7) */ if (channel == 11 && dev->phy.is_40mhz) if (channel == 11 && dev->phy.is_40mhz) Loading Loading @@ -2015,12 +2028,12 @@ static void b43_nphy_restore_rssi_cal(struct b43_wldev *dev) u16 *rssical_phy_regs = NULL; u16 *rssical_phy_regs = NULL; if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (!nphy->rssical_chanspec_2G) if (b43_empty_chanspec(&nphy->rssical_chanspec_2G)) return; return; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_2G; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_2G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_2G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_2G; } else { } else { if (!nphy->rssical_chanspec_5G) if (b43_empty_chanspec(&nphy->rssical_chanspec_5G)) return; return; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_5G; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_5G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; Loading Loading @@ -2440,7 +2453,7 @@ static void b43_nphy_save_cal(struct b43_wldev *dev) struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; u16 *txcal_radio_regs = NULL; u16 *txcal_radio_regs = NULL; u8 *iqcal_chanspec; struct b43_chanspec *iqcal_chanspec; u16 *table = NULL; u16 *table = NULL; if (nphy->hang_avoid) if (nphy->hang_avoid) Loading Loading @@ -2496,12 +2509,12 @@ static void b43_nphy_restore_cal(struct b43_wldev *dev) struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (nphy->iqcal_chanspec_2G == 0) if (b43_empty_chanspec(&nphy->iqcal_chanspec_2G)) return; return; table = nphy->cal_cache.txcal_coeffs_2G; table = nphy->cal_cache.txcal_coeffs_2G; loft = &nphy->cal_cache.txcal_coeffs_2G[5]; loft = &nphy->cal_cache.txcal_coeffs_2G[5]; } else { } else { if (nphy->iqcal_chanspec_5G == 0) if (b43_empty_chanspec(&nphy->iqcal_chanspec_5G)) return; return; table = nphy->cal_cache.txcal_coeffs_5G; table = nphy->cal_cache.txcal_coeffs_5G; loft = &nphy->cal_cache.txcal_coeffs_5G[5]; loft = &nphy->cal_cache.txcal_coeffs_5G[5]; Loading Loading @@ -2746,8 +2759,7 @@ static int b43_nphy_cal_tx_iq_lo(struct b43_wldev *dev, b43_ntab_read_bulk(dev, B43_NTAB16(15, 96), length, b43_ntab_read_bulk(dev, B43_NTAB16(15, 96), length, nphy->txiqlocal_bestc); nphy->txiqlocal_bestc); nphy->txiqlocal_coeffsvalid = true; nphy->txiqlocal_coeffsvalid = true; /* TODO: Set nphy->txiqlocal_chanspec to nphy->txiqlocal_chanspec = nphy->radio_chanspec; the current channel */ } else { } else { length = 11; length = 11; if (dev->phy.rev < 3) if (dev->phy.rev < 3) Loading Loading @@ -2782,7 +2794,8 @@ static void b43_nphy_reapply_tx_cal_coeffs(struct b43_wldev *dev) u16 buffer[7]; u16 buffer[7]; bool equal = true; bool equal = true; if (!nphy->txiqlocal_coeffsvalid || 1 /* FIXME */) if (!nphy->txiqlocal_coeffsvalid || b43_eq_chanspecs(&nphy->txiqlocal_chanspec, &nphy->radio_chanspec)) return; return; b43_ntab_read_bulk(dev, B43_NTAB16(15, 80), 7, buffer); b43_ntab_read_bulk(dev, B43_NTAB16(15, 80), 7, buffer); Loading Loading @@ -3137,9 +3150,11 @@ int b43_phy_initn(struct b43_wldev *dev) do_rssi_cal = false; do_rssi_cal = false; if (phy->rev >= 3) { if (phy->rev >= 3) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) do_rssi_cal = (nphy->rssical_chanspec_2G == 0); do_rssi_cal = b43_empty_chanspec(&nphy->rssical_chanspec_2G); else else do_rssi_cal = (nphy->rssical_chanspec_5G == 0); do_rssi_cal = b43_empty_chanspec(&nphy->rssical_chanspec_5G); if (do_rssi_cal) if (do_rssi_cal) b43_nphy_rssi_cal(dev); b43_nphy_rssi_cal(dev); Loading @@ -3151,9 +3166,9 @@ int b43_phy_initn(struct b43_wldev *dev) if (!((nphy->measure_hold & 0x6) != 0)) { if (!((nphy->measure_hold & 0x6) != 0)) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) do_cal = (nphy->iqcal_chanspec_2G == 0); do_cal = b43_empty_chanspec(&nphy->iqcal_chanspec_2G); else else do_cal = (nphy->iqcal_chanspec_5G == 0); do_cal = b43_empty_chanspec(&nphy->iqcal_chanspec_5G); if (nphy->mute) if (nphy->mute) do_cal = false; do_cal = false; Loading drivers/net/wireless/b43/phy_n.h +6 −5 Original line number Original line Diff line number Diff line Loading @@ -984,7 +984,7 @@ struct b43_phy_n { u16 papd_epsilon_offset[2]; u16 papd_epsilon_offset[2]; s32 preamble_override; s32 preamble_override; u32 bb_mult_save; u32 bb_mult_save; u16 radio_chanspec; struct b43_chanspec radio_chanspec; bool gain_boost; bool gain_boost; bool elna_gain_config; bool elna_gain_config; Loading @@ -1000,6 +1000,7 @@ struct b43_phy_n { u16 txiqlocal_bestc[11]; u16 txiqlocal_bestc[11]; bool txiqlocal_coeffsvalid; bool txiqlocal_coeffsvalid; struct b43_phy_n_txpwrindex txpwrindex[2]; struct b43_phy_n_txpwrindex txpwrindex[2]; struct b43_chanspec txiqlocal_chanspec; u8 txrx_chain; u8 txrx_chain; u16 tx_rx_cal_phy_saveregs[11]; u16 tx_rx_cal_phy_saveregs[11]; Loading @@ -1015,12 +1016,12 @@ struct b43_phy_n { bool gband_spurwar_en; bool gband_spurwar_en; bool ipa2g_on; bool ipa2g_on; u8 iqcal_chanspec_2G; struct b43_chanspec iqcal_chanspec_2G; u8 rssical_chanspec_2G; struct b43_chanspec rssical_chanspec_2G; bool ipa5g_on; bool ipa5g_on; u8 iqcal_chanspec_5G; struct b43_chanspec iqcal_chanspec_5G; u8 rssical_chanspec_5G; struct b43_chanspec rssical_chanspec_5G; struct b43_phy_n_rssical_cache rssical_cache; struct b43_phy_n_rssical_cache rssical_cache; struct b43_phy_n_cal_cache cal_cache; struct b43_phy_n_cal_cache cal_cache; Loading Loading
drivers/net/wireless/b43/phy_n.c +30 −15 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,21 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field, static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field, static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field, u16 value, u8 core); u16 value, u8 core); static inline bool b43_empty_chanspec(struct b43_chanspec *chanspec) { return !chanspec->channel && !chanspec->sideband && !chanspec->b_width && !chanspec->b_freq; } static inline bool b43_eq_chanspecs(struct b43_chanspec *chanspec1, struct b43_chanspec *chanspec2) { return (chanspec1->channel == chanspec2->channel && chanspec1->sideband == chanspec2->sideband && chanspec1->b_width == chanspec2->b_width && chanspec1->b_freq == chanspec2->b_freq); } void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna) void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna) {//TODO {//TODO } } Loading Loading @@ -768,7 +783,7 @@ static void b43_nphy_spur_workaround(struct b43_wldev *dev) { { struct b43_phy_n *nphy = dev->phy.n; struct b43_phy_n *nphy = dev->phy.n; unsigned int channel; u8 channel = nphy->radio_chanspec.channel; int tone[2] = { 57, 58 }; int tone[2] = { 57, 58 }; u32 noise[2] = { 0x3FF, 0x3FF }; u32 noise[2] = { 0x3FF, 0x3FF }; Loading @@ -777,8 +792,6 @@ static void b43_nphy_spur_workaround(struct b43_wldev *dev) if (nphy->hang_avoid) if (nphy->hang_avoid) b43_nphy_stay_in_carrier_search(dev, 1); b43_nphy_stay_in_carrier_search(dev, 1); /* FIXME: channel = radio_chanspec */ if (nphy->gband_spurwar_en) { if (nphy->gband_spurwar_en) { /* TODO: N PHY Adjust Analog Pfbw (7) */ /* TODO: N PHY Adjust Analog Pfbw (7) */ if (channel == 11 && dev->phy.is_40mhz) if (channel == 11 && dev->phy.is_40mhz) Loading Loading @@ -2015,12 +2028,12 @@ static void b43_nphy_restore_rssi_cal(struct b43_wldev *dev) u16 *rssical_phy_regs = NULL; u16 *rssical_phy_regs = NULL; if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (!nphy->rssical_chanspec_2G) if (b43_empty_chanspec(&nphy->rssical_chanspec_2G)) return; return; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_2G; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_2G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_2G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_2G; } else { } else { if (!nphy->rssical_chanspec_5G) if (b43_empty_chanspec(&nphy->rssical_chanspec_5G)) return; return; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_5G; rssical_radio_regs = nphy->rssical_cache.rssical_radio_regs_5G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; Loading Loading @@ -2440,7 +2453,7 @@ static void b43_nphy_save_cal(struct b43_wldev *dev) struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; u16 *txcal_radio_regs = NULL; u16 *txcal_radio_regs = NULL; u8 *iqcal_chanspec; struct b43_chanspec *iqcal_chanspec; u16 *table = NULL; u16 *table = NULL; if (nphy->hang_avoid) if (nphy->hang_avoid) Loading Loading @@ -2496,12 +2509,12 @@ static void b43_nphy_restore_cal(struct b43_wldev *dev) struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { if (nphy->iqcal_chanspec_2G == 0) if (b43_empty_chanspec(&nphy->iqcal_chanspec_2G)) return; return; table = nphy->cal_cache.txcal_coeffs_2G; table = nphy->cal_cache.txcal_coeffs_2G; loft = &nphy->cal_cache.txcal_coeffs_2G[5]; loft = &nphy->cal_cache.txcal_coeffs_2G[5]; } else { } else { if (nphy->iqcal_chanspec_5G == 0) if (b43_empty_chanspec(&nphy->iqcal_chanspec_5G)) return; return; table = nphy->cal_cache.txcal_coeffs_5G; table = nphy->cal_cache.txcal_coeffs_5G; loft = &nphy->cal_cache.txcal_coeffs_5G[5]; loft = &nphy->cal_cache.txcal_coeffs_5G[5]; Loading Loading @@ -2746,8 +2759,7 @@ static int b43_nphy_cal_tx_iq_lo(struct b43_wldev *dev, b43_ntab_read_bulk(dev, B43_NTAB16(15, 96), length, b43_ntab_read_bulk(dev, B43_NTAB16(15, 96), length, nphy->txiqlocal_bestc); nphy->txiqlocal_bestc); nphy->txiqlocal_coeffsvalid = true; nphy->txiqlocal_coeffsvalid = true; /* TODO: Set nphy->txiqlocal_chanspec to nphy->txiqlocal_chanspec = nphy->radio_chanspec; the current channel */ } else { } else { length = 11; length = 11; if (dev->phy.rev < 3) if (dev->phy.rev < 3) Loading Loading @@ -2782,7 +2794,8 @@ static void b43_nphy_reapply_tx_cal_coeffs(struct b43_wldev *dev) u16 buffer[7]; u16 buffer[7]; bool equal = true; bool equal = true; if (!nphy->txiqlocal_coeffsvalid || 1 /* FIXME */) if (!nphy->txiqlocal_coeffsvalid || b43_eq_chanspecs(&nphy->txiqlocal_chanspec, &nphy->radio_chanspec)) return; return; b43_ntab_read_bulk(dev, B43_NTAB16(15, 80), 7, buffer); b43_ntab_read_bulk(dev, B43_NTAB16(15, 80), 7, buffer); Loading Loading @@ -3137,9 +3150,11 @@ int b43_phy_initn(struct b43_wldev *dev) do_rssi_cal = false; do_rssi_cal = false; if (phy->rev >= 3) { if (phy->rev >= 3) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) do_rssi_cal = (nphy->rssical_chanspec_2G == 0); do_rssi_cal = b43_empty_chanspec(&nphy->rssical_chanspec_2G); else else do_rssi_cal = (nphy->rssical_chanspec_5G == 0); do_rssi_cal = b43_empty_chanspec(&nphy->rssical_chanspec_5G); if (do_rssi_cal) if (do_rssi_cal) b43_nphy_rssi_cal(dev); b43_nphy_rssi_cal(dev); Loading @@ -3151,9 +3166,9 @@ int b43_phy_initn(struct b43_wldev *dev) if (!((nphy->measure_hold & 0x6) != 0)) { if (!((nphy->measure_hold & 0x6) != 0)) { if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) do_cal = (nphy->iqcal_chanspec_2G == 0); do_cal = b43_empty_chanspec(&nphy->iqcal_chanspec_2G); else else do_cal = (nphy->iqcal_chanspec_5G == 0); do_cal = b43_empty_chanspec(&nphy->iqcal_chanspec_5G); if (nphy->mute) if (nphy->mute) do_cal = false; do_cal = false; Loading
drivers/net/wireless/b43/phy_n.h +6 −5 Original line number Original line Diff line number Diff line Loading @@ -984,7 +984,7 @@ struct b43_phy_n { u16 papd_epsilon_offset[2]; u16 papd_epsilon_offset[2]; s32 preamble_override; s32 preamble_override; u32 bb_mult_save; u32 bb_mult_save; u16 radio_chanspec; struct b43_chanspec radio_chanspec; bool gain_boost; bool gain_boost; bool elna_gain_config; bool elna_gain_config; Loading @@ -1000,6 +1000,7 @@ struct b43_phy_n { u16 txiqlocal_bestc[11]; u16 txiqlocal_bestc[11]; bool txiqlocal_coeffsvalid; bool txiqlocal_coeffsvalid; struct b43_phy_n_txpwrindex txpwrindex[2]; struct b43_phy_n_txpwrindex txpwrindex[2]; struct b43_chanspec txiqlocal_chanspec; u8 txrx_chain; u8 txrx_chain; u16 tx_rx_cal_phy_saveregs[11]; u16 tx_rx_cal_phy_saveregs[11]; Loading @@ -1015,12 +1016,12 @@ struct b43_phy_n { bool gband_spurwar_en; bool gband_spurwar_en; bool ipa2g_on; bool ipa2g_on; u8 iqcal_chanspec_2G; struct b43_chanspec iqcal_chanspec_2G; u8 rssical_chanspec_2G; struct b43_chanspec rssical_chanspec_2G; bool ipa5g_on; bool ipa5g_on; u8 iqcal_chanspec_5G; struct b43_chanspec iqcal_chanspec_5G; u8 rssical_chanspec_5G; struct b43_chanspec rssical_chanspec_5G; struct b43_phy_n_rssical_cache rssical_cache; struct b43_phy_n_rssical_cache rssical_cache; struct b43_phy_n_cal_cache cal_cache; struct b43_phy_n_cal_cache cal_cache; Loading