mac80211: backport brcmfmac fixes from 4.16
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / 531-ath9k_extra_platform_leds.patch
index dc33cd029b5356623781aa7aeaa38aceb742d811..8ed7ad8a09a13f85e2b0f437020b650cacb89190 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/linux/ath9k_platform.h
 +++ b/include/linux/ath9k_platform.h
-@@ -41,6 +41,9 @@ struct ath9k_platform_data {
+@@ -46,6 +46,9 @@ struct ath9k_platform_data {
        int (*external_reset)(void);
  
        bool use_eeprom;
@@ -20,7 +20,7 @@
  
  /********************************/
  /*     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;
  }
  
@@ -45,7 +45,7 @@
  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_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, 1);
+       ath_fill_led_pin(sc);
++      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;
++
++                      ath_create_platform_led(sc, &pdata->leds[i]);
++              }
 +
-+      if (!pdata)
++      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)