提交 228bdfca 编写于 作者: C Chaoming Li 提交者: John W. Linville

rtlwifi: rtl8192ce: Fix LED initialization

Driver rtl8192ce does not initialize the LED correctly.
Signed-off-by: NChaoming Li <chaoming_li@realsil.com.cn>
Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 f0bce44f
...@@ -251,14 +251,16 @@ void rtl_init_rfkill(struct ieee80211_hw *hw) ...@@ -251,14 +251,16 @@ void rtl_init_rfkill(struct ieee80211_hw *hw)
bool blocked; bool blocked;
u8 valid = 0; u8 valid = 0;
radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid); /*set init state to on */
rtlpriv->rfkill.rfkill_state = 1;
wiphy_rfkill_set_hw_state(hw->wiphy, 0);
/*set init state to that of switch */ radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid);
rtlpriv->rfkill.rfkill_state = radio_state;
printk(KERN_INFO "rtlwifi: wireless switch is %s\n",
rtlpriv->rfkill.rfkill_state ? "on" : "off");
if (valid) { if (valid) {
printk(KERN_INFO "rtlwifi: wireless switch is %s\n",
rtlpriv->rfkill.rfkill_state ? "on" : "off");
rtlpriv->rfkill.rfkill_state = radio_state; rtlpriv->rfkill.rfkill_state = radio_state;
blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1; blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1;
......
...@@ -1785,7 +1785,8 @@ void rtl_pci_disconnect(struct pci_dev *pdev) ...@@ -1785,7 +1785,8 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
rtl_pci_deinit(hw); rtl_pci_deinit(hw);
rtl_deinit_core(hw); rtl_deinit_core(hw);
rtlpriv->cfg->ops->deinit_sw_leds(hw); if (rtlpriv->cfg->ops->deinit_sw_leds)
rtlpriv->cfg->ops->deinit_sw_leds(hw);
_rtl_pci_io_handler_release(hw); _rtl_pci_io_handler_release(hw);
rtlpriv->cfg->ops->deinit_sw_vars(hw); rtlpriv->cfg->ops->deinit_sw_vars(hw);
......
...@@ -32,6 +32,14 @@ ...@@ -32,6 +32,14 @@
#include "reg.h" #include "reg.h"
#include "led.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) void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled)
{ {
u8 ledcfg; u8 ledcfg;
...@@ -97,10 +105,10 @@ void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled) ...@@ -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) 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, void _rtl92ce_sw_led_control(struct ieee80211_hw *hw,
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#define __RTL92CE_LED_H__ #define __RTL92CE_LED_H__
void rtl92ce_init_sw_leds(struct ieee80211_hw *hw); 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_on(struct ieee80211_hw *hw, struct rtl_led *pled);
void rtl92ce_sw_led_off(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); void rtl92ce_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction);
......
...@@ -131,7 +131,6 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = { ...@@ -131,7 +131,6 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = {
.enable_hw_sec = rtl92ce_enable_hw_security_config, .enable_hw_sec = rtl92ce_enable_hw_security_config,
.set_key = rtl92ce_set_key, .set_key = rtl92ce_set_key,
.init_sw_leds = rtl92ce_init_sw_leds, .init_sw_leds = rtl92ce_init_sw_leds,
.deinit_sw_leds = rtl92ce_deinit_sw_leds,
.get_bbreg = rtl92c_phy_query_bb_reg, .get_bbreg = rtl92c_phy_query_bb_reg,
.set_bbreg = rtl92c_phy_set_bb_reg, .set_bbreg = rtl92c_phy_set_bb_reg,
.get_rfreg = rtl92ce_phy_query_rf_reg, .get_rfreg = rtl92ce_phy_query_rf_reg,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册