]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
drm/<drivers>: simplify ->fb_probe callback
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 21 Jan 2013 22:42:49 +0000 (23:42 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 13 Feb 2013 23:07:58 +0000 (00:07 +0100)
The fb helper lost its support for reallocating an fb completely, so
no need to return special success values any more.

Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/ast/ast_fb.c
drivers/gpu/drm/cirrus/cirrus_fbdev.c
drivers/gpu/drm/drm_fb_cma_helper.c
drivers/gpu/drm/exynos/exynos_drm_fbdev.c
drivers/gpu/drm/gma500/framebuffer.c
drivers/gpu/drm/i915/intel_fb.c
drivers/gpu/drm/mgag200/mgag200_fb.c
drivers/gpu/drm/nouveau/nouveau_fbcon.c
drivers/gpu/drm/radeon/radeon_fb.c
drivers/gpu/drm/udl/udl_fb.c
drivers/staging/omapdrm/omap_fbdev.c

index 81763cad9940bcd5335943dcbe341e51219c8df2..34931fe7d2c527ccc8ac6b7db926e1504c2aac70 100644 (file)
@@ -146,9 +146,10 @@ static int astfb_create_object(struct ast_fbdev *afbdev,
        return ret;
 }
 
-static int astfb_create(struct ast_fbdev *afbdev,
+static int astfb_create(struct drm_fb_helper *helper,
                        struct drm_fb_helper_surface_size *sizes)
 {
+       struct ast_fbdev *afbdev = (struct ast_fbdev *)helper;
        struct drm_device *dev = afbdev->helper.dev;
        struct drm_mode_fb_cmd2 mode_cmd;
        struct drm_framebuffer *fb;
@@ -249,26 +250,10 @@ static void ast_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green,
        *blue = ast_crtc->lut_b[regno] << 8;
 }
 
-static int ast_find_or_create_single(struct drm_fb_helper *helper,
-                                         struct drm_fb_helper_surface_size *sizes)
-{
-       struct ast_fbdev *afbdev = (struct ast_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = astfb_create(afbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static struct drm_fb_helper_funcs ast_fb_helper_funcs = {
        .gamma_set = ast_fb_gamma_set,
        .gamma_get = ast_fb_gamma_get,
-       .fb_probe = ast_find_or_create_single,
+       .fb_probe = astfb_create,
 };
 
 static void ast_fbdev_destroy(struct drm_device *dev,
index b96605c6e1b6674f238e3114c02bcefaf872e35b..e25afccaf85bd62feb4aae4d5dfab42d49c9ed4d 100644 (file)
@@ -121,9 +121,10 @@ static int cirrusfb_create_object(struct cirrus_fbdev *afbdev,
        return ret;
 }
 
-static int cirrusfb_create(struct cirrus_fbdev *gfbdev,
+static int cirrusfb_create(struct drm_fb_helper *helper,
                           struct drm_fb_helper_surface_size *sizes)
 {
+       struct cirrus_fbdev *gfbdev = (struct cirrus_fbdev *)helper;
        struct drm_device *dev = gfbdev->helper.dev;
        struct cirrus_device *cdev = gfbdev->helper.dev->dev_private;
        struct fb_info *info;
@@ -220,23 +221,6 @@ out_iounmap:
        return ret;
 }
 
-static int cirrus_fb_find_or_create_single(struct drm_fb_helper *helper,
-                                          struct drm_fb_helper_surface_size
-                                          *sizes)
-{
-       struct cirrus_fbdev *gfbdev = (struct cirrus_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = cirrusfb_create(gfbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static int cirrus_fbdev_destroy(struct drm_device *dev,
                                struct cirrus_fbdev *gfbdev)
 {
@@ -268,7 +252,7 @@ static int cirrus_fbdev_destroy(struct drm_device *dev,
 static struct drm_fb_helper_funcs cirrus_fb_helper_funcs = {
        .gamma_set = cirrus_crtc_fb_gamma_set,
        .gamma_get = cirrus_crtc_fb_gamma_get,
-       .fb_probe = cirrus_fb_find_or_create_single,
+       .fb_probe = cirrusfb_create,
 };
 
 int cirrus_fbdev_init(struct cirrus_device *cdev)
index ef3d33a8a7e2d747acb71689691ca6b177976c80..e851658f87d54292f1d3da456d9b648b02e142c8 100644 (file)
@@ -275,23 +275,8 @@ err_drm_gem_cma_free_object:
        return ret;
 }
 
-static int drm_fbdev_cma_probe(struct drm_fb_helper *helper,
-       struct drm_fb_helper_surface_size *sizes)
-{
-       int ret = 0;
-
-       if (!helper->fb) {
-               ret = drm_fbdev_cma_create(helper, sizes);
-               if (ret < 0)
-                       return ret;
-               ret = 1;
-       }
-
-       return ret;
-}
-
 static struct drm_fb_helper_funcs drm_fb_cma_helper_funcs = {
-       .fb_probe = drm_fbdev_cma_probe,
+       .fb_probe = drm_fbdev_cma_create,
 };
 
 /**
index fe2a0f068af705a32f6a1ae956f13597e29b06a7..68f0045f86b860d7ecd4b7477a98719a950a7f95 100644 (file)
@@ -226,36 +226,8 @@ out:
        return ret;
 }
 
-static int exynos_drm_fbdev_probe(struct drm_fb_helper *helper,
-                                  struct drm_fb_helper_surface_size *sizes)
-{
-       int ret = 0;
-
-       DRM_DEBUG_KMS("%s\n", __FILE__);
-
-       /*
-        * with !helper->fb, it means that this funcion is called first time
-        * and after that, the helper->fb would be used as clone mode.
-        */
-       if (!helper->fb) {
-               ret = exynos_drm_fbdev_create(helper, sizes);
-               if (ret < 0) {
-                       DRM_ERROR("failed to create fbdev.\n");
-                       return ret;
-               }
-
-               /*
-                * fb_helper expects a value more than 1 if succeed
-                * because register_framebuffer() should be called.
-                */
-               ret = 1;
-       }
-
-       return ret;
-}
-
 static struct drm_fb_helper_funcs exynos_drm_fb_helper_funcs = {
-       .fb_probe =     exynos_drm_fbdev_probe,
+       .fb_probe =     exynos_drm_fbdev_create,
 };
 
 int exynos_drm_fbdev_init(struct drm_device *dev)
index fee3bf85af4aa32bd14512cef7576d2cffa775a9..2590cac84257cd79cd2c01b4b6e1b16fd2dcebdf 100644 (file)
@@ -545,9 +545,7 @@ static int psbfb_probe(struct drm_fb_helper *helper,
        struct psb_fbdev *psb_fbdev = (struct psb_fbdev *)helper;
        struct drm_device *dev = psb_fbdev->psb_fb_helper.dev;
        struct drm_psb_private *dev_priv = dev->dev_private;
-       int new_fb = 0;
        int bytespp;
-       int ret;
 
        bytespp = sizes->surface_bpp / 8;
        if (bytespp == 3)       /* no 24bit packed */
@@ -562,13 +560,7 @@ static int psbfb_probe(struct drm_fb_helper *helper,
                 sizes->surface_depth = 16;
         }
 
-       if (!helper->fb) {
-               ret = psbfb_create(psb_fbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
+       return psbfb_create(psb_fbdev, sizes);
 }
 
 static struct drm_fb_helper_funcs psb_fb_helper_funcs = {
index 1c510da04d16446de1c8a514be03793c4eeff74b..981bdce3634ebcff3a8c11c80cd44d1ba838a229 100644 (file)
@@ -57,9 +57,10 @@ static struct fb_ops intelfb_ops = {
        .fb_debug_leave = drm_fb_helper_debug_leave,
 };
 
-static int intelfb_create(struct intel_fbdev *ifbdev,
+static int intelfb_create(struct drm_fb_helper *helper,
                          struct drm_fb_helper_surface_size *sizes)
 {
+       struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper;
        struct drm_device *dev = ifbdev->helper.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct fb_info *info;
@@ -181,26 +182,10 @@ out:
        return ret;
 }
 
-static int intel_fb_find_or_create_single(struct drm_fb_helper *helper,
-                                         struct drm_fb_helper_surface_size *sizes)
-{
-       struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = intelfb_create(ifbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static struct drm_fb_helper_funcs intel_fb_helper_funcs = {
        .gamma_set = intel_crtc_fb_gamma_set,
        .gamma_get = intel_crtc_fb_gamma_get,
-       .fb_probe = intel_fb_find_or_create_single,
+       .fb_probe = intelfb_create,
 };
 
 static void intel_fbdev_destroy(struct drm_device *dev,
index 5bded5b74eafcc6e7e6a410a83f53a508031001b..d2253f6394817dc5a0c1cf22ffb64887d0452846 100644 (file)
@@ -121,9 +121,10 @@ static int mgag200fb_create_object(struct mga_fbdev *afbdev,
        return ret;
 }
 
-static int mgag200fb_create(struct mga_fbdev *mfbdev,
+static int mgag200fb_create(struct drm_fb_helper *helper,
                           struct drm_fb_helper_surface_size *sizes)
 {
+       struct mga_fbdev *mfbdev = (struct mga_fbdev *)helper;
        struct drm_device *dev = mfbdev->helper.dev;
        struct drm_mode_fb_cmd2 mode_cmd;
        struct mga_device *mdev = dev->dev_private;
@@ -210,23 +211,6 @@ out:
        return ret;
 }
 
-static int mga_fb_find_or_create_single(struct drm_fb_helper *helper,
-                                          struct drm_fb_helper_surface_size
-                                          *sizes)
-{
-       struct mga_fbdev *mfbdev = (struct mga_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = mgag200fb_create(mfbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static int mga_fbdev_destroy(struct drm_device *dev,
                                struct mga_fbdev *mfbdev)
 {
@@ -257,7 +241,7 @@ static int mga_fbdev_destroy(struct drm_device *dev,
 static struct drm_fb_helper_funcs mga_fb_helper_funcs = {
        .gamma_set = mga_crtc_fb_gamma_set,
        .gamma_get = mga_crtc_fb_gamma_get,
-       .fb_probe = mga_fb_find_or_create_single,
+       .fb_probe = mgag200fb_create,
 };
 
 int mgag200_fbdev_init(struct mga_device *mdev)
index b1ebfe30f91263df859b744ea0c26630fcc7b300..b035317815803259c26aa28ba20d63d0930107a3 100644 (file)
@@ -251,9 +251,10 @@ nouveau_fbcon_zfill(struct drm_device *dev, struct nouveau_fbdev *fbcon)
 }
 
 static int
-nouveau_fbcon_create(struct nouveau_fbdev *fbcon,
+nouveau_fbcon_create(struct drm_fb_helper *helper,
                     struct drm_fb_helper_surface_size *sizes)
 {
+       struct nouveau_fbdev *fbcon = (struct nouveau_fbdev *)helper;
        struct drm_device *dev = fbcon->dev;
        struct nouveau_drm *drm = nouveau_drm(dev);
        struct nouveau_device *device = nv_device(drm->device);
@@ -388,23 +389,6 @@ out:
        return ret;
 }
 
-static int
-nouveau_fbcon_find_or_create_single(struct drm_fb_helper *helper,
-                                   struct drm_fb_helper_surface_size *sizes)
-{
-       struct nouveau_fbdev *fbcon = (struct nouveau_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = nouveau_fbcon_create(fbcon, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 void
 nouveau_fbcon_output_poll_changed(struct drm_device *dev)
 {
@@ -450,7 +434,7 @@ void nouveau_fbcon_gpu_lockup(struct fb_info *info)
 static struct drm_fb_helper_funcs nouveau_fbcon_helper_funcs = {
        .gamma_set = nouveau_fbcon_gamma_set,
        .gamma_get = nouveau_fbcon_gamma_get,
-       .fb_probe = nouveau_fbcon_find_or_create_single,
+       .fb_probe = nouveau_fbcon_create,
 };
 
 
index b48d1c8cf9eb1afcf7055839478e3d33ac5774e8..b1746741bc591267f246815adcadc0725dcf42cc 100644 (file)
@@ -187,9 +187,10 @@ out_unref:
        return ret;
 }
 
-static int radeonfb_create(struct radeon_fbdev *rfbdev,
+static int radeonfb_create(struct drm_fb_helper *helper,
                           struct drm_fb_helper_surface_size *sizes)
 {
+       struct radeon_fbdev *rfbdev = (struct radeon_fbdev *)helper;
        struct radeon_device *rdev = rfbdev->rdev;
        struct fb_info *info;
        struct drm_framebuffer *fb = NULL;
@@ -300,22 +301,6 @@ out_unref:
        return ret;
 }
 
-static int radeon_fb_find_or_create_single(struct drm_fb_helper *helper,
-                                          struct drm_fb_helper_surface_size *sizes)
-{
-       struct radeon_fbdev *rfbdev = (struct radeon_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = radeonfb_create(rfbdev, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 void radeon_fb_output_poll_changed(struct radeon_device *rdev)
 {
        drm_fb_helper_hotplug_event(&rdev->mode_info.rfbdev->helper);
@@ -349,7 +334,7 @@ static int radeon_fbdev_destroy(struct drm_device *dev, struct radeon_fbdev *rfb
 static struct drm_fb_helper_funcs radeon_fb_helper_funcs = {
        .gamma_set = radeon_crtc_fb_gamma_set,
        .gamma_get = radeon_crtc_fb_gamma_get,
-       .fb_probe = radeon_fb_find_or_create_single,
+       .fb_probe = radeonfb_create,
 };
 
 int radeon_fbdev_init(struct radeon_device *rdev)
index cf5d05a0d955fcb17d80393ae1b7cdf4ade3111e..9f4be3d4a02e5df3396f2b5bef8b5a7fc8c6c22f 100644 (file)
@@ -476,9 +476,10 @@ udl_framebuffer_init(struct drm_device *dev,
 }
 
 
-static int udlfb_create(struct udl_fbdev *ufbdev,
+static int udlfb_create(struct drm_fb_helper *helper,
                        struct drm_fb_helper_surface_size *sizes)
 {
+       struct udl_fbdev *ufbdev = (struct udl_fbdev *)helper;
        struct drm_device *dev = ufbdev->helper.dev;
        struct fb_info *info;
        struct device *device = &dev->usbdev->dev;
@@ -556,27 +557,10 @@ out:
        return ret;
 }
 
-static int udl_fb_find_or_create_single(struct drm_fb_helper *helper,
-                                       struct drm_fb_helper_surface_size *sizes)
-{
-       struct udl_fbdev *ufbdev = (struct udl_fbdev *)helper;
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = udlfb_create(ufbdev, sizes);
-               if (ret)
-                       return ret;
-
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static struct drm_fb_helper_funcs udl_fb_helper_funcs = {
        .gamma_set = udl_crtc_fb_gamma_set,
        .gamma_get = udl_crtc_fb_gamma_get,
-       .fb_probe = udl_fb_find_or_create_single,
+       .fb_probe = udlfb_create,
 };
 
 static void udl_fbdev_destroy(struct drm_device *dev,
index 7e66eb138315425cd7843518cdb064137e51a0a2..caefdf9430f8331416d858cb9f61378b12a776bd 100644 (file)
@@ -296,25 +296,10 @@ static void omap_crtc_fb_gamma_get(struct drm_crtc *crtc,
        DBG("fbdev: get gamma");
 }
 
-static int omap_fbdev_probe(struct drm_fb_helper *helper,
-               struct drm_fb_helper_surface_size *sizes)
-{
-       int new_fb = 0;
-       int ret;
-
-       if (!helper->fb) {
-               ret = omap_fbdev_create(helper, sizes);
-               if (ret)
-                       return ret;
-               new_fb = 1;
-       }
-       return new_fb;
-}
-
 static struct drm_fb_helper_funcs omap_fb_helper_funcs = {
        .gamma_set = omap_crtc_fb_gamma_set,
        .gamma_get = omap_crtc_fb_gamma_get,
-       .fb_probe = omap_fbdev_probe,
+       .fb_probe = omap_fbdev_create,
 };
 
 static struct drm_fb_helper *get_fb(struct fb_info *fbi)