Merge tag 'drm-intel-next-2023-03-07' of git://anongit.freedesktop.org/drm/drm-intel...
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / display / intel_fbdev.c
index b66ee27..3659350 100644 (file)
@@ -352,6 +352,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);
 }
 
@@ -532,10 +533,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) {
@@ -554,8 +557,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));
 }