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

Commit 228bdfca authored by Chaoming Li's avatar Chaoming Li Committed by John W. Linville
Browse files

rtlwifi: rtl8192ce: Fix LED initialization



Driver rtl8192ce does not initialize the LED correctly.

Signed-off-by: default avatarChaoming Li <chaoming_li@realsil.com.cn>
Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f0bce44f
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -251,14 +251,16 @@ void rtl_init_rfkill(struct ieee80211_hw *hw)
	bool blocked;
	u8 valid = 0;

	/*set init state to on */
	rtlpriv->rfkill.rfkill_state = 1;
	wiphy_rfkill_set_hw_state(hw->wiphy, 0);

	radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid);

	/*set init state to that of switch */
	rtlpriv->rfkill.rfkill_state = radio_state;
	if (valid) {
		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;
+2 −1
Original line number Diff line number Diff line
@@ -1785,6 +1785,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev)

	rtl_pci_deinit(hw);
	rtl_deinit_core(hw);
	if (rtlpriv->cfg->ops->deinit_sw_leds)
		rtlpriv->cfg->ops->deinit_sw_leds(hw);
	_rtl_pci_io_handler_release(hw);
	rtlpriv->cfg->ops->deinit_sw_vars(hw);
+11 −3
Original line number Diff line number Diff line
@@ -32,6 +32,14 @@
#include "reg.h"
#include "led.h"

static void _rtl92ce_init_led(struct ieee80211_hw *hw,
			      struct rtl_led *pled, enum rtl_led_pin ledpin)
{
	pled->hw = hw;
	pled->ledpin = ledpin;
	pled->ledon = false;
}

void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled)
{
	u8 ledcfg;
@@ -97,10 +105,10 @@ void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)

void rtl92ce_init_sw_leds(struct ieee80211_hw *hw)
{
}
	struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);

void rtl92ce_deinit_sw_leds(struct ieee80211_hw *hw)
{
	_rtl92ce_init_led(hw, &(pcipriv->ledctl.sw_led0), LED_PIN_LED0);
	_rtl92ce_init_led(hw, &(pcipriv->ledctl.sw_led1), LED_PIN_LED1);
}

void _rtl92ce_sw_led_control(struct ieee80211_hw *hw,
+0 −1
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@
#define __RTL92CE_LED_H__

void rtl92ce_init_sw_leds(struct ieee80211_hw *hw);
void rtl92ce_deinit_sw_leds(struct ieee80211_hw *hw);
void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled);
void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled);
void rtl92ce_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction);
+0 −1
Original line number Diff line number Diff line
@@ -131,7 +131,6 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = {
	.enable_hw_sec = rtl92ce_enable_hw_security_config,
	.set_key = rtl92ce_set_key,
	.init_sw_leds = rtl92ce_init_sw_leds,
	.deinit_sw_leds = rtl92ce_deinit_sw_leds,
	.get_bbreg = rtl92c_phy_query_bb_reg,
	.set_bbreg = rtl92c_phy_set_bb_reg,
	.get_rfreg = rtl92ce_phy_query_rf_reg,