]> git.infradead.org Git - users/hch/misc.git/blobdiff - drivers/gpu/drm/i915/display/intel_fbdev.c
Merge tag 'drm-intel-next-2023-03-23' of git://anongit.freedesktop.org/drm/drm-intel...
[users/hch/misc.git] / drivers / gpu / drm / i915 / display / intel_fbdev.c
index a0d0f14d8c1439b22963dbd57f00de785ba78642..673bcdfb7ff6d36cf5f991a065c9c8a2f216e264 100644 (file)
@@ -364,6 +364,7 @@ static void intel_fbdev_destroy(struct intel_fbdev *ifbdev)
        if (ifbdev->fb)
                drm_framebuffer_remove(&ifbdev->fb->base);
 
+       drm_fb_helper_unprepare(&ifbdev->helper);
        kfree(ifbdev);
 }
 
@@ -544,10 +545,12 @@ int intel_fbdev_init(struct drm_device *dev)
                return -ENOMEM;
 
        mutex_init(&ifbdev->hpd_lock);
-       drm_fb_helper_prepare(dev, &ifbdev->helper, &intel_fb_helper_funcs);
+       drm_fb_helper_prepare(dev, &ifbdev->helper, 32, &intel_fb_helper_funcs);
 
-       if (!intel_fbdev_init_bios(dev, ifbdev))
-               ifbdev->preferred_bpp = 32;
+       if (intel_fbdev_init_bios(dev, ifbdev))
+               ifbdev->helper.preferred_bpp = ifbdev->preferred_bpp;
+       else
+               ifbdev->preferred_bpp = ifbdev->helper.preferred_bpp;
 
        ret = drm_fb_helper_init(dev, &ifbdev->helper);
        if (ret) {
@@ -566,8 +569,7 @@ static void intel_fbdev_initial_config(void *data, async_cookie_t cookie)
        struct intel_fbdev *ifbdev = data;
 
        /* Due to peculiar init order wrt to hpd handling this is separate. */
-       if (drm_fb_helper_initial_config(&ifbdev->helper,
-                                        ifbdev->preferred_bpp))
+       if (drm_fb_helper_initial_config(&ifbdev->helper))
                intel_fbdev_unregister(to_i915(ifbdev->helper.dev));
 }