wifi: mt76: move mt76_rate_power from core to mt76x02 driver code
authorFelix Fietkau <nbd@nbd.name>
Wed, 28 Sep 2022 08:49:11 +0000 (10:49 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:12 +0000 (17:29 +0100)
Its layout and code is mt76x02 specific

Signed-off-by: Felix Fietkau <nbd@nbd.name>
15 files changed:
drivers/net/wireless/mediatek/mt76/debugfs.c
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.c
drivers/net/wireless/mediatek/mt76/mt76x0/eeprom.h
drivers/net/wireless/mediatek/mt76/mt76x0/init.c
drivers/net/wireless/mediatek/mt76/mt76x0/phy.c
drivers/net/wireless/mediatek/mt76/mt76x02.h
drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
drivers/net/wireless/mediatek/mt76/mt76x02_phy.h
drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c
drivers/net/wireless/mediatek/mt76/mt76x2/eeprom.c
drivers/net/wireless/mediatek/mt76/mt76x2/eeprom.h
drivers/net/wireless/mediatek/mt76/mt76x2/init.c
drivers/net/wireless/mediatek/mt76/mt76x2/phy.c

index 47e9911ee9fe697af96892ac0638b5f9a7f28353..11b0b3d62f29e5dc9afb136d908781c1e2a452e1 100644 (file)
@@ -100,23 +100,6 @@ void mt76_seq_puts_array(struct seq_file *file, const char *str,
 }
 EXPORT_SYMBOL_GPL(mt76_seq_puts_array);
 
-static int mt76_read_rate_txpower(struct seq_file *s, void *data)
-{
-       struct mt76_dev *dev = dev_get_drvdata(s->private);
-
-       mt76_seq_puts_array(s, "CCK", dev->rate_power.cck,
-                           ARRAY_SIZE(dev->rate_power.cck));
-       mt76_seq_puts_array(s, "OFDM", dev->rate_power.ofdm,
-                           ARRAY_SIZE(dev->rate_power.ofdm));
-       mt76_seq_puts_array(s, "STBC", dev->rate_power.stbc,
-                           ARRAY_SIZE(dev->rate_power.stbc));
-       mt76_seq_puts_array(s, "HT", dev->rate_power.ht,
-                           ARRAY_SIZE(dev->rate_power.ht));
-       mt76_seq_puts_array(s, "VHT", dev->rate_power.vht,
-                           ARRAY_SIZE(dev->rate_power.vht));
-       return 0;
-}
-
 struct dentry *
 mt76_register_debugfs_fops(struct mt76_phy *phy,
                           const struct file_operations *ops)
@@ -137,8 +120,6 @@ mt76_register_debugfs_fops(struct mt76_phy *phy,
        debugfs_create_blob("eeprom", 0400, dir, &dev->eeprom);
        if (dev->otp.data)
                debugfs_create_blob("otp", 0400, dir, &dev->otp);
-       debugfs_create_devm_seqfile(dev->dev, "rate_txpower", dir,
-                                   mt76_read_rate_txpower);
        debugfs_create_devm_seqfile(dev->dev, "rx-queues", dir,
                                    mt76_rx_queues_read);
 
index 87db9498dea44a517ad9cfd0c17f7c90303427fb..26febc0c261a5c90461317a81c5c07e65abd605c 100644 (file)
@@ -470,19 +470,6 @@ struct mt76_sband {
        struct mt76_channel_state *chan;
 };
 
-struct mt76_rate_power {
-       union {
-               struct {
-                       s8 cck[4];
-                       s8 ofdm[8];
-                       s8 stbc[10];
-                       s8 ht[16];
-                       s8 vht[10];
-               };
-               s8 all[48];
-       };
-};
-
 /* addr req mask */
 #define MT_VEND_TYPE_EEPROM    BIT(31)
 #define MT_VEND_TYPE_CFG       BIT(30)
@@ -802,8 +789,6 @@ struct mt76_dev {
        struct debugfs_blob_wrapper eeprom;
        struct debugfs_blob_wrapper otp;
 
-       struct mt76_rate_power rate_power;
-
        char alpha2[3];
        enum nl80211_dfs_regions region;
 
index da2ca2563ac9f37c44da5deb1b9a927732302d9f..103a6d3a1e1352c2d26a698dabcaa2e0a10c9c73 100644 (file)
@@ -151,7 +151,7 @@ static s8 mt76x0_get_delta(struct mt76x02_dev *dev)
 
 void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev,
                                  struct ieee80211_channel *chan,
-                                 struct mt76_rate_power *t)
+                                 struct mt76x02_rate_power *t)
 {
        bool is_2ghz = chan->band == NL80211_BAND_2GHZ;
        u16 val, addr;
@@ -235,7 +235,7 @@ void mt76x0_get_power_info(struct mt76x02_dev *dev,
                        data = mt76x02_eeprom_get(dev, MT_EE_5G_TARGET_POWER);
                else
                        data = mt76x02_eeprom_get(dev, MT_EE_2G_TARGET_POWER);
-               target_power = (data & 0xff) - dev->mt76.rate_power.ofdm[7];
+               target_power = (data & 0xff) - dev->rate_power.ofdm[7];
                *tp = target_power + mt76x0_get_delta(dev);
 
                return;
index 15540ce8db871eb3071794f84276b29856403313..08f1b10bf3ba4b30378bfb9c7da6213c81177f11 100644 (file)
@@ -19,7 +19,7 @@ int mt76x0_eeprom_init(struct mt76x02_dev *dev);
 void mt76x0_read_rx_gain(struct mt76x02_dev *dev);
 void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev,
                                  struct ieee80211_channel *chan,
-                                 struct mt76_rate_power *t);
+                                 struct mt76x02_rate_power *t);
 void mt76x0_get_power_info(struct mt76x02_dev *dev,
                           struct ieee80211_channel *chan, s8 *tp);
 
index 66d47c70111a1966c2ff06d6507f8840d7f5e07b..6257460f8de55add7ffea79212f3cc5bdb9a70fb 100644 (file)
@@ -217,7 +217,7 @@ mt76x0_init_txpower(struct mt76x02_dev *dev,
                    struct ieee80211_supported_band *sband)
 {
        struct ieee80211_channel *chan;
-       struct mt76_rate_power t;
+       struct mt76x02_rate_power t;
        s8 tp;
        int i;
 
index e91c314cdfac569349a1638d9f8176930987c97f..8a89fe49db36c97392a65ac46d9adb0bf47923ed 100644 (file)
@@ -598,7 +598,7 @@ mt76x0_phy_get_target_power(struct mt76x02_dev *dev, u8 tx_mode,
                if (tx_rate > 3)
                        return -EINVAL;
 
-               *target_power = cur_power + dev->mt76.rate_power.cck[tx_rate];
+               *target_power = cur_power + dev->rate_power.cck[tx_rate];
                *target_pa_power = mt76x0_phy_get_rf_pa_mode(dev, 0, tx_rate);
                break;
        case 1: {
@@ -635,7 +635,7 @@ mt76x0_phy_get_target_power(struct mt76x02_dev *dev, u8 tx_mode,
                        return -EINVAL;
                }
 
-               *target_power = cur_power + dev->mt76.rate_power.ofdm[index];
+               *target_power = cur_power + dev->rate_power.ofdm[index];
                *target_pa_power = mt76x0_phy_get_rf_pa_mode(dev, 0, index + 4);
                break;
        }
@@ -645,7 +645,7 @@ mt76x0_phy_get_target_power(struct mt76x02_dev *dev, u8 tx_mode,
                if (tx_rate > 9)
                        return -EINVAL;
 
-               *target_power = cur_power + dev->mt76.rate_power.vht[tx_rate];
+               *target_power = cur_power + dev->rate_power.vht[tx_rate];
                *target_pa_power = mt76x0_phy_get_rf_pa_mode(dev, 1, tx_rate);
                break;
        default:
@@ -654,7 +654,7 @@ mt76x0_phy_get_target_power(struct mt76x02_dev *dev, u8 tx_mode,
                if (tx_rate > 9)
                        return -EINVAL;
 
-               *target_power = cur_power + dev->mt76.rate_power.ht[tx_rate];
+               *target_power = cur_power + dev->rate_power.ht[tx_rate];
                *target_pa_power = mt76x0_phy_get_rf_pa_mode(dev, 1, tx_rate);
                break;
        }
@@ -841,7 +841,7 @@ static void mt76x0_phy_tssi_calibrate(struct mt76x02_dev *dev)
 
 void mt76x0_phy_set_txpower(struct mt76x02_dev *dev)
 {
-       struct mt76_rate_power *t = &dev->mt76.rate_power;
+       struct mt76x02_rate_power *t = &dev->rate_power;
        s8 info;
 
        mt76x0_get_tx_power_per_rate(dev, dev->mphy.chandef.chan, t);
index 50eaeff11af3cb56f136e8cac031c46febf7f35a..ae6ba35e863d9283ab65da4d2aa79714e39eb166 100644 (file)
@@ -72,6 +72,19 @@ struct mt76x02_beacon_ops {
 #define mt76x02_pre_tbtt_enable(dev, enable)   \
        (dev)->beacon_ops->pre_tbtt_enable(dev, enable)
 
+struct mt76x02_rate_power {
+       union {
+               struct {
+                       s8 cck[4];
+                       s8 ofdm[8];
+                       s8 stbc[10];
+                       s8 ht[16];
+                       s8 vht[10];
+               };
+               s8 all[48];
+       };
+};
+
 struct mt76x02_dev {
        union { /* must be first */
                struct mt76_dev mt76;
@@ -107,6 +120,8 @@ struct mt76x02_dev {
        u8 beacon_hang_check;
        u8 mcu_timeout;
 
+       struct mt76x02_rate_power rate_power;
+
        struct mt76x02_calibration cal;
 
        int txpower_conf;
index c4fe1c436aaa0e8e3808b0f31ced3d45960331da..066801620eb262522002b982c7a347bdb96369b5 100644 (file)
@@ -114,6 +114,23 @@ mt76_edcca_get(void *data, u64 *val)
 DEFINE_DEBUGFS_ATTRIBUTE(fops_edcca, mt76_edcca_get, mt76_edcca_set,
                         "%lld\n");
 
+static int mt76x02_read_rate_txpower(struct seq_file *s, void *data)
+{
+       struct mt76x02_dev *dev = dev_get_drvdata(s->private);
+
+       mt76_seq_puts_array(s, "CCK", dev->rate_power.cck,
+                           ARRAY_SIZE(dev->rate_power.cck));
+       mt76_seq_puts_array(s, "OFDM", dev->rate_power.ofdm,
+                           ARRAY_SIZE(dev->rate_power.ofdm));
+       mt76_seq_puts_array(s, "STBC", dev->rate_power.stbc,
+                           ARRAY_SIZE(dev->rate_power.stbc));
+       mt76_seq_puts_array(s, "HT", dev->rate_power.ht,
+                           ARRAY_SIZE(dev->rate_power.ht));
+       mt76_seq_puts_array(s, "VHT", dev->rate_power.vht,
+                           ARRAY_SIZE(dev->rate_power.vht));
+       return 0;
+}
+
 void mt76x02_init_debugfs(struct mt76x02_dev *dev)
 {
        struct dentry *dir;
@@ -133,6 +150,8 @@ void mt76x02_init_debugfs(struct mt76x02_dev *dev)
        debugfs_create_devm_seqfile(dev->mt76.dev, "txpower", dir,
                                    read_txpower);
 
+       debugfs_create_devm_seqfile(dev->mt76.dev, "rate_txpower", dir,
+                                   mt76x02_read_rate_txpower);
        debugfs_create_devm_seqfile(dev->mt76.dev, "agc", dir, read_agc);
 
        debugfs_create_u32("tx_hang_reset", 0400, dir, &dev->tx_hang_reset);
index 2e53b0c1afdd983308b288dface89bdfa4b18421..722dc2a7dea606727cb96a17516f7c3e4f629719 100644 (file)
@@ -59,7 +59,7 @@ mt76x02_tx_power_mask(u8 v1, u8 v2, u8 v3, u8 v4)
        return val;
 }
 
-int mt76x02_get_max_rate_power(struct mt76_rate_power *r)
+int mt76x02_get_max_rate_power(struct mt76x02_rate_power *r)
 {
        s8 ret = 0;
        int i;
@@ -71,7 +71,7 @@ int mt76x02_get_max_rate_power(struct mt76_rate_power *r)
 }
 EXPORT_SYMBOL_GPL(mt76x02_get_max_rate_power);
 
-void mt76x02_limit_rate_power(struct mt76_rate_power *r, int limit)
+void mt76x02_limit_rate_power(struct mt76x02_rate_power *r, int limit)
 {
        int i;
 
@@ -81,7 +81,7 @@ void mt76x02_limit_rate_power(struct mt76_rate_power *r, int limit)
 }
 EXPORT_SYMBOL_GPL(mt76x02_limit_rate_power);
 
-void mt76x02_add_rate_power_offset(struct mt76_rate_power *r, int offset)
+void mt76x02_add_rate_power_offset(struct mt76x02_rate_power *r, int offset)
 {
        int i;
 
@@ -92,7 +92,7 @@ EXPORT_SYMBOL_GPL(mt76x02_add_rate_power_offset);
 
 void mt76x02_phy_set_txpower(struct mt76x02_dev *dev, int txp_0, int txp_1)
 {
-       struct mt76_rate_power *t = &dev->mt76.rate_power;
+       struct mt76x02_rate_power *t = &dev->rate_power;
 
        mt76_rmw_field(dev, MT_TX_ALC_CFG_0, MT_TX_ALC_CFG_0_CH_INIT_0, txp_0);
        mt76_rmw_field(dev, MT_TX_ALC_CFG_0, MT_TX_ALC_CFG_0_CH_INIT_1, txp_1);
index 1def25bf735ad2baeb30ae57c2e614a570334a35..84d8a6138b3eaace66530c95544a6a49c12d27a6 100644 (file)
@@ -34,10 +34,10 @@ mt76x02_get_low_rssi_gain_thresh(struct mt76x02_dev *dev)
        }
 }
 
-void mt76x02_add_rate_power_offset(struct mt76_rate_power *r, int offset);
+void mt76x02_add_rate_power_offset(struct mt76x02_rate_power *r, int offset);
 void mt76x02_phy_set_txpower(struct mt76x02_dev *dev, int txp_0, int txp_2);
-void mt76x02_limit_rate_power(struct mt76_rate_power *r, int limit);
-int mt76x02_get_max_rate_power(struct mt76_rate_power *r);
+void mt76x02_limit_rate_power(struct mt76x02_rate_power *r, int limit);
+int mt76x02_get_max_rate_power(struct mt76x02_rate_power *r);
 void mt76x02_phy_set_rxpath(struct mt76x02_dev *dev);
 void mt76x02_phy_set_txdac(struct mt76x02_dev *dev);
 void mt76x02_phy_set_bw(struct mt76x02_dev *dev, int width, u8 ctrl);
index 96fdf423a3482709621ebeff499a706d6d8ac7d7..1e1ef24999775f1e3f16695672680cd1d337c188 100644 (file)
@@ -62,23 +62,23 @@ s8 mt76x02_tx_get_max_txpwr_adj(struct mt76x02_dev *dev,
                u8 mcs = ieee80211_rate_get_vht_mcs(rate);
 
                if (mcs == 8 || mcs == 9) {
-                       max_txpwr = dev->mt76.rate_power.vht[8];
+                       max_txpwr = dev->rate_power.vht[8];
                } else {
                        u8 nss, idx;
 
                        nss = ieee80211_rate_get_vht_nss(rate);
                        idx = ((nss - 1) << 3) + mcs;
-                       max_txpwr = dev->mt76.rate_power.ht[idx & 0xf];
+                       max_txpwr = dev->rate_power.ht[idx & 0xf];
                }
        } else if (rate->flags & IEEE80211_TX_RC_MCS) {
-               max_txpwr = dev->mt76.rate_power.ht[rate->idx & 0xf];
+               max_txpwr = dev->rate_power.ht[rate->idx & 0xf];
        } else {
                enum nl80211_band band = dev->mphy.chandef.chan->band;
 
                if (band == NL80211_BAND_2GHZ) {
                        const struct ieee80211_rate *r;
                        struct wiphy *wiphy = dev->mt76.hw->wiphy;
-                       struct mt76_rate_power *rp = &dev->mt76.rate_power;
+                       struct mt76x02_rate_power *rp = &dev->rate_power;
 
                        r = &wiphy->bands[band]->bitrates[rate->idx];
                        if (r->flags & IEEE80211_RATE_SHORT_PREAMBLE)
@@ -86,7 +86,7 @@ s8 mt76x02_tx_get_max_txpwr_adj(struct mt76x02_dev *dev,
                        else
                                max_txpwr = rp->ofdm[r->hw_value & 0x7];
                } else {
-                       max_txpwr = dev->mt76.rate_power.ofdm[rate->idx & 0x7];
+                       max_txpwr = dev->rate_power.ofdm[rate->idx & 0x7];
                }
        }
 
@@ -112,7 +112,7 @@ void mt76x02_tx_set_txpwr_auto(struct mt76x02_dev *dev, s8 txpwr)
        s8 txpwr_adj;
 
        txpwr_adj = mt76x02_tx_get_txpwr_adj(dev, txpwr,
-                                            dev->mt76.rate_power.ofdm[4]);
+                                            dev->rate_power.ofdm[4]);
        mt76_rmw_field(dev, MT_PROT_AUTO_TX_CFG,
                       MT_PROT_AUTO_TX_CFG_PROT_PADJ, txpwr_adj);
        mt76_rmw_field(dev, MT_PROT_AUTO_TX_CFG,
index c57e05a5c65e4c3d854b91846605e5e13462a9f0..d1d7e06c3fa5773804b06247fe8c51398ac3da7e 100644 (file)
@@ -280,7 +280,7 @@ void mt76x2_read_rx_gain(struct mt76x02_dev *dev)
 }
 EXPORT_SYMBOL_GPL(mt76x2_read_rx_gain);
 
-void mt76x2_get_rate_power(struct mt76x02_dev *dev, struct mt76_rate_power *t,
+void mt76x2_get_rate_power(struct mt76x02_dev *dev, struct mt76x02_rate_power *t,
                           struct ieee80211_channel *chan)
 {
        bool is_5ghz;
index 3755632e6494a7dcece9c874e2fa60de8692fcf7..43430ef98b11e19be1868a793fa3d2dc4a317a75 100644 (file)
@@ -40,7 +40,7 @@ struct mt76x2_temp_comp {
        unsigned int low_slope; /* J / dB */
 };
 
-void mt76x2_get_rate_power(struct mt76x02_dev *dev, struct mt76_rate_power *t,
+void mt76x2_get_rate_power(struct mt76x02_dev *dev, struct mt76x02_rate_power *t,
                           struct ieee80211_channel *chan);
 void mt76x2_get_power_info(struct mt76x02_dev *dev,
                           struct mt76x2_tx_power_info *t,
index 7b01a06d7f8d0fba3a752f2b6418d99e8699b439..19c139290adb60ba6c6410ca04628c9775a7decc 100644 (file)
@@ -182,7 +182,7 @@ void mt76x2_init_txpower(struct mt76x02_dev *dev,
 {
        struct ieee80211_channel *chan;
        struct mt76x2_tx_power_info txp;
-       struct mt76_rate_power t = {};
+       struct mt76x02_rate_power t = {};
        int i;
 
        for (i = 0; i < sband->n_channels; i++) {
index ed2dcb05d61497550d820fcad9bc389cdfb7f5bd..f84517d932dccb687b2f05644267ab6d3e1b6a9c 100644 (file)
@@ -116,7 +116,7 @@ void mt76x2_phy_set_txpower_regs(struct mt76x02_dev *dev,
 EXPORT_SYMBOL_GPL(mt76x2_phy_set_txpower_regs);
 
 static int
-mt76x2_get_min_rate_power(struct mt76_rate_power *r)
+mt76x2_get_min_rate_power(struct mt76x02_rate_power *r)
 {
        int i;
        s8 ret = 0;
@@ -140,7 +140,7 @@ void mt76x2_phy_set_txpower(struct mt76x02_dev *dev)
        struct ieee80211_channel *chan = dev->mphy.chandef.chan;
        struct mt76x2_tx_power_info txp;
        int txp_0, txp_1, delta = 0;
-       struct mt76_rate_power t = {};
+       struct mt76x02_rate_power t = {};
        int base_power, gain;
 
        mt76x2_get_power_info(dev, &txp, chan);
@@ -175,7 +175,7 @@ void mt76x2_phy_set_txpower(struct mt76x02_dev *dev)
        dev->target_power = txp.target_power;
        dev->target_power_delta[0] = txp_0 - txp.chain[0].target_power;
        dev->target_power_delta[1] = txp_1 - txp.chain[0].target_power;
-       dev->mt76.rate_power = t;
+       dev->rate_power = t;
 
        mt76x02_phy_set_txpower(dev, txp_0, txp_1);
 }