Commit 9c410782 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76x0: phy: use proper name convention

Use mt76x0_phy as prefix for routines in mt76x0/phy.c
Moreover use mt76x0_rf_set to enable vco calibration in
mt76x0_phy_vco_cal
Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 989582e5
...@@ -113,7 +113,7 @@ static int mt76x0_init_bbp(struct mt76x02_dev *dev) ...@@ -113,7 +113,7 @@ static int mt76x0_init_bbp(struct mt76x02_dev *dev)
{ {
int ret, i; int ret, i;
ret = mt76x0_wait_bbp_ready(dev); ret = mt76x0_phy_wait_bbp_ready(dev);
if (ret) if (ret)
return ret; return ret;
......
...@@ -65,7 +65,7 @@ int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value); ...@@ -65,7 +65,7 @@ int mt76x0_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
/* PHY */ /* PHY */
void mt76x0_phy_init(struct mt76x02_dev *dev); void mt76x0_phy_init(struct mt76x02_dev *dev);
int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev); int mt76x0_phy_wait_bbp_ready(struct mt76x02_dev *dev);
int mt76x0_phy_set_channel(struct mt76x02_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 mt76x02_dev *dev); void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev);
......
...@@ -110,7 +110,7 @@ static int mt76x0_rf_csr_rr(struct mt76x02_dev *dev, u32 offset) ...@@ -110,7 +110,7 @@ static int mt76x0_rf_csr_rr(struct mt76x02_dev *dev, u32 offset)
} }
static int static int
rf_wr(struct mt76x02_dev *dev, u32 offset, u8 val) mt76x0_rf_wr(struct mt76x02_dev *dev, u32 offset, u8 val)
{ {
if (mt76_is_usb(dev)) { if (mt76_is_usb(dev)) {
struct mt76_reg_pair pair = { struct mt76_reg_pair pair = {
...@@ -126,8 +126,7 @@ rf_wr(struct mt76x02_dev *dev, u32 offset, u8 val) ...@@ -126,8 +126,7 @@ rf_wr(struct mt76x02_dev *dev, u32 offset, u8 val)
} }
} }
static int static int mt76x0_rf_rr(struct mt76x02_dev *dev, u32 offset)
rf_rr(struct mt76x02_dev *dev, u32 offset)
{ {
int ret; int ret;
u32 val; u32 val;
...@@ -149,38 +148,38 @@ rf_rr(struct mt76x02_dev *dev, u32 offset) ...@@ -149,38 +148,38 @@ rf_rr(struct mt76x02_dev *dev, u32 offset)
} }
static int static int
rf_rmw(struct mt76x02_dev *dev, u32 offset, u8 mask, u8 val) mt76x0_rf_rmw(struct mt76x02_dev *dev, u32 offset, u8 mask, u8 val)
{ {
int ret; int ret;
ret = rf_rr(dev, offset); ret = mt76x0_rf_rr(dev, offset);
if (ret < 0) if (ret < 0)
return ret; return ret;
val |= ret & ~mask; val |= ret & ~mask;
ret = rf_wr(dev, offset, val);
if (ret)
return ret;
return val; ret = mt76x0_rf_wr(dev, offset, val);
return ret ? ret : val;
} }
static int static int
rf_set(struct mt76x02_dev *dev, u32 offset, u8 val) mt76x0_rf_set(struct mt76x02_dev *dev, u32 offset, u8 val)
{ {
return rf_rmw(dev, offset, 0, val); return mt76x0_rf_rmw(dev, offset, 0, val);
} }
#if 0 #if 0
static int static int
rf_clear(struct mt76x02_dev *dev, u32 offset, u8 mask) rf_clear(struct mt76x02_dev *dev, u32 offset, u8 mask)
{ {
return rf_rmw(dev, offset, mask, 0); return mt76x0_rf_rmw(dev, offset, mask, 0);
} }
#endif #endif
static void static void
mt76x0_rf_csr_wr_rp(struct mt76x02_dev *dev, const struct mt76_reg_pair *data, mt76x0_phy_rf_csr_wr_rp(struct mt76x02_dev *dev,
int n) const struct mt76_reg_pair *data,
int n)
{ {
while (n-- > 0) { while (n-- > 0) {
mt76x0_rf_csr_wr(dev, data->reg, data->value); mt76x0_rf_csr_wr(dev, data->reg, data->value);
...@@ -190,12 +189,12 @@ mt76x0_rf_csr_wr_rp(struct mt76x02_dev *dev, const struct mt76_reg_pair *data, ...@@ -190,12 +189,12 @@ mt76x0_rf_csr_wr_rp(struct mt76x02_dev *dev, const struct mt76_reg_pair *data,
#define RF_RANDOM_WRITE(dev, tab) do { \ #define RF_RANDOM_WRITE(dev, tab) do { \
if (mt76_is_mmio(dev)) \ if (mt76_is_mmio(dev)) \
mt76x0_rf_csr_wr_rp(dev, tab, ARRAY_SIZE(tab)); \ mt76x0_phy_rf_csr_wr_rp(dev, tab, ARRAY_SIZE(tab)); \
else \ else \
mt76_wr_rp(dev, MT_MCU_MEMMAP_RF, tab, ARRAY_SIZE(tab));\ mt76_wr_rp(dev, MT_MCU_MEMMAP_RF, tab, ARRAY_SIZE(tab));\
} while (0) } while (0)
int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev) int mt76x0_phy_wait_bbp_ready(struct mt76x02_dev *dev)
{ {
int i = 20; int i = 20;
u32 val; u32 val;
...@@ -215,11 +214,11 @@ int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev) ...@@ -215,11 +214,11 @@ int mt76x0_wait_bbp_ready(struct mt76x02_dev *dev)
return 0; return 0;
} }
static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel) static void mt76x0_phy_vco_cal(struct mt76x02_dev *dev, u8 channel)
{ {
u8 val; u8 val;
val = rf_rr(dev, MT_RF(0, 4)); val = mt76x0_rf_rr(dev, MT_RF(0, 4));
if ((val & 0x70) != 0x30) if ((val & 0x70) != 0x30)
return; return;
...@@ -235,20 +234,20 @@ static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel) ...@@ -235,20 +234,20 @@ static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel)
* 40MHz channel: 101 * 40MHz channel: 101
* 20MHz channel: 100 * 20MHz channel: 100
*/ */
val = rf_rr(dev, MT_RF(0, 6)); val = mt76x0_rf_rr(dev, MT_RF(0, 6));
val &= ~0xf; val &= ~0xf;
val |= 0x09; val |= 0x09;
rf_wr(dev, MT_RF(0, 6), val); mt76x0_rf_wr(dev, MT_RF(0, 6), val);
val = rf_rr(dev, MT_RF(0, 5)); val = mt76x0_rf_rr(dev, MT_RF(0, 5));
if (val != 0) if (val != 0)
rf_wr(dev, MT_RF(0, 5), 0x0); mt76x0_rf_wr(dev, MT_RF(0, 5), 0x0);
val = rf_rr(dev, MT_RF(0, 4)); val = mt76x0_rf_rr(dev, MT_RF(0, 4));
val &= ~0x07; val &= ~0x07;
rf_wr(dev, MT_RF(0, 4), val); mt76x0_rf_wr(dev, MT_RF(0, 4), val);
val = rf_rr(dev, MT_RF(0, 3)); val = mt76x0_rf_rr(dev, MT_RF(0, 3));
val &= ~0x77; val &= ~0x77;
if (channel == 1 || channel == 7 || channel == 9 || channel >= 13) { if (channel == 1 || channel == 7 || channel == 9 || channel >= 13) {
val |= 0x63; val |= 0x63;
...@@ -261,12 +260,9 @@ static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel) ...@@ -261,12 +260,9 @@ static void mt76x0_vco_cal(struct mt76x02_dev *dev, u8 channel)
WARN(1, "Unknown channel %u\n", channel); WARN(1, "Unknown channel %u\n", channel);
return; return;
} }
rf_wr(dev, MT_RF(0, 3), val); mt76x0_rf_wr(dev, MT_RF(0, 3), val);
/* TODO replace by mt76x0_rf_set(dev, MT_RF(0, 4), BIT(7)); */ mt76x0_rf_set(dev, MT_RF(0, 4), BIT(7));
val = rf_rr(dev, MT_RF(0, 4));
val = ((val & ~(0x80)) | 0x80);
rf_wr(dev, MT_RF(0, 4), val);
msleep(2); msleep(2);
} }
...@@ -278,8 +274,8 @@ mt76x0_phy_set_band(struct mt76x02_dev *dev, enum nl80211_band band) ...@@ -278,8 +274,8 @@ mt76x0_phy_set_band(struct mt76x02_dev *dev, enum nl80211_band band)
case NL80211_BAND_2GHZ: case NL80211_BAND_2GHZ:
RF_RANDOM_WRITE(dev, mt76x0_rf_2g_channel_0_tab); RF_RANDOM_WRITE(dev, mt76x0_rf_2g_channel_0_tab);
rf_wr(dev, MT_RF(5, 0), 0x45); mt76x0_rf_wr(dev, MT_RF(5, 0), 0x45);
rf_wr(dev, MT_RF(6, 0), 0x44); mt76x0_rf_wr(dev, MT_RF(6, 0), 0x44);
mt76_wr(dev, MT_TX_ALC_VGA3, 0x00050007); mt76_wr(dev, MT_TX_ALC_VGA3, 0x00050007);
mt76_wr(dev, MT_TX0_RF_GAIN_CORR, 0x003E0002); mt76_wr(dev, MT_TX0_RF_GAIN_CORR, 0x003E0002);
...@@ -287,8 +283,8 @@ mt76x0_phy_set_band(struct mt76x02_dev *dev, enum nl80211_band band) ...@@ -287,8 +283,8 @@ mt76x0_phy_set_band(struct mt76x02_dev *dev, enum nl80211_band band)
case NL80211_BAND_5GHZ: case NL80211_BAND_5GHZ:
RF_RANDOM_WRITE(dev, mt76x0_rf_5g_channel_0_tab); RF_RANDOM_WRITE(dev, mt76x0_rf_5g_channel_0_tab);
rf_wr(dev, MT_RF(5, 0), 0x44); mt76x0_rf_wr(dev, MT_RF(5, 0), 0x44);
rf_wr(dev, MT_RF(6, 0), 0x45); mt76x0_rf_wr(dev, MT_RF(6, 0), 0x45);
mt76_wr(dev, MT_TX_ALC_VGA3, 0x00000005); mt76_wr(dev, MT_TX_ALC_VGA3, 0x00000005);
mt76_wr(dev, MT_TX0_RF_GAIN_CORR, 0x01010102); mt76_wr(dev, MT_TX0_RF_GAIN_CORR, 0x01010102);
...@@ -326,103 +322,103 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban ...@@ -326,103 +322,103 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban
else else
freq_item = &(mt76x0_frequency_plan[i]); freq_item = &(mt76x0_frequency_plan[i]);
rf_wr(dev, MT_RF(0, 37), freq_item->pllR37); mt76x0_rf_wr(dev, MT_RF(0, 37), freq_item->pllR37);
rf_wr(dev, MT_RF(0, 36), freq_item->pllR36); mt76x0_rf_wr(dev, MT_RF(0, 36), freq_item->pllR36);
rf_wr(dev, MT_RF(0, 35), freq_item->pllR35); mt76x0_rf_wr(dev, MT_RF(0, 35), freq_item->pllR35);
rf_wr(dev, MT_RF(0, 34), freq_item->pllR34); mt76x0_rf_wr(dev, MT_RF(0, 34), freq_item->pllR34);
rf_wr(dev, MT_RF(0, 33), freq_item->pllR33); mt76x0_rf_wr(dev, MT_RF(0, 33), freq_item->pllR33);
rf_val = rf_rr(dev, MT_RF(0, 32)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 32));
rf_val &= ~0xE0; rf_val &= ~0xE0;
rf_val |= freq_item->pllR32_b7b5; rf_val |= freq_item->pllR32_b7b5;
rf_wr(dev, MT_RF(0, 32), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 32), rf_val);
/* R32<4:0> pll_den: (Denomina - 8) */ /* R32<4:0> pll_den: (Denomina - 8) */
rf_val = rf_rr(dev, MT_RF(0, 32)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 32));
rf_val &= ~0x1F; rf_val &= ~0x1F;
rf_val |= freq_item->pllR32_b4b0; rf_val |= freq_item->pllR32_b4b0;
rf_wr(dev, MT_RF(0, 32), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 32), rf_val);
/* R31<7:5> */ /* R31<7:5> */
rf_val = rf_rr(dev, MT_RF(0, 31)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 31));
rf_val &= ~0xE0; rf_val &= ~0xE0;
rf_val |= freq_item->pllR31_b7b5; rf_val |= freq_item->pllR31_b7b5;
rf_wr(dev, MT_RF(0, 31), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 31), rf_val);
/* R31<4:0> pll_k(Nominator) */ /* R31<4:0> pll_k(Nominator) */
rf_val = rf_rr(dev, MT_RF(0, 31)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 31));
rf_val &= ~0x1F; rf_val &= ~0x1F;
rf_val |= freq_item->pllR31_b4b0; rf_val |= freq_item->pllR31_b4b0;
rf_wr(dev, MT_RF(0, 31), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 31), rf_val);
/* R30<7> sdm_reset_n */ /* R30<7> sdm_reset_n */
rf_val = rf_rr(dev, MT_RF(0, 30)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 30));
rf_val &= ~0x80; rf_val &= ~0x80;
if (bSDM) { if (bSDM) {
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
rf_val |= 0x80; rf_val |= 0x80;
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
} else { } else {
rf_val |= freq_item->pllR30_b7; rf_val |= freq_item->pllR30_b7;
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
} }
/* R30<6:2> sdmmash_prbs,sin */ /* R30<6:2> sdmmash_prbs,sin */
rf_val = rf_rr(dev, MT_RF(0, 30)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 30));
rf_val &= ~0x7C; rf_val &= ~0x7C;
rf_val |= freq_item->pllR30_b6b2; rf_val |= freq_item->pllR30_b6b2;
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
/* R30<1> sdm_bp */ /* R30<1> sdm_bp */
rf_val = rf_rr(dev, MT_RF(0, 30)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 30));
rf_val &= ~0x02; rf_val &= ~0x02;
rf_val |= (freq_item->pllR30_b1 << 1); rf_val |= (freq_item->pllR30_b1 << 1);
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
/* R30<0> R29<7:0> (hex) pll_n */ /* R30<0> R29<7:0> (hex) pll_n */
rf_val = freq_item->pll_n & 0x00FF; rf_val = freq_item->pll_n & 0x00FF;
rf_wr(dev, MT_RF(0, 29), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 29), rf_val);
rf_val = rf_rr(dev, MT_RF(0, 30)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 30));
rf_val &= ~0x1; rf_val &= ~0x1;
rf_val |= ((freq_item->pll_n >> 8) & 0x0001); rf_val |= ((freq_item->pll_n >> 8) & 0x0001);
rf_wr(dev, MT_RF(0, 30), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 30), rf_val);
/* R28<7:6> isi_iso */ /* R28<7:6> isi_iso */
rf_val = rf_rr(dev, MT_RF(0, 28)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 28));
rf_val &= ~0xC0; rf_val &= ~0xC0;
rf_val |= freq_item->pllR28_b7b6; rf_val |= freq_item->pllR28_b7b6;
rf_wr(dev, MT_RF(0, 28), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 28), rf_val);
/* R28<5:4> pfd_dly */ /* R28<5:4> pfd_dly */
rf_val = rf_rr(dev, MT_RF(0, 28)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 28));
rf_val &= ~0x30; rf_val &= ~0x30;
rf_val |= freq_item->pllR28_b5b4; rf_val |= freq_item->pllR28_b5b4;
rf_wr(dev, MT_RF(0, 28), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 28), rf_val);
/* R28<3:2> clksel option */ /* R28<3:2> clksel option */
rf_val = rf_rr(dev, MT_RF(0, 28)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 28));
rf_val &= ~0x0C; rf_val &= ~0x0C;
rf_val |= freq_item->pllR28_b3b2; rf_val |= freq_item->pllR28_b3b2;
rf_wr(dev, MT_RF(0, 28), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 28), rf_val);
/* R28<1:0> R27<7:0> R26<7:0> (hex) sdm_k */ /* R28<1:0> R27<7:0> R26<7:0> (hex) sdm_k */
rf_val = freq_item->pll_sdm_k & 0x000000FF; rf_val = freq_item->pll_sdm_k & 0x000000FF;
rf_wr(dev, MT_RF(0, 26), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 26), rf_val);
rf_val = ((freq_item->pll_sdm_k >> 8) & 0x000000FF); rf_val = ((freq_item->pll_sdm_k >> 8) & 0x000000FF);
rf_wr(dev, MT_RF(0, 27), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 27), rf_val);
rf_val = rf_rr(dev, MT_RF(0, 28)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 28));
rf_val &= ~0x3; rf_val &= ~0x3;
rf_val |= ((freq_item->pll_sdm_k >> 16) & 0x0003); rf_val |= ((freq_item->pll_sdm_k >> 16) & 0x0003);
rf_wr(dev, MT_RF(0, 28), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 28), rf_val);
/* R24<1:0> xo_div */ /* R24<1:0> xo_div */
rf_val = rf_rr(dev, MT_RF(0, 24)); rf_val = mt76x0_rf_rr(dev, MT_RF(0, 24));
rf_val &= ~0x3; rf_val &= ~0x3;
rf_val |= freq_item->pllR24_b1b0; rf_val |= freq_item->pllR24_b1b0;
rf_wr(dev, MT_RF(0, 24), rf_val); mt76x0_rf_wr(dev, MT_RF(0, 24), rf_val);
break; break;
} }
...@@ -430,19 +426,22 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban ...@@ -430,19 +426,22 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban
for (i = 0; i < ARRAY_SIZE(mt76x0_rf_bw_switch_tab); i++) { for (i = 0; i < ARRAY_SIZE(mt76x0_rf_bw_switch_tab); i++) {
if (rf_bw == mt76x0_rf_bw_switch_tab[i].bw_band) { if (rf_bw == mt76x0_rf_bw_switch_tab[i].bw_band) {
rf_wr(dev, mt76x0_rf_bw_switch_tab[i].rf_bank_reg, mt76x0_rf_wr(dev,
mt76x0_rf_bw_switch_tab[i].value); mt76x0_rf_bw_switch_tab[i].rf_bank_reg,
mt76x0_rf_bw_switch_tab[i].value);
} else if ((rf_bw == (mt76x0_rf_bw_switch_tab[i].bw_band & 0xFF)) && } else if ((rf_bw == (mt76x0_rf_bw_switch_tab[i].bw_band & 0xFF)) &&
(rf_band & mt76x0_rf_bw_switch_tab[i].bw_band)) { (rf_band & mt76x0_rf_bw_switch_tab[i].bw_band)) {
rf_wr(dev, mt76x0_rf_bw_switch_tab[i].rf_bank_reg, mt76x0_rf_wr(dev,
mt76x0_rf_bw_switch_tab[i].value); mt76x0_rf_bw_switch_tab[i].rf_bank_reg,
mt76x0_rf_bw_switch_tab[i].value);
} }
} }
for (i = 0; i < ARRAY_SIZE(mt76x0_rf_band_switch_tab); i++) { for (i = 0; i < ARRAY_SIZE(mt76x0_rf_band_switch_tab); i++) {
if (mt76x0_rf_band_switch_tab[i].bw_band & rf_band) { if (mt76x0_rf_band_switch_tab[i].bw_band & rf_band) {
rf_wr(dev, mt76x0_rf_band_switch_tab[i].rf_bank_reg, mt76x0_rf_wr(dev,
mt76x0_rf_band_switch_tab[i].value); mt76x0_rf_band_switch_tab[i].rf_bank_reg,
mt76x0_rf_band_switch_tab[i].value);
} }
} }
...@@ -470,8 +469,9 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban ...@@ -470,8 +469,9 @@ mt76x0_phy_set_chan_rf_params(struct mt76x02_dev *dev, u8 channel, u16 rf_bw_ban
/* External PA */ /* External PA */
for (i = 0; i < ARRAY_SIZE(mt76x0_rf_ext_pa_tab); i++) for (i = 0; i < ARRAY_SIZE(mt76x0_rf_ext_pa_tab); i++)
if (mt76x0_rf_ext_pa_tab[i].bw_band & rf_band) if (mt76x0_rf_ext_pa_tab[i].bw_band & rf_band)
rf_wr(dev, mt76x0_rf_ext_pa_tab[i].rf_bank_reg, mt76x0_rf_wr(dev,
mt76x0_rf_ext_pa_tab[i].value); mt76x0_rf_ext_pa_tab[i].rf_bank_reg,
mt76x0_rf_ext_pa_tab[i].value);
} }
if (rf_band & RF_G_BAND) { if (rf_band & RF_G_BAND) {
...@@ -516,7 +516,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x02_dev *dev, u16 rf_bw_band) ...@@ -516,7 +516,7 @@ mt76x0_phy_set_chan_bbp_params(struct mt76x02_dev *dev, u16 rf_bw_band)
} }
} }
static void mt76x0_ant_select(struct mt76x02_dev *dev) static void mt76x0_phy_ant_select(struct mt76x02_dev *dev)
{ {
struct ieee80211_channel *chan = dev->mt76.chandef.chan; struct ieee80211_channel *chan = dev->mt76.chandef.chan;
...@@ -536,7 +536,7 @@ static void mt76x0_ant_select(struct mt76x02_dev *dev) ...@@ -536,7 +536,7 @@ static void mt76x0_ant_select(struct mt76x02_dev *dev)
} }
static void static void
mt76x0_bbp_set_bw(struct mt76x02_dev *dev, enum nl80211_chan_width width) mt76x0_phy_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;
...@@ -684,7 +684,7 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev, ...@@ -684,7 +684,7 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
} }
if (mt76_is_usb(dev)) { if (mt76_is_usb(dev)) {
mt76x0_bbp_set_bw(dev, chandef->width); mt76x0_phy_bbp_set_bw(dev, chandef->width);
} else { } else {
if (chandef->width == NL80211_CHAN_WIDTH_80 || if (chandef->width == NL80211_CHAN_WIDTH_80 ||
chandef->width == NL80211_CHAN_WIDTH_40) chandef->width == NL80211_CHAN_WIDTH_40)
...@@ -696,7 +696,7 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev, ...@@ -696,7 +696,7 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
mt76x02_phy_set_bw(dev, chandef->width, ch_group_index); mt76x02_phy_set_bw(dev, chandef->width, ch_group_index);
mt76x02_phy_set_band(dev, chandef->chan->band, mt76x02_phy_set_band(dev, chandef->chan->band,
ch_group_index & 1); ch_group_index & 1);
mt76x0_ant_select(dev); mt76x0_phy_ant_select(dev);
mt76_rmw(dev, MT_EXT_CCA_CFG, mt76_rmw(dev, MT_EXT_CCA_CFG,
(MT_EXT_CCA_CFG_CCA0 | (MT_EXT_CCA_CFG_CCA0 |
...@@ -722,10 +722,10 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev, ...@@ -722,10 +722,10 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev,
mt76x02_init_agc_gain(dev); mt76x02_init_agc_gain(dev);
if (mt76_is_usb(dev)) { if (mt76_is_usb(dev)) {
mt76x0_vco_cal(dev, channel); mt76x0_phy_vco_cal(dev, channel);
} else { } else {
/* enable vco */ /* enable vco */
rf_set(dev, MT_RF(0, 4), BIT(7)); mt76x0_rf_set(dev, MT_RF(0, 4), BIT(7));
} }
if (scan) if (scan)
...@@ -749,7 +749,7 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev) ...@@ -749,7 +749,7 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev)
mt76x02_mcu_calibrate(dev, MCU_CAL_R, 0, false); mt76x02_mcu_calibrate(dev, MCU_CAL_R, 0, false);
mt76x0_vco_cal(dev, channel); mt76x0_phy_vco_cal(dev, channel);
tx_alc = mt76_rr(dev, MT_TX_ALC_CFG_0); tx_alc = mt76_rr(dev, MT_TX_ALC_CFG_0);
mt76_wr(dev, MT_TX_ALC_CFG_0, 0); mt76_wr(dev, MT_TX_ALC_CFG_0, 0);
...@@ -774,18 +774,18 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev) ...@@ -774,18 +774,18 @@ void mt76x0_phy_recalibrate_after_assoc(struct mt76x02_dev *dev)
mt76x02_mcu_calibrate(dev, MCU_CAL_RXDCOC, 1, false); mt76x02_mcu_calibrate(dev, MCU_CAL_RXDCOC, 1, false);
} }
static void mt76x0_temp_sensor(struct mt76x02_dev *dev) static void mt76x0_phy_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;
s8 val; s8 val;
rf_b7_73 = rf_rr(dev, MT_RF(7, 73)); rf_b7_73 = mt76x0_rf_rr(dev, MT_RF(7, 73));
rf_b0_66 = rf_rr(dev, MT_RF(0, 66)); rf_b0_66 = mt76x0_rf_rr(dev, MT_RF(0, 66));
rf_b0_67 = rf_rr(dev, MT_RF(0, 67)); rf_b0_67 = mt76x0_rf_rr(dev, MT_RF(0, 67));
rf_wr(dev, MT_RF(7, 73), 0x02); mt76x0_rf_wr(dev, MT_RF(7, 73), 0x02);
rf_wr(dev, MT_RF(0, 66), 0x23); mt76x0_rf_wr(dev, MT_RF(0, 66), 0x23);
rf_wr(dev, MT_RF(0, 67), 0x01); mt76x0_rf_wr(dev, MT_RF(0, 67), 0x01);
mt76_wr(dev, MT_BBP(CORE, 34), 0x00080055); mt76_wr(dev, MT_BBP(CORE, 34), 0x00080055);
...@@ -809,9 +809,9 @@ static void mt76x0_temp_sensor(struct mt76x02_dev *dev) ...@@ -809,9 +809,9 @@ static void mt76x0_temp_sensor(struct mt76x02_dev *dev)
} }
done: done:
rf_wr(dev, MT_RF(7, 73), rf_b7_73); mt76x0_rf_wr(dev, MT_RF(7, 73), rf_b7_73);
rf_wr(dev, MT_RF(0, 66), rf_b0_66); mt76x0_rf_wr(dev, MT_RF(0, 66), rf_b0_66);
rf_wr(dev, MT_RF(0, 67), rf_b0_67); mt76x0_rf_wr(dev, MT_RF(0, 67), rf_b0_67);
} }
static void mt76x0_phy_set_gain_val(struct mt76x02_dev *dev) static void mt76x0_phy_set_gain_val(struct mt76x02_dev *dev)
...@@ -861,13 +861,13 @@ static void mt76x0_phy_calibration_work(struct work_struct *work) ...@@ -861,13 +861,13 @@ static void mt76x0_phy_calibration_work(struct work_struct *work)
mt76x0_phy_update_channel_gain(dev); mt76x0_phy_update_channel_gain(dev);
if (!mt76x0_tssi_enabled(dev)) if (!mt76x0_tssi_enabled(dev))
mt76x0_temp_sensor(dev); mt76x0_phy_temp_sensor(dev);
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work, ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work,
MT_CALIBRATE_INTERVAL); MT_CALIBRATE_INTERVAL);
} }
static void mt76x0_rf_init(struct mt76x02_dev *dev) static void mt76x0_phy_rf_init(struct mt76x02_dev *dev)
{ {
int i; int i;
u8 val; u8 val;
...@@ -881,16 +881,16 @@ static void mt76x0_rf_init(struct mt76x02_dev *dev) ...@@ -881,16 +881,16 @@ static void mt76x0_rf_init(struct mt76x02_dev *dev)
const struct mt76x0_rf_switch_item *item = &mt76x0_rf_bw_switch_tab[i]; const struct mt76x0_rf_switch_item *item = &mt76x0_rf_bw_switch_tab[i];
if (item->bw_band == RF_BW_20) if (item->bw_band == RF_BW_20)
rf_wr(dev, item->rf_bank_reg, item->value); mt76x0_rf_wr(dev, item->rf_bank_reg, item->value);
else if (((RF_G_BAND | RF_BW_20) & item->bw_band) == (RF_G_BAND | RF_BW_20)) else if (((RF_G_BAND | RF_BW_20) & item->bw_band) == (RF_G_BAND | RF_BW_20))
rf_wr(dev, item->rf_bank_reg, item->value); mt76x0_rf_wr(dev, item->rf_bank_reg, item->value);
} }
for (i = 0; i < ARRAY_SIZE(mt76x0_rf_band_switch_tab); i++) { for (i = 0; i < ARRAY_SIZE(mt76x0_rf_band_switch_tab); i++) {
if (mt76x0_rf_band_switch_tab[i].bw_band & RF_G_BAND) { if (mt76x0_rf_band_switch_tab[i].bw_band & RF_G_BAND) {
rf_wr(dev, mt76x0_rf_wr(dev,
mt76x0_rf_band_switch_tab[i].rf_bank_reg, mt76x0_rf_band_switch_tab[i].rf_bank_reg,
mt76x0_rf_band_switch_tab[i].value); mt76x0_rf_band_switch_tab[i].value);
} }
} }
...@@ -899,32 +899,32 @@ static void mt76x0_rf_init(struct mt76x02_dev *dev) ...@@ -899,32 +899,32 @@ static void mt76x0_rf_init(struct mt76x02_dev *dev)
E1: B0.R22<6:0>: xo_cxo<6:0> E1: B0.R22<6:0>: xo_cxo<6:0>
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), mt76x0_rf_wr(dev, MT_RF(0, 22),
min_t(u8, dev->cal.rx.freq_offset, 0xbf)); min_t(u8, dev->cal.rx.freq_offset, 0xbf));
val = rf_rr(dev, MT_RF(0, 22)); val = mt76x0_rf_rr(dev, MT_RF(0, 22));
/* /*
Reset the DAC (Set B0.R73<7>=1, then set B0.R73<7>=0, and then set B0.R73<7>) during power up. Reset the DAC (Set B0.R73<7>=1, then set B0.R73<7>=0, and then set B0.R73<7>) during power up.
*/ */
val = rf_rr(dev, MT_RF(0, 73)); val = mt76x0_rf_rr(dev, MT_RF(0, 73));
val |= 0x80; val |= 0x80;
rf_wr(dev, MT_RF(0, 73), val); mt76x0_rf_wr(dev, MT_RF(0, 73), val);
val &= ~0x80; val &= ~0x80;
rf_wr(dev, MT_RF(0, 73), val); mt76x0_rf_wr(dev, MT_RF(0, 73), val);
val |= 0x80; val |= 0x80;
rf_wr(dev, MT_RF(0, 73), val); mt76x0_rf_wr(dev, MT_RF(0, 73), val);
/* /*
vcocal_en (initiate VCO calibration (reset after completion)) - It should be at the end of RF configuration. vcocal_en (initiate VCO calibration (reset after completion)) - It should be at the end of RF configuration.
*/ */
rf_set(dev, MT_RF(0, 4), 0x80); mt76x0_rf_set(dev, MT_RF(0, 4), 0x80);
} }
void mt76x0_phy_init(struct mt76x02_dev *dev) void mt76x0_phy_init(struct mt76x02_dev *dev)
{ {
INIT_DELAYED_WORK(&dev->cal_work, mt76x0_phy_calibration_work); INIT_DELAYED_WORK(&dev->cal_work, mt76x0_phy_calibration_work);
mt76x0_rf_init(dev); mt76x0_phy_rf_init(dev);
mt76x02_phy_set_rxpath(dev); mt76x02_phy_set_rxpath(dev);
mt76x02_phy_set_txdac(dev); mt76x02_phy_set_txdac(dev);
} }
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