I'd like use the ADV7850 with HDMI inputs and I need to measure the TMDS frequency on each HDMI port, but I found same strange working. After reset, when I read the active port's frequency (TMDSFREQ_FULL, TMDSFREQ_FRAC) the value is valid, but if I change the input resolution, the frequency value won't change so it becomes invalid. The Hsync, Vsync parameters change correctly. There's a background port measurement cycle, which steps on the other ports, and their frequency (BG_TMDSFREQ_FULL, BG_TMDSFREQ_FRAC) is also correct. If I stop the background measuring cycle, and I set the BG_MEAS_PORT_SEL to the same port as HDMI_PORT_SELECT, the TMDSFREQ_FULL and TMDSFREQ_FRAC registers magically can follow the input signal's frequency. I've checked many things I thought that could cause this:
- TMDS_PLL_LOCKED = 1, when is read the frequency value
- Different input sources
- Even the pull out of the source and the plug in of another source with different TMDS frequency couldn't change the register's value
- TMDS frequency interrupt occurred, but the registers's content still remain the same
So my question is, how can is measure the active port's frequency and the background port's frequency in the same time?