aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/udl/udl_fb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/udl/udl_fb.c')
-rw-r--r--drivers/gpu/drm/udl/udl_fb.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 8cbcb4589bd3..5fc16cecd3ba 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -589,19 +589,27 @@ int udl_fbdev_init(struct drm_device *dev)
589 589
590 ret = drm_fb_helper_init(dev, &ufbdev->helper, 590 ret = drm_fb_helper_init(dev, &ufbdev->helper,
591 1, 1); 591 1, 1);
592 if (ret) { 592 if (ret)
593 kfree(ufbdev); 593 goto free;
594 return ret;
595
596 }
597 594
598 drm_fb_helper_single_add_all_connectors(&ufbdev->helper); 595 ret = drm_fb_helper_single_add_all_connectors(&ufbdev->helper);
596 if (ret)
597 goto fini;
599 598
600 /* disable all the possible outputs/crtcs before entering KMS mode */ 599 /* disable all the possible outputs/crtcs before entering KMS mode */
601 drm_helper_disable_unused_functions(dev); 600 drm_helper_disable_unused_functions(dev);
602 601
603 drm_fb_helper_initial_config(&ufbdev->helper, bpp_sel); 602 ret = drm_fb_helper_initial_config(&ufbdev->helper, bpp_sel);
603 if (ret)
604 goto fini;
605
604 return 0; 606 return 0;
607
608fini:
609 drm_fb_helper_fini(&ufbdev->helper);
610free:
611 kfree(ufbdev);
612 return ret;
605} 613}
606 614
607void udl_fbdev_cleanup(struct drm_device *dev) 615void udl_fbdev_cleanup(struct drm_device *dev)