mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
move register poll functions to core
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
@@ -51,6 +51,16 @@ struct mt76_dev {
|
||||
|
||||
#define mt76_hw(dev) (dev)->mt76.hw
|
||||
|
||||
bool __mt76_poll(struct mt76_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout);
|
||||
|
||||
#define mt76_poll(dev, ...) __mt76_poll(&((dev)->mt76), __VA_ARGS__)
|
||||
|
||||
bool __mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout);
|
||||
|
||||
#define mt76_poll_msec(dev, ...) __mt76_poll_msec(&((dev)->mt76), __VA_ARGS__)
|
||||
|
||||
void mt76_mmio_init(struct mt76_dev *dev, void __iomem *regs);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -264,10 +264,6 @@ struct mt76x2_reg_pair {
|
||||
u32 value;
|
||||
};
|
||||
|
||||
bool mt76x2_poll(struct mt76x2_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout);
|
||||
bool mt76x2_poll_msec(struct mt76x2_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout);
|
||||
void mt76_write_reg_pairs(struct mt76x2_dev *dev,
|
||||
const struct mt76x2_reg_pair *data, int len);
|
||||
|
||||
|
||||
@@ -15,40 +15,6 @@
|
||||
#include "mt76x2.h"
|
||||
#include "mt76x2_trace.h"
|
||||
|
||||
bool mt76x2_poll(struct mt76x2_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout)
|
||||
{
|
||||
u32 cur;
|
||||
|
||||
timeout /= 10;
|
||||
do {
|
||||
cur = mt76_rr(dev, offset) & mask;
|
||||
if (cur == val)
|
||||
return true;
|
||||
|
||||
udelay(10);
|
||||
} while (timeout-- > 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool mt76x2_poll_msec(struct mt76x2_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout)
|
||||
{
|
||||
u32 cur;
|
||||
|
||||
timeout /= 10;
|
||||
do {
|
||||
cur = mt76_rr(dev, offset) & mask;
|
||||
if (cur == val)
|
||||
return true;
|
||||
|
||||
msleep(10);
|
||||
} while (timeout-- > 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void mt76_write_reg_pairs(struct mt76x2_dev *dev,
|
||||
const struct mt76x2_reg_pair *data, int len)
|
||||
{
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ mt76x2_efuse_read(struct mt76x2_dev *dev, u16 addr, u8 *data)
|
||||
val |= MT_EFUSE_CTRL_KICK;
|
||||
mt76_wr(dev, MT_EFUSE_CTRL, val);
|
||||
|
||||
if (!mt76x2_poll(dev, MT_EFUSE_CTRL, MT_EFUSE_CTRL_KICK, 0, 1000))
|
||||
if (!mt76_poll(dev, MT_EFUSE_CTRL, MT_EFUSE_CTRL_KICK, 0, 1000))
|
||||
return -ETIMEDOUT;
|
||||
|
||||
udelay(2);
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ mt76x2_wait_for_mac(struct mt76x2_dev *dev)
|
||||
static bool
|
||||
wait_for_wpdma(struct mt76x2_dev *dev)
|
||||
{
|
||||
return mt76x2_poll(dev, MT_WPDMA_GLO_CFG,
|
||||
return mt76_poll(dev, MT_WPDMA_GLO_CFG,
|
||||
MT_WPDMA_GLO_CFG_TX_DMA_BUSY |
|
||||
MT_WPDMA_GLO_CFG_RX_DMA_BUSY,
|
||||
0, 1000);
|
||||
@@ -395,7 +395,7 @@ mt76x2_power_on(struct mt76x2_dev *dev)
|
||||
MT_WLAN_MTC_CTRL_PWR_ACK |
|
||||
MT_WLAN_MTC_CTRL_PWR_ACK_S;
|
||||
|
||||
mt76x2_poll(dev, MT_WLAN_MTC_CTRL, val, val, 1000);
|
||||
mt76_poll(dev, MT_WLAN_MTC_CTRL, val, val, 1000);
|
||||
|
||||
mt76_clear(dev, MT_WLAN_MTC_CTRL, 0x7f << 16);
|
||||
udelay(10);
|
||||
|
||||
+3
-3
@@ -119,7 +119,7 @@ mt76pci_load_rom_patch(struct mt76x2_dev *dev)
|
||||
__le32 *cur;
|
||||
u32 patch_mask, patch_reg;
|
||||
|
||||
if (rom_protect && !mt76x2_poll(dev, MT_MCU_SEMAPHORE_03, 1, 1, 600)) {
|
||||
if (rom_protect && !mt76_poll(dev, MT_MCU_SEMAPHORE_03, 1, 1, 600)) {
|
||||
printk("Could not get hardware semaphore for ROM PATCH\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
@@ -161,7 +161,7 @@ mt76pci_load_rom_patch(struct mt76x2_dev *dev)
|
||||
/* Trigger ROM */
|
||||
mt76_wr(dev, MT_MCU_INT_LEVEL, 4);
|
||||
|
||||
if (!mt76x2_poll_msec(dev, patch_reg, patch_mask, patch_mask, 2000)) {
|
||||
if (!mt76_poll_msec(dev, patch_reg, patch_mask, patch_mask, 2000)) {
|
||||
printk("Failed to load ROM patch\n");
|
||||
ret = -ETIMEDOUT;
|
||||
}
|
||||
@@ -369,7 +369,7 @@ int mt76x2_mcu_calibrate(struct mt76x2_dev *dev, enum mcu_calibration type,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (WARN_ON(!mt76x2_poll_msec(dev, MT_MCU_COM_REG0,
|
||||
if (WARN_ON(!mt76_poll_msec(dev, MT_MCU_COM_REG0,
|
||||
BIT(31), BIT(31), 100)))
|
||||
return -ETIMEDOUT;
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ mt76x2_phy_rf_op(struct mt76x2_dev *dev, bool idx, u16 offset, bool write)
|
||||
|
||||
mt76_wr(dev, MT_RF_CTRL, val);
|
||||
|
||||
return mt76x2_poll(dev, MT_RF_CTRL, MT_RF_CTRL_BUSY, 0, 2000);
|
||||
return mt76_poll(dev, MT_RF_CTRL, MT_RF_CTRL_BUSY, 0, 2000);
|
||||
}
|
||||
|
||||
static int __maybe_unused
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include "mt76x2.h"
|
||||
#include "mt76.h"
|
||||
|
||||
void mt76_remove_hdr_pad(struct sk_buff *skb)
|
||||
{
|
||||
@@ -43,4 +43,40 @@ int mt76_insert_hdr_pad(struct sk_buff *skb)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76_insert_hdr_pad);
|
||||
|
||||
bool __mt76_poll(struct mt76_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout)
|
||||
{
|
||||
u32 cur;
|
||||
|
||||
timeout /= 10;
|
||||
do {
|
||||
cur = dev->bus->rr(dev, offset) & mask;
|
||||
if (cur == val)
|
||||
return true;
|
||||
|
||||
udelay(10);
|
||||
} while (timeout-- > 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__mt76_poll);
|
||||
|
||||
bool __mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val,
|
||||
int timeout)
|
||||
{
|
||||
u32 cur;
|
||||
|
||||
timeout /= 10;
|
||||
do {
|
||||
cur = dev->bus->rr(dev, offset) & mask;
|
||||
if (cur == val)
|
||||
return true;
|
||||
|
||||
msleep(10);
|
||||
} while (timeout-- > 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__mt76_poll_msec);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
Reference in New Issue
Block a user