Commit 62e04f8a authored by Felix Fietkau's avatar Felix Fietkau

mt76x2: disable WLAN core before probe

If the WLAN core is still active during initialization, it might cause
the MCU or DMA to hang. This can happen during soft reboot, so disable
the core + clock early to avoid this issue.
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent d6500cf3
...@@ -39,6 +39,9 @@ void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable) ...@@ -39,6 +39,9 @@ void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable)
{ {
u32 val; u32 val;
if (!enable)
goto out;
val = mt76_rr(dev, MT_WLAN_FUN_CTRL); val = mt76_rr(dev, MT_WLAN_FUN_CTRL);
val &= ~MT_WLAN_FUN_CTRL_FRC_WL_ANT_SEL; val &= ~MT_WLAN_FUN_CTRL_FRC_WL_ANT_SEL;
...@@ -54,6 +57,7 @@ void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable) ...@@ -54,6 +57,7 @@ void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable)
mt76_wr(dev, MT_WLAN_FUN_CTRL, val); mt76_wr(dev, MT_WLAN_FUN_CTRL, val);
udelay(20); udelay(20);
out:
mt76x2_set_wlan_state(dev, enable); mt76x2_set_wlan_state(dev, enable);
} }
EXPORT_SYMBOL_GPL(mt76x2_reset_wlan); EXPORT_SYMBOL_GPL(mt76x2_reset_wlan);
......
...@@ -53,6 +53,7 @@ mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -53,6 +53,7 @@ mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
return -ENOMEM; return -ENOMEM;
mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]);
mt76x2_reset_wlan(dev, false);
dev->mt76.rev = mt76_rr(dev, MT_ASIC_VERSION); dev->mt76.rev = mt76_rr(dev, MT_ASIC_VERSION);
dev_info(dev->mt76.dev, "ASIC revision: %08x\n", dev->mt76.rev); dev_info(dev->mt76.dev, "ASIC revision: %08x\n", dev->mt76.rev);
......
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