drm: Adding drm helper function drm_plane_from_index().
authorChandra Konduru <chandra.konduru@intel.com>
Fri, 10 Apr 2015 00:36:21 +0000 (17:36 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 10 Apr 2015 06:56:21 +0000 (08:56 +0200)
Adding drm helper function to return plane pointer from index where
index is a returned by drm_plane_index.

v2:
-avoided nested loop by adding loop count (Daniel)

v3:
-updated patch header prefix to 'drm' (Matt)

v4:
-fixed a kerneldoc issue (kbuild-internal)

Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Chandra Konduru <chandra.konduru@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/drm_crtc.c
include/drm/drm_crtc.h

index 9f970c2d481912d3db2adb498940c6dcf7ca9b4a..6254942141d35cb309d71a8b3d775590df5122ef 100644 (file)
@@ -1285,6 +1285,29 @@ unsigned int drm_plane_index(struct drm_plane *plane)
 }
 EXPORT_SYMBOL(drm_plane_index);
 
+/**
+ * drm_plane_from_index - find the registered plane at an index
+ * @dev: DRM device
+ * @idx: index of registered plane to find for
+ *
+ * Given a plane index, return the registered plane from DRM device's
+ * list of planes with matching index.
+ */
+struct drm_plane *
+drm_plane_from_index(struct drm_device *dev, int idx)
+{
+       struct drm_plane *plane;
+       unsigned int i = 0;
+
+       list_for_each_entry(plane, &dev->mode_config.plane_list, head) {
+               if (i == idx)
+                       return plane;
+               i++;
+       }
+       return NULL;
+}
+EXPORT_SYMBOL(drm_plane_from_index);
+
 /**
  * drm_plane_force_disable - Forcibly disable a plane
  * @plane: plane to disable
index adc9ea5acf02ea45437268c16298a4dbbd9fe35a..ed769e79c675d93b1fc30c049c69b9bc4c971d6d 100644 (file)
@@ -1264,6 +1264,7 @@ extern int drm_plane_init(struct drm_device *dev,
                          bool is_primary);
 extern void drm_plane_cleanup(struct drm_plane *plane);
 extern unsigned int drm_plane_index(struct drm_plane *plane);
+extern struct drm_plane * drm_plane_from_index(struct drm_device *dev, int idx);
 extern void drm_plane_force_disable(struct drm_plane *plane);
 extern int drm_plane_check_pixel_format(const struct drm_plane *plane,
                                        u32 format);