mt76: move mt76x02_phy_adjust_vga_gain in mt76/mt76x02_phy.c
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Fri, 12 Oct 2018 10:16:25 +0000 (12:16 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sat, 13 Oct 2018 15:39:49 +0000 (17:39 +0200)
Move mt76x02_phy_adjust_vga_gain routine in mt76x02-lib module
in order to be reused by mt76x0 driver for vga calibration

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
drivers/net/wireless/mediatek/mt76/mt76x02_phy.h
drivers/net/wireless/mediatek/mt76/mt76x2/pci_phy.c

index b0c78ab..97310da 100644 (file)
@@ -223,3 +223,24 @@ void mt76x02_phy_set_band(struct mt76x02_dev *dev, int band,
                       primary_upper);
 }
 EXPORT_SYMBOL_GPL(mt76x02_phy_set_band);
+
+bool mt76x02_phy_adjust_vga_gain(struct mt76x02_dev *dev)
+{
+       u8 limit = dev->cal.low_gain > 0 ? 16 : 4;
+       bool ret = false;
+       u32 false_cca;
+
+       false_cca = FIELD_GET(MT_RX_STAT_1_CCA_ERRORS, mt76_rr(dev, MT_RX_STAT_1));
+       dev->cal.false_cca = false_cca;
+       if (false_cca > 800 && dev->cal.agc_gain_adjust < limit) {
+               dev->cal.agc_gain_adjust += 2;
+               ret = true;
+       } else if ((false_cca < 10 && dev->cal.agc_gain_adjust > 0) ||
+                  (dev->cal.agc_gain_adjust >= limit && false_cca < 500)) {
+               dev->cal.agc_gain_adjust -= 2;
+               ret = true;
+       }
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(mt76x02_phy_adjust_vga_gain);
index 3a5ba5d..8e3a0f9 100644 (file)
@@ -55,5 +55,6 @@ int mt76x02_phy_get_min_avg_rssi(struct mt76x02_dev *dev);
 void mt76x02_phy_set_bw(struct mt76x02_dev *dev, int width, u8 ctrl);
 void mt76x02_phy_set_band(struct mt76x02_dev *dev, int band,
                          bool primary_upper);
+bool mt76x02_phy_adjust_vga_gain(struct mt76x02_dev *dev);
 
 #endif /* __MT76x02_PHY_H */
index 86b87d8..818d2f3 100644 (file)
@@ -157,25 +157,6 @@ mt76x2_phy_set_gain_val(struct mt76x02_dev *dev)
 }
 
 static void
-mt76x2_phy_adjust_vga_gain(struct mt76x02_dev *dev)
-{
-       u32 false_cca;
-       u8 limit = dev->cal.low_gain > 0 ? 16 : 4;
-
-       false_cca = FIELD_GET(MT_RX_STAT_1_CCA_ERRORS, mt76_rr(dev, MT_RX_STAT_1));
-       dev->cal.false_cca = false_cca;
-       if (false_cca > 800 && dev->cal.agc_gain_adjust < limit)
-               dev->cal.agc_gain_adjust += 2;
-       else if ((false_cca < 10 && dev->cal.agc_gain_adjust > 0) ||
-                (dev->cal.agc_gain_adjust >= limit && false_cca < 500))
-               dev->cal.agc_gain_adjust -= 2;
-       else
-               return;
-
-       mt76x2_phy_set_gain_val(dev);
-}
-
-static void
 mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev)
 {
        u8 *gain = dev->cal.agc_gain_init;
@@ -193,7 +174,8 @@ mt76x2_phy_update_channel_gain(struct mt76x02_dev *dev)
        dev->cal.low_gain = low_gain;
 
        if (!gain_change) {
-               mt76x2_phy_adjust_vga_gain(dev);
+               if (mt76x02_phy_adjust_vga_gain(dev))
+                       mt76x2_phy_set_gain_val(dev);
                return;
        }