diff --git a/mt7603.h b/mt7603.h index d2ff8ee3..5f486ddc 100644 --- a/mt7603.h +++ b/mt7603.h @@ -122,7 +122,6 @@ void mt7603_mac_stop(struct mt7603_dev *dev); int mt7603_mac_fill_rx(struct mt7603_dev *dev, struct sk_buff *skb); void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data); -int mt7603_set_channel(struct mt7603_dev *dev, struct cfg80211_chan_def *def); int mt7603_mcu_set_channel(struct mt7603_dev *dev); int mt7603_mcu_reg_read(struct mt7603_dev *dev, u32 reg, u32 *val, bool rf); int mt7603_mcu_set_eeprom(struct mt7603_dev *dev); diff --git a/mt7603_core.c b/mt7603_core.c index e0257c44..0a1cc449 100644 --- a/mt7603_core.c +++ b/mt7603_core.c @@ -12,7 +12,6 @@ */ #include "mt7603.h" -#include "mt7603_eeprom.h" void mt7603_set_irq_mask(struct mt7603_dev *dev, u32 clear, u32 set) { @@ -80,35 +79,3 @@ u32 mt7603_reg_map(struct mt7603_dev *dev, u32 addr) return MT_PCIE_REMAP_BASE_2 + offset; } - -int mt7603_set_channel(struct mt7603_dev *dev, struct cfg80211_chan_def *def) -{ - u8 *rssi_data = (u8 *) dev->mt76.eeprom.data; - int idx, ret; - - u8 bw = MT_BW_20; - - mt7603_mac_stop(dev); - - dev->chandef = *def; - mt76_rmw_field(dev, MT_AGG_BWCR, MT_AGG_BWCR_BW, bw); - ret = mt7603_mcu_set_channel(dev); - if (ret) - return ret; - - if (def->chan->band == IEEE80211_BAND_5GHZ) { - idx = 1; - rssi_data += MT_EE_RSSI_OFFSET_5G; - } else { - idx = 0; - rssi_data += MT_EE_RSSI_OFFSET_2G; - } - - memcpy(dev->rssi_offset, rssi_data, sizeof(dev->rssi_offset)); - - idx |= (def->chan - mt76_hw(dev)->wiphy->bands[def->chan->band]->channels) << 1; - mt76_wr(dev, MT_WF_RMAC_CH_FREQ, idx); - mt7603_mac_start(dev); - - return 0; -} diff --git a/mt7603_main.c b/mt7603_main.c index 299d4532..275ec366 100644 --- a/mt7603_main.c +++ b/mt7603_main.c @@ -12,6 +12,7 @@ */ #include "mt7603.h" +#include "mt7603_eeprom.h" static int mt7603_start(struct ieee80211_hw *hw) @@ -90,6 +91,39 @@ mt7603_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) mutex_unlock(&dev->mutex); } +static int +mt7603_set_channel(struct mt7603_dev *dev, struct cfg80211_chan_def *def) +{ + u8 *rssi_data = (u8 *) dev->mt76.eeprom.data; + int idx, ret; + + u8 bw = MT_BW_20; + + mt7603_mac_stop(dev); + + dev->chandef = *def; + mt76_rmw_field(dev, MT_AGG_BWCR, MT_AGG_BWCR_BW, bw); + ret = mt7603_mcu_set_channel(dev); + if (ret) + return ret; + + if (def->chan->band == IEEE80211_BAND_5GHZ) { + idx = 1; + rssi_data += MT_EE_RSSI_OFFSET_5G; + } else { + idx = 0; + rssi_data += MT_EE_RSSI_OFFSET_2G; + } + + memcpy(dev->rssi_offset, rssi_data, sizeof(dev->rssi_offset)); + + idx |= (def->chan - mt76_hw(dev)->wiphy->bands[def->chan->band]->channels) << 1; + mt76_wr(dev, MT_WF_RMAC_CH_FREQ, idx); + mt7603_mac_start(dev); + + return 0; +} + static int mt7603_config(struct ieee80211_hw *hw, u32 changed) {