[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