[RFC] I2C slave encoders .set_config() rework

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Mar 9 16:33:21 PDT 2015


Hello,

I recently ran into a need to configure the colour space conversion (CSC) 
matrix of the ADV7511 HDMI transmitter based on display controller particular 
needs.

To give a bit of background regarding the use case, the ADV7511 is connected 
to an FPGA using a 16-bit bus. The only RGB formats supported by the AV7511 
(RGB 12:12:12, 10:10:10 or 8:8:8) can't thus be transported, and YUV 4:2:2 is 
used instead. The display controller in the FPGA uses an RGB to YUV conversion 
with fixed coefficients to convert the RGB frames to YUV. When RGB needs to be 
sent on the HDMI link (for instance because the connected doesn't support YUV 
natively) the ADV7511 CSC must be enabled with inverse coefficients to avoid 
colour issues.

The upstream adv7511 driver, implemented as a DRM I2C slave encoder, currently 
uses fixed hardcoded CSC coefficients. The slave encoder API has a 
.set_config() operation that could be used to configure the CSC coefficients 
by the display controller (this is the solution currently implemented in the 
vendor kernel shipped to customers). However, the operation takes a 
configuration structure that is driver-specific. This would thus require 
making the display controller aware of the ADV7511. Given that the display 
controller isn't tied to a particular HDMI encoder (or even to an HDMI encoder 
at all) this obviously can't scale.

I thus believe we should start standardizing CSC configuration. It wouldn't be 
difficult to add a new slave encoder operation to set CSC coefficients, but 
this might not be the best solution possible. Before I give it a go, I'd like 
to ask and hopefully receive feedback on the idea.

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list