aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorChaoming Li <chaoming_li@realsil.com.cn>2011-04-10 19:30:23 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-12 16:59:34 -0400
commit228bdfca9a09c1263c24509b4bc23a67be168e1a (patch)
tree4e7d1a0e12213f75213b19dbb5956548c024acf6 /drivers/net
parentf0bce44f5f2eb37dba58aa992d0c58da92ded201 (diff)
rtlwifi: rtl8192ce: Fix LED initialization
Driver rtl8192ce does not initialize the LED correctly. Signed-off-by: Chaoming Li <chaoming_li@realsil.com.cn> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/rtlwifi/base.c12
-rw-r--r--drivers/net/wireless/rtlwifi/pci.c3
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192ce/led.c14
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192ce/led.h1
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192ce/sw.c1
5 files changed, 20 insertions, 11 deletions
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c
index dd5318ed787..9477785f116 100644
--- a/drivers/net/wireless/rtlwifi/base.c
+++ b/drivers/net/wireless/rtlwifi/base.c
@@ -251,14 +251,16 @@ void rtl_init_rfkill(struct ieee80211_hw *hw)
251 bool blocked; 251 bool blocked;
252 u8 valid = 0; 252 u8 valid = 0;
253 253
254 radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid); 254 /*set init state to on */
255 rtlpriv->rfkill.rfkill_state = 1;
256 wiphy_rfkill_set_hw_state(hw->wiphy, 0);
255 257
256 /*set init state to that of switch */ 258 radio_state = rtlpriv->cfg->ops->radio_onoff_checking(hw, &valid);
257 rtlpriv->rfkill.rfkill_state = radio_state;
258 printk(KERN_INFO "rtlwifi: wireless switch is %s\n",
259 rtlpriv->rfkill.rfkill_state ? "on" : "off");
260 259
261 if (valid) { 260 if (valid) {
261 printk(KERN_INFO "rtlwifi: wireless switch is %s\n",
262 rtlpriv->rfkill.rfkill_state ? "on" : "off");
263
262 rtlpriv->rfkill.rfkill_state = radio_state; 264 rtlpriv->rfkill.rfkill_state = radio_state;
263 265
264 blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1; 266 blocked = (rtlpriv->rfkill.rfkill_state == 1) ? 0 : 1;
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
index efded435d59..59a150ce306 100644
--- a/drivers/net/wireless/rtlwifi/pci.c
+++ b/drivers/net/wireless/rtlwifi/pci.c
@@ -1785,7 +1785,8 @@ void rtl_pci_disconnect(struct pci_dev *pdev)
1785 1785
1786 rtl_pci_deinit(hw); 1786 rtl_pci_deinit(hw);
1787 rtl_deinit_core(hw); 1787 rtl_deinit_core(hw);
1788 rtlpriv->cfg->ops->deinit_sw_leds(hw); 1788 if (rtlpriv->cfg->ops->deinit_sw_leds)
1789 rtlpriv->cfg->ops->deinit_sw_leds(hw);
1789 _rtl_pci_io_handler_release(hw); 1790 _rtl_pci_io_handler_release(hw);
1790 rtlpriv->cfg->ops->deinit_sw_vars(hw); 1791 rtlpriv->cfg->ops->deinit_sw_vars(hw);
1791 1792
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/led.c b/drivers/net/wireless/rtlwifi/rtl8192ce/led.c
index 7b1da8d7508..d21b934b5c3 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/led.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/led.c
@@ -32,6 +32,14 @@
32#include "reg.h" 32#include "reg.h"
33#include "led.h" 33#include "led.h"
34 34
35static void _rtl92ce_init_led(struct ieee80211_hw *hw,
36 struct rtl_led *pled, enum rtl_led_pin ledpin)
37{
38 pled->hw = hw;
39 pled->ledpin = ledpin;
40 pled->ledon = false;
41}
42
35void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled) 43void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled)
36{ 44{
37 u8 ledcfg; 45 u8 ledcfg;
@@ -97,10 +105,10 @@ void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
97 105
98void rtl92ce_init_sw_leds(struct ieee80211_hw *hw) 106void rtl92ce_init_sw_leds(struct ieee80211_hw *hw)
99{ 107{
100} 108 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
101 109
102void rtl92ce_deinit_sw_leds(struct ieee80211_hw *hw) 110 _rtl92ce_init_led(hw, &(pcipriv->ledctl.sw_led0), LED_PIN_LED0);
103{ 111 _rtl92ce_init_led(hw, &(pcipriv->ledctl.sw_led1), LED_PIN_LED1);
104} 112}
105 113
106void _rtl92ce_sw_led_control(struct ieee80211_hw *hw, 114void _rtl92ce_sw_led_control(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/led.h b/drivers/net/wireless/rtlwifi/rtl8192ce/led.h
index 10da3018f4b..94332b3af5b 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/led.h
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/led.h
@@ -31,7 +31,6 @@
31#define __RTL92CE_LED_H__ 31#define __RTL92CE_LED_H__
32 32
33void rtl92ce_init_sw_leds(struct ieee80211_hw *hw); 33void rtl92ce_init_sw_leds(struct ieee80211_hw *hw);
34void rtl92ce_deinit_sw_leds(struct ieee80211_hw *hw);
35void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled); 34void rtl92ce_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled);
36void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled); 35void rtl92ce_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled);
37void rtl92ce_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction); 36void rtl92ce_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction);
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
index b1cc4d44f53..f4e2f3dccca 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -131,7 +131,6 @@ static struct rtl_hal_ops rtl8192ce_hal_ops = {
131 .enable_hw_sec = rtl92ce_enable_hw_security_config, 131 .enable_hw_sec = rtl92ce_enable_hw_security_config,
132 .set_key = rtl92ce_set_key, 132 .set_key = rtl92ce_set_key,
133 .init_sw_leds = rtl92ce_init_sw_leds, 133 .init_sw_leds = rtl92ce_init_sw_leds,
134 .deinit_sw_leds = rtl92ce_deinit_sw_leds,
135 .get_bbreg = rtl92c_phy_query_bb_reg, 134 .get_bbreg = rtl92c_phy_query_bb_reg,
136 .set_bbreg = rtl92c_phy_set_bb_reg, 135 .set_bbreg = rtl92c_phy_set_bb_reg,
137 .get_rfreg = rtl92ce_phy_query_rf_reg, 136 .get_rfreg = rtl92ce_phy_query_rf_reg,