63 lines
1.7 KiB
Diff
63 lines
1.7 KiB
Diff
--- a/drivers/net/wireless/ath/ath9k/init.c
|
|
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
|
@@ -535,8 +535,15 @@ static int ath9k_init_softc(u16 devid, s
|
|
ah->hw_version.subsysid = subsysid;
|
|
sc->sc_ah = ah;
|
|
|
|
- if (!sc->dev->platform_data)
|
|
+ if (!sc->dev->platform_data) {
|
|
ah->ah_flags |= AH_USE_EEPROM;
|
|
+ sc->sc_ah->led_pin = -1;
|
|
+ } else {
|
|
+ pdata = (struct ath9k_platform_data *) sc->dev->platform_data;
|
|
+ sc->sc_ah->gpio_mask = pdata->gpio_mask;
|
|
+ sc->sc_ah->gpio_val = pdata->gpio_val;
|
|
+ sc->sc_ah->led_pin = pdata->led_pin;
|
|
+ }
|
|
|
|
common = ath9k_hw_common(ah);
|
|
common->ops = &ath9k_common_ops;
|
|
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
|
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
|
@@ -788,7 +788,7 @@ struct ath_hw {
|
|
u32 originalGain[22];
|
|
int initPDADC;
|
|
int PDADCdelta;
|
|
- u8 led_pin;
|
|
+ int led_pin;
|
|
u32 gpio_mask;
|
|
u32 gpio_val;
|
|
|
|
--- a/drivers/net/wireless/ath/ath9k/gpio.c
|
|
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
|
|
@@ -147,10 +147,12 @@ void ath_init_leds(struct ath_softc *sc)
|
|
if (AR_SREV_9100(sc->sc_ah))
|
|
return;
|
|
|
|
- if (AR_SREV_9287(sc->sc_ah))
|
|
- sc->sc_ah->led_pin = ATH_LED_PIN_9287;
|
|
- else
|
|
- sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
|
|
+ if (sc->sc_ah->led_pin < 0) {
|
|
+ if (AR_SREV_9287(sc->sc_ah))
|
|
+ sc->sc_ah->led_pin = ATH_LED_PIN_9287;
|
|
+ else
|
|
+ sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
|
|
+ }
|
|
|
|
/* Configure gpio 1 for output */
|
|
ath9k_hw_cfg_output(sc->sc_ah, sc->sc_ah->led_pin,
|
|
--- a/include/linux/ath9k_platform.h
|
|
+++ b/include/linux/ath9k_platform.h
|
|
@@ -24,6 +24,10 @@
|
|
struct ath9k_platform_data {
|
|
u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
|
|
u8 *macaddr;
|
|
+
|
|
+ int led_pin;
|
|
+ u32 gpio_mask;
|
|
+ u32 gpio_val;
|
|
};
|
|
|
|
#endif /* _LINUX_ATH9K_PLATFORM_H */
|