mt76: mt7615: make drv_own/fw_own non-pci specific
Subsystems (2)
Lorenzo Bianconi
maintainercover mt76: mt7615: make drv_own/fw_own non-pci specific
Introduce set_drv_ctrl and set_fw_ctrl function pointers in mt7615_mcu_ops data structure in order to be used even by non-pci chipsets. This is a preliminary patch to enable runtime-pm for mt7663s chipset.
Lorenzo Bianconi (2):
mt76: mt7615: move drv_own/fw_own in mt7615_mcu_ops
mt76: mt7663s: move drv_own/fw_own in mt7615_mcu_ops
.../net/wireless/mediatek/mt76/mt7615/mac.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 158 +++++++++--------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 8 +- .../net/wireless/mediatek/mt76/mt7615/pci.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/sdio.c | 4 +- .../wireless/mediatek/mt76/mt7615/sdio_mcu.c | 16 +- 6 files changed, 104 insertions(+), 90 deletions(-)
Signature · 1 line
2.26.2
Lorenzo Bianconi
maintainerPATCH 1/2 mt76: mt7615: move drv_own/fw_own in mt7615_mcu_ops
Introduce set_drv_ctrl and set_fw_ctrl function pointers in mt7615_mcu_ops data structure. This is a preliminary patch to enable runtime-pm for non-pci chipsets
--- .../net/wireless/mediatek/mt76/mt7615/mac.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 158 +++++++++--------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 6 +- .../net/wireless/mediatek/mt76/mt7615/pci.c | 4 +- 4 files changed, 89 insertions(+), 83 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +2 -2
@@ -1845,7 +1845,7 @@ void mt7615_pm_wake_work(struct work_struct *work) pm.wake_work); mphy = dev->phy.mt76; -if (mt7615_driver_own (dev)) { +if (mt7615_mcu_set_drv_ctrl (dev)) {dev_err (mphy->dev->dev,"failed to wake device\n" ); goto out; }
@@ -1943,7 +1943,7 @@ void mt7615_pm_power_save_work(struct work_struct *work) goto out; } -if (!mt7615_firmware_own (dev)) +if (!mt7615_mcu_set_fw_ctrl (dev))return ; out:queue_delayed_work (dev->mt76.wq, &dev->pm.ps_work, delta);
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +81 -77
200 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +4 -2
@@ -220,6 +220,8 @@ struct mt7615_phy {#define mt7615_mcu_add_bss_info (phy, ...) (phy->dev)->mcu_ops->add_bss_info((phy), __VA_ARGS__)#define mt7615_mcu_add_beacon (dev, ...) (dev)->mcu_ops->add_beacon_offload((dev), __VA_ARGS__)#define mt7615_mcu_set_pm (dev, ...) (dev)->mcu_ops->set_pm_state((dev), __VA_ARGS__) +#define mt7615_mcu_set_drv_ctrl (dev) (dev)->mcu_ops->set_drv_ctrl((dev)) +#define mt7615_mcu_set_fw_ctrl (dev) (dev)->mcu_ops->set_fw_ctrl((dev))struct mt7615_mcu_ops { int (*add_tx_ba)(struct mt7615_dev *dev, struct ieee80211_ampdu_params *params,
@@ -238,6 +240,8 @@ struct mt7615_mcu_ops {struct ieee80211_hw *hw, struct ieee80211_vif *vif, bool enable);int (*set_pm_state)(struct mt7615_dev *dev,int band,int state); +int (*set_drv_ctrl)(struct mt7615_dev *dev); +int (*set_fw_ctrl)(struct mt7615_dev *dev); };struct mt7615_dev {
@@ -638,8 +642,6 @@ int mt7615_mcu_set_p2p_oppps(struct ieee80211_hw *hw, struct ieee80211_vif *vif);int mt7615_mcu_set_roc (struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_channel *chan,int duration); -int mt7615_firmware_own (struct mt7615_dev *dev); -int mt7615_driver_own (struct mt7615_dev *dev);int mt7615_init_debugfs (struct mt7615_dev *dev);int mt7615_mcu_wait_response (struct mt7615_dev *dev,int cmd,int seq);
drivers/net/wireless/mediatek/mt76/mt7615/pci.c +2 -2
@@ -118,7 +118,7 @@ static int mt7615_pci_suspend(struct pci_dev *pdev, pm_message_t state)if (err) goto restore; - err =mt7615_firmware_own (dev); + err =mt7615_mcu_set_fw_ctrl (dev);if (err) goto restore;
@@ -142,7 +142,7 @@ static int mt7615_pci_resume(struct pci_dev *pdev)bool pdma_reset;int i, err; - err =mt7615_driver_own (dev); + err =mt7615_mcu_set_drv_ctrl (dev);if (err <0 )return err;
Signature · 1 line
2.26.2
Lorenzo Bianconi
maintainerPATCH 2/2 mt76: mt7663s: move drv_own/fw_own in mt7615_mcu_ops
In reply to Lorenzo BianconiInitialize set_drv_ctrl and set_fw_ctrl function pointers in mt7663s_mcu_init. This is a preliminary patch to enable runtime-pm for mt7663s chipset.
--- .../net/wireless/mediatek/mt76/mt7615/mt7615.h | 2 -- drivers/net/wireless/mediatek/mt76/mt7615/sdio.c | 4 ++-- .../net/wireless/mediatek/mt76/mt7615/sdio_mcu.c | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 7 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +0 -2
@@ -677,8 +677,6 @@ int mt7663u_mcu_init(struct mt7615_dev *dev);/* sdio */ u32 mt7663s_read_pcr (struct mt7615_dev *dev);int mt7663s_mcu_init (struct mt7615_dev *dev); -int mt7663s_driver_own (struct mt7615_dev *dev); -int mt7663s_firmware_own (struct mt7615_dev *dev);int mt7663s_kthread_run (void *data);void mt7663s_sdio_irq (struct sdio_func *func);
drivers/net/wireless/mediatek/mt76/mt7615/sdio.c +2 -2
@@ -428,7 +428,7 @@ static int mt7663s_suspend(struct device *dev)mt76s_stop_txrx (&mdev->mt76); -return mt7663s_firmware_own (mdev); +return mt7615_mcu_set_fw_ctrl (mdev); }static int mt7663s_resume (struct device *dev)
@@ -437,7 +437,7 @@ static int mt7663s_resume(struct device *dev)struct mt7615_dev *mdev =sdio_get_drvdata (func);int err; - err =mt7663s_driver_own (mdev); + err =mt7615_mcu_set_drv_ctrl (mdev);if (err)return err;
drivers/net/wireless/mediatek/mt76/mt7615/sdio_mcu.c +13 -3
@@ -63,7 +63,7 @@ mt7663s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,return ret; } -int mt7663s_driver_own (struct mt7615_dev *dev) +static int mt7663s_mcu_drv_pmctrl (struct mt7615_dev *dev) {struct sdio_func *func = dev->mt76.sdio.func;struct mt76_phy *mphy = &dev->mt76.phy;
@@ -95,7 +95,7 @@ int mt7663s_driver_own(struct mt7615_dev *dev)return 0 ; } -int mt7663s_firmware_own (struct mt7615_dev *dev) +static int mt7663s_mcu_fw_pmctrl (struct mt7615_dev *dev) {struct sdio_func *func = dev->mt76.sdio.func;struct mt76_phy *mphy = &dev->mt76.phy;
@@ -132,9 +132,10 @@ int mt7663s_mcu_init(struct mt7615_dev *dev) .mcu_rr = mt7615_mcu_reg_rr, .mcu_wr = mt7615_mcu_reg_wr, }; +struct mt7615_mcu_ops *mcu_ops;int ret; - ret =mt7663s_driver_own (dev); + ret =mt7663s_mcu_drv_pmctrl (dev);if (ret)return ret;
@@ -152,6 +153,15 @@ int mt7663s_mcu_init(struct mt7615_dev *dev)if (ret)return ret; + mcu_ops =devm_kmemdup (dev->mt76.dev, dev->mcu_ops,sizeof (*mcu_ops), +GFP_KERNEL ); +if (!mcu_ops) +return -ENOMEM ; + + mcu_ops->set_drv_ctrl = mt7663s_mcu_drv_pmctrl; + mcu_ops->set_fw_ctrl = mt7663s_mcu_fw_pmctrl; + dev->mcu_ops = mcu_ops; + ret =mt7663s_mcu_init_sched (dev);if (ret)return ret;
Signature · 1 line
2.26.2