Move mt76x02_get_txpower utility routine in mt76x02-lib module
in order to be reused by mt76x0 and mt76x2u drivers

Signed-off-by: Lorenzo Bianconi <[email protected]>
---
 .../net/wireless/mediatek/mt76/mt76x0/pci.c    |  1 +
 .../net/wireless/mediatek/mt76/mt76x0/usb.c    |  1 +
 drivers/net/wireless/mediatek/mt76/mt76x02.h   |  2 ++
 .../net/wireless/mediatek/mt76/mt76x02_util.c  | 18 ++++++++++++++++++
 .../wireless/mediatek/mt76/mt76x2/pci_main.c   | 15 +--------------
 .../wireless/mediatek/mt76/mt76x2/usb_main.c   |  1 +
 6 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c 
b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
index 5e9160348433..df13c00717bc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c
@@ -86,6 +86,7 @@ static const struct ieee80211_ops mt76x0e_ops = {
        .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
        .wake_tx_queue = mt76_wake_tx_queue,
        .get_survey = mt76_get_survey,
+       .get_txpower = mt76x02_get_txpower,
 };
 
 static int mt76x0e_register_device(struct mt76x02_dev *dev)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c 
b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
index f7e39b5405fe..c68aad5c84a0 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
@@ -157,6 +157,7 @@ static const struct ieee80211_ops mt76x0u_ops = {
        .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
        .set_rts_threshold = mt76x0_set_rts_threshold,
        .wake_tx_queue = mt76_wake_tx_queue,
+       .get_txpower = mt76x02_get_txpower,
 };
 
 static int mt76x0u_register_device(struct mt76x02_dev *dev)
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02.h 
b/drivers/net/wireless/mediatek/mt76/mt76x02.h
index 0890794c92d7..f830e39b58e7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02.h
@@ -151,6 +151,8 @@ void mt76x02_sw_scan(struct ieee80211_hw *hw, struct 
ieee80211_vif *vif,
                     const u8 *mac);
 void mt76x02_sw_scan_complete(struct ieee80211_hw *hw,
                              struct ieee80211_vif *vif);
+int mt76x02_get_txpower(struct ieee80211_hw *hw,
+                       struct ieee80211_vif *vif, int *dbm);
 
 extern const u16 mt76x02_beacon_offsets[16];
 void mt76x02_set_beacon_offsets(struct mt76x02_dev *dev);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c 
b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index bbc2cab4ffdc..25f36e333b9b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -508,6 +508,24 @@ void mt76x02_sw_scan_complete(struct ieee80211_hw *hw,
 }
 EXPORT_SYMBOL_GPL(mt76x02_sw_scan_complete);
 
+int mt76x02_get_txpower(struct ieee80211_hw *hw,
+                       struct ieee80211_vif *vif, int *dbm)
+{
+       struct mt76x02_dev *dev = hw->priv;
+       u8 nstreams = dev->mt76.chainmask & 0xf;
+
+       *dbm = dev->mt76.txpower_cur / 2;
+
+       /* convert from per-chain power to combined
+        * output on 2x2 devices
+        */
+       if (nstreams > 1)
+               *dbm += 3;
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(mt76x02_get_txpower);
+
 const u16 mt76x02_beacon_offsets[16] = {
        /* 1024 byte per beacon */
        0xc000,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c 
b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
index 36042331e4b2..5dfd06e56636 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c
@@ -181,19 +181,6 @@ mt76x2_flush(struct ieee80211_hw *hw, struct ieee80211_vif 
*vif,
 {
 }
 
-static int
-mt76x2_get_txpower(struct ieee80211_hw *hw, struct ieee80211_vif *vif, int 
*dbm)
-{
-       struct mt76x02_dev *dev = hw->priv;
-
-       *dbm = dev->mt76.txpower_cur / 2;
-
-       /* convert from per-chain power to combined output on 2x2 devices */
-       *dbm += 3;
-
-       return 0;
-}
-
 static void mt76x2_set_coverage_class(struct ieee80211_hw *hw,
                                      s16 coverage_class)
 {
@@ -277,7 +264,7 @@ const struct ieee80211_ops mt76x2_ops = {
        .sw_scan_complete = mt76x02_sw_scan_complete,
        .flush = mt76x2_flush,
        .ampdu_action = mt76x02_ampdu_action,
-       .get_txpower = mt76x2_get_txpower,
+       .get_txpower = mt76x02_get_txpower,
        .wake_tx_queue = mt76_wake_tx_queue,
        .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
        .release_buffered_frames = mt76_release_buffered_frames,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c 
b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c
index 5187a5f4832a..c2e0a43082e5 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c
@@ -161,4 +161,5 @@ const struct ieee80211_ops mt76x2u_ops = {
        .sw_scan_start = mt76x02_sw_scan,
        .sw_scan_complete = mt76x02_sw_scan_complete,
        .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
+       .get_txpower = mt76x02_get_txpower,
 };
-- 
2.19.0

Reply via email to