From b0f76bb5d987b15e1d7869fa5804528074a09ba9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 6 Dec 2015 19:20:00 +0100 Subject: [PATCH] move register poll functions to core Signed-off-by: Felix Fietkau --- mt76.h | 10 ++++++++++ mt76x2.h | 4 ---- mt76x2_core.c | 34 ---------------------------------- mt76x2_eeprom.c | 2 +- mt76x2_init.c | 4 ++-- mt76x2_mcu.c | 6 +++--- mt76x2_phy.c | 2 +- util.c | 38 +++++++++++++++++++++++++++++++++++++- 8 files changed, 54 insertions(+), 46 deletions(-) diff --git a/mt76.h b/mt76.h index 92253197..7e7cd39e 100644 --- a/mt76.h +++ b/mt76.h @@ -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 diff --git a/mt76x2.h b/mt76x2.h index 957a0016..705d5041 100644 --- a/mt76x2.h +++ b/mt76x2.h @@ -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); diff --git a/mt76x2_core.c b/mt76x2_core.c index 507e63ff..dee0d12f 100644 --- a/mt76x2_core.c +++ b/mt76x2_core.c @@ -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) { diff --git a/mt76x2_eeprom.c b/mt76x2_eeprom.c index 4bbb0c48..b347d892 100644 --- a/mt76x2_eeprom.c +++ b/mt76x2_eeprom.c @@ -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); diff --git a/mt76x2_init.c b/mt76x2_init.c index ca38d94e..64e8bac5 100644 --- a/mt76x2_init.c +++ b/mt76x2_init.c @@ -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); diff --git a/mt76x2_mcu.c b/mt76x2_mcu.c index a0803deb..e87c29be 100644 --- a/mt76x2_mcu.c +++ b/mt76x2_mcu.c @@ -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; diff --git a/mt76x2_phy.c b/mt76x2_phy.c index a2c9241d..34506b00 100644 --- a/mt76x2_phy.c +++ b/mt76x2_phy.c @@ -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 diff --git a/util.c b/util.c index f25aff9d..0b490691 100644 --- a/util.c +++ b/util.c @@ -12,7 +12,7 @@ */ #include -#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");