Skip to content

Commit 56a6f83

Browse files
Thomas Zimmermannlag-linaro
authored andcommitted
fbdev: ssd1307fb: Init backlight before registering framebuffer
For drivers that support backlight, LCD and fbdev devices, fbdev has to be initialized last. See documentation for struct fbinfo.bl_dev. The backlight name's index number comes from register_framebuffer(), which now happens after initializing the backlight device. So like in all other backlight drivers, we now give the backlight device a generic name without the fbdev index. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://lore.kernel.org/r/20240305162425.23845-9-tzimmermann@suse.de Signed-off-by: Lee Jones <lee@kernel.org>
1 parent 8a8e7f8 commit 56a6f83

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

drivers/video/fbdev/ssd1307fb.c

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,6 @@ static int ssd1307fb_probe(struct i2c_client *client)
594594
{
595595
struct device *dev = &client->dev;
596596
struct backlight_device *bl;
597-
char bl_name[12];
598597
struct fb_info *info;
599598
struct fb_deferred_io *ssd1307fb_defio;
600599
u32 vmem_size;
@@ -733,31 +732,30 @@ static int ssd1307fb_probe(struct i2c_client *client)
733732
if (ret)
734733
goto regulator_enable_error;
735734

736-
ret = register_framebuffer(info);
737-
if (ret) {
738-
dev_err(dev, "Couldn't register the framebuffer\n");
739-
goto panel_init_error;
740-
}
741-
742-
snprintf(bl_name, sizeof(bl_name), "ssd1307fb%d", info->node);
743-
bl = backlight_device_register(bl_name, dev, par, &ssd1307fb_bl_ops,
735+
bl = backlight_device_register("ssd1307fb-bl", dev, par, &ssd1307fb_bl_ops,
744736
NULL);
745737
if (IS_ERR(bl)) {
746738
ret = PTR_ERR(bl);
747739
dev_err(dev, "unable to register backlight device: %d\n", ret);
748-
goto bl_init_error;
740+
goto panel_init_error;
741+
}
742+
info->bl_dev = bl;
743+
744+
ret = register_framebuffer(info);
745+
if (ret) {
746+
dev_err(dev, "Couldn't register the framebuffer\n");
747+
goto fb_init_error;
749748
}
750749

751750
bl->props.brightness = par->contrast;
752751
bl->props.max_brightness = MAX_CONTRAST;
753-
info->bl_dev = bl;
754752

755753
dev_info(dev, "fb%d: %s framebuffer device registered, using %d bytes of video memory\n", info->node, info->fix.id, vmem_size);
756754

757755
return 0;
758756

759-
bl_init_error:
760-
unregister_framebuffer(info);
757+
fb_init_error:
758+
backlight_device_unregister(bl);
761759
panel_init_error:
762760
pwm_disable(par->pwm);
763761
pwm_put(par->pwm);

0 commit comments

Comments
 (0)