Linux – Setting the video output for the framebuffer device

framebufferlinuxoutputvideo

I'm working with Broadcom's 97356 device, which contains an HDMI and an analog video output device.

I'd like to be able to draw stuff to one of those two devices (or both at the same time!) using a framebuffer device. However, I'm having troubles finding the correct documentation to get me on track.

I want to use the EFL to develop a small application and I'd like to start with the simplest backend possible: the framebuffer. But I don't know how to enable it; I've recompiled my kernel with framebuffer support. Even though, I can not see a /dev/fb0 device. There is a /dev/hdmi0 device and I can't find one related specifically to the analog output.

So, my question is: how does Linux decide which video output will be used when creating a framebuffer device? How do I configure it to do what I want, e.g. set the HDMI output as the one displaying the framebuffer's contents?

Best Answer

Partial answer:

how does Linux decide which video output will be used when creating a framebuffer device?

"Linux" doesn't, it's up to the driver. So the first step is to look into dmesg and/or lsmod and find out which driver gets loaded. Next step is to find the source code for the driver, read it and find out what options it understands. /dev/hdmi0 is a pretty unusual name for a framebuffer device, though it seems some sunxi-drivers use that. Did you try to write something into it (with dd, or a small C program)? Does it behave like a framebuffer?

So edit the question with the relevant part of dmesg, or edit it with a link to the complete dmesg after boot in a pastebin etc.

how do I configure it to do what I want

See above: it completely depends on the driver. For example, the Intel framebuffer driver doesn't allow you to switch to HDMI (or didn't, the last time I looked).