mt76: mt7615: introduce mt7615_mcu_set_hif_suspend mcu command
Introduce the mt7615_mcu_set_hif_suspend mcu command, which is usually used to configure the interface including PCIe, USB or SDIO to the right state during operation suspend / resume. Signed-off-by: Sean Wang <sean.wang@mediatek.com> Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
c8646872d6
commit
6f11785200
@ -194,7 +194,8 @@ mt7615_mcu_parse_response(struct mt7615_dev *dev, int cmd,
|
||||
break;
|
||||
case MCU_UNI_CMD_DEV_INFO_UPDATE:
|
||||
case MCU_UNI_CMD_BSS_INFO_UPDATE:
|
||||
case MCU_UNI_CMD_STA_REC_UPDATE: {
|
||||
case MCU_UNI_CMD_STA_REC_UPDATE:
|
||||
case MCU_UNI_CMD_HIF_CTRL: {
|
||||
struct mt7615_mcu_uni_event *event;
|
||||
|
||||
skb_pull(skb, sizeof(*rxd));
|
||||
@ -3220,3 +3221,36 @@ out:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mt7615_mcu_set_hif_suspend(struct mt7615_dev *dev, bool suspend)
|
||||
{
|
||||
struct {
|
||||
struct {
|
||||
u8 hif_type; /* 0x0: HIF_SDIO
|
||||
* 0x1: HIF_USB
|
||||
* 0x2: HIF_PCIE
|
||||
*/
|
||||
u8 pad[3];
|
||||
} __packed hdr;
|
||||
struct hif_suspend_tlv {
|
||||
__le16 tag;
|
||||
__le16 len;
|
||||
u8 suspend;
|
||||
} __packed hif_suspend;
|
||||
} req = {
|
||||
.hif_suspend = {
|
||||
.tag = cpu_to_le16(0), /* 0: UNI_HIF_CTRL_BASIC */
|
||||
.len = cpu_to_le16(sizeof(struct hif_suspend_tlv)),
|
||||
.suspend = suspend,
|
||||
},
|
||||
};
|
||||
|
||||
if (mt76_is_mmio(&dev->mt76))
|
||||
req.hdr.hif_type = 2;
|
||||
else if (mt76_is_usb(&dev->mt76))
|
||||
req.hdr.hif_type = 1;
|
||||
|
||||
return __mt76_mcu_send_msg(&dev->mt76, MCU_UNI_CMD_HIF_CTRL,
|
||||
&req, sizeof(req), true);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt7615_mcu_set_hif_suspend);
|
||||
|
@ -280,6 +280,7 @@ enum {
|
||||
MCU_UNI_CMD_DEV_INFO_UPDATE = MCU_UNI_PREFIX | 0x01,
|
||||
MCU_UNI_CMD_BSS_INFO_UPDATE = MCU_UNI_PREFIX | 0x02,
|
||||
MCU_UNI_CMD_STA_REC_UPDATE = MCU_UNI_PREFIX | 0x03,
|
||||
MCU_UNI_CMD_HIF_CTRL = MCU_UNI_PREFIX | 0x07,
|
||||
};
|
||||
|
||||
struct mt7615_mcu_uni_event {
|
||||
|
@ -531,6 +531,8 @@ int mt7615_dfs_init_radar_detector(struct mt7615_phy *phy);
|
||||
int mt7615_init_debugfs(struct mt7615_dev *dev);
|
||||
int mt7615_mcu_wait_response(struct mt7615_dev *dev, int cmd, int seq);
|
||||
|
||||
int mt7615_mcu_set_hif_suspend(struct mt7615_dev *dev, bool suspend);
|
||||
|
||||
int __mt7663_load_firmware(struct mt7615_dev *dev);
|
||||
|
||||
/* usb */
|
||||
|
Loading…
x
Reference in New Issue
Block a user