drm/fb: document drm_fb_helper_surface_size
authorRob Clark <robdclark@gmail.com>
Wed, 11 Mar 2015 14:23:08 +0000 (10:23 -0400)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 11 Mar 2015 21:07:33 +0000 (22:07 +0100)
There has been some confusion about this struct.  Lack of documentation
probably didn't help.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
include/drm/drm_fb_helper.h

index 21b944c..0dfd94d 100644 (file)
@@ -44,6 +44,25 @@ struct drm_fb_helper_crtc {
        int x, y;
 };
 
+/**
+ * struct drm_fb_helper_surface_size - describes fbdev size and scanout surface size
+ * @fb_width: fbdev width
+ * @fb_height: fbdev height
+ * @surface_width: scanout buffer width
+ * @surface_height: scanout buffer height
+ * @surface_bpp: scanout buffer bpp
+ * @surface_depth: scanout buffer depth
+ *
+ * Note that the scanout surface width/height may be larger than the fbdev
+ * width/height.  In case of multiple displays, the scanout surface is sized
+ * according to the largest width/height (so it is large enough for all CRTCs
+ * to scanout).  But the fbdev width/height is sized to the minimum width/
+ * height of all the displays.  This ensures that fbcon fits on the smallest
+ * of the attached displays.
+ *
+ * So what is passed to drm_fb_helper_fill_var() should be fb_width/fb_height,
+ * rather than the surface size.
+ */
 struct drm_fb_helper_surface_size {
        u32 fb_width;
        u32 fb_height;