From: Thomas Zimmermann Date: Wed, 15 Apr 2026 15:23:40 +0000 (+0200) Subject: drm/mgag200: Enable DRM_FORMAT_XRGB1555 on the primary plane X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f9357c30a44734d45e3093c521d52b2aefb09f5;p=thirdparty%2Fkernel%2Flinux.git drm/mgag200: Enable DRM_FORMAT_XRGB1555 on the primary plane The driver already sets the format for the depth value in the XMULCTRL register. Add the format to the other switch statements, set the helpers for gamma correction and export the XRGB1555 in the primary plane's format array. Signed-off-by: Thomas Zimmermann Reviewed-by: Jocelyn Falempe Link: https://patch.msgid.link/20260415152625.101710-7-tzimmermann@suse.de --- diff --git a/drivers/gpu/drm/mgag200/mgag200_g200se.c b/drivers/gpu/drm/mgag200/mgag200_g200se.c index 746ce11b75fb6..5c2185d6b7078 100644 --- a/drivers/gpu/drm/mgag200/mgag200_g200se.c +++ b/drivers/gpu/drm/mgag200/mgag200_g200se.c @@ -82,6 +82,7 @@ static void mgag200_g200se_set_hiprilvl(struct mga_device *mdev, bpp = 32; break; case DRM_FORMAT_RGB565: + case DRM_FORMAT_XRGB1555: bpp = 16; break; case DRM_FORMAT_C8: diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index 7fe1d492083e9..bd346b828773a 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -59,6 +59,9 @@ void mgag200_crtc_fill_gamma(struct mga_device *mdev, case DRM_FORMAT_C8: drm_crtc_fill_palette_8(crtc, mgag200_set_gamma_lut); break; + case DRM_FORMAT_XRGB1555: + drm_crtc_fill_gamma_555(crtc, mgag200_set_gamma_lut); + break; case DRM_FORMAT_RGB565: drm_crtc_fill_gamma_565(crtc, mgag200_set_gamma_lut); break; @@ -83,6 +86,9 @@ void mgag200_crtc_load_gamma(struct mga_device *mdev, case DRM_FORMAT_C8: drm_crtc_load_palette_8(crtc, lut, mgag200_set_gamma_lut); break; + case DRM_FORMAT_XRGB1555: + drm_crtc_load_gamma_555_from_888(crtc, lut, mgag200_set_gamma_lut); + break; case DRM_FORMAT_RGB565: drm_crtc_load_gamma_565_from_888(crtc, lut, mgag200_set_gamma_lut); break; @@ -180,6 +186,7 @@ static void mgag200_set_datasiz(struct mga_device *mdev, u32 format) /* Big-endian byte-swapping */ switch (format) { + case DRM_FORMAT_XRGB1555: case DRM_FORMAT_RGB565: opmode |= 0x10100; break; @@ -443,6 +450,7 @@ static void mgag200_handle_damage(struct mga_device *mdev, const struct iosys_ma const uint32_t mgag200_primary_plane_formats[] = { DRM_FORMAT_XRGB8888, DRM_FORMAT_RGB565, + DRM_FORMAT_XRGB1555, DRM_FORMAT_RGB888, DRM_FORMAT_C8, };