From caee153f8db57d9994c7d57a9f39fb1767a440f1 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Wed, 1 Jan 2025 11:22:37 +0100 Subject: [PATCH] Revert "mac80211: ath9k: remove platform leds" This reverts commit ad2e55e02b67701b6af61c9348234987b1217a59. Signed-off-by: Robert Marko --- .../mac80211/patches/ath9k/100-gpio-of.patch | 5 +- .../patches/ath9k/530-ath9k_extra_leds.patch | 24 ++++---- .../ath9k/531-ath9k_extra_platform_leds.patch | 56 +++++++++++++++++++ .../ath9k/542-ath9k_debugfs_diag.patch | 2 +- .../ath9k/548-ath9k_enable_gpio_chip.patch | 16 ++++-- .../ath9k/549-ath9k_enable_gpio_buttons.patch | 8 +-- 6 files changed, 87 insertions(+), 24 deletions(-) create mode 100644 package/kernel/mac80211/patches/ath9k/531-ath9k_extra_platform_leds.patch diff --git a/package/kernel/mac80211/patches/ath9k/100-gpio-of.patch b/package/kernel/mac80211/patches/ath9k/100-gpio-of.patch index 28dcc6cf85..2cddb59fc5 100644 --- a/package/kernel/mac80211/patches/ath9k/100-gpio-of.patch +++ b/package/kernel/mac80211/patches/ath9k/100-gpio-of.patch @@ -1,9 +1,12 @@ --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h -@@ -976,6 +976,10 @@ struct ath_hw { +@@ -976,6 +976,13 @@ struct ath_hw { bool disable_2ghz; bool disable_5ghz; ++ int num_leds; ++ const struct gpio_led *leds; ++ + unsigned num_btns; + const struct gpio_keys_button *btns; + unsigned btn_poll_interval; diff --git a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch index 0377c3f0b6..4bb27d558c 100644 --- a/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch +++ b/package/kernel/mac80211/patches/ath9k/530-ath9k_extra_leds.patch @@ -38,7 +38,7 @@ #ifdef CPTCFG_ATH9K_DEBUGFS --- a/drivers/net/wireless/ath/ath9k/gpio.c +++ b/drivers/net/wireless/ath/ath9k/gpio.c -@@ -39,61 +39,115 @@ static void ath_fill_led_pin(struct ath_ +@@ -39,61 +39,111 @@ static void ath_fill_led_pin(struct ath_ else ah->led_pin = ATH_LED_PIN_DEF; } @@ -125,11 +125,11 @@ { - if (!sc->led_registered) - return; -- -- ath_led_brightness(&sc->led_cdev, LED_OFF); -- led_classdev_unregister(&sc->led_cdev); + struct ath_led *led; +- ath_led_brightness(&sc->led_cdev, LED_OFF); +- led_classdev_unregister(&sc->led_cdev); +- - ath9k_hw_gpio_free(sc->sc_ah, sc->sc_ah->led_pin); + while (!list_empty(&sc->leds)) { + led = list_first_entry(&sc->leds, struct ath_led, list); @@ -144,7 +144,6 @@ void ath_init_leds(struct ath_softc *sc) { - int ret; -+ struct ath_hw *ah = sc->sc_ah; + char led_name[32]; + const char *trigger; + @@ -163,21 +162,18 @@ - "ath9k-%s", wiphy_name(sc->hw->wiphy)); - sc->led_cdev.name = sc->led_name; - sc->led_cdev.brightness_set = ath_led_brightness; -- -- ret = led_classdev_register(wiphy_dev(sc->hw->wiphy), &sc->led_cdev); -- if (ret < 0) -+ if (ah->led_pin < 0) - return; - -- sc->led_registered = true; + snprintf(led_name, sizeof(led_name), "ath9k-%s", + wiphy_name(sc->hw->wiphy)); -+ + +- ret = led_classdev_register(wiphy_dev(sc->hw->wiphy), &sc->led_cdev); +- if (ret < 0) +- return; + if (ath9k_led_blink) + trigger = sc->led_default_trigger; + else + trigger = ieee80211_get_radio_led_name(sc->hw); -+ + +- sc->led_registered = true; + ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, + !sc->sc_ah->config.led_active_high); } diff --git a/package/kernel/mac80211/patches/ath9k/531-ath9k_extra_platform_leds.patch b/package/kernel/mac80211/patches/ath9k/531-ath9k_extra_platform_leds.patch new file mode 100644 index 0000000000..4f41cd9139 --- /dev/null +++ b/package/kernel/mac80211/patches/ath9k/531-ath9k_extra_platform_leds.patch @@ -0,0 +1,56 @@ +--- a/drivers/net/wireless/ath/ath9k/gpio.c ++++ b/drivers/net/wireless/ath/ath9k/gpio.c +@@ -108,6 +108,24 @@ int ath_create_gpio_led(struct ath_softc + return ret; + } + ++static int ath_create_platform_led(struct ath_softc *sc, ++ const struct gpio_led *gpio) ++{ ++ struct ath_led *led; ++ int ret; ++ ++ led = kzalloc(sizeof(*led), GFP_KERNEL); ++ if (!led) ++ return -ENOMEM; ++ ++ led->gpio = gpio; ++ ret = ath_add_led(sc, led); ++ if (ret < 0) ++ kfree(led); ++ ++ return ret; ++} ++ + void ath_deinit_leds(struct ath_softc *sc) + { + struct ath_led *led; +@@ -124,8 +142,10 @@ void ath_deinit_leds(struct ath_softc *s + + void ath_init_leds(struct ath_softc *sc) + { ++ struct ath_hw *ah = sc->sc_ah; + char led_name[32]; + const char *trigger; ++ int i; + + INIT_LIST_HEAD(&sc->leds); + +@@ -134,6 +154,17 @@ void ath_init_leds(struct ath_softc *sc) + + ath_fill_led_pin(sc); + ++ if (ah->leds && ah->num_leds) ++ for (i = 0; i < ah->num_leds; i++) { ++ if (ah->leds[i].gpio == ah->led_pin) ++ ah->led_pin = -1; ++ ++ ath_create_platform_led(sc, &ah->leds[i]); ++ } ++ ++ if (ah->led_pin < 0) ++ return; ++ + snprintf(led_name, sizeof(led_name), "ath9k-%s", + wiphy_name(sc->hw->wiphy)); + diff --git a/package/kernel/mac80211/patches/ath9k/542-ath9k_debugfs_diag.patch b/package/kernel/mac80211/patches/ath9k/542-ath9k_debugfs_diag.patch index 90a8e4b0fb..9821716c6a 100644 --- a/package/kernel/mac80211/patches/ath9k/542-ath9k_debugfs_diag.patch +++ b/package/kernel/mac80211/patches/ath9k/542-ath9k_debugfs_diag.patch @@ -84,7 +84,7 @@ bool reset_power_on; bool htc_reset_init; -@@ -1083,6 +1091,7 @@ void ath9k_hw_check_nav(struct ath_hw *a +@@ -1086,6 +1094,7 @@ void ath9k_hw_check_nav(struct ath_hw *a bool ath9k_hw_check_alive(struct ath_hw *ah); bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode); diff --git a/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch index 0efe23b9dc..1c071c4621 100644 --- a/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch +++ b/package/kernel/mac80211/patches/ath9k/548-ath9k_enable_gpio_chip.patch @@ -192,7 +192,7 @@ Signed-off-by: Felix Fietkau return 0; } -@@ -117,17 +241,24 @@ void ath_deinit_leds(struct ath_softc *s +@@ -135,17 +259,24 @@ void ath_deinit_leds(struct ath_softc *s while (!list_empty(&sc->leds)) { led = list_first_entry(&sc->leds, struct ath_led, list); @@ -216,8 +216,8 @@ Signed-off-by: Felix Fietkau + struct device_node *np = sc->dev->of_node; char led_name[32]; const char *trigger; - -@@ -136,6 +267,12 @@ void ath_init_leds(struct ath_softc *sc) + int i; +@@ -155,6 +286,12 @@ void ath_init_leds(struct ath_softc *sc) if (AR_SREV_9100(sc->sc_ah)) return; @@ -229,4 +229,12 @@ Signed-off-by: Felix Fietkau + ath_fill_led_pin(sc); - if (ah->led_pin < 0) + if (ah->leds && ah->num_leds) +@@ -179,6 +316,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); + } ++ + #endif + + /*******************/ diff --git a/package/kernel/mac80211/patches/ath9k/549-ath9k_enable_gpio_buttons.patch b/package/kernel/mac80211/patches/ath9k/549-ath9k_enable_gpio_buttons.patch index 78700222a9..92f110b95c 100644 --- a/package/kernel/mac80211/patches/ath9k/549-ath9k_enable_gpio_buttons.patch +++ b/package/kernel/mac80211/patches/ath9k/549-ath9k_enable_gpio_buttons.patch @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau #endif /* CONFIG_GPIOLIB */ /********************************/ -@@ -239,6 +310,7 @@ void ath_deinit_leds(struct ath_softc *s +@@ -257,6 +328,7 @@ void ath_deinit_leds(struct ath_softc *s { struct ath_led *led; @@ -120,11 +120,11 @@ Signed-off-by: Felix Fietkau while (!list_empty(&sc->leds)) { led = list_first_entry(&sc->leds, struct ath_led, list); #ifdef CONFIG_GPIOLIB -@@ -274,6 +346,7 @@ void ath_init_leds(struct ath_softc *sc) +@@ -293,6 +365,7 @@ void ath_init_leds(struct ath_softc *sc) } ath_fill_led_pin(sc); + ath9k_init_buttons(sc); - if (ah->led_pin < 0) - return; + if (ah->leds && ah->num_leds) + for (i = 0; i < ah->num_leds; i++) { -- 2.30.2