From 22799036fcba6fcf19c623c9b1dedcc217a5cb5e Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 2 Mar 2016 13:22:40 +0000 Subject: [PATCH] mac80211: ath9k: enable platform WLAN LED name Enable platform-supplied WLAN LED name for ath9k device. Signed-off-by: Michal Cieslakiewicz Acked-by: Hartmut Knaack git-svn-id: svn://svn.openwrt.org/openwrt/trunk@48879 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/546-ath9k_platform_led_name.patch | 48 ++++++++++++++++++++++ .../ar71xx/files/arch/mips/ath79/dev-ap9x-pci.c | 12 ++++++ .../ar71xx/files/arch/mips/ath79/dev-ap9x-pci.h | 3 ++ .../generic/files/include/linux/ath9k_platform.h | 1 + 4 files changed, 64 insertions(+) create mode 100644 package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch diff --git a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch b/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch new file mode 100644 index 0000000000..8d2d899112 --- /dev/null +++ b/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch @@ -0,0 +1,48 @@ +From: Michal Cieslakiewicz +Date: Sun, 31 Jan 2016 20:45:57 +0100 +Subject: [PATCH v4 1/8] mac80211: ath9k: enable platform WLAN LED name + +Enable platform-supplied WLAN LED name for ath9k device. It replaces generic +'ath9k-phy*' label with string set during platform initialization. + +Signed-off-by: Michal Cieslakiewicz +--- + drivers/net/wireless/ath/ath9k/gpio.c | 10 +++++++--- + include/linux/ath9k_platform.h | 1 + + 2 files changed, 8 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/ath/ath9k/gpio.c ++++ b/drivers/net/wireless/ath/ath9k/gpio.c +@@ -132,15 +132,19 @@ void ath_init_leds(struct ath_softc *sc) + if (AR_SREV_9100(sc->sc_ah)) + return; + +- snprintf(led_name, sizeof(led_name), "ath9k-%s", +- wiphy_name(sc->hw->wiphy)); ++ if (pdata && pdata->led_name) ++ strncpy(led_name, pdata->led_name, sizeof(led_name)); ++ else ++ snprintf(led_name, sizeof(led_name), "ath9k-%s", ++ wiphy_name(sc->hw->wiphy)); + + if (ath9k_led_blink) + trigger = sc->led_default_trigger; + else + trigger = ieee80211_get_radio_led_name(sc->hw); + +- ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, !sc->sc_ah->config.led_active_high); ++ ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, ++ !sc->sc_ah->config.led_active_high); + + if (!pdata) + return; +--- a/include/linux/ath9k_platform.h ++++ b/include/linux/ath9k_platform.h +@@ -45,6 +45,7 @@ struct ath9k_platform_data { + + int num_leds; + const struct gpio_led *leds; ++ const char *led_name; + }; + + #endif /* _LINUX_ATH9K_PLATFORM_H */ diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.c index d382453b19..bf80d4d030 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.c @@ -39,6 +39,18 @@ __init void ap9x_pci_setup_wmac_led_pin(unsigned wmac, int pin) } } +__init void ap9x_pci_setup_wmac_led_name(unsigned wmac, const char *led_name) +{ + switch (wmac) { + case 0: + ap9x_wmac0_data.led_name = led_name; + break; + case 1: + ap9x_wmac1_data.led_name = led_name; + break; + } +} + __init struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac) { switch (wmac) { diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.h b/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.h index ad288cbdf9..dcfe541a1d 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/dev-ap9x-pci.h @@ -19,6 +19,7 @@ void ap9x_pci_setup_wmac_led_pin(unsigned wmac, int pin); void ap9x_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val); void ap9x_pci_setup_wmac_leds(unsigned wmac, struct gpio_led *leds, int num_leds); +void ap9x_pci_setup_wmac_led_name(unsigned wmac, const char *led_name); struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac); void ap91_pci_init(u8 *cal_data, u8 *mac_addr); @@ -33,6 +34,8 @@ static inline void ap9x_pci_setup_wmac_gpio(unsigned wmac, static inline void ap9x_pci_setup_wmac_leds(unsigned wmac, struct gpio_led *leds, int num_leds) {} +static inline void ap9x_pci_setup_wmac_led_name(unsigned wmac, + const char *led_name) {} static inline struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac) { return NULL; diff --git a/target/linux/generic/files/include/linux/ath9k_platform.h b/target/linux/generic/files/include/linux/ath9k_platform.h index 30ce2165cb..823e5acf46 100644 --- a/target/linux/generic/files/include/linux/ath9k_platform.h +++ b/target/linux/generic/files/include/linux/ath9k_platform.h @@ -45,6 +45,7 @@ struct ath9k_platform_data { int num_leds; const struct gpio_led *leds; + const char *led_name; }; #endif /* _LINUX_ATH9K_PLATFORM_H */ -- 2.11.0