--- a/include/linux/ath9k_platform.h
+++ b/include/linux/ath9k_platform.h
-@@ -35,6 +35,9 @@ struct ath9k_platform_data {
- bool is_clk_25mhz;
- int (*get_mac_revision)(void);
+@@ -46,6 +46,9 @@ struct ath9k_platform_data {
int (*external_reset)(void);
+
+ bool use_eeprom;
+
+ int num_leds;
+ const struct gpio_led *leds;
/********************************/
/* LED functions */
-@@ -88,6 +89,24 @@ int ath_create_gpio_led(struct ath_softc
+@@ -108,6 +109,24 @@ int ath_create_gpio_led(struct ath_softc
return ret;
}
void ath_deinit_leds(struct ath_softc *sc)
{
struct ath_led *led;
-@@ -103,8 +122,10 @@ void ath_deinit_leds(struct ath_softc *s
+@@ -124,8 +143,10 @@ void ath_deinit_leds(struct ath_softc *s
void ath_init_leds(struct ath_softc *sc)
{
INIT_LIST_HEAD(&sc->leds);
-@@ -120,6 +141,12 @@ void ath_init_leds(struct ath_softc *sc)
- trigger = ieee80211_get_radio_led_name(sc->hw);
+@@ -134,6 +155,17 @@ void ath_init_leds(struct ath_softc *sc)
+
+ ath_fill_led_pin(sc);
- ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, 1);
++ if (pdata && pdata->leds && pdata->num_leds)
++ for (i = 0; i < pdata->num_leds; i++) {
++ if (pdata->leds[i].gpio == sc->sc_ah->led_pin)
++ sc->sc_ah->led_pin = -1;
+
-+ if (!pdata)
++ ath_create_platform_led(sc, &pdata->leds[i]);
++ }
++
++ if (sc->sc_ah->led_pin < 0)
+ return;
+
-+ for (i = 0; i < pdata->num_leds; i++)
-+ ath_create_platform_led(sc, &pdata->leds[i]);
- }
+ snprintf(led_name, sizeof(led_name), "ath9k-%s",
+ wiphy_name(sc->hw->wiphy));
- void ath_fill_led_pin(struct ath_softc *sc)