Hi, I sent a preview of a new display subsystem for OMAP2/3 some time ago: http://marc.info/?l=linux-omap&m=122114505030542&w=2 I now have updated it, the patches are at the same place: http://www.bat.org/~tomba/omap-dss/ What's new ---------- As was pointed out in the feedback, my version was not enough to fully utilize OMAP's DISPC. I did a bit of a rewrite and I now model the overlays and overlay managers. This conveniently allows multiple display configurations, and it also solved some other problems I had previously. The code is still bit of a mess after this change. The tv-out and DVI are also now working on OMAP3 SDP board, and you can switch between, and combine, LCD, TV-out and DVI outputs. The current interface for this is a couple of hackish sysfs files. The Kconfig is also a bit more versatile, you can leave out the parts of the DSS that you don't need. Overlays -------- Here's the default setup on OMAP3 SDP board. All planes go to LCD. DVI and TV-out are not in use. The columns from left to right are: framebuffers, overlays, overlay managers, displays. Framebuffers are handled by omapfb, and the rest by the DSS. FB0 --- GFX -\ DVI FB1 --- VID1 --+- LCD ---- LCD FB2 --- VID2 -/ TV ----- TV In the examples below we use DVI and TV so that the setup changes to the following: FB0 --- GFX -\ -- DVI FB1 --- VID1 --+- LCD -/ LCD FB2 --- VID2 ---- TV ----- TV It is also possible to setup a virtual overlay & overlay manager, which can be used with displays that can be updated with CPU/sDMA. For example: FB3 --- VOVL ---- VMGR You can also change the overlay to which a framebuffer is connected. With this we can, for example, change fb0 from DISPC overlay to virtual overlay while X is running on the framebuffer. This way X doesn't notice anything, but DISPC is free for other displays. And, although not implemented yet, one framebuffer can be connected to multiple overlays. This will allow cloning of a framebuffer to multiple outputs. Sysfs ----- The sysfs interface is a hack, but works for testing. And I don't think sysfs interface is the best for this in the final version. In /sys/devices/platform/omapfb we have four files: framebuffers, overlays, managers and displays. You can read them so see the current setup, and change it by writing "arg1:arg2" to it. So changing framebuffer 0 to point to vid1 overlay would require writing "0:vid1" to framebuffers file. Examples -------- In these examples I have symlink omapfb -> /sys/devices/platform/omapfb # VIDEO2 plane to TV out echo "vid2:" > omapfb/overlays # (1) fbset -fb /dev/fb2 -xres 720 -pw 720 -yres 482 -ph 482 -pe 1 # (2) echo "vid2:tv" > omapfb/overlays # (3) echo "tv:1" > omapfb/displays # (4) 1. Detach vid2 overlay. Otherwise the DSS will reject the fbset, as the asked resolution is larger than the LCD's resolution. 2. Set x/y res, and enable plane 3. Attach vid2 to tv overlay manager. 4. Enable tv display # Use DVI instead of LCD echo "lcd:0" > omapfb/displays # (1) echo "lcd:" > omapfb/managers # (2) # switch the dvi/lcd dip-switch # (3) fbset -fb /dev/fb0 -xres 800 -pw 800 -yres 600 -ph 600 -pe 1 # (4) echo "lcd:dvi" > omapfb/managers # (5) echo "dvi:1" > omapfb/displays # (6) 1. Disable LCD display. We have to disable LCD before we can enable DVI 2. Detach LCD overlay manager 3. Here you have to set the DIP switch to DVI position 4. Set the new resolution 5. Attach LCD overlay manager to DVI display 6. Enable DVI display Tomi -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html