[PATCH 01/28] backlight: lcd: Rearrange code in fb_notifier_callback()

Thomas Zimmermann tzimmermann at suse.de
Tue Aug 20 09:22:39 UTC 2024


First aqcuire the ops_lock and do al tests while holing it. Rearranges
the code in lcd's fb_notifier_callback() to resemble the callback in
the backlight module. This will simplify later changes to these tests.

Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
---
 drivers/video/backlight/lcd.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index ceec90ca758b..0cd0fa1b24f9 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -29,21 +29,25 @@ static int fb_notifier_callback(struct notifier_block *self,
 {
 	struct lcd_device *ld;
 	struct fb_event *evdata = data;
+	struct fb_info *info = evdata->info;
 
 	ld = container_of(self, struct lcd_device, fb_notif);
+	mutex_lock(&ld->ops_lock);
+
 	if (!ld->ops)
-		return 0;
+		goto out;
+	if (ld->ops->check_fb && !ld->ops->check_fb(ld, evdata->info))
+		goto out;
 
-	mutex_lock(&ld->ops_lock);
-	if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) {
-		if (event == FB_EVENT_BLANK) {
-			if (ld->ops->set_power)
-				ld->ops->set_power(ld, *(int *)evdata->data);
-		} else {
-			if (ld->ops->set_mode)
-				ld->ops->set_mode(ld, evdata->data);
-		}
+	if (event == FB_EVENT_BLANK) {
+		if (ld->ops->set_power)
+			ld->ops->set_power(ld, *(int *)evdata->data);
+	} else {
+		if (ld->ops->set_mode)
+			ld->ops->set_mode(ld, evdata->data);
 	}
+
+out:
 	mutex_unlock(&ld->ops_lock);
 	return 0;
 }
-- 
2.46.0



More information about the dri-devel mailing list