Skip to content

Commit

Permalink
rtlwifi: rtl8192ce: Fix driver problem when radio switch off at modul…
Browse files Browse the repository at this point in the history
…e 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>
  • Loading branch information
Larry Finger authored and John W. Linville committed Dec 22, 2010
1 parent 40d70dd commit e6d8a81
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 18 deletions.
12 changes: 5 additions & 7 deletions drivers/net/wireless/rtlwifi/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
11 changes: 0 additions & 11 deletions drivers/net/wireless/rtlwifi/rtl8192ce/hw.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit e6d8a81

Please sign in to comment.