aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/ast
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-12-19 05:21:32 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-01-21 08:57:03 -0500
commit01934c2a691882185b3021d437df13bcba07711d (patch)
tree6e891d192b0e4bd35b4f00ee013ea9763d5dc48d /drivers/gpu/drm/ast
parent7119ad5f6b0ce222072b0c0b31c3b4ac87660afa (diff)
drm/fb-helper: Propagate errors from initial config failure
Make drm_fb_helper_initial_config() return an int rather than a bool so that the error can be properly propagated. While at it, update drivers to propagate errors further rather than just ignore them. v2: - cirrus: No cleanup is required, the top-level cirrus_driver_load() will do it as part of cirrus_driver_unload() in its cleanup path. Reported-by: Fengguang Wu <fengguang.wu@intel.com> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Cc: Rob Clark <robdclark@gmail.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Christian König <christian.koenig@amd.com> Cc: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Reviewed-by: Christian König <christian.koenig@amd.com> [danvet: Squash in simplification patch from kbuild.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/ast')
-rw-r--r--drivers/gpu/drm/ast/ast_fb.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/gpu/drm/ast/ast_fb.c b/drivers/gpu/drm/ast/ast_fb.c
index 5c60ae524c45..ff68eefae273 100644
--- a/drivers/gpu/drm/ast/ast_fb.c
+++ b/drivers/gpu/drm/ast/ast_fb.c
@@ -335,18 +335,27 @@ int ast_fbdev_init(struct drm_device *dev)
335 335
336 ret = drm_fb_helper_init(dev, &afbdev->helper, 336 ret = drm_fb_helper_init(dev, &afbdev->helper,
337 1, 1); 337 1, 1);
338 if (ret) { 338 if (ret)
339 kfree(afbdev); 339 goto free;
340 return ret;
341 }
342 340
343 drm_fb_helper_single_add_all_connectors(&afbdev->helper); 341 ret = drm_fb_helper_single_add_all_connectors(&afbdev->helper);
342 if (ret)
343 goto fini;
344 344
345 /* disable all the possible outputs/crtcs before entering KMS mode */ 345 /* disable all the possible outputs/crtcs before entering KMS mode */
346 drm_helper_disable_unused_functions(dev); 346 drm_helper_disable_unused_functions(dev);
347 347
348 drm_fb_helper_initial_config(&afbdev->helper, 32); 348 ret = drm_fb_helper_initial_config(&afbdev->helper, 32);
349 if (ret)
350 goto fini;
351
349 return 0; 352 return 0;
353
354fini:
355 drm_fb_helper_fini(&afbdev->helper);
356free:
357 kfree(afbdev);
358 return ret;
350} 359}
351 360
352void ast_fbdev_fini(struct drm_device *dev) 361void ast_fbdev_fini(struct drm_device *dev)