Commit a7c9a0aa authored by Bruno Prémont's avatar Bruno Prémont Committed by Jiri Kosina

HID: picolcd: fix deferred_io init/cleanup to fb ordering

Adjust ordering if framebuffer (un)registration and defio init/cleanup
to match the correct order (init defio, register FB ... unregister FB,
cleanup defio)
Acked-by: default avatarJaya Kumar <jayakumar.lkml@gmail.com>
Signed-off-by: default avatarBruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 6dc398ac
...@@ -707,18 +707,19 @@ static int picolcd_init_framebuffer(struct picolcd_data *data) ...@@ -707,18 +707,19 @@ static int picolcd_init_framebuffer(struct picolcd_data *data)
dev_err(dev, "failed to create sysfs attributes\n"); dev_err(dev, "failed to create sysfs attributes\n");
goto err_cleanup; goto err_cleanup;
} }
fb_deferred_io_init(info);
data->fb_info = info; data->fb_info = info;
error = register_framebuffer(info); error = register_framebuffer(info);
if (error) { if (error) {
dev_err(dev, "failed to register framebuffer\n"); dev_err(dev, "failed to register framebuffer\n");
goto err_sysfs; goto err_sysfs;
} }
fb_deferred_io_init(info);
/* schedule first output of framebuffer */ /* schedule first output of framebuffer */
schedule_delayed_work(&info->deferred_work, 0); schedule_delayed_work(&info->deferred_work, 0);
return 0; return 0;
err_sysfs: err_sysfs:
fb_deferred_io_cleanup(info);
device_remove_file(dev, &dev_attr_fb_update_rate); device_remove_file(dev, &dev_attr_fb_update_rate);
err_cleanup: err_cleanup:
data->fb_vbitmap = NULL; data->fb_vbitmap = NULL;
...@@ -747,7 +748,6 @@ static void picolcd_exit_framebuffer(struct picolcd_data *data) ...@@ -747,7 +748,6 @@ static void picolcd_exit_framebuffer(struct picolcd_data *data)
data->fb_bpp = 0; data->fb_bpp = 0;
data->fb_info = NULL; data->fb_info = NULL;
device_remove_file(&data->hdev->dev, &dev_attr_fb_update_rate); device_remove_file(&data->hdev->dev, &dev_attr_fb_update_rate);
fb_deferred_io_cleanup(info);
unregister_framebuffer(info); unregister_framebuffer(info);
vfree(fb_bitmap); vfree(fb_bitmap);
kfree(fb_vbitmap); kfree(fb_vbitmap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment