mt76_led_init() and mt76_led_cleanup() skip the LED unless the driver sets brightness_set or blink_set. A USB driver that switches its LED through register writes has to sleep and can only provide brightness_set_blocking. Accept that callback as well. Signed-off-by: Josef Schlehofer --- drivers/net/wireless/mediatek/mt76/mac80211.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mac80211.c b/drivers/net/wireless/mediatek/mt76/mac80211.c index c9762082f473..e3eea578a97c 100644 --- a/drivers/net/wireless/mediatek/mt76/mac80211.c +++ b/drivers/net/wireless/mediatek/mt76/mac80211.c @@ -193,13 +193,21 @@ static const struct cfg80211_sar_capa mt76_sar_capa = { .freq_ranges = &mt76_sar_freq_ranges[0], }; +static bool mt76_led_has_ops(struct mt76_phy *phy) +{ + struct led_classdev *cdev = &phy->leds.cdev; + + return cdev->brightness_set || cdev->brightness_set_blocking || + cdev->blink_set; +} + static int mt76_led_init(struct mt76_phy *phy) { struct mt76_dev *dev = phy->dev; struct ieee80211_hw *hw = phy->hw; struct device_node *np = dev->dev->of_node; - if (!phy->leds.cdev.brightness_set && !phy->leds.cdev.blink_set) + if (!mt76_led_has_ops(phy)) return 0; np = of_get_child_by_name(np, "led"); @@ -242,7 +250,7 @@ static int mt76_led_init(struct mt76_phy *phy) static void mt76_led_cleanup(struct mt76_phy *phy) { - if (!phy->leds.cdev.brightness_set && !phy->leds.cdev.blink_set) + if (!mt76_led_has_ops(phy)) return; led_classdev_unregister(&phy->leds.cdev); -- 2.54.0 (Apple Git-157)