summaryrefslogtreecommitdiff
path: root/package/mac80211/patches/541-ath9k_extra_platform_leds.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-04-16 21:08:41 +0000
committerFelix Fietkau <nbd@openwrt.org>2012-04-16 21:08:41 +0000
commitc0c371b58134d391f46de6dabf2bd0a96267cb38 (patch)
tree7b489799c8ddbfdd0ac3462317ce2be1a41368ed /package/mac80211/patches/541-ath9k_extra_platform_leds.patch
parentc379502147ee31e5b429ea8c38ae8c79e158e96a (diff)
downloadmtk-20170518-c0c371b58134d391f46de6dabf2bd0a96267cb38.zip
mtk-20170518-c0c371b58134d391f46de6dabf2bd0a96267cb38.tar.gz
mtk-20170518-c0c371b58134d391f46de6dabf2bd0a96267cb38.tar.bz2
mac80211: update to wireless-testing 2012-04-13
SVN-Revision: 31322
Diffstat (limited to 'package/mac80211/patches/541-ath9k_extra_platform_leds.patch')
-rw-r--r--package/mac80211/patches/541-ath9k_extra_platform_leds.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/package/mac80211/patches/541-ath9k_extra_platform_leds.patch b/package/mac80211/patches/541-ath9k_extra_platform_leds.patch
new file mode 100644
index 0000000..ac8ee53
--- /dev/null
+++ b/package/mac80211/patches/541-ath9k_extra_platform_leds.patch
@@ -0,0 +1,71 @@
+--- a/include/linux/ath9k_platform.h
++++ b/include/linux/ath9k_platform.h
+@@ -33,6 +33,9 @@ struct ath9k_platform_data {
+ bool is_clk_25mhz;
+ int (*get_mac_revision)(void);
+ int (*external_reset)(void);
++
++ int num_leds;
++ const struct gpio_led *leds;
+ };
+
+ #endif /* _LINUX_ATH9K_PLATFORM_H */
+--- a/drivers/net/wireless/ath/ath9k/gpio.c
++++ b/drivers/net/wireless/ath/ath9k/gpio.c
+@@ -14,6 +14,7 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#include <linux/ath9k_platform.h>
+ #include "ath9k.h"
+
+ /********************************/
+@@ -88,6 +89,24 @@ int ath_create_gpio_led(struct ath_softc
+ return ret;
+ }
+
++static int ath_create_platform_led(struct ath_softc *sc,
++ const struct gpio_led *gpio)
++{
++ struct ath_led *led;
++ int ret;
++
++ led = kzalloc(sizeof(*led), GFP_KERNEL);
++ if (!led)
++ return -ENOMEM;
++
++ led->gpio = gpio;
++ ret = ath_add_led(sc, led);
++ if (ret < 0)
++ kfree(led);
++
++ 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
+
+ void ath_init_leds(struct ath_softc *sc)
+ {
++ struct ath9k_platform_data *pdata = sc->dev->platform_data;
+ char led_name[32];
+ const char *trigger;
++ int i;
+
+ INIT_LIST_HEAD(&sc->leds);
+
+@@ -133,6 +154,12 @@ void ath_init_leds(struct ath_softc *sc)
+ trigger = ieee80211_get_radio_led_name(sc->hw);
+
+ ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, 1);
++
++ if (!pdata)
++ return;
++
++ for (i = 0; i < pdata->num_leds; i++)
++ ath_create_platform_led(sc, &pdata->leds[i]);
+ }
+ #endif
+