Commit 61a1f99d authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: mt7921: allow chip reset during device restart

Disable chip full reset just during device probing but allow
it during hw restart.
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent a27238a0
...@@ -236,7 +236,13 @@ int mt7921_register_device(struct mt7921_dev *dev) ...@@ -236,7 +236,13 @@ int mt7921_register_device(struct mt7921_dev *dev)
if (ret) if (ret)
return ret; return ret;
return mt76_connac_mcu_set_deep_sleep(&dev->mt76, dev->pm.ds_enable); ret = mt76_connac_mcu_set_deep_sleep(&dev->mt76, dev->pm.ds_enable);
if (ret)
return ret;
dev->hw_init_done = true;
return 0;
} }
void mt7921_unregister_device(struct mt7921_dev *dev) void mt7921_unregister_device(struct mt7921_dev *dev)
......
...@@ -1390,11 +1390,13 @@ void mt7921_reset(struct mt76_dev *mdev) ...@@ -1390,11 +1390,13 @@ void mt7921_reset(struct mt76_dev *mdev)
{ {
struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76); struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
if (!test_bit(MT76_STATE_RUNNING, &dev->mphy.state)) if (!dev->hw_init_done)
return; return;
if (!dev->hw_full_reset) if (dev->hw_full_reset)
queue_work(dev->mt76.wq, &dev->reset_work); return;
queue_work(dev->mt76.wq, &dev->reset_work);
} }
static void static void
......
...@@ -160,7 +160,8 @@ struct mt7921_dev { ...@@ -160,7 +160,8 @@ struct mt7921_dev {
u16 chainmask; u16 chainmask;
struct work_struct reset_work; struct work_struct reset_work;
bool hw_full_reset; bool hw_full_reset:1;
bool hw_init_done:1;
struct list_head sta_poll_list; struct list_head sta_poll_list;
spinlock_t sta_poll_lock; spinlock_t sta_poll_lock;
......
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