]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm: atmel-hlcdc: fix atmel_xlcdc_plane_setup_scaler()
authorCyrille Pitchen <cyrille.pitchen@microchip.com>
Mon, 14 Oct 2024 09:49:42 +0000 (15:19 +0530)
committerManikandan Muralidharan <manikandan.m@microchip.com>
Tue, 14 Oct 2025 09:31:00 +0000 (15:01 +0530)
commita312acdcec57b3955fbf1f3057c13a6d38e4aa2a
tree42f11654207e70e021ad5eb4187de03a82ad21d2
parent3ab602de769b318b4ce8db87df184eb84426b098
drm: atmel-hlcdc: fix atmel_xlcdc_plane_setup_scaler()

On SoCs, like the SAM9X75, which embed the XLCDC ip, the registers that
configure the unified scaling engine were not filled with proper values.

Indeed, for YCbCr formats, the VXSCFACT bitfield of the HEOCFG25
register and the HXSCFACT bitfield of the HEOCFG27 register were
incorrect.

For 4:2:0 formats, both vertical and horizontal factors for
chroma chanels should be divided by 2 from the factors for the luma
channel. Hence:

HEOCFG24.VXSYFACT = VFACTOR
HEOCFG25.VSXCFACT = VFACTOR / 2
HEOCFG26.HXSYFACT = HFACTOR
HEOCFG27.HXSCFACT = HFACTOR / 2

However, for 4:2:2 formats, only the horizontal factor for chroma
chanels should be divided by 2 from the factor for the luma channel;
the vertical factor is the same for all the luma and chroma channels.
Hence:

HEOCFG24.VXSYFACT = VFACTOR
HEOCFG25.VXSCFACT = VFACTOR
HEOCFG26.HXSYFACT = HFACTOR
HEOCFG27.HXSCFACT = HFACTOR / 2

Fixes: d498771b0b83 ("drm: atmel_hlcdc: Add support for XLCDC using IP specific driver ops")
Signed-off-by: Cyrille Pitchen <cyrille.pitchen@microchip.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20241014094942.325211-1-manikandan.m@microchip.com
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c