Skip to content

Commit

Permalink
drm/exynos: restored kernel_fb_list when reiniting fb_helper
Browse files Browse the repository at this point in the history
during recreating exynos_drm_fbdev as a new display device probes,
fb_helper is reinitialized but kernel fb is not changed
so kernel_fb_list should be restored after fb_helper is reinitialized.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
  • Loading branch information
Joonyoung Shim authored and Inki Dae committed Nov 15, 2011
1 parent 74ccc53 commit 84b4699
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/gpu/drm/exynos/exynos_drm_fbdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,18 @@ int exynos_drm_fbdev_reinit(struct drm_device *dev)
fb_helper = private->fb_helper;

if (fb_helper) {
struct list_head temp_list;

INIT_LIST_HEAD(&temp_list);

/*
* fb_helper is reintialized but kernel fb is reused
* so kernel_fb_list need to be backuped and restored
*/
if (!list_empty(&fb_helper->kernel_fb_list))
list_replace_init(&fb_helper->kernel_fb_list,
&temp_list);

drm_fb_helper_fini(fb_helper);

ret = drm_fb_helper_init(dev, fb_helper,
Expand All @@ -414,6 +426,9 @@ int exynos_drm_fbdev_reinit(struct drm_device *dev)
return ret;
}

if (!list_empty(&temp_list))
list_replace(&temp_list, &fb_helper->kernel_fb_list);

ret = drm_fb_helper_single_add_all_connectors(fb_helper);
if (ret < 0) {
DRM_ERROR("failed to add fb helper to connectors\n");
Expand Down

0 comments on commit 84b4699

Please sign in to comment.