Video Output

The i.MX53 board has a VGA connector, and HDMI/DVI is available on an optional daughter board that I don't currently have.

As well as conventional RGB with Hsync and Vsync, the VGA port can be configured to output other formats including YPrPb component video with sync on green, composite video, and S-video. The is controlled by the tve driver. The format is determined by two things: a boot parameter, and run-time cable detection. Specifically, the selection between composite video, S-video and component video is determined by whether 1, 2 or 3 of the RGB outputs are connected. (Debugging is tricky until you have worked this out!).

Believe it or not, my main TV is still a standard-definition CRT. The ideal input for this would be RGB via its SCART connector. This isn't supported by the tve driver. There are three issues: it needs to be RGB not YPrPb, it needs a separate sync signal, and the sync signal needs to be a relatively low-voltage signal (like the colour components), not the TTL level that is normal for VGA. All of those could be fixed with some combination of hardware and software, but for the time being I am going to stick with composite video; it looks good enough.

For composite video, all that's needed is to connect the green output from the VGA connector to a phono plug, or to the composite input pin of a SCART connector.

Aspect Ratio

I'm unsure how best to get the aspect ratio right. I understand that the SCART connector has a pin that the TV may sample to select the right aspect ratio; currently I'm not doing anything with that and I guess that the adaptor that I'm using leaves it unconnected. If I leave the TV on 16:9 mode, presumably I can fit the image within that in software. The only disadvantage to that would be if I lose horizontal resolution.

VGA Output Timing

I tried using the 1024x768 VGA output on a monitor and found that it was offset to the left - too far for it to auto-adjust, though it is within the adjustment range of another monitor. fbset confirms that it is indeed using non-standard timings. But it seems that fbset can't be used to change them - the driver (drivers/video/mxc/tve.c) has a hard-coded list of modes. What it does have is a couple of "magic numbers", 1421 and 803, that are passed as the hsync_delay and vsync_delay parameters to its ipu_set_vga_delay() function in that mode. This parameter does not seem to move the image linearly, but adjusting it to 1334 has made the position good enough for the moment.

HD output

I have succeeded in using RGB XGA (1024x768) with a monitor and PAL SD (720x576 50 Hz interlaced) on my TV - see above. But I can't get HD 720P on component video to work; the driver only seems to understand 720P at 30/60 Hz, but my display seems not to like that; presumably it wants 25/50. The driver (tve.c) seems to define some constants for these modes but they aren't exposed to the higher levels. I've asked about this on the i.mx forum; maybe someone else knows how to make it work.