Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1026df8 authored by Andrea Merello's avatar Andrea Merello Committed by John W. Linville
Browse files

rtl8180: config carbus register for rtl8187se



configuration of carbus-related registers is different for
rtl8187se.
Introduce a dedicated function that does it for all cards in the
proper way

Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 3ee44d60
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -601,6 +601,26 @@ static void rtl8180_conf_basic_rates(struct ieee80211_hw *dev,
	}
}

static void rtl8180_config_cardbus(struct ieee80211_hw *dev)
{
	struct rtl8180_priv *priv = dev->priv;
	u16 reg16;
	u8 reg8;

	reg8 = rtl818x_ioread8(priv, &priv->map->CONFIG3);
	reg8 |= 1 << 1;
	rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg8);

	if (priv->chip_family == RTL818X_CHIP_FAMILY_RTL8187SE) {
		rtl818x_iowrite16(priv, FEMR_SE, 0xffff);
	} else {
		reg16 = rtl818x_ioread16(priv, &priv->map->FEMR);
			reg16 |= (1 << 15) | (1 << 14) | (1 << 4);
		rtl818x_iowrite16(priv, &priv->map->FEMR, reg16);
	}

}

static int rtl8180_init_hw(struct ieee80211_hw *dev)
{
	struct rtl8180_priv *priv = dev->priv;
@@ -632,13 +652,7 @@ static int rtl8180_init_hw(struct ieee80211_hw *dev)
	msleep(200);

	if (rtl818x_ioread8(priv, &priv->map->CONFIG3) & (1 << 3)) {
		/* For cardbus */
		reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
		reg |= 1 << 1;
		rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg);
		reg = rtl818x_ioread16(priv, &priv->map->FEMR);
		reg |= (1 << 15) | (1 << 14) | (1 << 4);
		rtl818x_iowrite16(priv, &priv->map->FEMR, reg);
		rtl8180_config_cardbus(dev);
	}

	rtl818x_iowrite8(priv, &priv->map->MSR, 0);