aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/rtl8188ee/led.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8188ee/led.c')
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8188ee/led.c49
1 files changed, 23 insertions, 26 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/led.c b/drivers/net/wireless/rtlwifi/rtl8188ee/led.c
index c81a9cb6894c..b504bd092fc4 100644
--- a/drivers/net/wireless/rtlwifi/rtl8188ee/led.c
+++ b/drivers/net/wireless/rtlwifi/rtl8188ee/led.c
@@ -32,8 +32,8 @@
32#include "reg.h" 32#include "reg.h"
33#include "led.h" 33#include "led.h"
34 34
35static void rtl88ee_init_led(struct ieee80211_hw *hw, 35static void _rtl88ee_init_led(struct ieee80211_hw *hw,
36 struct rtl_led *pled, enum rtl_led_pin ledpin) 36 struct rtl_led *pled, enum rtl_led_pin ledpin)
37{ 37{
38 pled->hw = hw; 38 pled->hw = hw;
39 pled->ledpin = ledpin; 39 pled->ledpin = ledpin;
@@ -46,23 +46,23 @@ void rtl88ee_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled)
46 struct rtl_priv *rtlpriv = rtl_priv(hw); 46 struct rtl_priv *rtlpriv = rtl_priv(hw);
47 47
48 RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD, 48 RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD,
49 "LedAddr:%X ledpin =%d\n", REG_LEDCFG2, pled->ledpin); 49 "LedAddr:%X ledpin=%d\n", REG_LEDCFG2, pled->ledpin);
50 50
51 switch (pled->ledpin) { 51 switch (pled->ledpin) {
52 case LED_PIN_GPIO0: 52 case LED_PIN_GPIO0:
53 break; 53 break;
54 case LED_PIN_LED0: 54 case LED_PIN_LED0:
55 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); 55 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2);
56 rtl_write_byte(rtlpriv, REG_LEDCFG2, 56 rtl_write_byte(rtlpriv,
57 (ledcfg & 0xf0) | BIT(5) | BIT(6)); 57 REG_LEDCFG2, (ledcfg & 0xf0) | BIT(5) | BIT(6));
58 break; 58 break;
59 case LED_PIN_LED1: 59 case LED_PIN_LED1:
60 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); 60 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1);
61 rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg & 0x10); 61 rtl_write_byte(rtlpriv, REG_LEDCFG1, ledcfg & 0x10);
62 break; 62 break;
63 default: 63 default:
64 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, 64 RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
65 "switch case not processed\n"); 65 "switch case not process\n");
66 break; 66 break;
67 } 67 }
68 pled->ledon = true; 68 pled->ledon = true;
@@ -73,10 +73,9 @@ void rtl88ee_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
73 struct rtl_priv *rtlpriv = rtl_priv(hw); 73 struct rtl_priv *rtlpriv = rtl_priv(hw);
74 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); 74 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
75 u8 ledcfg; 75 u8 ledcfg;
76 u8 val;
77 76
78 RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD, 77 RT_TRACE(rtlpriv, COMP_LED, DBG_LOUD,
79 "LedAddr:%X ledpin =%d\n", REG_LEDCFG2, pled->ledpin); 78 "LedAddr:%X ledpin=%d\n", REG_LEDCFG2, pled->ledpin);
80 79
81 switch (pled->ledpin) { 80 switch (pled->ledpin) {
82 case LED_PIN_GPIO0: 81 case LED_PIN_GPIO0:
@@ -84,15 +83,15 @@ void rtl88ee_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
84 case LED_PIN_LED0: 83 case LED_PIN_LED0:
85 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2); 84 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG2);
86 ledcfg &= 0xf0; 85 ledcfg &= 0xf0;
87 val = ledcfg | BIT(3) | BIT(5) | BIT(6); 86 if (pcipriv->ledctl.led_opendrain) {
88 if (pcipriv->ledctl.led_opendrain == true) { 87 rtl_write_byte(rtlpriv, REG_LEDCFG2,
89 rtl_write_byte(rtlpriv, REG_LEDCFG2, val); 88 (ledcfg | BIT(3) | BIT(5) | BIT(6)));
90 ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG); 89 ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG);
91 val = ledcfg & 0xFE; 90 rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG,
92 rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, val); 91 (ledcfg & 0xFE));
93 } else { 92 } else
94 rtl_write_byte(rtlpriv, REG_LEDCFG2, val); 93 rtl_write_byte(rtlpriv, REG_LEDCFG2,
95 } 94 (ledcfg | BIT(3) | BIT(5) | BIT(6)));
96 break; 95 break;
97 case LED_PIN_LED1: 96 case LED_PIN_LED1:
98 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1); 97 ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1);
@@ -100,8 +99,8 @@ void rtl88ee_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
100 rtl_write_byte(rtlpriv, REG_LEDCFG1, (ledcfg | BIT(3))); 99 rtl_write_byte(rtlpriv, REG_LEDCFG1, (ledcfg | BIT(3)));
101 break; 100 break;
102 default: 101 default:
103 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, 102 RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
104 "switch case not processed\n"); 103 "switch case not process\n");
105 break; 104 break;
106 } 105 }
107 pled->ledon = false; 106 pled->ledon = false;
@@ -110,17 +109,15 @@ void rtl88ee_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
110void rtl88ee_init_sw_leds(struct ieee80211_hw *hw) 109void rtl88ee_init_sw_leds(struct ieee80211_hw *hw)
111{ 110{
112 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); 111 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
113 112 _rtl88ee_init_led(hw, &pcipriv->ledctl.sw_led0, LED_PIN_LED0);
114 rtl88ee_init_led(hw, &(pcipriv->ledctl.sw_led0), LED_PIN_LED0); 113 _rtl88ee_init_led(hw, &pcipriv->ledctl.sw_led1, LED_PIN_LED1);
115 rtl88ee_init_led(hw, &(pcipriv->ledctl.sw_led1), LED_PIN_LED1);
116} 114}
117 115
118static void rtl88ee_sw_led_control(struct ieee80211_hw *hw, 116static void _rtl88ee_sw_led_control(struct ieee80211_hw *hw,
119 enum led_ctl_mode ledaction) 117 enum led_ctl_mode ledaction)
120{ 118{
121 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw); 119 struct rtl_pci_priv *pcipriv = rtl_pcipriv(hw);
122 struct rtl_led *pLed0 = &(pcipriv->ledctl.sw_led0); 120 struct rtl_led *pLed0 = &(pcipriv->ledctl.sw_led0);
123
124 switch (ledaction) { 121 switch (ledaction) {
125 case LED_CTL_POWER_ON: 122 case LED_CTL_POWER_ON:
126 case LED_CTL_LINK: 123 case LED_CTL_LINK:
@@ -152,6 +149,6 @@ void rtl88ee_led_control(struct ieee80211_hw *hw,
152 return; 149 return;
153 } 150 }
154 RT_TRACE(rtlpriv, COMP_LED, DBG_TRACE, "ledaction %d,\n", 151 RT_TRACE(rtlpriv, COMP_LED, DBG_TRACE, "ledaction %d,\n",
155 ledaction); 152 ledaction);
156 rtl88ee_sw_led_control(hw, ledaction); 153 _rtl88ee_sw_led_control(hw, ledaction);
157} 154}