summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2010-12-22 01:40:40 (GMT)
committerJohn W. Linville <linville@tuxdriver.com>2010-12-22 20:43:31 (GMT)
commite6d8a817d00793eecd063b1548bbc954ab62b124 (patch)
tree3a39436d74d406d43f2443548b59d6773b2b442a
parent40d70dd12200ffeacfe9caaa8242e3ad2995bb5d (diff)
downloadlinux-fsl-qoriq-e6d8a817d00793eecd063b1548bbc954ab62b124.tar.xz
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>
-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 f6cc073..cf0b73e 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 1266dbe..1c41a0c 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);