[PATCH 3/4] drm: lcdif: Switch to limited range for RGB to YUV conversion

Marek Vasut marex at denx.de
Wed Sep 28 00:37:04 UTC 2022


On 9/28/22 02:21, Laurent Pinchart wrote:

Hi,

[...]

>>> -		/* CSC: BT.601 Full Range RGB to YCbCr coefficients. */
>>> -		writel(CSC0_COEF0_A2(0x096) | CSC0_COEF0_A1(0x04c),
>>> +		/* CSC: BT.601 Limited Range RGB to YCbCr coefficients. */
>>> +		writel(CSC0_COEF0_A2(0x081) | CSC0_COEF0_A1(0x042),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF0);
>>> -		writel(CSC0_COEF1_B1(0x7d5) | CSC0_COEF1_A3(0x01d),
>>> +		writel(CSC0_COEF1_B1(0x7da) | CSC0_COEF1_A3(0x019),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF1);
>>> -		writel(CSC0_COEF2_B3(0x080) | CSC0_COEF2_B2(0x7ac),
>>> +		writel(CSC0_COEF2_B3(0x070) | CSC0_COEF2_B2(0x7b6),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF2);
>>> -		writel(CSC0_COEF3_C2(0x795) | CSC0_COEF3_C1(0x080),
>>> +		writel(CSC0_COEF3_C2(0x7a2) | CSC0_COEF3_C1(0x070),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF3);
>>> -		writel(CSC0_COEF4_D1(0x000) | CSC0_COEF4_C3(0x7ec),
>>> +		writel(CSC0_COEF4_D1(0x010) | CSC0_COEF4_C3(0x7ee),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF4);
>>>    		writel(CSC0_COEF5_D3(0x080) | CSC0_COEF5_D2(0x080),
>>>    		       lcdif->base + LCDC_V8_CSC0_COEF5);
>>
>> Would it make sense to use the same coeffs as csc2_coef_bt601_lim in
>> drivers/media/platform/nxp/imx-pxp.c , since the block is most likely
>> identical ?
> 
> The coefficients in this patch have been computed to distribute the
> error in such a way that the sum of all lines stays the same. This
> avoids biases and overflow, but it likely makes very little difference
> in practice. I'm thus fine with the coefficients from imx-pxp.c.

Would it then make sense to update the coeffs in the pxp driver instead?

Either option works for me.


More information about the dri-devel mailing list