'cpp' doesn't work for any format where component size is not byte aligned.
Add 'bpp' to have a bit level information. Add a meesage to
drm_format_plane_cpp() to indicate that the returned cpp would be
rounded for non byte aligned formats.

Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
---
v2
- Introduce bpp
---
---
 drivers/gpu/drm/drm_fourcc.c | 164 +++++++++++++++++++++++++------------------
 include/drm/drm_fourcc.h     |   3 +
 2 files changed, 99 insertions(+), 68 deletions(-)

diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index 9c0152d..b891fe0 100644
--- a/drivers/gpu/drm/drm_fourcc.c
+++ b/drivers/gpu/drm/drm_fourcc.c
@@ -105,74 +105,74 @@ EXPORT_SYMBOL(drm_get_format_name);
 const struct drm_format_info *__drm_format_info(u32 format)
 {
        static const struct drm_format_info formats[] = {
-               { .format = DRM_FORMAT_C8,              .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGB332,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGR233,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGB565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGR565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGB888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGR888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGB565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGR565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGB888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGR888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XRGB8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_XBGR8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_RGBX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_BGRX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_YUV410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4 },
-               { .format = DRM_FORMAT_YVU410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4 },
-               { .format = DRM_FORMAT_YUV411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1 },
-               { .format = DRM_FORMAT_YVU411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1 },
-               { .format = DRM_FORMAT_YUV420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2 },
-               { .format = DRM_FORMAT_YVU420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2 },
-               { .format = DRM_FORMAT_YUV422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_YVU422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_YUV444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_YVU444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_NV12,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2 },
-               { .format = DRM_FORMAT_NV21,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2 },
-               { .format = DRM_FORMAT_NV16,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_NV61,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_NV24,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_NV42,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1 },
-               { .format = DRM_FORMAT_YUYV,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_YVYU,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_UYVY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_VYUY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
-               { .format = DRM_FORMAT_AYUV,            .depth = 0,  
.num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_C8,              .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGB332,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGR233,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGB565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGR565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGB888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGR888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGB565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .bpp = { 16, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGR565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .bpp = { 16, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGB888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 24, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGR888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 24, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XRGB8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_XBGR8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_RGBX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_BGRX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_YUV410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 4 
},
+               { .format = DRM_FORMAT_YVU410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 4 
},
+               { .format = DRM_FORMAT_YUV411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 1 
},
+               { .format = DRM_FORMAT_YVU411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 1 
},
+               { .format = DRM_FORMAT_YUV420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 2 
},
+               { .format = DRM_FORMAT_YVU420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 2 
},
+               { .format = DRM_FORMAT_YUV422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_YVU422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_YUV444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_YVU444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_NV12,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 2 
},
+               { .format = DRM_FORMAT_NV21,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 2 
},
+               { .format = DRM_FORMAT_NV16,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_NV61,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_NV24,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_NV42,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 1, .vsub = 1 
},
+               { .format = DRM_FORMAT_YUYV,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_YVYU,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_UYVY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_VYUY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 1 
},
+               { .format = DRM_FORMAT_AYUV,            .depth = 0,  
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 1 
},
        };
 
        unsigned int i;
@@ -248,6 +248,26 @@ int drm_format_num_planes(uint32_t format)
 EXPORT_SYMBOL(drm_format_num_planes);
 
 /**
+ * drm_format_plane_bpp - determine the bits per pixel value
+ * @format: pixel format (DRM_FORMAT_*)
+ * @plane: plane index
+ *
+ * Returns:
+ * The bits per pixel value for the specified plane.
+ */
+int drm_format_plane_bpp(uint32_t format, int plane)
+{
+       const struct drm_format_info *info;
+
+       info = drm_format_info(format);
+       if (!info || plane >= info->num_planes)
+               return 0;
+
+       return info->bpp[plane];
+}
+EXPORT_SYMBOL(drm_format_plane_bpp);
+
+/**
  * drm_format_plane_cpp - determine the bytes per pixel value
  * @format: pixel format (DRM_FORMAT_*)
  * @plane: plane index
@@ -263,6 +283,14 @@ int drm_format_plane_cpp(uint32_t format, int plane)
        if (!info || plane >= info->num_planes)
                return 0;
 
+       if (info->bpp[plane] % 8) {
+               struct drm_format_name_buf buf;
+
+               DRM_INFO("cpp is off as bpp isn't byte-aligned: format: %s, 
plane %d, cpp: %u, bpp: %u",
+                         drm_get_format_name(format, &buf), plane,
+                         info->cpp[plane], info->bpp[plane]);
+       }
+
        return info->cpp[plane];
 }
 EXPORT_SYMBOL(drm_format_plane_cpp);
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
index 6942e84..752bd43 100644
--- a/include/drm/drm_fourcc.h
+++ b/include/drm/drm_fourcc.h
@@ -36,6 +36,7 @@ struct drm_mode_fb_cmd2;
  *     use in new code and set to 0 for new formats.
  * @num_planes: Number of color planes (1 to 3)
  * @cpp: Number of bytes per pixel (per plane)
+ * @bpp: Number of bits per pixel (per plane)
  * @hsub: Horizontal chroma subsampling factor
  * @vsub: Vertical chroma subsampling factor
  */
@@ -44,6 +45,7 @@ struct drm_format_info {
        u8 depth;
        u8 num_planes;
        u8 cpp[3];
+       u8 bpp[3];
        u8 hsub;
        u8 vsub;
 };
@@ -63,6 +65,7 @@ drm_get_format_info(struct drm_device *dev,
                    const struct drm_mode_fb_cmd2 *mode_cmd);
 uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth);
 int drm_format_num_planes(uint32_t format);
+int drm_format_plane_bpp(uint32_t format, int plane);
 int drm_format_plane_cpp(uint32_t format, int plane);
 int drm_format_horz_chroma_subsampling(uint32_t format);
 int drm_format_vert_chroma_subsampling(uint32_t format);
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to