diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8188ee/led.c')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8188ee/led.c | 49 |
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 | ||
35 | static void rtl88ee_init_led(struct ieee80211_hw *hw, | 35 | static 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) | |||
110 | void rtl88ee_init_sw_leds(struct ieee80211_hw *hw) | 109 | void 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 | ||
118 | static void rtl88ee_sw_led_control(struct ieee80211_hw *hw, | 116 | static 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 | } |