rtlwifi: rtl8192c: rtl8192ce: rtl8192cu: rtl8192de: rtl8723ae: Add changes required...
[deliverable/linux.git] / drivers / net / wireless / rtlwifi / rtl8723ae / led.c
index 9c4e1d81118720b0bf89c1be90a15f2f7b1161e9..061526fe6e2d1222b4fb8050fc6dc38fa63013e7 100644 (file)
@@ -54,8 +54,9 @@ void rtl8723ae_sw_led_on(struct ieee80211_hw *hw, struct rtl_led *pled)
        case LED_PIN_GPIO0:
                break;
        case LED_PIN_LED0:
+               ledcfg &= ~BIT(6);
                rtl_write_byte(rtlpriv,
-                              REG_LEDCFG2, (ledcfg & 0xf0) | BIT(5) | BIT(6));
+                              REG_LEDCFG2, (ledcfg & 0xf0) | BIT(5));
                break;
        case LED_PIN_LED1:
                rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg & 0x0f) | BIT(5));
@@ -84,16 +85,21 @@ void rtl8723ae_sw_led_off(struct ieee80211_hw *hw, struct rtl_led *pled)
                break;
        case LED_PIN_LED0:
                ledcfg &= 0xf0;
-               if (pcipriv->ledctl.led_opendrain)
+               if (pcipriv->ledctl.led_opendrain) {
+                       ledcfg &= 0x90;
+                       rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg|BIT(3)));
+                       ledcfg = rtl_read_byte(rtlpriv, REG_MAC_PINMUX_CFG);
+                       ledcfg &= 0xFE;
+                       rtl_write_byte(rtlpriv, REG_MAC_PINMUX_CFG, ledcfg);
+               } else {
+                       ledcfg &= ~BIT(6);
                        rtl_write_byte(rtlpriv, REG_LEDCFG2,
-                                      (ledcfg | BIT(1) | BIT(5) | BIT(6)));
-               else
-                       rtl_write_byte(rtlpriv, REG_LEDCFG2,
-                                      (ledcfg | BIT(3) | BIT(5) | BIT(6)));
+                                      (ledcfg | BIT(3) | BIT(5)));
+               }
                break;
        case LED_PIN_LED1:
-               ledcfg &= 0x0f;
-               rtl_write_byte(rtlpriv, REG_LEDCFG2, (ledcfg | BIT(3)));
+               ledcfg = rtl_read_byte(rtlpriv, REG_LEDCFG1) & 0x10;
+               rtl_write_byte(rtlpriv, REG_LEDCFG1, (ledcfg | BIT(3)));
                break;
        default:
                RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
This page took 0.028976 seconds and 5 git commands to generate.