Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84b46990 authored by Joonyoung Shim's avatar Joonyoung Shim Committed by Inki Dae
Browse files

drm/exynos: restored kernel_fb_list when reiniting fb_helper



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: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
parent 74ccc539
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -405,6 +405,18 @@ int exynos_drm_fbdev_reinit(struct drm_device *dev)
	fb_helper = private->fb_helper;
	fb_helper = private->fb_helper;


	if (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);
		drm_fb_helper_fini(fb_helper);


		ret = drm_fb_helper_init(dev, fb_helper,
		ret = drm_fb_helper_init(dev, fb_helper,
@@ -414,6 +426,9 @@ int exynos_drm_fbdev_reinit(struct drm_device *dev)
			return ret;
			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);
		ret = drm_fb_helper_single_add_all_connectors(fb_helper);
		if (ret < 0) {
		if (ret < 0) {
			DRM_ERROR("failed to add fb helper to connectors\n");
			DRM_ERROR("failed to add fb helper to connectors\n");