Commit c203dd62 authored by Felix Fietkau's avatar Felix Fietkau

mt76: mt7915: rework mcu API

Add support for passing flags for selecting the MCU target and query type
instead of trying to detect it based on the command id
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent d027b64c
...@@ -47,7 +47,7 @@ static int mt7915_start(struct ieee80211_hw *hw) ...@@ -47,7 +47,7 @@ static int mt7915_start(struct ieee80211_hw *hw)
} }
mt7915_mcu_set_sku_en(phy, true); mt7915_mcu_set_sku_en(phy, true);
mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD_SET_RX_PATH); mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD(SET_RX_PATH));
set_bit(MT76_STATE_RUNNING, &phy->mt76->state); set_bit(MT76_STATE_RUNNING, &phy->mt76->state);
...@@ -283,7 +283,7 @@ int mt7915_set_channel(struct mt7915_phy *phy) ...@@ -283,7 +283,7 @@ int mt7915_set_channel(struct mt7915_phy *phy)
mt7915_init_dfs_state(phy); mt7915_init_dfs_state(phy);
mt76_set_channel(phy->mt76); mt76_set_channel(phy->mt76);
ret = mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD_CHANNEL_SWITCH); ret = mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD(CHANNEL_SWITCH));
if (ret) if (ret)
goto out; goto out;
......
...@@ -225,6 +225,12 @@ enum { ...@@ -225,6 +225,12 @@ enum {
MCU_S2D_H2CN MCU_S2D_H2CN
}; };
#define __MCU_CMD_FIELD_ID GENMASK(7, 0)
#define __MCU_CMD_FIELD_EXT_ID GENMASK(15, 8)
#define __MCU_CMD_FIELD_QUERY BIT(16)
#define __MCU_CMD_FIELD_WA BIT(17)
enum { enum {
MCU_CMD_TARGET_ADDRESS_LEN_REQ = 0x01, MCU_CMD_TARGET_ADDRESS_LEN_REQ = 0x01,
MCU_CMD_FW_START_REQ = 0x02, MCU_CMD_FW_START_REQ = 0x02,
...@@ -271,6 +277,15 @@ enum { ...@@ -271,6 +277,15 @@ enum {
MCU_EXT_CMD_PHY_STAT_INFO = 0xad, MCU_EXT_CMD_PHY_STAT_INFO = 0xad,
}; };
#define MCU_CMD(_t) FIELD_PREP(__MCU_CMD_FIELD_ID, MCU_CMD_##_t)
#define MCU_EXT_CMD(_t) (MCU_CMD(EXT_CID) | \
FIELD_PREP(__MCU_CMD_FIELD_EXT_ID, \
MCU_EXT_CMD_##_t))
#define MCU_EXT_QUERY(_t) (MCU_EXT_CMD(_t) | __MCU_CMD_FIELD_QUERY)
#define MCU_WA_CMD(_t) (MCU_CMD(_t) | __MCU_CMD_FIELD_WA)
#define MCU_WA_EXT_CMD(_t) (MCU_EXT_CMD(_t) | __MCU_CMD_FIELD_WA)
enum { enum {
PATCH_SEM_RELEASE, PATCH_SEM_RELEASE,
PATCH_SEM_GET PATCH_SEM_GET
......
...@@ -78,7 +78,7 @@ mt7915_tm_set_tx_power(struct mt7915_phy *phy) ...@@ -78,7 +78,7 @@ mt7915_tm_set_tx_power(struct mt7915_phy *phy)
req.tx_power = tx_power[0]; req.tx_power = tx_power[0];
ret = mt76_mcu_send_msg(&dev->mt76, ret = mt76_mcu_send_msg(&dev->mt76,
MCU_EXT_CMD_TX_POWER_FEATURE_CTRL, MCU_EXT_CMD(TX_POWER_FEATURE_CTRL),
&req, sizeof(req), false); &req, sizeof(req), false);
return ret; return ret;
...@@ -95,7 +95,7 @@ mt7915_tm_set_freq_offset(struct mt7915_phy *phy, bool en, u32 val) ...@@ -95,7 +95,7 @@ mt7915_tm_set_freq_offset(struct mt7915_phy *phy, bool en, u32 val)
.param.freq.freq_offset = cpu_to_le32(val), .param.freq.freq_offset = cpu_to_le32(val),
}; };
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_ATE_CTRL, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(ATE_CTRL), &req,
sizeof(req), false); sizeof(req), false);
} }
...@@ -112,7 +112,7 @@ mt7915_tm_mode_ctrl(struct mt7915_dev *dev, bool enable) ...@@ -112,7 +112,7 @@ mt7915_tm_mode_ctrl(struct mt7915_dev *dev, bool enable)
}; };
return mt76_mcu_send_msg(&dev->mt76, return mt76_mcu_send_msg(&dev->mt76,
MCU_EXT_CMD_TX_POWER_FEATURE_CTRL, MCU_EXT_CMD(TX_POWER_FEATURE_CTRL),
&req, sizeof(req), false); &req, sizeof(req), false);
} }
...@@ -128,7 +128,7 @@ mt7915_tm_set_trx(struct mt7915_phy *phy, int type, bool en) ...@@ -128,7 +128,7 @@ mt7915_tm_set_trx(struct mt7915_phy *phy, int type, bool en)
.param.trx.band = phy != &dev->phy, .param.trx.band = phy != &dev->phy,
}; };
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_ATE_CTRL, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(ATE_CTRL), &req,
sizeof(req), false); sizeof(req), false);
} }
...@@ -143,7 +143,7 @@ mt7915_tm_clean_hwq(struct mt7915_phy *phy, u8 wcid) ...@@ -143,7 +143,7 @@ mt7915_tm_clean_hwq(struct mt7915_phy *phy, u8 wcid)
.param.clean.band = phy != &dev->phy, .param.clean.band = phy != &dev->phy,
}; };
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_ATE_CTRL, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(ATE_CTRL), &req,
sizeof(req), false); sizeof(req), false);
} }
...@@ -161,7 +161,7 @@ mt7915_tm_set_slot_time(struct mt7915_phy *phy, u8 slot_time, u8 sifs) ...@@ -161,7 +161,7 @@ mt7915_tm_set_slot_time(struct mt7915_phy *phy, u8 slot_time, u8 sifs)
.param.slot.band = phy != &dev->phy, .param.slot.band = phy != &dev->phy,
}; };
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_ATE_CTRL, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(ATE_CTRL), &req,
sizeof(req), false); sizeof(req), false);
} }
...@@ -418,7 +418,7 @@ mt7915_tm_update_channel(struct mt7915_phy *phy) ...@@ -418,7 +418,7 @@ mt7915_tm_update_channel(struct mt7915_phy *phy)
mt7915_set_channel(phy); mt7915_set_channel(phy);
mutex_lock(&phy->dev->mt76.mutex); mutex_lock(&phy->dev->mt76.mutex);
mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD_SET_RX_PATH); mt7915_mcu_set_chan_info(phy, MCU_EXT_CMD(SET_RX_PATH));
} }
static void static void
...@@ -489,7 +489,7 @@ mt7915_tm_rf_switch_mode(struct mt7915_dev *dev, u32 oper) ...@@ -489,7 +489,7 @@ mt7915_tm_rf_switch_mode(struct mt7915_dev *dev, u32 oper)
.op.op_mode = cpu_to_le32(oper), .op.op_mode = cpu_to_le32(oper),
}; };
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_RF_TEST, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(RF_TEST), &req,
sizeof(req), true); sizeof(req), true);
} }
...@@ -601,7 +601,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) ...@@ -601,7 +601,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en)
if (!en) { if (!en) {
int ret; int ret;
ret = mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_RF_TEST, &req, ret = mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(RF_TEST), &req,
sizeof(req), true); sizeof(req), true);
if (ret) if (ret)
return ret; return ret;
...@@ -612,7 +612,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) ...@@ -612,7 +612,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en)
mt7915_tm_rf_switch_mode(dev, RF_OPER_RF_TEST); mt7915_tm_rf_switch_mode(dev, RF_OPER_RF_TEST);
mt7915_tm_update_channel(phy); mt7915_tm_update_channel(phy);
return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_RF_TEST, &req, return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD(RF_TEST), &req,
sizeof(req), true); sizeof(req), true);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment