Enabling HDMI output via Linux Kernel Module
We have a need, where I work, to retrieve the EDID information from the monitor(s) before installing/using the video drivers. Since we support multiple video cards, we can't always assume that it will be an NVIDIA card installed on the machine.
I've written a kernel module that will, using I2C bit-banging on the PCI bus, probe for monitor EDID information on any video device (on board and/or video cards) detected on the system. We've recently moved to the NVIDIA GeForce N220GT card which has 3 outputs (VGA/DVI/HDMI). I've modified my kernel module to read the EDID from the HDMI port and am successful most of the time. However sometimes this is problematic. I've listed the scenarios below:
Monitor connected to HDMI only - able to read EDID
Monitor connected to VGA only - able to read EDID
Monitor connected to DVI only - able to read EDID
Monitor connected to VGA and DVI - able to read EDID from both monitors
Monitor connected to VGA and HDMI - able to read EDID from VGA monitor only (HDMI fails)
Monitor connected to DVI and HDMI - able to read EDID from DVI monitor only (HDMI fails)
Monitor connected to VGA, DVI and HDMI - able to read EDID from VGA and DVI monitors only (HDMI fails)
Now what I seem to notice is that the only time the boot up POST messages will go the HDMI output is when there is no other monitors connected to the NVIDIA card. It gives me the impression that if the HDMI output is the only one with a monitor connected to it, it will work properly since the output was enabled. Any time a monitor is connected to the other outputs on the card, it will POST to that monitor and thus it seems that the HDMI output is not enabled on the card.
My question is:
What registers do I need to read/write via the PCI bus on the NVIDIA card to enable the HDMI output in order to retrieve the monitor EDID information from that output?
Thanks in advance for any help.