diff options
| author | Felix Fietkau <nbd@openwrt.org> | 2011-03-19 13:55:40 +0100 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2011-03-30 14:15:15 -0400 | 
| commit | 6de66dd963ddd669667a81a2401f2fd6472ff55c (patch) | |
| tree | 4ab0cca2a88c388f93c3bfe6af6f022a894af0c5 | |
| parent | 6fb1b1e18fe3d141c54182c5d5b3af823bed455f (diff) | |
| download | olio-linux-3.10-6de66dd963ddd669667a81a2401f2fd6472ff55c.tar.xz olio-linux-3.10-6de66dd963ddd669667a81a2401f2fd6472ff55c.zip  | |
ath9k: add support for overriding LED pin and GPIO settings from platform data
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/gpio.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 8 | ||||
| -rw-r--r-- | include/linux/ath9k_platform.h | 4 | 
4 files changed, 20 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/ath9k/gpio.c b/drivers/net/wireless/ath/ath9k/gpio.c index 0fb8f8ac275..44a0a886124 100644 --- a/drivers/net/wireless/ath/ath9k/gpio.c +++ b/drivers/net/wireless/ath/ath9k/gpio.c @@ -41,12 +41,14 @@ void ath_init_leds(struct ath_softc *sc)  {  	int ret; -	if (AR_SREV_9287(sc->sc_ah)) -		sc->sc_ah->led_pin = ATH_LED_PIN_9287; -	else if (AR_SREV_9485(sc->sc_ah)) -		sc->sc_ah->led_pin = ATH_LED_PIN_9485; -	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 if (AR_SREV_9485(sc->sc_ah)) +			sc->sc_ah->led_pin = ATH_LED_PIN_9485; +		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, diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 775c0eb10b9..3d9fc6e391a 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h @@ -798,7 +798,7 @@ struct ath_hw {  	u32 originalGain[22];  	int initPDADC;  	int PDADCdelta; -	u8 led_pin; +	int led_pin;  	u32 gpio_mask;  	u32 gpio_val; diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index e22e8215d94..cdb0f1c89a0 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c @@ -553,8 +553,14 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,  	ah->hw_version.subsysid = subsysid;  	sc->sc_ah = ah; -	if (!pdata) +	if (!pdata) {  		ah->ah_flags |= AH_USE_EEPROM; +		sc->sc_ah->led_pin = -1; +	} else { +		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; diff --git a/include/linux/ath9k_platform.h b/include/linux/ath9k_platform.h index b5f06583a1b..020387a114e 100644 --- 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 */  |