drm: omapdrm: fb: Simplify objects lookup when creating framebuffer
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sat, 26 Mar 2016 17:51:57 +0000 (19:51 +0200)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 19 Dec 2016 09:24:54 +0000 (11:24 +0200)
Merge the single-user objects_lookup inline function into its caller,
allowing reuse of the error code path.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/omap_drv.h
drivers/gpu/drm/omapdrm/omap_fb.c

index 7d9dd5400cefd7f780515bc55a944657026513a4..919c14d3503c8da31f65364ac19ecf1efe0a6770 100644 (file)
@@ -236,29 +236,4 @@ struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev,
 uint32_t pipe2vbl(struct drm_crtc *crtc);
 struct omap_dss_device *omap_encoder_get_dssdev(struct drm_encoder *encoder);
 
-/* should these be made into common util helpers?
- */
-
-static inline int objects_lookup(
-               struct drm_file *filp, uint32_t pixel_format,
-               struct drm_gem_object **bos, const uint32_t *handles)
-{
-       int i, n = drm_format_num_planes(pixel_format);
-
-       for (i = 0; i < n; i++) {
-               bos[i] = drm_gem_object_lookup(filp, handles[i]);
-               if (!bos[i])
-                       goto fail;
-
-       }
-
-       return 0;
-
-fail:
-       while (--i > 0)
-               drm_gem_object_unreference_unlocked(bos[i]);
-
-       return -ENOENT;
-}
-
 #endif /* __OMAP_DRV_H__ */
index 6315d68989fc4ecb12a0d5b9a68a310d0289f630..195ab4c86244727adca4944edccc851c74d22e64 100644 (file)
@@ -354,22 +354,29 @@ void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)
 struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
                struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd)
 {
+       unsigned int num_planes = drm_format_num_planes(mode_cmd->pixel_format);
        struct drm_gem_object *bos[4];
        struct drm_framebuffer *fb;
-       int ret;
+       int i;
 
-       ret = objects_lookup(file, mode_cmd->pixel_format,
-                       bos, mode_cmd->handles);
-       if (ret)
-               return ERR_PTR(ret);
+       for (i = 0; i < num_planes; i++) {
+               bos[i] = drm_gem_object_lookup(file, mode_cmd->handles[i]);
+               if (!bos[i]) {
+                       fb = ERR_PTR(-ENOENT);
+                       goto error;
+               }
+       }
 
        fb = omap_framebuffer_init(dev, mode_cmd, bos);
-       if (IS_ERR(fb)) {
-               int i, n = drm_format_num_planes(mode_cmd->pixel_format);
-               for (i = 0; i < n; i++)
-                       drm_gem_object_unreference_unlocked(bos[i]);
-               return fb;
-       }
+       if (IS_ERR(fb))
+               goto error;
+
+       return fb;
+
+error:
+       while (--i > 0)
+               drm_gem_object_unreference_unlocked(bos[i]);
+
        return fb;
 }