We are trying to develop an M9 driver for a graphics card without a BIOS(instead we need to supply the timing stuff). Our driver should support both (primary /secondary display) heads and also a configuration with DVI + TVout on the secondary head @1024x768. However tvout and dvi require different VTotal values (NTSC:959, DVI: 806) in order to display properly. When we setup the crtc2 engine for VTotal=959, the connected DVI monitor does not display and for the Vtotal=806, tvout image is incomplete and have scaling artifacts. We could not find an intermediate value to display at both tvout and dvi for the secondary head(crtc2).
In order to separate DVI settings (i.e VTotal, Htotal, Vsync...) from the crtc2 engine, I tried to use the flat panel crtc shadow registers (the ones with fp_ prefix). I observed that they work fine for the crtc engine. However, I could not find an fp crtc shadow register to change the VTotal value which I was hoping that would be the key for the solution. In xf86 code I found an undocumented register (FP_CRTC2_V_TOTAL_DISP 0x354). However, writing to this register had no effect when shadow registers are enabled. Therefore, I'm not sure if this register really exists on M9.
Anybody has an idea on how to display tvout and dvi on the second head (display)?
Note that we need to use a specific LCD output (DVI) device that strictly obeys VESA modes.