提交 b2d871c0 编写于 作者: L Lorenzo Bianconi 提交者: Felix Fietkau

mt76x0: merge mt76x0_dev in mt76x02_dev

Merge mt76x0_dev data structure in mt76x02_dev one and remove
duplicated code. Remove unused definition in mt76x0.h.
Moreover merge mt76x0_caldata and mt76x02_rx_freq_cal data structures.
This is a preliminary patch for rxwi unification.
Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: NFelix Fietkau <nbd@nbd.name>
上级 e40803f2
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
static int static int
mt76x0_ampdu_stat_read(struct seq_file *file, void *data) mt76x0_ampdu_stat_read(struct seq_file *file, void *data)
{ {
struct mt76x0_dev *dev = file->private; struct mt76x02_dev *dev = file->private;
int i, j; int i, j;
#define stat_printf(grp, off, name) \ #define stat_printf(grp, off, name) \
...@@ -75,7 +75,7 @@ static const struct file_operations fops_ampdu_stat = { ...@@ -75,7 +75,7 @@ static const struct file_operations fops_ampdu_stat = {
.release = single_release, .release = single_release,
}; };
void mt76x0_init_debugfs(struct mt76x0_dev *dev) void mt76x0_init_debugfs(struct mt76x02_dev *dev)
{ {
struct dentry *dir; struct dentry *dir;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#define MT_MAP_READS DIV_ROUND_UP(MT_EFUSE_USAGE_MAP_SIZE, 16) #define MT_MAP_READS DIV_ROUND_UP(MT_EFUSE_USAGE_MAP_SIZE, 16)
static int static int
mt76x0_efuse_physical_size_check(struct mt76x0_dev *dev) mt76x0_efuse_physical_size_check(struct mt76x02_dev *dev)
{ {
u8 data[MT_MAP_READS * 16]; u8 data[MT_MAP_READS * 16];
int ret, i; int ret, i;
...@@ -53,7 +53,7 @@ mt76x0_efuse_physical_size_check(struct mt76x0_dev *dev) ...@@ -53,7 +53,7 @@ mt76x0_efuse_physical_size_check(struct mt76x0_dev *dev)
return 0; return 0;
} }
static void mt76x0_set_chip_cap(struct mt76x0_dev *dev) static void mt76x0_set_chip_cap(struct mt76x02_dev *dev)
{ {
u16 nic_conf0 = mt76x02_eeprom_get(&dev->mt76, MT_EE_NIC_CONF_0); u16 nic_conf0 = mt76x02_eeprom_get(&dev->mt76, MT_EE_NIC_CONF_0);
u16 nic_conf1 = mt76x02_eeprom_get(&dev->mt76, MT_EE_NIC_CONF_1); u16 nic_conf1 = mt76x02_eeprom_get(&dev->mt76, MT_EE_NIC_CONF_1);
...@@ -82,20 +82,20 @@ static void mt76x0_set_chip_cap(struct mt76x0_dev *dev) ...@@ -82,20 +82,20 @@ static void mt76x0_set_chip_cap(struct mt76x0_dev *dev)
dev_err(dev->mt76.dev, "invalid tx-rx stream\n"); dev_err(dev->mt76.dev, "invalid tx-rx stream\n");
} }
static void mt76x0_set_temp_offset(struct mt76x0_dev *dev) static void mt76x0_set_temp_offset(struct mt76x02_dev *dev)
{ {
u8 val; u8 val;
val = mt76x02_eeprom_get(&dev->mt76, MT_EE_2G_TARGET_POWER) >> 8; val = mt76x02_eeprom_get(&dev->mt76, MT_EE_2G_TARGET_POWER) >> 8;
if (mt76x02_field_valid(val)) if (mt76x02_field_valid(val))
dev->caldata.temp_offset = mt76x02_sign_extend(val, 8); dev->cal.rx.temp_offset = mt76x02_sign_extend(val, 8);
else else
dev->caldata.temp_offset = -10; dev->cal.rx.temp_offset = -10;
} }
static void mt76x0_set_freq_offset(struct mt76x0_dev *dev) static void mt76x0_set_freq_offset(struct mt76x02_dev *dev)
{ {
struct mt76x0_caldata *caldata = &dev->caldata; struct mt76x02_rx_freq_cal *caldata = &dev->cal.rx;
u8 val; u8 val;
val = mt76x02_eeprom_get(&dev->mt76, MT_EE_FREQ_OFFSET); val = mt76x02_eeprom_get(&dev->mt76, MT_EE_FREQ_OFFSET);
...@@ -110,10 +110,10 @@ static void mt76x0_set_freq_offset(struct mt76x0_dev *dev) ...@@ -110,10 +110,10 @@ static void mt76x0_set_freq_offset(struct mt76x0_dev *dev)
caldata->freq_offset -= mt76x02_sign_extend(val, 8); caldata->freq_offset -= mt76x02_sign_extend(val, 8);
} }
void mt76x0_read_rx_gain(struct mt76x0_dev *dev) void mt76x0_read_rx_gain(struct mt76x02_dev *dev)
{ {
struct ieee80211_channel *chan = dev->mt76.chandef.chan; struct ieee80211_channel *chan = dev->mt76.chandef.chan;
struct mt76x0_caldata *caldata = &dev->caldata; struct mt76x02_rx_freq_cal *caldata = &dev->cal.rx;
s8 val, lna_5g[3], lna_2g; s8 val, lna_5g[3], lna_2g;
u16 rssi_offset; u16 rssi_offset;
int i; int i;
...@@ -157,7 +157,7 @@ static s8 mt76x0_get_delta(struct mt76_dev *dev) ...@@ -157,7 +157,7 @@ static s8 mt76x0_get_delta(struct mt76_dev *dev)
return mt76x02_rate_power_val(val); return mt76x02_rate_power_val(val);
} }
void mt76x0_get_tx_power_per_rate(struct mt76x0_dev *dev) void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev)
{ {
struct ieee80211_channel *chan = dev->mt76.chandef.chan; struct ieee80211_channel *chan = dev->mt76.chandef.chan;
bool is_2ghz = chan->band == NL80211_BAND_2GHZ; bool is_2ghz = chan->band == NL80211_BAND_2GHZ;
...@@ -216,7 +216,7 @@ void mt76x0_get_tx_power_per_rate(struct mt76x0_dev *dev) ...@@ -216,7 +216,7 @@ void mt76x0_get_tx_power_per_rate(struct mt76x0_dev *dev)
mt76x02_add_rate_power_offset(t, delta); mt76x02_add_rate_power_offset(t, delta);
} }
void mt76x0_get_power_info(struct mt76x0_dev *dev, u8 *info) void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info)
{ {
struct mt76x0_chan_map { struct mt76x0_chan_map {
u8 chan; u8 chan;
...@@ -277,7 +277,7 @@ void mt76x0_get_power_info(struct mt76x0_dev *dev, u8 *info) ...@@ -277,7 +277,7 @@ void mt76x0_get_power_info(struct mt76x0_dev *dev, u8 *info)
info[1] = 5; info[1] = 5;
} }
static int mt76x0_check_eeprom(struct mt76x0_dev *dev) static int mt76x0_check_eeprom(struct mt76x02_dev *dev)
{ {
u16 val; u16 val;
...@@ -297,7 +297,7 @@ static int mt76x0_check_eeprom(struct mt76x0_dev *dev) ...@@ -297,7 +297,7 @@ static int mt76x0_check_eeprom(struct mt76x0_dev *dev)
} }
} }
static int mt76x0_load_eeprom(struct mt76x0_dev *dev) static int mt76x0_load_eeprom(struct mt76x02_dev *dev)
{ {
int found; int found;
...@@ -316,7 +316,7 @@ static int mt76x0_load_eeprom(struct mt76x0_dev *dev) ...@@ -316,7 +316,7 @@ static int mt76x0_load_eeprom(struct mt76x0_dev *dev)
MT76X0_EEPROM_SIZE, MT_EE_READ); MT76X0_EEPROM_SIZE, MT_EE_READ);
} }
int mt76x0_eeprom_init(struct mt76x0_dev *dev) int mt76x0_eeprom_init(struct mt76x02_dev *dev)
{ {
u8 version, fae; u8 version, fae;
u16 data; u16 data;
......
...@@ -18,23 +18,15 @@ ...@@ -18,23 +18,15 @@
#include "../mt76x02_eeprom.h" #include "../mt76x02_eeprom.h"
struct mt76x0_dev; struct mt76x02_dev;
#define MT76X0U_EE_MAX_VER 0x0c #define MT76X0U_EE_MAX_VER 0x0c
#define MT76X0_EEPROM_SIZE 512 #define MT76X0_EEPROM_SIZE 512
struct mt76x0_caldata { int mt76x0_eeprom_init(struct mt76x02_dev *dev);
s8 rssi_offset[2]; void mt76x0_read_rx_gain(struct mt76x02_dev *dev);
s8 lna_gain; void mt76x0_get_tx_power_per_rate(struct mt76x02_dev *dev);
void mt76x0_get_power_info(struct mt76x02_dev *dev, u8 *info);
s16 temp_offset;
u8 freq_offset;
};
int mt76x0_eeprom_init(struct mt76x0_dev *dev);
void mt76x0_read_rx_gain(struct mt76x0_dev *dev);
void mt76x0_get_tx_power_per_rate(struct mt76x0_dev *dev);
void mt76x0_get_power_info(struct mt76x0_dev *dev, u8 *info);
static inline s8 s6_to_s8(u32 val) static inline s8 s6_to_s8(u32 val)
{ {
......
...@@ -42,7 +42,7 @@ static void mt76x0_vht_cap_mask(struct ieee80211_supported_band *sband) ...@@ -42,7 +42,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 mt76x02_dev *dev, u32 val, bool enable)
{ {
u32 mask = MT_CMB_CTRL_XTAL_RDY | MT_CMB_CTRL_PLL_LD; u32 mask = MT_CMB_CTRL_XTAL_RDY | MT_CMB_CTRL_PLL_LD;
...@@ -69,7 +69,7 @@ mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable) ...@@ -69,7 +69,7 @@ mt76x0_set_wlan_state(struct mt76x0_dev *dev, u32 val, bool enable)
dev_err(dev->mt76.dev, "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 mt76x02_dev *dev, bool enable, bool reset)
{ {
u32 val; u32 val;
...@@ -97,7 +97,7 @@ void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset) ...@@ -97,7 +97,7 @@ void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset)
} }
EXPORT_SYMBOL_GPL(mt76x0_chip_onoff); EXPORT_SYMBOL_GPL(mt76x0_chip_onoff);
static void mt76x0_reset_csr_bbp(struct mt76x0_dev *dev) static void mt76x0_reset_csr_bbp(struct mt76x02_dev *dev)
{ {
mt76_wr(dev, MT_MAC_SYS_CTRL, mt76_wr(dev, MT_MAC_SYS_CTRL,
MT_MAC_SYS_CTRL_RESET_CSR | MT_MAC_SYS_CTRL_RESET_CSR |
...@@ -112,7 +112,7 @@ static void mt76x0_reset_csr_bbp(struct mt76x0_dev *dev) ...@@ -112,7 +112,7 @@ static void mt76x0_reset_csr_bbp(struct mt76x0_dev *dev)
mt76_wr_rp(dev, MT_MCU_MEMMAP_WLAN, \ mt76_wr_rp(dev, MT_MCU_MEMMAP_WLAN, \
tab, ARRAY_SIZE(tab)) tab, ARRAY_SIZE(tab))
static int mt76x0_init_bbp(struct mt76x0_dev *dev) static int mt76x0_init_bbp(struct mt76x02_dev *dev)
{ {
int ret, i; int ret, i;
...@@ -135,7 +135,7 @@ static int mt76x0_init_bbp(struct mt76x0_dev *dev) ...@@ -135,7 +135,7 @@ static int mt76x0_init_bbp(struct mt76x0_dev *dev)
return 0; return 0;
} }
static void mt76x0_init_mac_registers(struct mt76x0_dev *dev) static void mt76x0_init_mac_registers(struct mt76x02_dev *dev)
{ {
u32 reg; u32 reg;
...@@ -170,7 +170,7 @@ static void mt76x0_init_mac_registers(struct mt76x0_dev *dev) ...@@ -170,7 +170,7 @@ static void mt76x0_init_mac_registers(struct mt76x0_dev *dev)
mt76_wr(dev, MT_WMM_CTRL, reg); mt76_wr(dev, MT_WMM_CTRL, reg);
} }
static int mt76x0_init_wcid_mem(struct mt76x0_dev *dev) static int mt76x0_init_wcid_mem(struct mt76x02_dev *dev)
{ {
u32 *vals; u32 *vals;
int i; int i;
...@@ -189,14 +189,14 @@ static int mt76x0_init_wcid_mem(struct mt76x0_dev *dev) ...@@ -189,14 +189,14 @@ static int mt76x0_init_wcid_mem(struct mt76x0_dev *dev)
return 0; return 0;
} }
static void mt76x0_init_key_mem(struct mt76x0_dev *dev) static void mt76x0_init_key_mem(struct mt76x02_dev *dev)
{ {
u32 vals[4] = {}; u32 vals[4] = {};
mt76_wr_copy(dev, MT_SKEY_MODE_BASE_0, vals, ARRAY_SIZE(vals)); mt76_wr_copy(dev, MT_SKEY_MODE_BASE_0, vals, ARRAY_SIZE(vals));
} }
static int mt76x0_init_wcid_attr_mem(struct mt76x0_dev *dev) static int mt76x0_init_wcid_attr_mem(struct mt76x02_dev *dev)
{ {
u32 *vals; u32 *vals;
int i; int i;
...@@ -213,7 +213,7 @@ static int mt76x0_init_wcid_attr_mem(struct mt76x0_dev *dev) ...@@ -213,7 +213,7 @@ static int mt76x0_init_wcid_attr_mem(struct mt76x0_dev *dev)
return 0; return 0;
} }
static void mt76x0_reset_counters(struct mt76x0_dev *dev) static void mt76x0_reset_counters(struct mt76x02_dev *dev)
{ {
mt76_rr(dev, MT_RX_STAT_0); mt76_rr(dev, MT_RX_STAT_0);
mt76_rr(dev, MT_RX_STAT_1); mt76_rr(dev, MT_RX_STAT_1);
...@@ -223,7 +223,7 @@ static void mt76x0_reset_counters(struct mt76x0_dev *dev) ...@@ -223,7 +223,7 @@ static void mt76x0_reset_counters(struct mt76x0_dev *dev)
mt76_rr(dev, MT_TX_STA_2); mt76_rr(dev, MT_TX_STA_2);
} }
int mt76x0_mac_start(struct mt76x0_dev *dev) int mt76x0_mac_start(struct mt76x02_dev *dev)
{ {
mt76_wr(dev, MT_MAC_SYS_CTRL, MT_MAC_SYS_CTRL_ENABLE_TX); mt76_wr(dev, MT_MAC_SYS_CTRL, MT_MAC_SYS_CTRL_ENABLE_TX);
...@@ -238,7 +238,7 @@ int mt76x0_mac_start(struct mt76x0_dev *dev) ...@@ -238,7 +238,7 @@ int mt76x0_mac_start(struct mt76x0_dev *dev)
} }
EXPORT_SYMBOL_GPL(mt76x0_mac_start); EXPORT_SYMBOL_GPL(mt76x0_mac_start);
void mt76x0_mac_stop(struct mt76x0_dev *dev) void mt76x0_mac_stop(struct mt76x02_dev *dev)
{ {
int i = 200, ok = 0; int i = 200, ok = 0;
...@@ -271,7 +271,7 @@ void mt76x0_mac_stop(struct mt76x0_dev *dev) ...@@ -271,7 +271,7 @@ void mt76x0_mac_stop(struct mt76x0_dev *dev)
} }
EXPORT_SYMBOL_GPL(mt76x0_mac_stop); EXPORT_SYMBOL_GPL(mt76x0_mac_stop);
int mt76x0_init_hardware(struct mt76x0_dev *dev) int mt76x0_init_hardware(struct mt76x02_dev *dev)
{ {
int ret; int ret;
...@@ -325,12 +325,12 @@ int mt76x0_init_hardware(struct mt76x0_dev *dev) ...@@ -325,12 +325,12 @@ int mt76x0_init_hardware(struct mt76x0_dev *dev)
} }
EXPORT_SYMBOL_GPL(mt76x0_init_hardware); EXPORT_SYMBOL_GPL(mt76x0_init_hardware);
struct mt76x0_dev * struct mt76x02_dev *
mt76x0_alloc_device(struct device *pdev, mt76x0_alloc_device(struct device *pdev,
const struct mt76_driver_ops *drv_ops, const struct mt76_driver_ops *drv_ops,
const struct ieee80211_ops *ops) const struct ieee80211_ops *ops)
{ {
struct mt76x0_dev *dev; struct mt76x02_dev *dev;
struct mt76_dev *mdev; struct mt76_dev *mdev;
mdev = mt76_alloc_device(sizeof(*dev), ops); mdev = mt76_alloc_device(sizeof(*dev), ops);
...@@ -340,15 +340,15 @@ mt76x0_alloc_device(struct device *pdev, ...@@ -340,15 +340,15 @@ mt76x0_alloc_device(struct device *pdev,
mdev->dev = pdev; mdev->dev = pdev;
mdev->drv = drv_ops; mdev->drv = drv_ops;
dev = container_of(mdev, struct mt76x0_dev, mt76); dev = container_of(mdev, struct mt76x02_dev, mt76);
mutex_init(&dev->reg_atomic_mutex); mutex_init(&dev->phy_mutex);
atomic_set(&dev->avg_ampdu_len, 1); atomic_set(&dev->avg_ampdu_len, 1);
return dev; return dev;
} }
EXPORT_SYMBOL_GPL(mt76x0_alloc_device); EXPORT_SYMBOL_GPL(mt76x0_alloc_device);
int mt76x0_register_device(struct mt76x0_dev *dev) int mt76x0_register_device(struct mt76x02_dev *dev)
{ {
struct mt76_dev *mdev = &dev->mt76; struct mt76_dev *mdev = &dev->mt76;
struct ieee80211_hw *hw = mdev->hw; struct ieee80211_hw *hw = mdev->hw;
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
#include "../mt76x02_util.h" #include "../mt76x02_util.h"
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
void mt76x0_mac_set_protection(struct mt76x0_dev *dev, bool legacy_prot, void mt76x0_mac_set_protection(struct mt76x02_dev *dev, bool legacy_prot,
int ht_mode) int ht_mode)
{ {
int mode = ht_mode & IEEE80211_HT_OP_MODE_PROTECTION; int mode = ht_mode & IEEE80211_HT_OP_MODE_PROTECTION;
bool non_gf = !!(ht_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT); bool non_gf = !!(ht_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
...@@ -77,7 +77,7 @@ void mt76x0_mac_set_protection(struct mt76x0_dev *dev, bool legacy_prot, ...@@ -77,7 +77,7 @@ void mt76x0_mac_set_protection(struct mt76x0_dev *dev, bool legacy_prot,
mt76_wr(dev, MT_CCK_PROT_CFG + i * 4, prot[i]); mt76_wr(dev, MT_CCK_PROT_CFG + i * 4, prot[i]);
} }
void mt76x0_mac_set_short_preamble(struct mt76x0_dev *dev, bool short_preamb) void mt76x0_mac_set_short_preamble(struct mt76x02_dev *dev, bool short_preamb)
{ {
if (short_preamb) if (short_preamb)
mt76_set(dev, MT_AUTO_RSP_CFG, MT_AUTO_RSP_PREAMB_SHORT); mt76_set(dev, MT_AUTO_RSP_CFG, MT_AUTO_RSP_PREAMB_SHORT);
...@@ -85,7 +85,7 @@ void mt76x0_mac_set_short_preamble(struct mt76x0_dev *dev, bool short_preamb) ...@@ -85,7 +85,7 @@ void mt76x0_mac_set_short_preamble(struct mt76x0_dev *dev, bool short_preamb)
mt76_clear(dev, MT_AUTO_RSP_CFG, MT_AUTO_RSP_PREAMB_SHORT); mt76_clear(dev, MT_AUTO_RSP_CFG, MT_AUTO_RSP_PREAMB_SHORT);
} }
void mt76x0_mac_config_tsf(struct mt76x0_dev *dev, bool enable, int interval) void mt76x0_mac_config_tsf(struct mt76x02_dev *dev, bool enable, int interval)
{ {
u32 val = mt76_rr(dev, MT_BEACON_TIME_CFG); u32 val = mt76_rr(dev, MT_BEACON_TIME_CFG);
...@@ -105,7 +105,7 @@ void mt76x0_mac_config_tsf(struct mt76x0_dev *dev, bool enable, int interval) ...@@ -105,7 +105,7 @@ void mt76x0_mac_config_tsf(struct mt76x0_dev *dev, bool enable, int interval)
MT_BEACON_TIME_CFG_TBTT_EN; MT_BEACON_TIME_CFG_TBTT_EN;
} }
static void mt76x0_check_mac_err(struct mt76x0_dev *dev) static void mt76x0_check_mac_err(struct mt76x02_dev *dev)
{ {
u32 val = mt76_rr(dev, 0x10f4); u32 val = mt76_rr(dev, 0x10f4);
...@@ -120,7 +120,7 @@ static void mt76x0_check_mac_err(struct mt76x0_dev *dev) ...@@ -120,7 +120,7 @@ static void mt76x0_check_mac_err(struct mt76x0_dev *dev)
} }
void mt76x0_mac_work(struct work_struct *work) void mt76x0_mac_work(struct work_struct *work)
{ {
struct mt76x0_dev *dev = container_of(work, struct mt76x0_dev, struct mt76x02_dev *dev = container_of(work, struct mt76x02_dev,
mac_work.work); mac_work.work);
struct { struct {
u32 addr_base; u32 addr_base;
...@@ -171,7 +171,7 @@ void mt76x0_mac_work(struct work_struct *work) ...@@ -171,7 +171,7 @@ void mt76x0_mac_work(struct work_struct *work)
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work, 10 * HZ); ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work, 10 * HZ);
} }
void mt76x0_mac_set_ampdu_factor(struct mt76x0_dev *dev) void mt76x0_mac_set_ampdu_factor(struct mt76x02_dev *dev)
{ {
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
...@@ -196,7 +196,7 @@ void mt76x0_mac_set_ampdu_factor(struct mt76x0_dev *dev) ...@@ -196,7 +196,7 @@ void mt76x0_mac_set_ampdu_factor(struct mt76x0_dev *dev)
FIELD_PREP(MT_MAX_LEN_CFG_AMPDU, min_factor)); FIELD_PREP(MT_MAX_LEN_CFG_AMPDU, min_factor));
} }
u32 mt76x0_mac_process_rx(struct mt76x0_dev *dev, struct sk_buff *skb, u32 mt76x0_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
void *rxi) void *rxi)
{ {
struct mt76_rx_status *status = (struct mt76_rx_status *) skb->cb; struct mt76_rx_status *status = (struct mt76_rx_status *) skb->cb;
......
...@@ -15,6 +15,6 @@ ...@@ -15,6 +15,6 @@
#ifndef __MT76_MAC_H #ifndef __MT76_MAC_H
#define __MT76_MAC_H #define __MT76_MAC_H
u32 mt76x0_mac_process_rx(struct mt76x0_dev *dev, struct sk_buff *skb, u32 mt76x0_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
void *rxi); void *rxi);
#endif #endif
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
int mt76x0_config(struct ieee80211_hw *hw, u32 changed) int mt76x0_config(struct ieee80211_hw *hw, u32 changed)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
int ret = 0; int ret = 0;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
...@@ -54,7 +54,7 @@ int mt76x0_config(struct ieee80211_hw *hw, u32 changed) ...@@ -54,7 +54,7 @@ int mt76x0_config(struct ieee80211_hw *hw, u32 changed)
EXPORT_SYMBOL_GPL(mt76x0_config); EXPORT_SYMBOL_GPL(mt76x0_config);
static void static void
mt76x0_addr_wr(struct mt76x0_dev *dev, const u32 offset, const u8 *addr) mt76x0_addr_wr(struct mt76x02_dev *dev, const u32 offset, const u8 *addr)
{ {
mt76_wr(dev, offset, get_unaligned_le32(addr)); mt76_wr(dev, offset, get_unaligned_le32(addr));
mt76_wr(dev, offset + 4, addr[4] | addr[5] << 8); mt76_wr(dev, offset + 4, addr[4] | addr[5] << 8);
...@@ -64,7 +64,7 @@ void mt76x0_bss_info_changed(struct ieee80211_hw *hw, ...@@ -64,7 +64,7 @@ void mt76x0_bss_info_changed(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
struct ieee80211_bss_conf *info, u32 changed) struct ieee80211_bss_conf *info, u32 changed)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
...@@ -114,7 +114,7 @@ EXPORT_SYMBOL_GPL(mt76x0_bss_info_changed); ...@@ -114,7 +114,7 @@ EXPORT_SYMBOL_GPL(mt76x0_bss_info_changed);
void mt76x0_sw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif, void mt76x0_sw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
const u8 *mac_addr) const u8 *mac_addr)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
cancel_delayed_work_sync(&dev->cal_work); cancel_delayed_work_sync(&dev->cal_work);
mt76x0_agc_save(dev); mt76x0_agc_save(dev);
...@@ -125,7 +125,7 @@ EXPORT_SYMBOL_GPL(mt76x0_sw_scan); ...@@ -125,7 +125,7 @@ EXPORT_SYMBOL_GPL(mt76x0_sw_scan);
void mt76x0_sw_scan_complete(struct ieee80211_hw *hw, void mt76x0_sw_scan_complete(struct ieee80211_hw *hw,
struct ieee80211_vif *vif) struct ieee80211_vif *vif)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mt76x0_agc_restore(dev); mt76x0_agc_restore(dev);
clear_bit(MT76_SCANNING, &dev->mt76.state); clear_bit(MT76_SCANNING, &dev->mt76.state);
...@@ -137,7 +137,7 @@ EXPORT_SYMBOL_GPL(mt76x0_sw_scan_complete); ...@@ -137,7 +137,7 @@ EXPORT_SYMBOL_GPL(mt76x0_sw_scan_complete);
int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value) int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mt76_rmw_field(dev, MT_TX_RTS_CFG, MT_TX_RTS_CFG_THRESH, value); mt76_rmw_field(dev, MT_TX_RTS_CFG, MT_TX_RTS_CFG_THRESH, value);
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include "../mt76x02_mcu.h" #include "../mt76x02_mcu.h"
struct mt76x0_dev; struct mt76x02_dev;
#define MT_MCU_IVB_SIZE 0x40 #define MT_MCU_IVB_SIZE 0x40
#define MT_MCU_DLM_OFFSET 0x80000 #define MT_MCU_DLM_OFFSET 0x80000
...@@ -41,9 +41,9 @@ enum mcu_calibrate { ...@@ -41,9 +41,9 @@ enum mcu_calibrate {
MCU_CAL_TX_GROUP_DELAY, MCU_CAL_TX_GROUP_DELAY,
}; };
int mt76x0e_mcu_init(struct mt76x0_dev *dev); int mt76x0e_mcu_init(struct mt76x02_dev *dev);
int mt76x0u_mcu_init(struct mt76x0_dev *dev); int mt76x0u_mcu_init(struct mt76x02_dev *dev);
static inline int mt76x0_firmware_running(struct mt76x0_dev *dev) static inline int mt76x0_firmware_running(struct mt76x02_dev *dev)
{ {
return mt76_rr(dev, MT_MCU_COM_REG0) == 1; return mt76_rr(dev, MT_MCU_COM_REG0) == 1;
} }
......
...@@ -28,93 +28,33 @@ ...@@ -28,93 +28,33 @@
#include "../mt76.h" #include "../mt76.h"
#include "../mt76x02_regs.h" #include "../mt76x02_regs.h"
#include "../mt76x02_mac.h" #include "../mt76x02_mac.h"
#include "../mt76x02_util.h"
#include "eeprom.h" #include "eeprom.h"
#define MT_CALIBRATE_INTERVAL (4 * HZ) #define MT_CALIBRATE_INTERVAL (4 * HZ)
#define MT_FREQ_CAL_INIT_DELAY (30 * HZ)
#define MT_FREQ_CAL_CHECK_INTERVAL (10 * HZ)
#define MT_FREQ_CAL_ADJ_INTERVAL (HZ / 2)
#define MT_BBP_REG_VERSION 0x00
#define MT_USB_AGGR_SIZE_LIMIT 21 /* * 1024B */ #define MT_USB_AGGR_SIZE_LIMIT 21 /* * 1024B */
#define MT_USB_AGGR_TIMEOUT 0x80 /* * 33ns */ #define MT_USB_AGGR_TIMEOUT 0x80 /* * 33ns */
struct mac_stats { static inline bool is_mt7610e(struct mt76x02_dev *dev)
u64 rx_stat[6];
u64 tx_stat[6];
u64 aggr_stat[2];
u64 aggr_n[32];
u64 zero_len_del[2];
};
struct mt76x0_eeprom_params;
#define MT_EE_TEMPERATURE_SLOPE 39
#define MT_FREQ_OFFSET_INVALID -128
/* addr req mask */
#define MT_VEND_TYPE_EEPROM BIT(31)
#define MT_VEND_TYPE_CFG BIT(30)
#define MT_VEND_TYPE_MASK (MT_VEND_TYPE_EEPROM | MT_VEND_TYPE_CFG)
#define MT_VEND_ADDR(type, n) (MT_VEND_TYPE_##type | (n))
enum mt_bw {
MT_BW_20,
MT_BW_40,
};
/**
* struct mt76x0_dev - adapter structure
* @lock: protects @wcid->tx_rate.
* @mutex: ensures exclusive access from mac80211 callbacks.
* @reg_atomic_mutex: ensures atomicity of indirect register accesses
* (accesses to RF and BBP).
*/
struct mt76x0_dev {
struct mt76_dev mt76; /* must be first */
struct delayed_work cal_work;
struct delayed_work mac_work;
struct mt76x0_caldata caldata;
struct mutex reg_atomic_mutex;
atomic_t avg_ampdu_len;
u8 agc_save;
bool no_2ghz;
struct mac_stats stats;
};
static inline bool is_mt7610e(struct mt76x0_dev *dev)
{ {
/* TODO */ /* TODO */
return false; return false;
} }
void mt76x0_init_debugfs(struct mt76x0_dev *dev); void mt76x0_init_debugfs(struct mt76x02_dev *dev);
/* Compatibility with mt76 */
#define mt76_rmw_field(_dev, _reg, _field, _val) \
mt76_rmw(_dev, _reg, _field, FIELD_PREP(_field, _val))
/* Init */ /* Init */
struct mt76x0_dev * struct mt76x02_dev *
mt76x0_alloc_device(struct device *pdev, mt76x0_alloc_device(struct device *pdev,
const struct mt76_driver_ops *drv_ops, const struct mt76_driver_ops *drv_ops,
const struct ieee80211_ops *ops); const struct ieee80211_ops *ops);
int mt76x0_init_hardware(struct mt76x0_dev *dev); int mt76x0_init_hardware(struct mt76x02_dev *dev);
int mt76x0_register_device(struct mt76x0_dev *dev); int mt76x0_register_device(struct mt76x02_dev *dev);
void mt76x0_chip_onoff(struct mt76x0_dev *dev, bool enable, bool reset); void mt76x0_chip_onoff(struct mt76x02_dev *dev, bool enable, bool reset);
int mt76x0_mac_start(struct mt76x0_dev *dev); int mt76x0_mac_start(struct mt76x02_dev *dev);
void mt76x0_mac_stop(struct mt76x0_dev *dev); void mt76x0_mac_stop(struct mt76x02_dev *dev);
int mt76x0_config(struct ieee80211_hw *hw, u32 changed); int mt76x0_config(struct ieee80211_hw *hw, u32 changed);
void mt76x0_bss_info_changed(struct ieee80211_hw *hw, void mt76x0_bss_info_changed(struct ieee80211_hw *hw,
...@@ -127,23 +67,23 @@ void mt76x0_sw_scan_complete(struct ieee80211_hw *hw, ...@@ -127,23 +67,23 @@ void mt76x0_sw_scan_complete(struct ieee80211_hw *hw,
int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value); int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
/* PHY */ /* PHY */
void mt76x0_phy_init(struct mt76x0_dev *dev); void mt76x0_phy_init(struct mt76x02_dev *dev);
int mt76x0_wait_bbp_ready(struct mt76x0_dev *dev); int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev);
void mt76x0_agc_save(struct mt76x0_dev *dev); void mt76x0_agc_save(struct mt76x02_dev *dev);
void mt76x0_agc_restore(struct mt76x0_dev *dev); void mt76x0_agc_restore(struct mt76x02_dev *dev);
int mt76x0_phy_set_channel(struct mt76x0_dev *dev, int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
struct cfg80211_chan_def *chandef); struct cfg80211_chan_def *chandef);
void mt76x0_phy_recalibrate_after_assoc(struct mt76x0_dev *dev); void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev);
int mt76x0_phy_get_rssi(struct mt76x0_dev *dev, struct mt76x02_rxwi *rxwi); int mt76x0_phy_get_rssi(struct mt76x02_dev *dev, struct mt76x02_rxwi *rxwi);
void mt76x0_phy_set_txpower(struct mt76x0_dev *dev); void mt76x0_phy_set_txpower(struct mt76x02_dev *dev);
/* MAC */ /* MAC */
void mt76x0_mac_work(struct work_struct *work); void mt76x0_mac_work(struct work_struct *work);
void mt76x0_mac_set_protection(struct mt76x0_dev *dev, bool legacy_prot, void mt76x0_mac_set_protection(struct mt76x02_dev *dev, bool legacy_prot,
int ht_mode); int ht_mode);
void mt76x0_mac_set_short_preamble(struct mt76x0_dev *dev, bool short_preamb); void mt76x0_mac_set_short_preamble(struct mt76x02_dev *dev, bool short_preamb);
void mt76x0_mac_config_tsf(struct mt76x0_dev *dev, bool enable, int interval); void mt76x0_mac_config_tsf(struct mt76x02_dev *dev, bool enable, int interval);
void mt76x0_mac_set_ampdu_factor(struct mt76x0_dev *dev); void mt76x0_mac_set_ampdu_factor(struct mt76x02_dev *dev);
/* TX */ /* TX */
void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
static int mt76x0e_start(struct ieee80211_hw *hw) static int mt76x0e_start(struct ieee80211_hw *hw)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
...@@ -41,7 +41,7 @@ static int mt76x0e_start(struct ieee80211_hw *hw) ...@@ -41,7 +41,7 @@ static int mt76x0e_start(struct ieee80211_hw *hw)
return 0; return 0;
} }
static void mt76x0e_stop_hw(struct mt76x0_dev *dev) static void mt76x0e_stop_hw(struct mt76x02_dev *dev)
{ {
cancel_delayed_work_sync(&dev->cal_work); cancel_delayed_work_sync(&dev->cal_work);
cancel_delayed_work_sync(&dev->mac_work); cancel_delayed_work_sync(&dev->mac_work);
...@@ -61,7 +61,7 @@ static void mt76x0e_stop_hw(struct mt76x0_dev *dev) ...@@ -61,7 +61,7 @@ static void mt76x0e_stop_hw(struct mt76x0_dev *dev)
static void mt76x0e_stop(struct ieee80211_hw *hw) static void mt76x0e_stop(struct ieee80211_hw *hw)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
clear_bit(MT76_STATE_RUNNING, &dev->mt76.state); clear_bit(MT76_STATE_RUNNING, &dev->mt76.state);
...@@ -79,7 +79,7 @@ static const struct ieee80211_ops mt76x0e_ops = { ...@@ -79,7 +79,7 @@ static const struct ieee80211_ops mt76x0e_ops = {
.configure_filter = mt76x02_configure_filter, .configure_filter = mt76x02_configure_filter,
}; };
static int mt76x0e_register_device(struct mt76x0_dev *dev) static int mt76x0e_register_device(struct mt76x02_dev *dev)
{ {
int err; int err;
...@@ -126,8 +126,8 @@ static int mt76x0e_register_device(struct mt76x0_dev *dev) ...@@ -126,8 +126,8 @@ static int mt76x0e_register_device(struct mt76x0_dev *dev)
static int static int
mt76x0e_probe(struct pci_dev *pdev, const struct pci_device_id *id) mt76x0e_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ {
struct mt76x0_dev *dev; struct mt76x02_dev *dev;
int ret = -ENODEV; int ret;
ret = pcim_enable_device(pdev); ret = pcim_enable_device(pdev);
if (ret) if (ret)
...@@ -163,7 +163,7 @@ mt76x0e_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -163,7 +163,7 @@ mt76x0e_probe(struct pci_dev *pdev, const struct pci_device_id *id)
return ret; return ret;
} }
static void mt76x0e_cleanup(struct mt76x0_dev *dev) static void mt76x0e_cleanup(struct mt76x02_dev *dev)
{ {
clear_bit(MT76_STATE_INITIALIZED, &dev->mt76.state); clear_bit(MT76_STATE_INITIALIZED, &dev->mt76.state);
mt76x0_chip_onoff(dev, false, false); mt76x0_chip_onoff(dev, false, false);
...@@ -176,7 +176,7 @@ static void ...@@ -176,7 +176,7 @@ static void
mt76x0e_remove(struct pci_dev *pdev) mt76x0e_remove(struct pci_dev *pdev)
{ {
struct mt76_dev *mdev = pci_get_drvdata(pdev); struct mt76_dev *mdev = pci_get_drvdata(pdev);
struct mt76x0_dev *dev = container_of(mdev, struct mt76x0_dev, mt76); struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
mt76_unregister_device(mdev); mt76_unregister_device(mdev);
mt76x0e_cleanup(dev); mt76x0e_cleanup(dev);
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define MT_MCU_IVB_ADDR (MT_MCU_ILM_ADDR + 0x54000 - MT_MCU_IVB_SIZE) #define MT_MCU_IVB_ADDR (MT_MCU_ILM_ADDR + 0x54000 - MT_MCU_IVB_SIZE)
static int mt76x0e_load_firmware(struct mt76x0_dev *dev) static int mt76x0e_load_firmware(struct mt76x02_dev *dev)
{ {
bool is_combo_chip = mt76_chip(&dev->mt76) != 0x7610; bool is_combo_chip = mt76_chip(&dev->mt76) != 0x7610;
u32 val, ilm_len, dlm_len, offset = 0; u32 val, ilm_len, dlm_len, offset = 0;
...@@ -126,7 +126,7 @@ static int mt76x0e_load_firmware(struct mt76x0_dev *dev) ...@@ -126,7 +126,7 @@ static int mt76x0e_load_firmware(struct mt76x0_dev *dev)
return err; return err;
} }
int mt76x0e_mcu_init(struct mt76x0_dev *dev) int mt76x0e_mcu_init(struct mt76x02_dev *dev)
{ {
static const struct mt76_mcu_ops mt76x0e_mcu_ops = { static const struct mt76_mcu_ops mt76x0e_mcu_ops = {
.mcu_msg_alloc = mt76x02_mcu_msg_alloc, .mcu_msg_alloc = mt76x02_mcu_msg_alloc,
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
static int static int
mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value) mt76x0_rf_csr_wr(struct mt76x02_dev *dev, u32 offset, u8 value)
{ {
int ret = 0; int ret = 0;
u8 bank, reg; u8 bank, reg;
...@@ -40,7 +40,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value) ...@@ -40,7 +40,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value)
if (WARN_ON_ONCE(reg > 64) || WARN_ON_ONCE(bank) > 8) if (WARN_ON_ONCE(reg > 64) || WARN_ON_ONCE(bank) > 8)
return -EINVAL; return -EINVAL;
mutex_lock(&dev->reg_atomic_mutex); mutex_lock(&dev->phy_mutex);
if (!mt76_poll(dev, MT_RF_CSR_CFG, MT_RF_CSR_CFG_KICK, 0, 100)) { if (!mt76_poll(dev, MT_RF_CSR_CFG, MT_RF_CSR_CFG_KICK, 0, 100)) {
ret = -ETIMEDOUT; ret = -ETIMEDOUT;
...@@ -55,7 +55,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value) ...@@ -55,7 +55,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value)
MT_RF_CSR_CFG_KICK); MT_RF_CSR_CFG_KICK);
trace_mt76x0_rf_write(&dev->mt76, bank, offset, value); trace_mt76x0_rf_write(&dev->mt76, bank, offset, value);
out: out:
mutex_unlock(&dev->reg_atomic_mutex); mutex_unlock(&dev->phy_mutex);
if (ret < 0) if (ret < 0)
dev_err(dev->mt76.dev, "Error: RF write %d:%d failed:%d!!\n", dev_err(dev->mt76.dev, "Error: RF write %d:%d failed:%d!!\n",
...@@ -64,8 +64,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value) ...@@ -64,8 +64,7 @@ mt76x0_rf_csr_wr(struct mt76x0_dev *dev, u32 offset, u8 value)
return ret; return ret;
} }
static int static int mt76x0_rf_csr_rr(struct mt76x02_dev *dev, u32 offset)
mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset)
{ {
int ret = -ETIMEDOUT; int ret = -ETIMEDOUT;
u32 val; u32 val;
...@@ -80,7 +79,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset) ...@@ -80,7 +79,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset)
if (WARN_ON_ONCE(reg > 64) || WARN_ON_ONCE(bank) > 8) if (WARN_ON_ONCE(reg > 64) || WARN_ON_ONCE(bank) > 8)
return -EINVAL; return -EINVAL;
mutex_lock(&dev->reg_atomic_mutex); mutex_lock(&dev->phy_mutex);
if (!mt76_poll(dev, MT_RF_CSR_CFG, MT_RF_CSR_CFG_KICK, 0, 100)) if (!mt76_poll(dev, MT_RF_CSR_CFG, MT_RF_CSR_CFG_KICK, 0, 100))
goto out; goto out;
...@@ -100,7 +99,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset) ...@@ -100,7 +99,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset)
trace_mt76x0_rf_read(&dev->mt76, bank, offset, ret); trace_mt76x0_rf_read(&dev->mt76, bank, offset, ret);
} }
out: out:
mutex_unlock(&dev->reg_atomic_mutex); mutex_unlock(&dev->phy_mutex);
if (ret < 0) if (ret < 0)
dev_err(dev->mt76.dev, "Error: RF read %d:%d failed:%d!!\n", dev_err(dev->mt76.dev, "Error: RF read %d:%d failed:%d!!\n",
...@@ -110,7 +109,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset) ...@@ -110,7 +109,7 @@ mt76x0_rf_csr_rr(struct mt76x0_dev *dev, u32 offset)
} }
static int static int
rf_wr(struct mt76x0_dev *dev, u32 offset, u8 val) rf_wr(struct mt76x02_dev *dev, u32 offset, u8 val)
{ {
if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mt76.state)) { if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mt76.state)) {
struct mt76_reg_pair pair = { struct mt76_reg_pair pair = {
...@@ -126,7 +125,7 @@ rf_wr(struct mt76x0_dev *dev, u32 offset, u8 val) ...@@ -126,7 +125,7 @@ rf_wr(struct mt76x0_dev *dev, u32 offset, u8 val)
} }
static int static int
rf_rr(struct mt76x0_dev *dev, u32 offset) rf_rr(struct mt76x02_dev *dev, u32 offset)
{ {
int ret; int ret;
u32 val; u32 val;
...@@ -147,7 +146,7 @@ rf_rr(struct mt76x0_dev *dev, u32 offset) ...@@ -147,7 +146,7 @@ rf_rr(struct mt76x0_dev *dev, u32 offset)
} }
static int static int
rf_rmw(struct mt76x0_dev *dev, u32 offset, u8 mask, u8 val) rf_rmw(struct mt76x02_dev *dev, u32 offset, u8 mask, u8 val)
{ {
int ret; int ret;
...@@ -163,14 +162,14 @@ rf_rmw(struct mt76x0_dev *dev, u32 offset, u8 mask, u8 val) ...@@ -163,14 +162,14 @@ rf_rmw(struct mt76x0_dev *dev, u32 offset, u8 mask, u8 val)
} }
static int static int
rf_set(struct mt76x0_dev *dev, u32 offset, u8 val) rf_set(struct mt76x02_dev *dev, u32 offset, u8 val)
{ {
return rf_rmw(dev, offset, 0, val); return rf_rmw(dev, offset, 0, val);
} }
#if 0 #if 0
static int static int
rf_clear(struct mt76x0_dev *dev, u32 offset, u8 mask) rf_clear(struct mt76x02_dev *dev, u32 offset, u8 mask)
{ {
return rf_rmw(dev, offset, mask, 0); return rf_rmw(dev, offset, mask, 0);
} }
...@@ -180,7 +179,7 @@ rf_clear(struct mt76x0_dev *dev, u32 offset, u8 mask) ...@@ -180,7 +179,7 @@ rf_clear(struct mt76x0_dev *dev, u32 offset, u8 mask)
mt76_wr_rp(dev, MT_MCU_MEMMAP_RF, \ mt76_wr_rp(dev, MT_MCU_MEMMAP_RF, \
tab, ARRAY_SIZE(tab)) tab, ARRAY_SIZE(tab))
int mt76x0_wait_bbp_ready(struct mt76x0_dev *dev) int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev)
{ {
int i = 20; int i = 20;
u32 val; u32 val;
...@@ -201,7 +200,7 @@ int mt76x0_wait_bbp_ready(struct mt76x0_dev *dev) ...@@ -201,7 +200,7 @@ int mt76x0_wait_bbp_ready(struct mt76x0_dev *dev)
} }
static void static void
mt76x0_bbp_set_ctrlch(struct mt76x0_dev *dev, enum nl80211_chan_width width, mt76x0_bbp_set_ctrlch(struct mt76x02_dev *dev, enum nl80211_chan_width width,
u8 ctrl) u8 ctrl)
{ {
int core_val, agc_val; int core_val, agc_val;
...@@ -227,14 +226,14 @@ mt76x0_bbp_set_ctrlch(struct mt76x0_dev *dev, enum nl80211_chan_width width, ...@@ -227,14 +226,14 @@ mt76x0_bbp_set_ctrlch(struct mt76x0_dev *dev, enum nl80211_chan_width width,
mt76_rmw_field(dev, MT_BBP(TXBE, 0), MT_BBP_TXBE_R0_CTRL_CHAN, ctrl); mt76_rmw_field(dev, MT_BBP(TXBE, 0), MT_BBP_TXBE_R0_CTRL_CHAN, ctrl);
} }
int mt76x0_phy_get_rssi(struct mt76x0_dev *dev, struct mt76x02_rxwi *rxwi) int mt76x0_phy_get_rssi(struct mt76x02_dev *dev, struct mt76x02_rxwi *rxwi)
{ {
struct mt76x0_caldata *caldata = &dev->caldata; struct mt76x02_rx_freq_cal *caldata = &dev->cal.rx;
return rxwi->rssi[0] + caldata->rssi_offset[0] - caldata->lna_gain; return rxwi->rssi[0] + caldata->rssi_offset[0] - caldata->lna_gain;
} }
static void mt76x0_vco_cal(struct mt76x0_dev *dev, u8 channel) static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel)
{ {
u8 val; u8 val;
...@@ -291,14 +290,14 @@ static void mt76x0_vco_cal(struct mt76x0_dev *dev, u8 channel) ...@@ -291,14 +290,14 @@ static void mt76x0_vco_cal(struct mt76x0_dev *dev, u8 channel)
} }
static void static void
mt76x0_mac_set_ctrlch(struct mt76x0_dev *dev, bool primary_upper) mt76x0_mac_set_ctrlch(struct mt76x02_dev *dev, bool primary_upper)
{ {
mt76_rmw_field(dev, MT_TX_BAND_CFG, MT_TX_BAND_CFG_UPPER_40M, mt76_rmw_field(dev, MT_TX_BAND_CFG, MT_TX_BAND_CFG_UPPER_40M,
primary_upper); primary_upper);
} }
static void static void
mt76x0_phy_set_band(struct mt76x0_dev *dev, enum nl80211_band band) mt76x0_phy_set_band(struct mt76x02_dev *dev, enum nl80211_band band)
{ {
switch (band) { switch (band) {
case NL80211_BAND_2GHZ: case NL80211_BAND_2GHZ:
...@@ -331,7 +330,7 @@ mt76x0_phy_set_band(struct mt76x0_dev *dev, enum nl80211_band band) ...@@ -331,7 +330,7 @@ mt76x0_phy_set_band(struct mt76x0_dev *dev, enum nl80211_band band)
} }
static void static void
mt76x0_phy_set_chan_rf_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_band) mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_band)
{ {
u16 rf_band = rf_bw_band & 0xff00; u16 rf_band = rf_bw_band & 0xff00;
u16 rf_bw = rf_bw_band & 0x00ff; u16 rf_bw = rf_bw_band & 0x00ff;
...@@ -522,7 +521,7 @@ mt76x0_phy_set_chan_rf_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_band ...@@ -522,7 +521,7 @@ mt76x0_phy_set_chan_rf_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_band
} }
static void static void
mt76x0_phy_set_chan_bbp_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_band) mt76x0_phy_set_chan_bbp_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_band)
{ {
int i; int i;
...@@ -538,7 +537,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_ban ...@@ -538,7 +537,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_ban
u8 gain; u8 gain;
gain = FIELD_GET(MT_BBP_AGC_GAIN, val); gain = FIELD_GET(MT_BBP_AGC_GAIN, val);
gain -= dev->caldata.lna_gain * 2; gain -= dev->cal.rx.lna_gain * 2;
val &= ~MT_BBP_AGC_GAIN; val &= ~MT_BBP_AGC_GAIN;
val |= FIELD_PREP(MT_BBP_AGC_GAIN, gain); val |= FIELD_PREP(MT_BBP_AGC_GAIN, gain);
mt76_wr(dev, pair->reg, val); mt76_wr(dev, pair->reg, val);
...@@ -548,7 +547,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_ban ...@@ -548,7 +547,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x0_dev *dev, u8 channel, u16 rf_bw_ban
} }
} }
static void mt76x0_ant_select(struct mt76x0_dev *dev) static void mt76x0_ant_select(struct mt76x02_dev *dev)
{ {
struct ieee80211_channel *chan = dev->mt76.chandef.chan; struct ieee80211_channel *chan = dev->mt76.chandef.chan;
...@@ -568,7 +567,7 @@ static void mt76x0_ant_select(struct mt76x0_dev *dev) ...@@ -568,7 +567,7 @@ static void mt76x0_ant_select(struct mt76x0_dev *dev)
} }
static void static void
mt76x0_bbp_set_bw(struct mt76x0_dev *dev, enum nl80211_chan_width width) mt76x0_bbp_set_bw(struct mt76x02_dev *dev, enum nl80211_chan_width width)
{ {
enum { BW_20 = 0, BW_40 = 1, BW_80 = 2, BW_10 = 4}; enum { BW_20 = 0, BW_40 = 1, BW_80 = 2, BW_10 = 4};
int bw; int bw;
...@@ -598,7 +597,7 @@ mt76x0_bbp_set_bw(struct mt76x0_dev *dev, enum nl80211_chan_width width) ...@@ -598,7 +597,7 @@ mt76x0_bbp_set_bw(struct mt76x0_dev *dev, enum nl80211_chan_width width)
mt76x02_mcu_function_select(&dev->mt76, BW_SETTING, bw, false); mt76x02_mcu_function_select(&dev->mt76, BW_SETTING, bw, false);
} }
void mt76x0_phy_set_txpower(struct mt76x0_dev *dev) void mt76x0_phy_set_txpower(struct mt76x02_dev *dev)
{ {
struct mt76_rate_power *t = &dev->mt76.rate_power; struct mt76_rate_power *t = &dev->mt76.rate_power;
u8 info[2]; u8 info[2];
...@@ -614,7 +613,7 @@ void mt76x0_phy_set_txpower(struct mt76x0_dev *dev) ...@@ -614,7 +613,7 @@ void mt76x0_phy_set_txpower(struct mt76x0_dev *dev)
mt76x02_phy_set_txpower(&dev->mt76, info[0], info[1]); mt76x02_phy_set_txpower(&dev->mt76, info[0], info[1]);
} }
int mt76x0_phy_set_channel(struct mt76x0_dev *dev, int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
struct cfg80211_chan_def *chandef) struct cfg80211_chan_def *chandef)
{ {
u32 ext_cca_chan[4] = { u32 ext_cca_chan[4] = {
...@@ -712,7 +711,7 @@ int mt76x0_phy_set_channel(struct mt76x0_dev *dev, ...@@ -712,7 +711,7 @@ int mt76x0_phy_set_channel(struct mt76x0_dev *dev,
return 0; return 0;
} }
void mt76x0_phy_recalibrate_after_assoc(struct mt76x0_dev *dev) void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev)
{ {
u32 tx_alc, reg_val; u32 tx_alc, reg_val;
u8 channel = dev->mt76.chandef.chan->hw_value; u8 channel = dev->mt76.chandef.chan->hw_value;
...@@ -748,18 +747,18 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x0_dev *dev) ...@@ -748,18 +747,18 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x0_dev *dev)
mt76x02_mcu_calibrate(&dev->mt76, MCU_CAL_RXDCOC, 1, false); mt76x02_mcu_calibrate(&dev->mt76, MCU_CAL_RXDCOC, 1, false);
} }
void mt76x0_agc_save(struct mt76x0_dev *dev) void mt76x0_agc_save(struct mt76x02_dev *dev)
{ {
/* Only one RX path */ /* Only one RX path */
dev->agc_save = FIELD_GET(MT_BBP_AGC_GAIN, mt76_rr(dev, MT_BBP(AGC, 8))); dev->agc_save = FIELD_GET(MT_BBP_AGC_GAIN, mt76_rr(dev, MT_BBP(AGC, 8)));
} }
void mt76x0_agc_restore(struct mt76x0_dev *dev) void mt76x0_agc_restore(struct mt76x02_dev *dev)
{ {
mt76_rmw_field(dev, MT_BBP(AGC, 8), MT_BBP_AGC_GAIN, dev->agc_save); mt76_rmw_field(dev, MT_BBP(AGC, 8), MT_BBP_AGC_GAIN, dev->agc_save);
} }
static void mt76x0_temp_sensor(struct mt76x0_dev *dev) static void mt76x0_temp_sensor(struct mt76x02_dev *dev)
{ {
u8 rf_b7_73, rf_b0_66, rf_b0_67; u8 rf_b7_73, rf_b0_66, rf_b0_67;
int cycle, temp; int cycle, temp;
...@@ -795,7 +794,7 @@ static void mt76x0_temp_sensor(struct mt76x0_dev *dev) ...@@ -795,7 +794,7 @@ static void mt76x0_temp_sensor(struct mt76x0_dev *dev)
else else
sval |= 0xffffff00; /* Negative */ sval |= 0xffffff00; /* Negative */
temp = (35 * (sval - dev->caldata.temp_offset)) / 10 + 25; temp = (35 * (sval - dev->cal.rx.temp_offset)) / 10 + 25;
done: done:
rf_wr(dev, MT_RF(7, 73), rf_b7_73); rf_wr(dev, MT_RF(7, 73), rf_b7_73);
...@@ -803,7 +802,7 @@ static void mt76x0_temp_sensor(struct mt76x0_dev *dev) ...@@ -803,7 +802,7 @@ static void mt76x0_temp_sensor(struct mt76x0_dev *dev)
rf_wr(dev, MT_RF(0, 73), rf_b0_67); rf_wr(dev, MT_RF(0, 73), rf_b0_67);
} }
static void mt76x0_dynamic_vga_tuning(struct mt76x0_dev *dev) static void mt76x0_dynamic_vga_tuning(struct mt76x02_dev *dev)
{ {
struct cfg80211_chan_def *chandef = &dev->mt76.chandef; struct cfg80211_chan_def *chandef = &dev->mt76.chandef;
u32 val, init_vga; u32 val, init_vga;
...@@ -824,8 +823,8 @@ static void mt76x0_dynamic_vga_tuning(struct mt76x0_dev *dev) ...@@ -824,8 +823,8 @@ static void mt76x0_dynamic_vga_tuning(struct mt76x0_dev *dev)
static void mt76x0_phy_calibrate(struct work_struct *work) static void mt76x0_phy_calibrate(struct work_struct *work)
{ {
struct mt76x0_dev *dev = container_of(work, struct mt76x0_dev, struct mt76x02_dev *dev = container_of(work, struct mt76x02_dev,
cal_work.work); cal_work.work);
mt76x0_dynamic_vga_tuning(dev); mt76x0_dynamic_vga_tuning(dev);
mt76x0_temp_sensor(dev); mt76x0_temp_sensor(dev);
...@@ -834,8 +833,7 @@ static void mt76x0_phy_calibrate(struct work_struct *work) ...@@ -834,8 +833,7 @@ static void mt76x0_phy_calibrate(struct work_struct *work)
MT_CALIBRATE_INTERVAL); MT_CALIBRATE_INTERVAL);
} }
static void static void mt76x0_rf_init(struct mt76x02_dev *dev)
mt76x0_rf_init(struct mt76x0_dev *dev)
{ {
int i; int i;
u8 val; u8 val;
...@@ -868,7 +866,7 @@ mt76x0_rf_init(struct mt76x0_dev *dev) ...@@ -868,7 +866,7 @@ mt76x0_rf_init(struct mt76x0_dev *dev)
E2: B0.R21<0>: xo_cxo<0>, B0.R22<7:0>: xo_cxo<8:1> E2: B0.R21<0>: xo_cxo<0>, B0.R22<7:0>: xo_cxo<8:1>
*/ */
rf_wr(dev, MT_RF(0, 22), rf_wr(dev, MT_RF(0, 22),
min_t(u8, dev->caldata.freq_offset, 0xbf)); min_t(u8, dev->cal.rx.freq_offset, 0xbf));
val = rf_rr(dev, MT_RF(0, 22)); val = rf_rr(dev, MT_RF(0, 22));
/* /*
...@@ -888,7 +886,7 @@ mt76x0_rf_init(struct mt76x0_dev *dev) ...@@ -888,7 +886,7 @@ mt76x0_rf_init(struct mt76x0_dev *dev)
rf_set(dev, MT_RF(0, 4), 0x80); rf_set(dev, MT_RF(0, 4), 0x80);
} }
void mt76x0_phy_init(struct mt76x0_dev *dev) void mt76x0_phy_init(struct mt76x02_dev *dev)
{ {
INIT_DELAYED_WORK(&dev->cal_work, mt76x0_phy_calibrate); INIT_DELAYED_WORK(&dev->cal_work, mt76x0_phy_calibrate);
......
...@@ -21,7 +21,7 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, ...@@ -21,7 +21,7 @@ void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
struct ieee80211_vif *vif = info->control.vif; struct ieee80211_vif *vif = info->control.vif;
struct mt76_wcid *wcid = &dev->mt76.global_wcid; struct mt76_wcid *wcid = &dev->mt76.global_wcid;
...@@ -49,7 +49,7 @@ EXPORT_SYMBOL_GPL(mt76x0_tx); ...@@ -49,7 +49,7 @@ EXPORT_SYMBOL_GPL(mt76x0_tx);
void mt76x0_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, void mt76x0_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct mt76x0_dev *dev = container_of(mdev, struct mt76x0_dev, mt76); struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
void *rxwi = skb->data; void *rxwi = skb->data;
skb_pull(skb, sizeof(struct mt76x02_rxwi)); skb_pull(skb, sizeof(struct mt76x02_rxwi));
......
...@@ -49,7 +49,7 @@ static struct usb_device_id mt76x0_device_table[] = { ...@@ -49,7 +49,7 @@ static struct usb_device_id mt76x0_device_table[] = {
{ 0, } { 0, }
}; };
static void mt76x0_init_usb_dma(struct mt76x0_dev *dev) static void mt76x0_init_usb_dma(struct mt76x02_dev *dev)
{ {
u32 val; u32 val;
...@@ -76,7 +76,7 @@ static void mt76x0_init_usb_dma(struct mt76x0_dev *dev) ...@@ -76,7 +76,7 @@ static void mt76x0_init_usb_dma(struct mt76x0_dev *dev)
mt76_wr(dev, MT_USB_DMA_CFG, val); mt76_wr(dev, MT_USB_DMA_CFG, val);
} }
static void mt76x0u_cleanup(struct mt76x0_dev *dev) static void mt76x0u_cleanup(struct mt76x02_dev *dev)
{ {
clear_bit(MT76_STATE_INITIALIZED, &dev->mt76.state); clear_bit(MT76_STATE_INITIALIZED, &dev->mt76.state);
mt76x0_chip_onoff(dev, false, false); mt76x0_chip_onoff(dev, false, false);
...@@ -84,7 +84,7 @@ static void mt76x0u_cleanup(struct mt76x0_dev *dev) ...@@ -84,7 +84,7 @@ static void mt76x0u_cleanup(struct mt76x0_dev *dev)
mt76u_mcu_deinit(&dev->mt76); mt76u_mcu_deinit(&dev->mt76);
} }
static void mt76x0u_mac_stop(struct mt76x0_dev *dev) static void mt76x0u_mac_stop(struct mt76x02_dev *dev)
{ {
clear_bit(MT76_STATE_RUNNING, &dev->mt76.state); clear_bit(MT76_STATE_RUNNING, &dev->mt76.state);
cancel_delayed_work_sync(&dev->cal_work); cancel_delayed_work_sync(&dev->cal_work);
...@@ -109,7 +109,7 @@ static void mt76x0u_mac_stop(struct mt76x0_dev *dev) ...@@ -109,7 +109,7 @@ static void mt76x0u_mac_stop(struct mt76x0_dev *dev)
static int mt76x0u_start(struct ieee80211_hw *hw) static int mt76x0u_start(struct ieee80211_hw *hw)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
int ret; int ret;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
...@@ -131,7 +131,7 @@ static int mt76x0u_start(struct ieee80211_hw *hw) ...@@ -131,7 +131,7 @@ static int mt76x0u_start(struct ieee80211_hw *hw)
static void mt76x0u_stop(struct ieee80211_hw *hw) static void mt76x0u_stop(struct ieee80211_hw *hw)
{ {
struct mt76x0_dev *dev = hw->priv; struct mt76x02_dev *dev = hw->priv;
mutex_lock(&dev->mt76.mutex); mutex_lock(&dev->mt76.mutex);
mt76x0u_mac_stop(dev); mt76x0u_mac_stop(dev);
...@@ -159,7 +159,7 @@ static const struct ieee80211_ops mt76x0u_ops = { ...@@ -159,7 +159,7 @@ static const struct ieee80211_ops mt76x0u_ops = {
.wake_tx_queue = mt76_wake_tx_queue, .wake_tx_queue = mt76_wake_tx_queue,
}; };
static int mt76x0u_register_device(struct mt76x0_dev *dev) static int mt76x0u_register_device(struct mt76x02_dev *dev)
{ {
struct ieee80211_hw *hw = dev->mt76.hw; struct ieee80211_hw *hw = dev->mt76.hw;
int err; int err;
...@@ -221,7 +221,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf, ...@@ -221,7 +221,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf,
.rx_skb = mt76x0_queue_rx_skb, .rx_skb = mt76x0_queue_rx_skb,
}; };
struct usb_device *usb_dev = interface_to_usbdev(usb_intf); struct usb_device *usb_dev = interface_to_usbdev(usb_intf);
struct mt76x0_dev *dev; struct mt76x02_dev *dev;
u32 asic_rev, mac_rev; u32 asic_rev, mac_rev;
int ret; int ret;
...@@ -277,7 +277,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf, ...@@ -277,7 +277,7 @@ static int mt76x0u_probe(struct usb_interface *usb_intf,
static void mt76x0_disconnect(struct usb_interface *usb_intf) static void mt76x0_disconnect(struct usb_interface *usb_intf)
{ {
struct mt76x0_dev *dev = usb_get_intfdata(usb_intf); struct mt76x02_dev *dev = usb_get_intfdata(usb_intf);
bool initalized = test_bit(MT76_STATE_INITIALIZED, &dev->mt76.state); bool initalized = test_bit(MT76_STATE_INITIALIZED, &dev->mt76.state);
if (!initalized) if (!initalized)
...@@ -295,7 +295,7 @@ static void mt76x0_disconnect(struct usb_interface *usb_intf) ...@@ -295,7 +295,7 @@ static void mt76x0_disconnect(struct usb_interface *usb_intf)
static int __maybe_unused mt76x0_suspend(struct usb_interface *usb_intf, static int __maybe_unused mt76x0_suspend(struct usb_interface *usb_intf,
pm_message_t state) pm_message_t state)
{ {
struct mt76x0_dev *dev = usb_get_intfdata(usb_intf); struct mt76x02_dev *dev = usb_get_intfdata(usb_intf);
struct mt76_usb *usb = &dev->mt76.usb; struct mt76_usb *usb = &dev->mt76.usb;
mt76u_stop_queues(&dev->mt76); mt76u_stop_queues(&dev->mt76);
...@@ -307,7 +307,7 @@ static int __maybe_unused mt76x0_suspend(struct usb_interface *usb_intf, ...@@ -307,7 +307,7 @@ static int __maybe_unused mt76x0_suspend(struct usb_interface *usb_intf,
static int __maybe_unused mt76x0_resume(struct usb_interface *usb_intf) static int __maybe_unused mt76x0_resume(struct usb_interface *usb_intf)
{ {
struct mt76x0_dev *dev = usb_get_intfdata(usb_intf); struct mt76x02_dev *dev = usb_get_intfdata(usb_intf);
struct mt76_usb *usb = &dev->mt76.usb; struct mt76_usb *usb = &dev->mt76.usb;
int ret; int ret;
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#define MT7610U_FIRMWARE "mediatek/mt7610u.bin" #define MT7610U_FIRMWARE "mediatek/mt7610u.bin"
static int static int
mt76x0u_upload_firmware(struct mt76x0_dev *dev, mt76x0u_upload_firmware(struct mt76x02_dev *dev,
const struct mt76x02_fw_header *hdr) const struct mt76x02_fw_header *hdr)
{ {
u8 *fw_payload = (u8 *)(hdr + 1); u8 *fw_payload = (u8 *)(hdr + 1);
...@@ -76,7 +76,7 @@ mt76x0u_upload_firmware(struct mt76x0_dev *dev, ...@@ -76,7 +76,7 @@ mt76x0u_upload_firmware(struct mt76x0_dev *dev,
return err; return err;
} }
static int mt76x0u_load_firmware(struct mt76x0_dev *dev) static int mt76x0u_load_firmware(struct mt76x02_dev *dev)
{ {
const struct firmware *fw; const struct firmware *fw;
const struct mt76x02_fw_header *hdr; const struct mt76x02_fw_header *hdr;
...@@ -160,7 +160,7 @@ static int mt76x0u_load_firmware(struct mt76x0_dev *dev) ...@@ -160,7 +160,7 @@ static int mt76x0u_load_firmware(struct mt76x0_dev *dev)
return -ENOENT; return -ENOENT;
} }
int mt76x0u_mcu_init(struct mt76x0_dev *dev) int mt76x0u_mcu_init(struct mt76x02_dev *dev)
{ {
int ret; int ret;
......
...@@ -23,12 +23,22 @@ ...@@ -23,12 +23,22 @@
#include "mt76x02_mac.h" #include "mt76x02_mac.h"
#include "mt76x02_dfs.h" #include "mt76x02_dfs.h"
struct mt76x02_mac_stats {
u64 rx_stat[6];
u64 tx_stat[6];
u64 aggr_stat[2];
u64 aggr_n[32];
u64 zero_len_del[2];
};
#define MT_MAX_CHAINS 2 #define MT_MAX_CHAINS 2
struct mt76x02_rx_freq_cal { struct mt76x02_rx_freq_cal {
s8 high_gain[MT_MAX_CHAINS]; s8 high_gain[MT_MAX_CHAINS];
s8 rssi_offset[MT_MAX_CHAINS]; s8 rssi_offset[MT_MAX_CHAINS];
s8 lna_gain; s8 lna_gain;
u32 mcu_gain; u32 mcu_gain;
s16 temp_offset;
u8 freq_offset;
}; };
struct mt76x02_calibration { struct mt76x02_calibration {
...@@ -56,6 +66,7 @@ struct mt76x02_dev { ...@@ -56,6 +66,7 @@ struct mt76x02_dev {
struct mac_address macaddr_list[8]; struct mac_address macaddr_list[8];
struct mutex phy_mutex;
struct mutex mutex; struct mutex mutex;
u8 txdone_seq; u8 txdone_seq;
...@@ -68,6 +79,8 @@ struct mt76x02_dev { ...@@ -68,6 +79,8 @@ struct mt76x02_dev {
struct delayed_work cal_work; struct delayed_work cal_work;
struct delayed_work mac_work; struct delayed_work mac_work;
struct mt76x02_mac_stats stats;
atomic_t avg_ampdu_len;
u32 aggr_stats[32]; u32 aggr_stats[32];
struct sk_buff *beacons[8]; struct sk_buff *beacons[8];
...@@ -83,6 +96,10 @@ struct mt76x02_dev { ...@@ -83,6 +96,10 @@ struct mt76x02_dev {
s8 target_power_delta[2]; s8 target_power_delta[2];
bool enable_tpc; bool enable_tpc;
bool no_2ghz;
u8 agc_save;
u8 coverage_class; u8 coverage_class;
u8 slottime; u8 slottime;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册