Commit 5b394355 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76x0: use mt76_poll in mt76x0_set_wlan_state

Use mt76_poll utility routine in mt76x0_set_wlan_state to check
if the PLL/XTAL is ready
Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 62e04f8a
...@@ -43,7 +43,7 @@ static void mt76x0_vht_cap_mask(struct ieee80211_supported_band *sband) ...@@ -43,7 +43,7 @@ static void mt76x0_vht_cap_mask(struct ieee80211_supported_band *sband)
static void static void
mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable) mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable)
{ {
int i; u32 mask = MT_CMB_CTRL_XTAL_RDY | MT_CMB_CTRL_PLL_LD;
/* Note: we don't turn off WLAN_CLK because that makes the device /* Note: we don't turn off WLAN_CLK because that makes the device
* not respond properly on the probe path. * not respond properly on the probe path.
...@@ -60,24 +60,12 @@ mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable) ...@@ -60,24 +60,12 @@ mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable)
mt76_wr(dev, MT_WLAN_FUN_CTRL, val); mt76_wr(dev, MT_WLAN_FUN_CTRL, val);
udelay(20); udelay(20);
if (!enable)
return;
for (i = 200; i; i--) {
val = mt76_rr(dev, MT_CMB_CTRL);
if (val & MT_CMB_CTRL_XTAL_RDY && val & MT_CMB_CTRL_PLL_LD)
break;
udelay(20);
}
/* Note: vendor driver tries to disable/enable wlan here and retry /* Note: vendor driver tries to disable/enable wlan here and retry
* but the code which does it is so buggy it must have never * but the code which does it is so buggy it must have never
* triggered, so don't bother. * triggered, so don't bother.
*/ */
if (!i) if (enable && !mt76_poll(dev, MT_CMB_CTRL, mask, mask, 2000))
dev_err(dev->mt76.dev, "Error: PLL and XTAL check failed!\n"); dev_err(dev->mt76.dev, "PLL and XTAL check failed\n");
} }
void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset) void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset)
......
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