mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
backlight: lcd: Rearrange code in fb_notifier_callback()
First acquire the ops_lock and do all tests while holding 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. v2: - avoid gotos by using guard(mutex) (Daniel) - fix typos in commit description (Daniel) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> Link: https://lore.kernel.org/r/20240906075439.98476-2-tzimmermann@suse.de Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
9852d85ec9
commit
d36870367c
@ -27,24 +27,25 @@
|
||||
static int fb_notifier_callback(struct notifier_block *self,
|
||||
unsigned long event, void *data)
|
||||
{
|
||||
struct lcd_device *ld;
|
||||
struct lcd_device *ld = container_of(self, struct lcd_device, fb_notif);
|
||||
struct fb_event *evdata = data;
|
||||
struct fb_info *info = evdata->info;
|
||||
|
||||
guard(mutex)(&ld->ops_lock);
|
||||
|
||||
ld = container_of(self, struct lcd_device, fb_notif);
|
||||
if (!ld->ops)
|
||||
return 0;
|
||||
if (ld->ops->check_fb && !ld->ops->check_fb(ld, info))
|
||||
return 0;
|
||||
|
||||
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);
|
||||
}
|
||||
mutex_unlock(&ld->ops_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user