mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7996: rework radar HWRDD idx
The definition of MT_RX_SEL (for rdd_rx_sel) is mixed with the definition of HWRDD idx. For example, MT_RX_SEL2 is for background HWRDD idx, not an option of rdd_rx_sel. Additionally, HWRDD idx does not exactly map to band idx for Connac 3 chips. So, add mt7996_get_rdd_idx as a helper function. Finally, remove some parts of the code inherited from the legacy chips. For instance, 1. rdd_state is used for single-band-dual-HWRDD chips (for 80+80), especially the 76xx series. 2. rdd_rx_sel is also used for single-band-dual-HWRDD chips rx_sel = 0 => RDD0 for WF0, RDD1 for WF2 rx_sel = 1 => RDD0 for WF1, RDD1 for WF3 Chip Variants | 5G rdd idx | Background rdd idx ---------------------------|----------------|------------------- MT7996 (except 205/255) | 1 | 2 MT7992 | 1 | 2 MT7990 | 1 | 2 Signed-off-by: StanleyYP Wang <[email protected]> Reviewed-by: Shayne Chen <[email protected]> Reviewed-by: Money Wang <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
9bacdb2bf2
commit
a19543c7e0
+13
-4
@@ -222,18 +222,27 @@ static const struct file_operations mt7996_sys_recovery_ops = {
|
||||
static int
|
||||
mt7996_radar_trigger(void *data, u64 val)
|
||||
{
|
||||
#define RADAR_MAIN_CHAIN 1
|
||||
#define RADAR_BACKGROUND 2
|
||||
struct mt7996_dev *dev = data;
|
||||
struct mt7996_phy *phy = mt7996_band_phy(dev, NL80211_BAND_5GHZ);
|
||||
int rdd_idx;
|
||||
|
||||
if (val > MT_RX_SEL2)
|
||||
if (!phy || !val || val > RADAR_BACKGROUND)
|
||||
return -EINVAL;
|
||||
|
||||
if (val == MT_RX_SEL2 && !dev->rdd2_phy) {
|
||||
if (val == RADAR_BACKGROUND && !dev->rdd2_phy) {
|
||||
dev_err(dev->mt76.dev, "Background radar is not enabled\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return mt7996_mcu_rdd_cmd(dev, RDD_RADAR_EMULATE,
|
||||
val, 0, 0);
|
||||
rdd_idx = mt7996_get_rdd_idx(phy, val == RADAR_BACKGROUND);
|
||||
if (rdd_idx < 0) {
|
||||
dev_err(dev->mt76.dev, "No RDD found\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return mt7996_mcu_rdd_cmd(dev, RDD_RADAR_EMULATE, rdd_idx, 0);
|
||||
}
|
||||
|
||||
DEFINE_DEBUGFS_ATTRIBUTE(fops_radar_trigger, NULL,
|
||||
|
||||
Reference in New Issue
Block a user