1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- Simple Framebuffer
- A simple frame-buffer describes a frame-buffer setup by firmware or
- the bootloader, with the assumption that the display hardware has already
- been set up to scan out from the memory pointed to by the reg property.
- Since simplefb nodes represent runtime information they must be sub-nodes of
- the chosen node (*). Simplefb nodes must be named "framebuffer@<address>".
- If the devicetree contains nodes for the display hardware used by a simplefb,
- then the simplefb node must contain a property called "display", which
- contains a phandle pointing to the primary display hw node, so that the OS
- knows which simplefb to disable when handing over control to a driver for the
- real hardware. The bindings for the hw nodes must specify which node is
- considered the primary node.
- It is advised to add display# aliases to help the OS determine how to number
- things. If display# aliases are used, then if the simplefb node contains a
- "display" property then the /aliases/display# path must point to the display
- hw node the "display" property points to, otherwise it must point directly
- to the simplefb node.
- If a simplefb node represents the preferred console for user interaction,
- then the chosen node's stdout-path property should point to it, or to the
- primary display hw node, as with display# aliases. If display aliases are
- used then it should be set to the alias instead.
- It is advised that devicetree files contain pre-filled, disabled framebuffer
- nodes, so that the firmware only needs to update the mode information and
- enable them. This way if e.g. later on support for more display clocks get
- added, the simplefb nodes will already contain this info and the firmware
- does not need to be updated.
- If pre-filled framebuffer nodes are used, the firmware may need extra
- information to find the right node. In that case an extra platform specific
- compatible and platform specific properties should be used and documented,
- see e.g. simple-framebuffer-sunxi.txt .
- Required properties:
- - compatible: "simple-framebuffer"
- - reg: Should contain the location and size of the framebuffer memory.
- - width: The width of the framebuffer in pixels.
- - height: The height of the framebuffer in pixels.
- - stride: The number of bytes in each line of the framebuffer.
- - format: The format of the framebuffer surface. Valid values are:
- - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b).
- - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r).
- Optional properties:
- - clocks : List of clocks used by the framebuffer. Clocks listed here
- are expected to already be configured correctly. The OS must
- ensure these clocks are not modified or disabled while the
- simple framebuffer remains active.
- - display : phandle pointing to the primary display hardware node
- Example:
- aliases {
- display0 = &lcdc0;
- }
- chosen {
- framebuffer0: framebuffer@1d385000 {
- compatible = "simple-framebuffer";
- reg = <0x1d385000 (1600 * 1200 * 2)>;
- width = <1600>;
- height = <1200>;
- stride = <(1600 * 2)>;
- format = "r5g6b5";
- clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>;
- display = <&lcdc0>;
- };
- stdout-path = "display0";
- };
- soc@01c00000 {
- lcdc0: lcdc@1c0c000 {
- compatible = "allwinner,sun4i-a10-lcdc";
- ...
- };
- };
- *) Older devicetree files may have a compatible = "simple-framebuffer" node
- in a different place, operating systems must first enumerate any compatible
- nodes found under chosen and then check for other compatible nodes.
|