DVI input on ADV7441A link A, 20-bit 4:2:2 pixel output on P[19:0] (CP processor mode 7). How do I generate an interrupt in the event of cable disconnection? When I tried using the masks I do not get an interrupt.
Which interrupt were you trying to use? Did you see it's associated status bit go high?
Interrupt pin: INT1
User Map1 register setting:
bit[1:0]=01 drive low when active
bit[7:6]=10 63 Xtal periods
bit4=1 mask for TMDS_CLK_A_ST
bit0=1 mask for VIDEO_PLL_LCK_ST
We do not read the status bits, we look at the INT1 pin. We do see INT1 pin go low for 2.5us on other interrupt events, but never saw cable unplug trigger the interrupt.
I think those status bits go to 0 when you unplug which would not trigger an interrupt.. they interrupt on a 0->1 transition. They are meant to detect a new signal, not the loss of a signal. This is why the part recommended for design that replaced ADV7441A, ADV7842, has interrupts for PLL going unlocked.
I think you basically have to poll to detect a cable unplug with ADV7441A.
We are more interested in the re-connect (new signal) (0>1) and we are not seeing that as well. This is an existing design so we cannot change over to the ADV7842.
That you should see an interrupt for. Are you seeing the status and status_RAW bits transitioning to 1 when you reconnect?
We are only looking at the interrupt pin. For the time being we do not have access to polling the status registers (programmer is on vacation.) We can set registers and can get other interrupts to work. We need to do this because on disconnect/connect, about 10% of the time the red and blue gets mixed up (we are using 4:2:2.) After a reset it comes back. So when we see a connection we will reset the ADV7441A.
Without accessing knowing what's going on with the status bits, I'm not sure what to tell you. If the raw status bits are correct then there is simply something wrong with the way the masks or the clearing is being done by the software.
If the raw status bits are not transitioning then that is a different issue. It seems very unlikely that they wouldn't be transitioning if you are getting any video though.
We put together a different setup where we can read and write all registers at any time. We verified that reading the HDMI 0x04 register we can see if the TMDS clock is present or not. Also, User Map 1 0x68 HDMI_RAW_STATUS_3 is always correct. However, 0x69 HDMI_INT_STATUS_3 is not always correct. It sees the disconnect but not the connect. What is stranger is that the mask register HDMI_INT_MASKB3 gets cleared on a connect - but no INT1. We did not want to do it but it seems that we will have to poll the ADV7441A. We know that will work.
Thank you for your time.
I know most people using that part did polling to handle the signal lost situation anyway. You might consider trying the CP_LOCK / CP_UNLOCK if you want to use interrupts.
Retrieving data ...