aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel
diff options
context:
space:
mode:
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>2016-07-01 15:41:18 +0200
committerFelix Fietkau <nbd@nbd.name>2016-07-02 19:34:50 +0200
commit7b7ea91e24618313fdb990d000655f3afd07fe0f (patch)
tree2dbae0816bb1da58dd652fa65bd68ca586c1424f /package/kernel
parent3ce71eaedd3ea25be0c8723fefc68e3f3aac7610 (diff)
downloadupstream-7b7ea91e24618313fdb990d000655f3afd07fe0f.tar.gz
upstream-7b7ea91e24618313fdb990d000655f3afd07fe0f.tar.bz2
upstream-7b7ea91e24618313fdb990d000655f3afd07fe0f.zip
kernel: mac80211: enable the gpio controller for all ath9k devices
This enables ath9k's built-in GPIO controller for all chip versions (instead of an explicit whitelist). This also allows us to get rid of some duplicate code between hw.c and gpio.c because hw.c already determines the number of GPIOs. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Diffstat (limited to 'package/kernel')
-rw-r--r--package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch24
-rw-r--r--package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch10
2 files changed, 12 insertions, 22 deletions
diff --git a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
index 031be09d3b..f516b8d6a8 100644
--- a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
+++ b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#ifdef CPTCFG_ATH9K_DEBUGFS
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
-@@ -16,13 +16,140 @@
+@@ -16,13 +16,130 @@
#include "ath9k.h"
#include <linux/ath9k_platform.h>
@@ -117,17 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+static void ath9k_register_gpio_chip(struct ath_softc *sc)
+{
+ struct ath9k_gpio_chip *gc;
-+ u16 ng;
-+
-+ /* supported chips are AR9280, AR9285 and AR9287 */
-+ if (AR_SREV_9287(sc->sc_ah))
-+ ng = AR9287_NUM_GPIO;
-+ else if (AR_SREV_9285(sc->sc_ah))
-+ ng = AR9285_NUM_GPIO;
-+ else if (AR_SREV_9280(sc->sc_ah))
-+ ng = AR9280_NUM_GPIO;
-+ else
-+ return;
++ struct ath_hw *ah = sc->sc_ah;
+
+ gc = kzalloc(sizeof(struct ath9k_gpio_chip), GFP_KERNEL);
+ if (!gc)
@@ -137,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ wiphy_name(sc->hw->wiphy));
+ gc->gchip.label = gc->label;
+ gc->gchip.base = -1; /* determine base automatically */
-+ gc->gchip.ngpio = ng;
++ gc->gchip.ngpio = ah->caps.num_gpio_pins;
+ gc->gchip.direction_input = ath9k_gpio_pin_cfg_input;
+ gc->gchip.direction_output = ath9k_gpio_pin_cfg_output;
+ gc->gchip.get_direction = ath9k_gpio_pin_get_dir;
@@ -188,7 +178,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static void ath_fill_led_pin(struct ath_softc *sc)
{
struct ath_hw *ah = sc->sc_ah;
-@@ -80,6 +207,12 @@ static int ath_add_led(struct ath_softc
+@@ -80,6 +197,12 @@ static int ath_add_led(struct ath_softc
else
ath9k_hw_set_gpio(sc->sc_ah, gpio->gpio, gpio->active_low);
@@ -201,7 +191,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return 0;
}
-@@ -136,12 +269,18 @@ void ath_deinit_leds(struct ath_softc *s
+@@ -136,12 +259,18 @@ void ath_deinit_leds(struct ath_softc *s
while (!list_empty(&sc->leds)) {
led = list_first_entry(&sc->leds, struct ath_led, list);
@@ -220,7 +210,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
void ath_init_leds(struct ath_softc *sc)
-@@ -158,6 +297,8 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -158,6 +287,8 @@ void ath_init_leds(struct ath_softc *sc)
ath_fill_led_pin(sc);
@@ -229,7 +219,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (pdata && pdata->led_name)
strncpy(led_name, pdata->led_name, sizeof(led_name));
else
-@@ -178,6 +319,7 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -178,6 +309,7 @@ void ath_init_leds(struct ath_softc *sc)
for (i = 0; i < pdata->num_leds; i++)
ath_create_platform_led(sc, &pdata->leds[i]);
}
diff --git a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
index 41bebbb44f..9d887ceb5e 100644
--- a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
+++ b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
@@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#ifdef CPTCFG_MAC80211_LEDS
-@@ -134,6 +136,64 @@ static void ath9k_unregister_gpio_chip(s
+@@ -124,6 +126,64 @@ static void ath9k_unregister_gpio_chip(s
sc->gpiochip = NULL;
}
@@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#else /* CONFIG_GPIOLIB */
static inline void ath9k_register_gpio_chip(struct ath_softc *sc)
-@@ -144,6 +204,14 @@ static inline void ath9k_unregister_gpio
+@@ -134,6 +194,14 @@ static inline void ath9k_unregister_gpio
{
}
@@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif /* CONFIG_GPIOLIB */
/********************************/
-@@ -267,6 +335,7 @@ void ath_deinit_leds(struct ath_softc *s
+@@ -257,6 +325,7 @@ void ath_deinit_leds(struct ath_softc *s
{
struct ath_led *led;
@@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
while (!list_empty(&sc->leds)) {
led = list_first_entry(&sc->leds, struct ath_led, list);
#ifdef CONFIG_GPIOLIB
-@@ -298,6 +367,7 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -288,6 +357,7 @@ void ath_init_leds(struct ath_softc *sc)
ath_fill_led_pin(sc);
ath9k_register_gpio_chip(sc);
@@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (pdata && pdata->led_name)
strncpy(led_name, pdata->led_name, sizeof(led_name));
-@@ -313,7 +383,7 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -303,7 +373,7 @@ void ath_init_leds(struct ath_softc *sc)
ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
!sc->sc_ah->config.led_active_high);