[PATCH 07/13] backlight: lcd: Maintain global list of lcd devices
Thomas Zimmermann
tzimmermann at suse.de
Thu Feb 6 15:30:26 UTC 2025
Maintain a list of lcd devices. This will replace the fbdev notifiers
that all lcd devices currently subscribe to.
Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
---
drivers/video/backlight/lcd.c | 11 +++++++++++
include/linux/lcd.h | 5 +++++
2 files changed, 16 insertions(+)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index 3267acf8dc5b..95a371b3e8a4 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -18,6 +18,9 @@
#include <linux/fb.h>
#include <linux/slab.h>
+static struct list_head lcd_dev_list;
+static struct mutex lcd_dev_list_mutex;
+
#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \
defined(CONFIG_LCD_CLASS_DEVICE_MODULE))
static int to_lcd_power(int fb_blank)
@@ -251,6 +254,10 @@ struct lcd_device *lcd_device_register(const char *name, struct device *parent,
return ERR_PTR(rc);
}
+ mutex_lock(&lcd_dev_list_mutex);
+ list_add(&new_ld->entry, &lcd_dev_list);
+ mutex_unlock(&lcd_dev_list_mutex);
+
return new_ld;
}
EXPORT_SYMBOL(lcd_device_register);
@@ -266,6 +273,10 @@ void lcd_device_unregister(struct lcd_device *ld)
if (!ld)
return;
+ mutex_lock(&lcd_dev_list_mutex);
+ list_del(&ld->entry);
+ mutex_unlock(&lcd_dev_list_mutex);
+
mutex_lock(&ld->ops_lock);
ld->ops = NULL;
mutex_unlock(&ld->ops_lock);
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index c3ccdff4519a..195b95edb13f 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -82,6 +82,11 @@ struct lcd_device {
/* The framebuffer notifier block */
struct notifier_block fb_notif;
+ /**
+ * @entry: List entry of all registered lcd devices
+ */
+ struct list_head entry;
+
struct device dev;
};
--
2.48.1
More information about the dri-devel
mailing list