/********************************/
 
 #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)
 {
        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);
 
        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
 
 /*******************/
 
        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
 
        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);