mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	ath9k: enable GPIO chip only if requested via DT
In case that the atheros device tree binding is used, enable access to the GPIO chip only if the gpio-controller device tree parameter is used for the ath9k node. Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
		
							parent
							
								
									192f0a3db8
								
							
						
					
					
						commit
						20b45df7eb
					
				| @ -196,7 +196,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -136,12 +264,18 @@ void ath_deinit_leds(struct ath_softc *s
 | @@ -136,17 +264,24 @@ void ath_deinit_leds(struct ath_softc *s
 | ||||||
|   |   | ||||||
|  	while (!list_empty(&sc->leds)) { |  	while (!list_empty(&sc->leds)) { | ||||||
|  		led = list_first_entry(&sc->leds, struct ath_led, list); |  		led = list_first_entry(&sc->leds, struct ath_led, list); | ||||||
| @ -215,16 +215,27 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  void ath_init_leds(struct ath_softc *sc) |  void ath_init_leds(struct ath_softc *sc) | ||||||
| @@ -158,6 +292,8 @@ void ath_init_leds(struct ath_softc *sc)
 |  { | ||||||
|   |  	struct ath9k_platform_data *pdata = sc->dev->platform_data; | ||||||
|  	ath_fill_led_pin(sc); | +	struct device_node *np = sc->dev->of_node;
 | ||||||
|  |  	char led_name[32]; | ||||||
|  |  	const char *trigger; | ||||||
|  |  	int i; | ||||||
|  | @@ -156,6 +291,13 @@ void ath_init_leds(struct ath_softc *sc)
 | ||||||
|  |  	if (AR_SREV_9100(sc->sc_ah)) | ||||||
|  |  		return; | ||||||
|   |   | ||||||
|  | +	if (!np)
 | ||||||
| +		ath9k_register_gpio_chip(sc);
 | +		ath9k_register_gpio_chip(sc);
 | ||||||
| +
 | +
 | ||||||
|  | +	/* setup gpio controller only if requested */
 | ||||||
|  | +	if (of_property_read_bool(np, "gpio-controller"))
 | ||||||
|  | +		ath9k_register_gpio_chip(sc);
 | ||||||
|  | +
 | ||||||
|  |  	ath_fill_led_pin(sc); | ||||||
|  |   | ||||||
|  	if (pdata && pdata->leds && pdata->num_leds) |  	if (pdata && pdata->leds && pdata->num_leds) | ||||||
|  		for (i = 0; i < pdata->num_leds; i++) { | @@ -183,6 +325,7 @@ void ath_init_leds(struct ath_softc *sc)
 | ||||||
|  			if (pdata->leds[i].gpio == sc->sc_ah->led_pin) |  | ||||||
| @@ -183,6 +319,7 @@ void ath_init_leds(struct ath_softc *sc)
 |  | ||||||
|  	ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, |  	ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, | ||||||
|  			   !sc->sc_ah->config.led_active_high); |  			   !sc->sc_ah->config.led_active_high); | ||||||
|  } |  } | ||||||
|  | |||||||
| @ -117,10 +117,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	while (!list_empty(&sc->leds)) { |  	while (!list_empty(&sc->leds)) { | ||||||
|  		led = list_first_entry(&sc->leds, struct ath_led, list); |  		led = list_first_entry(&sc->leds, struct ath_led, list); | ||||||
|  #ifdef CONFIG_GPIOLIB |  #ifdef CONFIG_GPIOLIB | ||||||
| @@ -293,6 +362,7 @@ void ath_init_leds(struct ath_softc *sc)
 | @@ -299,6 +368,7 @@ void ath_init_leds(struct ath_softc *sc)
 | ||||||
|  	ath_fill_led_pin(sc); |  | ||||||
|   |  | ||||||
|  		ath9k_register_gpio_chip(sc); |  		ath9k_register_gpio_chip(sc); | ||||||
|  |   | ||||||
|  |  	ath_fill_led_pin(sc); | ||||||
| +	ath9k_init_buttons(sc);
 | +	ath9k_init_buttons(sc);
 | ||||||
|   |   | ||||||
|  	if (pdata && pdata->leds && pdata->num_leds) |  	if (pdata && pdata->leds && pdata->num_leds) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user