From 4cb59dc3fc13de7cfb32800927cb586036f9ec7b Mon Sep 17 00:00:00 2001
From: "Allen.Ye" <allen.ye@mediatek.com>
Date: Fri, 11 Aug 2023 16:46:53 +0800
Subject: [PATCH 1035/1035] wifi: mt76: mt7915: Disable RegDB when enable
 single sku

---
 eeprom.c         |  3 ++-
 mt76.h           |  3 +++
 mt7915/debugfs.c | 43 +++++++++++++++++++++++++++++++++++++++++--
 mt7915/init.c    |  9 ++++++++-
 4 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/eeprom.c b/eeprom.c
index 4189525..38b0a58 100644
--- a/eeprom.c
+++ b/eeprom.c
@@ -216,7 +216,7 @@ static bool mt76_string_prop_find(struct property *prop, const char *str)
 	return false;
 }
 
-static struct device_node *
+struct device_node *
 mt76_find_power_limits_node(struct mt76_dev *dev)
 {
 	struct device_node *np = dev->dev->of_node;
@@ -255,6 +255,7 @@ mt76_find_power_limits_node(struct mt76_dev *dev)
 	of_node_put(np);
 	return fallback;
 }
+EXPORT_SYMBOL_GPL(mt76_find_power_limits_node);
 
 static const __be32 *
 mt76_get_of_array(struct device_node *np, char *name, size_t *len, int min)
diff --git a/mt76.h b/mt76.h
index 2f801de..aece4ec 100644
--- a/mt76.h
+++ b/mt76.h
@@ -1655,6 +1655,9 @@ mt76_mcu_skb_send_msg(struct mt76_dev *dev, struct sk_buff *skb, int cmd,
 
 void mt76_set_irq_mask(struct mt76_dev *dev, u32 addr, u32 clear, u32 set);
 
+struct device_node *
+mt76_find_power_limits_node(struct mt76_dev *dev);
+
 s8 mt76_get_rate_power_limits(struct mt76_phy *phy,
 			      struct ieee80211_channel *chan,
 			      struct mt76_power_limits *dest,
diff --git a/mt7915/debugfs.c b/mt7915/debugfs.c
index 2bf907c..bb312ee 100644
--- a/mt7915/debugfs.c
+++ b/mt7915/debugfs.c
@@ -1019,10 +1019,16 @@ mt7915_rate_txpower_get(struct file *file, char __user *user_buf,
 {
 	struct mt7915_phy *phy = file->private_data;
 	struct mt7915_dev *dev = phy->dev;
+	struct ieee80211_channel *chan = phy->mt76->chandef.chan;
+	struct ieee80211_supported_band sband;
 	s8 txpwr[MT7915_SKU_RATE_NUM];
-	static const size_t sz = 2048;
+	static const size_t sz = 4096;
 	u8 band = phy->mt76->band_idx;
 	int i, offs = 0, len = 0;
+	u32 target_power = 0;
+	int n_chains = hweight16(phy->mt76->chainmask);
+	int nss_delta = mt76_tx_power_nss_delta(n_chains);
+	int pwr_delta;
 	ssize_t ret;
 	char *buf;
 	u32 reg;
@@ -1084,9 +1090,36 @@ mt7915_rate_txpower_get(struct file *file, char __user *user_buf,
 	reg = is_mt7915(&dev->mt76) ? MT_WF_PHY_TPC_CTRL_STAT(band) :
 	      MT_WF_PHY_TPC_CTRL_STAT_MT7916(band);
 
-	len += scnprintf(buf + len, sz - len, "\nTx power (bbp)  : %6ld\n",
+	len += scnprintf(buf + len, sz - len, "\nTx power (bbp)  : %6ld [0.5 dBm]\n",
 			 mt76_get_field(dev, reg, MT_WF_PHY_TPC_POWER));
 
+	len += scnprintf(buf + len, sz - len, "RegDB maximum power:\t%d [dBm]\n",
+			 chan->max_reg_power);
+
+	if (chan->band == NL80211_BAND_2GHZ)
+		sband = phy->mt76->sband_2g.sband;
+	else if (chan->band == NL80211_BAND_5GHZ)
+		sband = phy->mt76->sband_5g.sband;
+	else if (chan->band == NL80211_BAND_6GHZ)
+		sband = phy->mt76->sband_6g.sband;
+
+	pwr_delta = mt7915_eeprom_get_power_delta(dev, sband.band);
+
+	for (i = 0; i < n_chains; i++) {
+		u32 val;
+
+		val = mt7915_eeprom_get_target_power(dev, chan, i);
+		target_power = max(target_power, val);
+	}
+
+	target_power += pwr_delta + nss_delta;
+	target_power = DIV_ROUND_UP(target_power, 2);
+	len += scnprintf(buf + len, sz - len, "eeprom maximum power:\t%d [dBm]\n",
+			 target_power);
+
+	len += scnprintf(buf + len, sz - len, "nss_delta:\t%d [0.5 dBm]\n",
+			 nss_delta);
+
 	ret = simple_read_from_buffer(user_buf, count, ppos, buf, len);
 
 out:
@@ -1262,6 +1295,8 @@ static int
 mt7915_txpower_info_show(struct seq_file *file, void *data)
 {
 	struct mt7915_phy *phy = file->private;
+	struct mt76_phy *mphy = phy->mt76;
+	struct mt76_dev *dev = mphy->dev;
 	struct {
 		u8 category;
 		u8 rsv1;
@@ -1303,6 +1338,7 @@ mt7915_txpower_info_show(struct seq_file *file, void *data)
 		s8 mu_tx_power_manual;
 		u8 rsv3;
 	} __packed basic_info = {};
+	struct device_node *np;
 	int ret;
 
 	ret = mt7915_mcu_get_txpower_sku(phy, (s8 *)&basic_info, sizeof(basic_info),
@@ -1337,6 +1373,9 @@ mt7915_txpower_info_show(struct seq_file *file, void *data)
 	seq_printf(file, "    Theraml Compensation Value: %d\n",
 		   basic_info.thermal_compensate_value);
 
+	np = mt76_find_power_limits_node(dev);
+	seq_printf(file, "    RegDB:  %s\n", !np ? "enable" : "disable");
+
 out:
 	return ret;
 }
diff --git a/mt7915/init.c b/mt7915/init.c
index f8ecaf3..623b070 100644
--- a/mt7915/init.c
+++ b/mt7915/init.c
@@ -286,7 +286,9 @@ void __mt7915_init_txpower(struct mt7915_phy *phy,
 	int nss_delta = mt76_tx_power_nss_delta(n_chains);
 	int pwr_delta = mt7915_eeprom_get_power_delta(dev, sband->band);
 	struct mt76_power_limits limits;
+	struct device_node *np;
 
+	np = mt76_find_power_limits_node(&dev->mt76);
 	for (i = 0; i < sband->n_channels; i++) {
 		struct ieee80211_channel *chan = &sband->channels[i];
 		u32 target_power = 0;
@@ -305,8 +307,13 @@ void __mt7915_init_txpower(struct mt7915_phy *phy,
 							  target_power);
 		target_power += nss_delta;
 		target_power = DIV_ROUND_UP(target_power, 2);
-		chan->max_power = min_t(int, chan->max_reg_power,
+
+		/* can NOT find country node in dts */
+		if (!np)
+			chan->max_power = min_t(int, chan->max_reg_power,
 					target_power);
+		else
+			chan->max_power = target_power;
 		chan->orig_mpwr = target_power;
 	}
 }
-- 
2.18.0

