diff mbox series

[10/13] leds: backlight trigger: Maintain global list of led backlight triggers

Message ID 20250206154033.697495-11-tzimmermann@suse.de (mailing list archive)
State Awaiting Upstream
Headers show
Series backlight, lcd, led: Remove fbdev dependencies | expand

Commit Message

Thomas Zimmermann Feb. 6, 2025, 3:30 p.m. UTC
Maintain a list of led backlight triggers. This will replace the
fbdev notifiers that all backlight triggers currently subscribe to.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/leds/trigger/ledtrig-backlight.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Lee Jones Feb. 11, 2025, 2 p.m. UTC | #1
On Thu, 06 Feb 2025, Thomas Zimmermann wrote:

> Maintain a list of led backlight triggers. This will replace the
> fbdev notifiers that all backlight triggers currently subscribe to.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>  drivers/leds/trigger/ledtrig-backlight.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/leds/trigger/ledtrig-backlight.c b/drivers/leds/trigger/ledtrig-backlight.c
> index 487577d22cfc..c1c1aa60cf07 100644
> --- a/drivers/leds/trigger/ledtrig-backlight.c
> +++ b/drivers/leds/trigger/ledtrig-backlight.c
> @@ -23,8 +23,13 @@ struct bl_trig_notifier {
>  	int old_status;
>  	struct notifier_block notifier;
>  	unsigned invert;
> +
> +	struct list_head entry;

You don't appear to be doing anything with the list here.

It would be better if you introduced the list when it's first utilised.

>  };
>  
> +static struct list_head ledtrig_backlight_list;
> +static struct mutex ledtrig_backlight_list_mutex;
> +
>  static int fb_notifier_callback(struct notifier_block *p,
>  				unsigned long event, void *data)
>  {
> @@ -118,6 +123,10 @@ static int bl_trig_activate(struct led_classdev *led)
>  	if (ret)
>  		dev_err(led->dev, "unable to register backlight trigger\n");
>  
> +	mutex_lock(&ledtrig_backlight_list_mutex);
> +	list_add(&n->entry, &ledtrig_backlight_list);
> +	mutex_unlock(&ledtrig_backlight_list_mutex);
> +
>  	return 0;
>  }
>  
> @@ -125,6 +134,10 @@ static void bl_trig_deactivate(struct led_classdev *led)
>  {
>  	struct bl_trig_notifier *n = led_get_trigger_data(led);
>  
> +	mutex_lock(&ledtrig_backlight_list_mutex);
> +	list_del(&n->entry);
> +	mutex_unlock(&ledtrig_backlight_list_mutex);
> +
>  	fb_unregister_client(&n->notifier);
>  	kfree(n);
>  }
> -- 
> 2.48.1
>
Thomas Zimmermann Feb. 13, 2025, 2:23 p.m. UTC | #2
Hi

Am 11.02.25 um 15:00 schrieb Lee Jones:
> On Thu, 06 Feb 2025, Thomas Zimmermann wrote:
>
>> Maintain a list of led backlight triggers. This will replace the
>> fbdev notifiers that all backlight triggers currently subscribe to.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>>   drivers/leds/trigger/ledtrig-backlight.c | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/drivers/leds/trigger/ledtrig-backlight.c b/drivers/leds/trigger/ledtrig-backlight.c
>> index 487577d22cfc..c1c1aa60cf07 100644
>> --- a/drivers/leds/trigger/ledtrig-backlight.c
>> +++ b/drivers/leds/trigger/ledtrig-backlight.c
>> @@ -23,8 +23,13 @@ struct bl_trig_notifier {
>>   	int old_status;
>>   	struct notifier_block notifier;
>>   	unsigned invert;
>> +
>> +	struct list_head entry;
> You don't appear to be doing anything with the list here.
>
> It would be better if you introduced the list when it's first utilised.

That's patch 12. I'll merge them.

Best regards
Thomas

>
>>   };
>>   
>> +static struct list_head ledtrig_backlight_list;
>> +static struct mutex ledtrig_backlight_list_mutex;
>> +
>>   static int fb_notifier_callback(struct notifier_block *p,
>>   				unsigned long event, void *data)
>>   {
>> @@ -118,6 +123,10 @@ static int bl_trig_activate(struct led_classdev *led)
>>   	if (ret)
>>   		dev_err(led->dev, "unable to register backlight trigger\n");
>>   
>> +	mutex_lock(&ledtrig_backlight_list_mutex);
>> +	list_add(&n->entry, &ledtrig_backlight_list);
>> +	mutex_unlock(&ledtrig_backlight_list_mutex);
>> +
>>   	return 0;
>>   }
>>   
>> @@ -125,6 +134,10 @@ static void bl_trig_deactivate(struct led_classdev *led)
>>   {
>>   	struct bl_trig_notifier *n = led_get_trigger_data(led);
>>   
>> +	mutex_lock(&ledtrig_backlight_list_mutex);
>> +	list_del(&n->entry);
>> +	mutex_unlock(&ledtrig_backlight_list_mutex);
>> +
>>   	fb_unregister_client(&n->notifier);
>>   	kfree(n);
>>   }
>> -- 
>> 2.48.1
>>
diff mbox series

Patch

diff --git a/drivers/leds/trigger/ledtrig-backlight.c b/drivers/leds/trigger/ledtrig-backlight.c
index 487577d22cfc..c1c1aa60cf07 100644
--- a/drivers/leds/trigger/ledtrig-backlight.c
+++ b/drivers/leds/trigger/ledtrig-backlight.c
@@ -23,8 +23,13 @@  struct bl_trig_notifier {
 	int old_status;
 	struct notifier_block notifier;
 	unsigned invert;
+
+	struct list_head entry;
 };
 
+static struct list_head ledtrig_backlight_list;
+static struct mutex ledtrig_backlight_list_mutex;
+
 static int fb_notifier_callback(struct notifier_block *p,
 				unsigned long event, void *data)
 {
@@ -118,6 +123,10 @@  static int bl_trig_activate(struct led_classdev *led)
 	if (ret)
 		dev_err(led->dev, "unable to register backlight trigger\n");
 
+	mutex_lock(&ledtrig_backlight_list_mutex);
+	list_add(&n->entry, &ledtrig_backlight_list);
+	mutex_unlock(&ledtrig_backlight_list_mutex);
+
 	return 0;
 }
 
@@ -125,6 +134,10 @@  static void bl_trig_deactivate(struct led_classdev *led)
 {
 	struct bl_trig_notifier *n = led_get_trigger_data(led);
 
+	mutex_lock(&ledtrig_backlight_list_mutex);
+	list_del(&n->entry);
+	mutex_unlock(&ledtrig_backlight_list_mutex);
+
 	fb_unregister_client(&n->notifier);
 	kfree(n);
 }