92 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 | 
						|
- *-supply : Any number of regulators used by the framebuffer. These should
 | 
						|
	     be named according to the names in the device's design.
 | 
						|
 | 
						|
  The above resources are expected to already be configured correctly.
 | 
						|
  The OS must ensure they 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>;
 | 
						|
		lcd-supply = <®_dc1sw>;
 | 
						|
		display = <&lcdc0>;
 | 
						|
	};
 | 
						|
	stdout-path = "display0";
 | 
						|
};
 | 
						|
 | 
						|
soc@1c00000 {
 | 
						|
	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.
 |