From: Thomas Zimmermann Date: Wed, 15 Apr 2026 15:23:36 +0000 (+0200) Subject: drm/mgag200: Set scale from DRM format X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d5ffd34c1adee5a25940961af4d10a3d18d0088;p=thirdparty%2Fkernel%2Flinux.git drm/mgag200: Set scale from DRM format Replace the deprecated cpp value from struct drm_format_info with the format's 4CC code when setting the scale value in CRTCEXT3. While at it, remove the scale variable and add a mask constant. Signed-off-by: Thomas Zimmermann Reviewed-by: Jocelyn Falempe Link: https://patch.msgid.link/20260415152625.101710-3-tzimmermann@suse.de --- diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index 316413d814ae1..5b526aebaeb84 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -343,24 +343,31 @@ static void mgag200_set_offset(struct mga_device *mdev, void mgag200_set_format_regs(struct mga_device *mdev, const struct drm_format_info *format) { - unsigned int bpp, bppshift, scale; u8 xmulctrl = 0; u8 crtcext3; - bpp = format->cpp[0] * 8; + RREG_ECRT(3, crtcext3); - bppshift = mgag200_get_bpp_shift(format); - switch (bpp) { - case 24: - scale = ((1 << bppshift) * 3) - 1; + switch (format->format) { + case DRM_FORMAT_C8: + crtcext3 &= ~MGAREG_CRTCEXT3_SCALE_MASK; + crtcext3 |= 0x0; break; - default: - scale = (1 << bppshift) - 1; + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_RGB565: + crtcext3 &= ~MGAREG_CRTCEXT3_SCALE_MASK; + crtcext3 |= 0x01; + break; + case DRM_FORMAT_RGB888: + crtcext3 &= ~MGAREG_CRTCEXT3_SCALE_MASK; + crtcext3 |= 0x02; + break; + case DRM_FORMAT_XRGB8888: + crtcext3 &= ~MGAREG_CRTCEXT3_SCALE_MASK; + crtcext3 |= 0x03; break; } - RREG_ECRT(3, crtcext3); - switch (format->format) { case DRM_FORMAT_C8: xmulctrl = MGA1064_MUL_CTL_8bits; @@ -379,9 +386,6 @@ void mgag200_set_format_regs(struct mga_device *mdev, const struct drm_format_in break; } - crtcext3 &= ~GENMASK(2, 0); - crtcext3 |= scale; - WREG_DAC(MGA1064_MUL_CTL, xmulctrl); WREG_GFX(0, 0x00); diff --git a/drivers/gpu/drm/mgag200/mgag200_reg.h b/drivers/gpu/drm/mgag200/mgag200_reg.h index d4fef8f25871f..088b6c16f7f62 100644 --- a/drivers/gpu/drm/mgag200/mgag200_reg.h +++ b/drivers/gpu/drm/mgag200/mgag200_reg.h @@ -265,6 +265,7 @@ #define MGAREG_CRTCEXT1_HRSTEN BIT(3) #define MGAREG_CRTCEXT3_MGAMODE BIT(7) +#define MGAREG_CRTCEXT3_SCALE_MASK GENMASK(2, 0) /* Cursor X and Y position */ #define MGA_CURPOSXL 0x3c0c