We have ADV7511 and ADV7611 on a board, connected to a Zynq module. Both have a 24-bit bus.
What I'm trying to accomplish is a bit-perfect loopback using these chips, so I connected a HDMI cable from the output to the input.
If I capture frames, the result is reasonably close, but not perfect.
There's some color model scaling happening. For a black screen, the "adi_axi_hdmi" block sends out a "0x101010" pattern. For a fully white screen it's "0xf0ebf0". So apparently the RGB colors are mapped in a 0x10..0xF0 range (except green which seems to get a slightly smaller range?) which is something well known from the analog days.
I found the adi_axi_hdmi IP has a AXI_HDMI_CTRL_FULL_RANGE bit in the control register at offset 0x44, but it doesn't have any effect and it also does not "stick". The bit is reset if I read it back, i.e.
# devmem 0xa0030044 32 0x7
# devmem 0xa0030044
On the monitor it's also noticable that "black" is not completely dark but slightly lighter than when there's no input. Is there a way to make the HDMI output use the full range?
Another thing is that some pixels have errors. So of the 2 million grabbed pixels, about a 100 are way off.