[RFC] I2C slave encoders .set_config() rework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux