aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2010-12-21 19:40:40 -0600
committerJohn W. Linville <linville@tuxdriver.com>2010-12-22 15:43:31 -0500
commite6d8a817d00793eecd063b1548bbc954ab62b124 (patch)
tree3a39436d74d406d43f2443548b59d6773b2b442a /drivers/net/wireless/rtlwifi
parentrndis_wlan: add support for set_power_mgmt (diff)
downloadlinux-dev-e6d8a817d00793eecd063b1548bbc954ab62b124.tar.xz
linux-dev-e6d8a817d00793eecd063b1548bbc954ab62b124.zip
rtlwifi: rtl8192ce: Fix driver problem when radio switch off at module load
If the radio enable switch is off when the driver is loaded, it is not possible to get radio output until the driver is unloaded and reloaded with the switch on. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
-rw-r--r--drivers/net/wireless/rtlwifi/base.c12
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192ce/hw.c11
2 files changed, 5 insertions, 18 deletions
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c
index f6cc07369d75..cf0b73e51fc2 100644
--- a/drivers/net/wireless/rtlwifi/base.c
+++ b/drivers/net/wireless/rtlwifi/base.c
@@ -251,16 +251,14 @@ void rtl_init_rfkill(struct ieee80211_hw *hw)
bool blocked;
u8 valid = 0;
- /*set init state to rf on */
- rtlpriv->rfkill.rfkill_state = 1;
-
radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid);
- if (valid) {
- RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG,
- (KERN_INFO "wireless switch is %s\n",
- rtlpriv->rfkill.rfkill_state ? "on" : "off"));
+ /*set init state to that of switch */
+ rtlpriv->rfkill.rfkill_state = radio_state;
+ printk(KERN_INFO "rtlwifi: wireless switch is %s\n",
+ rtlpriv->rfkill.rfkill_state ? "on" : "off");
+ if (valid) {
rtlpriv->rfkill.rfkill_state = radio_state;
blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1;
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
index 1266dbe44176..1c41a0c93506 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
@@ -962,17 +962,6 @@ int rtl92ce_hw_init(struct ieee80211_hw *hw)
rtl_cam_reset_all_entry(hw);
rtl92ce_enable_hw_security_config(hw);
ppsc->rfpwr_state = ERFON;
- tmp_u1b = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG)&(~BIT(3));
- rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, tmp_u1b);
- tmp_u1b = rtl_read_byte(rtlpriv, REG_GPIO_IO_SEL);
- ppsc->rfoff_reason |= (tmp_u1b & BIT(3)) ? 0 : RF_CHANGE_BY_HW;
- if (ppsc->rfoff_reason > RF_CHANGE_BY_PS)
- rtl_ps_set_rf_state(hw, ERFOFF, ppsc->rfoff_reason, true);
- else {
- ppsc->rfpwr_state = ERFON;
- ppsc->rfoff_reason = 0;
- rtlpriv->cfg->ops->led_control(hw, LED_CTL_POWER_ON);
- }
rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr);
_rtl92ce_enable_aspm_back_door(hw);
rtlpriv->intf_ops->enable_aspm(hw);