rtl8180: introduce functions to enable/disable ints and add support for rtl8187se

This patch introduces two dedicated functions for enabling and
disabling ints.
Support for rtl8187se is also added to them

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Andrea Merello 2014-03-26 21:00:24 +01:00 committed by John W. Linville
parent a373ebcb5a
commit 732c893206
1 changed files with 33 additions and 3 deletions

View File

@ -463,6 +463,36 @@ void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam)
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
}
static void rtl8180_int_enable(struct ieee80211_hw *dev)
{
struct rtl8180_priv *priv = dev->priv;
if (priv->chip_family == RTL818X_CHIP_FAMILY_RTL8187SE) {
rtl818x_iowrite32(priv, &priv->map->IMR, IMR_TMGDOK |
IMR_TBDER | IMR_THPDER |
IMR_THPDER | IMR_THPDOK |
IMR_TVODER | IMR_TVODOK |
IMR_TVIDER | IMR_TVIDOK |
IMR_TBEDER | IMR_TBEDOK |
IMR_TBKDER | IMR_TBKDOK |
IMR_RDU | IMR_RER |
IMR_ROK | IMR_RQOSOK);
} else {
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF);
}
}
static void rtl8180_int_disable(struct ieee80211_hw *dev)
{
struct rtl8180_priv *priv = dev->priv;
if (priv->chip_family == RTL818X_CHIP_FAMILY_RTL8187SE) {
rtl818x_iowrite32(priv, &priv->map->IMR, 0);
} else {
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0);
}
}
static void rtl8180_conf_basic_rates(struct ieee80211_hw *dev,
u32 rates_mask)
{
@ -507,7 +537,7 @@ static int rtl8180_init_hw(struct ieee80211_hw *dev)
msleep(10);
/* reset */
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0);
rtl8180_int_disable(dev);
rtl818x_ioread8(priv, &priv->map->CMD);
reg = rtl818x_ioread8(priv, &priv->map->CMD);
@ -747,7 +777,7 @@ static int rtl8180_start(struct ieee80211_hw *dev)
goto err_free_rings;
}
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF);
rtl8180_int_enable(dev);
rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0);
rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0);
@ -840,7 +870,7 @@ static void rtl8180_stop(struct ieee80211_hw *dev)
u8 reg;
int i;
rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0);
rtl8180_int_disable(dev);
reg = rtl818x_ioread8(priv, &priv->map->CMD);
reg &= ~RTL818X_CMD_TX_ENABLE;