DRM_FORMAT_XRGB8888 aka XR24 is the modus francus of DRM, and should be
supported by all drivers.

The handling for DRM_FORMAT_XRGB8888 is similar to DRM_FORMAT_ARGB8888,
just ignore the alpha channel.

Signed-off-by: Geert Uytterhoeven <geert+rene...@glider.be>
---
 drivers/gpu/drm/shmobile/shmob_drm_crtc.c  | 1 +
 drivers/gpu/drm/shmobile/shmob_drm_kms.c   | 5 +++++
 drivers/gpu/drm/shmobile/shmob_drm_plane.c | 5 +++++
 3 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c 
b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index 713a7612244c647a..08dc1428aa16caf0 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -232,6 +232,7 @@ static void shmob_drm_crtc_start(struct shmob_drm_crtc 
*scrtc)
                value = LDDDSR_LS | LDDDSR_WS | LDDDSR_BS;
                break;
        case DRM_FORMAT_ARGB8888:
+       case DRM_FORMAT_XRGB8888:
        default:
                value = LDDDSR_LS;
                break;
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_kms.c 
b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
index 3c5fe3bc183c7c13..99381cc0abf3ae1f 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_kms.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_kms.c
@@ -39,6 +39,11 @@ static const struct shmob_drm_format_info 
shmob_drm_format_infos[] = {
                .bpp = 32,
                .yuv = false,
                .lddfr = LDDFR_PKF_ARGB32,
+       }, {
+               .fourcc = DRM_FORMAT_XRGB8888,
+               .bpp = 32,
+               .yuv = false,
+               .lddfr = LDDFR_PKF_ARGB32,
        }, {
                .fourcc = DRM_FORMAT_NV12,
                .bpp = 12,
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_plane.c 
b/drivers/gpu/drm/shmobile/shmob_drm_plane.c
index 604ae23825daaafd..850986cee848226a 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_plane.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_plane.c
@@ -80,6 +80,7 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane 
*splane,
                format |= LDBBSIFR_SWPL | LDBBSIFR_SWPW | LDBBSIFR_SWPB;
                break;
        case DRM_FORMAT_ARGB8888:
+       case DRM_FORMAT_XRGB8888:
        default:
                format |= LDBBSIFR_SWPL;
                break;
@@ -95,6 +96,9 @@ static void __shmob_drm_plane_setup(struct shmob_drm_plane 
*splane,
        case DRM_FORMAT_ARGB8888:
                format |= LDBBSIFR_AL_PK | LDBBSIFR_RY | LDDFR_PKF_ARGB32;
                break;
+       case DRM_FORMAT_XRGB8888:
+               format |= LDBBSIFR_AL_1 | LDBBSIFR_RY | LDDFR_PKF_ARGB32;
+               break;
        case DRM_FORMAT_NV12:
        case DRM_FORMAT_NV21:
                format |= LDBBSIFR_AL_1 | LDBBSIFR_CHRR_420;
@@ -231,6 +235,7 @@ static const uint32_t formats[] = {
        DRM_FORMAT_RGB565,
        DRM_FORMAT_RGB888,
        DRM_FORMAT_ARGB8888,
+       DRM_FORMAT_XRGB8888,
        DRM_FORMAT_NV12,
        DRM_FORMAT_NV21,
        DRM_FORMAT_NV16,
-- 
2.34.1

Reply via email to