Add additional buffer format swizzling options beyond XR24, the
hardware is capable of sampling other formats, fill them in.

Signed-off-by: Marek Vasut <[email protected]>
---
Cc: Abel Vesa <[email protected]>
Cc: Conor Dooley <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: Krzysztof Kozlowski <[email protected]>
Cc: Laurent Pinchart <[email protected]>
Cc: Liu Ying <[email protected]>
Cc: Lucas Stach <[email protected]>
Cc: Peng Fan <[email protected]>
Cc: Pengutronix Kernel Team <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Shawn Guo <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
Liu, please test on MX8qxp , I do not have that hardware.
---
 drivers/gpu/drm/imx/dc/dc-fu.c    | 40 +++++++++++++++++++++++++++++++
 drivers/gpu/drm/imx/dc/dc-plane.c |  8 +++++++
 2 files changed, 48 insertions(+)

diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
index 1d8f74babef8a..397af0e9b0236 100644
--- a/drivers/gpu/drm/imx/dc/dc-fu.c
+++ b/drivers/gpu/drm/imx/dc/dc-fu.c
@@ -65,6 +65,46 @@ static const struct dc_fu_pixel_format pixel_formats[] = {
                DRM_FORMAT_XRGB8888,
                R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
                R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_ARGB8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
+               R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(24),
+       }, {
+               DRM_FORMAT_ABGR8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
+               R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(24),
+       }, {
+               DRM_FORMAT_XBGR8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
+               R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_RGBA8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
+               R_SHIFT(24) | G_SHIFT(16) | B_SHIFT(8)  | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_RGBX8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
+               R_SHIFT(24) | G_SHIFT(16) | B_SHIFT(8)  | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_BGRA8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
+               R_SHIFT(8)  | G_SHIFT(16) | B_SHIFT(24) | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_BGRX8888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
+               R_SHIFT(8)  | G_SHIFT(16) | B_SHIFT(24) | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_RGB888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
+               R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_BGR888,
+               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
+               R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(0),
+       }, {
+               DRM_FORMAT_RGB565,
+               R_BITS(5)   | G_BITS(6)   | B_BITS(5)   | A_BITS(0),
+               R_SHIFT(11) | G_SHIFT(5)  | B_SHIFT(0)  | A_SHIFT(0),
        },
 };
 
diff --git a/drivers/gpu/drm/imx/dc/dc-plane.c 
b/drivers/gpu/drm/imx/dc/dc-plane.c
index e40d5d66c5c1f..68d32b76fab95 100644
--- a/drivers/gpu/drm/imx/dc/dc-plane.c
+++ b/drivers/gpu/drm/imx/dc/dc-plane.c
@@ -33,6 +33,14 @@ do {                                                         
        \
 
 static const uint32_t dc_plane_formats[] = {
        DRM_FORMAT_XRGB8888,
+       DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_ABGR8888,
+       DRM_FORMAT_XBGR8888,
+       DRM_FORMAT_RGBA8888,
+       DRM_FORMAT_RGBX8888,
+       DRM_FORMAT_BGRA8888,
+       DRM_FORMAT_BGRX8888,
+       DRM_FORMAT_RGB565,
 };
 
 static const struct drm_plane_funcs dc_plane_funcs = {
-- 
2.51.0

Reply via email to