drm: shmobile: Add support for DRM_FORMAT_XRGB8888
authorGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 23 May 2023 15:31:34 +0000 (17:31 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 24 May 2023 12:00:46 +0000 (14:00 +0200)
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+renesas@glider.be>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/888cde6d1f70f1610931c4a89801060bb6765ff2.1684854992.git.geert+renesas@glider.be
drivers/gpu/drm/shmobile/shmob_drm_crtc.c
drivers/gpu/drm/shmobile/shmob_drm_kms.c
drivers/gpu/drm/shmobile/shmob_drm_plane.c

index 713a761..08dc142 100644 (file)
@@ -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;
index 3c5fe3b..99381cc 100644 (file)
@@ -40,6 +40,11 @@ static const struct shmob_drm_format_info shmob_drm_format_infos[] = {
                .yuv = false,
                .lddfr = LDDFR_PKF_ARGB32,
        }, {
+               .fourcc = DRM_FORMAT_XRGB8888,
+               .bpp = 32,
+               .yuv = false,
+               .lddfr = LDDFR_PKF_ARGB32,
+       }, {
                .fourcc = DRM_FORMAT_NV12,
                .bpp = 12,
                .yuv = true,
index 604ae23..850986c 100644 (file)
@@ -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,