Commit e6d8a817 authored by Larry Finger's avatar Larry Finger Committed by John W. Linville
Browse files

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: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 40d70dd1
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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;
+0 −11
Original line number Diff line number Diff line
@@ -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);