ath9k: cleanup led_pin initial
authorMiaoqing Pan <miaoqing@codeaurora.org>
Mon, 7 Mar 2016 02:38:17 +0000 (10:38 +0800)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 11 Mar 2016 12:00:02 +0000 (14:00 +0200)
Make ath_init_leds() and ath_deinit_leds() pairs as the only
API to set leds, also removed direction configuration from
ath9k_start() and ath9k_stop(). So the initial is more clear
now.

Signed-off-by: Miaoqing Pan <miaoqing@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/gpio.c
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/reg.h

index 5294595da5a7eb45a63e14a0bbceeae1b2ef343a..93b3793cce2f9a865b5898de8e5a28b6302c6b43 100644 (file)
@@ -813,7 +813,6 @@ static inline int ath9k_dump_btcoex(struct ath_softc *sc, u8 *buf, u32 size)
 #ifdef CONFIG_MAC80211_LEDS
 void ath_init_leds(struct ath_softc *sc);
 void ath_deinit_leds(struct ath_softc *sc);
-void ath_fill_led_pin(struct ath_softc *sc);
 #else
 static inline void ath_init_leds(struct ath_softc *sc)
 {
@@ -822,9 +821,6 @@ static inline void ath_init_leds(struct ath_softc *sc)
 static inline void ath_deinit_leds(struct ath_softc *sc)
 {
 }
-static inline void ath_fill_led_pin(struct ath_softc *sc)
-{
-}
 #endif
 
 /************************/
index 4964bb36dad2aebee92e23a1ad460684e917b564..490f74d9ddf0a62c39cdd65b6f053248979f03fe 100644 (file)
 /********************************/
 
 #ifdef CONFIG_MAC80211_LEDS
+
+void ath_fill_led_pin(struct ath_softc *sc)
+{
+       struct ath_hw *ah = sc->sc_ah;
+
+       /* Set default led pin if invalid */
+       if (ah->led_pin < 0) {
+               if (AR_SREV_9287(ah))
+                       ah->led_pin = ATH_LED_PIN_9287;
+               else if (AR_SREV_9485(ah))
+                       ah->led_pin = ATH_LED_PIN_9485;
+               else if (AR_SREV_9300(ah))
+                       ah->led_pin = ATH_LED_PIN_9300;
+               else if (AR_SREV_9462(ah) || AR_SREV_9565(ah))
+                       ah->led_pin = ATH_LED_PIN_9462;
+               else
+                       ah->led_pin = ATH_LED_PIN_DEF;
+       }
+
+       /* Configure gpio for output */
+       ath9k_hw_gpio_request_out(ah, ah->led_pin, "ath9k-led",
+                                 AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
+
+       /* LED off, active low */
+       ath9k_hw_set_gpio(ah, ah->led_pin, ah->config.led_active_high ? 0 : 1);
+}
+
 static void ath_led_brightness(struct led_classdev *led_cdev,
                               enum led_brightness brightness)
 {
@@ -51,6 +78,8 @@ void ath_init_leds(struct ath_softc *sc)
        if (AR_SREV_9100(sc->sc_ah))
                return;
 
+       ath_fill_led_pin(sc);
+
        if (!ath9k_led_blink)
                sc->led_cdev.default_trigger =
                        ieee80211_get_radio_led_name(sc->hw);
@@ -66,39 +95,6 @@ void ath_init_leds(struct ath_softc *sc)
 
        sc->led_registered = true;
 }
-
-void ath_fill_led_pin(struct ath_softc *sc)
-{
-       struct ath_hw *ah = sc->sc_ah;
-
-       if (AR_SREV_9100(ah))
-               return;
-
-       if (ah->led_pin >= 0) {
-               if (!((1 << ah->led_pin) & AR_GPIO_OE_OUT_MASK))
-                       ath9k_hw_gpio_request_out(ah, ah->led_pin, "ath9k-led",
-                                                 AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-               return;
-       }
-
-       if (AR_SREV_9287(ah))
-               ah->led_pin = ATH_LED_PIN_9287;
-       else if (AR_SREV_9485(sc->sc_ah))
-               ah->led_pin = ATH_LED_PIN_9485;
-       else if (AR_SREV_9300(sc->sc_ah))
-               ah->led_pin = ATH_LED_PIN_9300;
-       else if (AR_SREV_9462(sc->sc_ah) || AR_SREV_9565(sc->sc_ah))
-               ah->led_pin = ATH_LED_PIN_9462;
-       else
-               ah->led_pin = ATH_LED_PIN_DEF;
-
-       /* Configure gpio 1 for output */
-       ath9k_hw_gpio_request_out(ah, ah->led_pin, "ath9k-led",
-                                 AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-
-       /* LED off, active low */
-       ath9k_hw_set_gpio(ah, ah->led_pin, (ah->config.led_active_high) ? 0 : 1);
-}
 #endif
 
 /*******************/
index d4e0ac946c3a076838b62cb1d8cabbf346bffcd6..d986687870afe8e29be372b683d9a5fa109daecb 100644 (file)
@@ -660,7 +660,6 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
 
        ath9k_cmn_init_crypto(sc->sc_ah);
        ath9k_init_misc(sc);
-       ath_fill_led_pin(sc);
        ath_chanctx_init(sc);
        ath9k_offchannel_init(sc);
 
index a8fcadb2fa842bf9ac8bce7e80bd1d772ff799ed..50ec4c9a9da772fb8e7614d26e951388c938d0a3 100644 (file)
@@ -718,12 +718,9 @@ static int ath9k_start(struct ieee80211_hw *hw)
        if (!ath_complete_reset(sc, false))
                ah->reset_power_on = false;
 
-       if (ah->led_pin >= 0) {
+       if (ah->led_pin >= 0)
                ath9k_hw_set_gpio(ah, ah->led_pin,
                                  (ah->config.led_active_high) ? 1 : 0);
-               ath9k_hw_gpio_request_out(ah, ah->led_pin, NULL,
-                                         AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
-       }
 
        /*
         * Reset key cache to sane defaults (all entries cleared) instead of
@@ -867,11 +864,9 @@ static void ath9k_stop(struct ieee80211_hw *hw)
 
        spin_lock_bh(&sc->sc_pcu_lock);
 
-       if (ah->led_pin >= 0) {
+       if (ah->led_pin >= 0)
                ath9k_hw_set_gpio(ah, ah->led_pin,
                                  (ah->config.led_active_high) ? 0 : 1);
-               ath9k_hw_gpio_request_in(ah, ah->led_pin, NULL);
-       }
 
        ath_prepare_reset(sc);
 
index c06fdb955787a072ba898eb17e7f2f2beb7a9bdf..909c6b5f4f7b027a917395d0cef8f11487bf5167 100644 (file)
@@ -1168,8 +1168,6 @@ enum {
 
 #define AR_GPIO_OE_OUT                           (AR_SREV_9340(ah) ? 0x4030 : \
                                                  (AR_SREV_9300_20_OR_LATER(ah) ? 0x4050 : 0x404c))
-#define AR_GPIO_OE_OUT_MASK                     (AR_SREV_9550_OR_LATER(ah) ? \
-                                                 0x0000000F : 0xFFFFFFFF)
 #define AR_GPIO_OE_OUT_DRV                       0x3
 #define AR_GPIO_OE_OUT_DRV_NO                    0x0
 #define AR_GPIO_OE_OUT_DRV_LOW                   0x1