|
@@ -4,6 +4,40 @@ 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, they should be named
|
|
|
+"framebuffer#-<output>", e.g. "framebuffer0-hdmi". The output should be
|
|
|
+included in the name since different outputs typically require different
|
|
|
+clocks and the clocks are part of the pre-populated nodes. The firmware must
|
|
|
+rename the nodes to the standard "framebuffer@<address>" name using the
|
|
|
+runtime chosen address when enabling the nodes.
|
|
|
+
|
|
|
Required properties:
|
|
|
- compatible: "simple-framebuffer"
|
|
|
- reg: Should contain the location and size of the framebuffer memory.
|
|
@@ -19,14 +53,36 @@ Optional properties:
|
|
|
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:
|
|
|
|
|
|
- framebuffer {
|
|
|
+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.
|