Commit 0bf198eb authored by Herton Ronaldo Krzesinski's avatar Herton Ronaldo Krzesinski Committed by John W. Linville

rtl8187: consolidate anaparam on/off write sequences

There are repeated calls for anaparam on/off sequence in the code.
Consolidate the common code in rtl8187_set_anaparam and use it where
needed.
Signed-off-by: default avatarHerton Ronaldo Krzesinski <herton@mandriva.com.br>
Acked-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent fe332690
...@@ -553,6 +553,46 @@ static int rtl8187b_init_status_urb(struct ieee80211_hw *dev) ...@@ -553,6 +553,46 @@ static int rtl8187b_init_status_urb(struct ieee80211_hw *dev)
return ret; return ret;
} }
static void rtl8187_set_anaparam(struct rtl8187_priv *priv, bool rfon)
{
u32 anaparam, anaparam2;
u8 anaparam3, reg;
if (!priv->is_rtl8187b) {
if (rfon) {
anaparam = RTL8187_RTL8225_ANAPARAM_ON;
anaparam2 = RTL8187_RTL8225_ANAPARAM2_ON;
} else {
anaparam = RTL8187_RTL8225_ANAPARAM_OFF;
anaparam2 = RTL8187_RTL8225_ANAPARAM2_OFF;
}
} else {
if (rfon) {
anaparam = RTL8187B_RTL8225_ANAPARAM_ON;
anaparam2 = RTL8187B_RTL8225_ANAPARAM2_ON;
anaparam3 = RTL8187B_RTL8225_ANAPARAM3_ON;
} else {
anaparam = RTL8187B_RTL8225_ANAPARAM_OFF;
anaparam2 = RTL8187B_RTL8225_ANAPARAM2_OFF;
anaparam3 = RTL8187B_RTL8225_ANAPARAM3_OFF;
}
}
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD,
RTL818X_EEPROM_CMD_CONFIG);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
reg |= RTL818X_CONFIG3_ANAPARAM_WRITE;
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM, anaparam);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, anaparam2);
if (priv->is_rtl8187b)
rtl818x_iowrite8(priv, &priv->map->ANAPARAM3, anaparam3);
reg &= ~RTL818X_CONFIG3_ANAPARAM_WRITE;
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD,
RTL818X_EEPROM_CMD_NORMAL);
}
static int rtl8187_cmd_reset(struct ieee80211_hw *dev) static int rtl8187_cmd_reset(struct ieee80211_hw *dev)
{ {
struct rtl8187_priv *priv = dev->priv; struct rtl8187_priv *priv = dev->priv;
...@@ -603,19 +643,7 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev) ...@@ -603,19 +643,7 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev)
int res; int res;
/* reset */ /* reset */
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, rtl8187_set_anaparam(priv, true);
RTL818X_EEPROM_CMD_CONFIG);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg |
RTL818X_CONFIG3_ANAPARAM_WRITE);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM,
RTL8187_RTL8225_ANAPARAM_ON);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2,
RTL8187_RTL8225_ANAPARAM2_ON);
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg &
~RTL818X_CONFIG3_ANAPARAM_WRITE);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD,
RTL818X_EEPROM_CMD_NORMAL);
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0); rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0);
...@@ -629,17 +657,7 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev) ...@@ -629,17 +657,7 @@ static int rtl8187_init_hw(struct ieee80211_hw *dev)
if (res) if (res)
return res; return res;
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); rtl8187_set_anaparam(priv, true);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
rtl818x_iowrite8(priv, &priv->map->CONFIG3,
reg | RTL818X_CONFIG3_ANAPARAM_WRITE);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM,
RTL8187_RTL8225_ANAPARAM_ON);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2,
RTL8187_RTL8225_ANAPARAM2_ON);
rtl818x_iowrite8(priv, &priv->map->CONFIG3,
reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
/* setup card */ /* setup card */
rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0); rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0);
...@@ -740,22 +758,7 @@ static int rtl8187b_init_hw(struct ieee80211_hw *dev) ...@@ -740,22 +758,7 @@ static int rtl8187b_init_hw(struct ieee80211_hw *dev)
int res, i; int res, i;
u8 reg; u8 reg;
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, rtl8187_set_anaparam(priv, true);
RTL818X_EEPROM_CMD_CONFIG);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
reg |= RTL818X_CONFIG3_ANAPARAM_WRITE;
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2,
RTL8187B_RTL8225_ANAPARAM2_ON);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM,
RTL8187B_RTL8225_ANAPARAM_ON);
rtl818x_iowrite8(priv, &priv->map->ANAPARAM3,
RTL8187B_RTL8225_ANAPARAM3_ON);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
reg &= ~RTL818X_CONFIG3_ANAPARAM_WRITE;
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD,
RTL818X_EEPROM_CMD_NORMAL);
/* Reset PLL sequence on 8187B. Realtek note: reduces power /* Reset PLL sequence on 8187B. Realtek note: reduces power
* consumption about 30 mA */ * consumption about 30 mA */
...@@ -1006,6 +1009,7 @@ static void rtl8187_stop(struct ieee80211_hw *dev) ...@@ -1006,6 +1009,7 @@ static void rtl8187_stop(struct ieee80211_hw *dev)
rtl818x_iowrite8(priv, &priv->map->CMD, reg); rtl818x_iowrite8(priv, &priv->map->CMD, reg);
priv->rf->stop(dev); priv->rf->stop(dev);
rtl8187_set_anaparam(priv, false);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG4); reg = rtl818x_ioread8(priv, &priv->map->CONFIG4);
......
...@@ -898,29 +898,7 @@ static void rtl8225z2_b_rf_init(struct ieee80211_hw *dev) ...@@ -898,29 +898,7 @@ static void rtl8225z2_b_rf_init(struct ieee80211_hw *dev)
static void rtl8225_rf_stop(struct ieee80211_hw *dev) static void rtl8225_rf_stop(struct ieee80211_hw *dev)
{ {
u8 reg;
struct rtl8187_priv *priv = dev->priv;
rtl8225_write(dev, 0x4, 0x1f); rtl8225_write(dev, 0x4, 0x1f);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | RTL818X_CONFIG3_ANAPARAM_WRITE);
if (!priv->is_rtl8187b) {
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2,
RTL8187_RTL8225_ANAPARAM2_OFF);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM,
RTL8187_RTL8225_ANAPARAM_OFF);
} else {
rtl818x_iowrite32(priv, &priv->map->ANAPARAM2,
RTL8187B_RTL8225_ANAPARAM2_OFF);
rtl818x_iowrite32(priv, &priv->map->ANAPARAM,
RTL8187B_RTL8225_ANAPARAM_OFF);
rtl818x_iowrite8(priv, &priv->map->ANAPARAM3,
RTL8187B_RTL8225_ANAPARAM3_OFF);
}
rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE);
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
} }
static void rtl8225_rf_set_channel(struct ieee80211_hw *dev, static void rtl8225_rf_set_channel(struct ieee80211_hw *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