Skip to content

Commit

Permalink
mt76: mt7615: introduce mt7615_mcu_set_hif_suspend mcu command
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
moore-bros authored and nbd168 committed May 5, 2020
1 parent 8fddbf6 commit f2c7601
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
36 changes: 35 additions & 1 deletion mt7615/mcu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down Expand Up @@ -3220,3 +3221,36 @@ int mt7615_mcu_apply_tx_dpd(struct mt7615_phy *phy)

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);
1 change: 1 addition & 0 deletions mt7615/mcu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 2 additions & 0 deletions mt7615/mt7615.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit f2c7601

Please sign in to comment.