Commit d6e08f2b authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: mt7663s: move drv_own/fw_own in mt7615_mcu_ops

Initialize 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.
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 186b659c
...@@ -678,8 +678,6 @@ int mt7663u_mcu_init(struct mt7615_dev *dev); ...@@ -678,8 +678,6 @@ int mt7663u_mcu_init(struct mt7615_dev *dev);
/* sdio */ /* sdio */
u32 mt7663s_read_pcr(struct mt7615_dev *dev); u32 mt7663s_read_pcr(struct mt7615_dev *dev);
int mt7663s_mcu_init(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); int mt7663s_kthread_run(void *data);
void mt7663s_sdio_irq(struct sdio_func *func); void mt7663s_sdio_irq(struct sdio_func *func);
......
...@@ -428,7 +428,7 @@ static int mt7663s_suspend(struct device *dev) ...@@ -428,7 +428,7 @@ static int mt7663s_suspend(struct device *dev)
mt76s_stop_txrx(&mdev->mt76); mt76s_stop_txrx(&mdev->mt76);
return mt7663s_firmware_own(mdev); return mt7615_mcu_set_fw_ctrl(mdev);
} }
static int mt7663s_resume(struct device *dev) static int mt7663s_resume(struct device *dev)
...@@ -437,7 +437,7 @@ 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); struct mt7615_dev *mdev = sdio_get_drvdata(func);
int err; int err;
err = mt7663s_driver_own(mdev); err = mt7615_mcu_set_drv_ctrl(mdev);
if (err) if (err)
return err; return err;
......
...@@ -63,7 +63,7 @@ mt7663s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, ...@@ -63,7 +63,7 @@ mt7663s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
return ret; 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 sdio_func *func = dev->mt76.sdio.func;
struct mt76_phy *mphy = &dev->mt76.phy; struct mt76_phy *mphy = &dev->mt76.phy;
...@@ -95,7 +95,7 @@ int mt7663s_driver_own(struct mt7615_dev *dev) ...@@ -95,7 +95,7 @@ int mt7663s_driver_own(struct mt7615_dev *dev)
return 0; 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 sdio_func *func = dev->mt76.sdio.func;
struct mt76_phy *mphy = &dev->mt76.phy; struct mt76_phy *mphy = &dev->mt76.phy;
...@@ -132,9 +132,10 @@ int mt7663s_mcu_init(struct mt7615_dev *dev) ...@@ -132,9 +132,10 @@ int mt7663s_mcu_init(struct mt7615_dev *dev)
.mcu_rr = mt7615_mcu_reg_rr, .mcu_rr = mt7615_mcu_reg_rr,
.mcu_wr = mt7615_mcu_reg_wr, .mcu_wr = mt7615_mcu_reg_wr,
}; };
struct mt7615_mcu_ops *mcu_ops;
int ret; int ret;
ret = mt7663s_driver_own(dev); ret = mt7663s_mcu_drv_pmctrl(dev);
if (ret) if (ret)
return ret; return ret;
...@@ -152,6 +153,15 @@ int mt7663s_mcu_init(struct mt7615_dev *dev) ...@@ -152,6 +153,15 @@ int mt7663s_mcu_init(struct mt7615_dev *dev)
if (ret) if (ret)
return 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); ret = mt7663s_mcu_init_sched(dev);
if (ret) if (ret)
return ret; return ret;
......
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