18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/display/simple-framebuffer.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: Simple Framebuffer Device Tree Bindings 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> 118c2ecf20Sopenharmony_ci - Hans de Goede <hdegoede@redhat.com> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cidescription: |+ 148c2ecf20Sopenharmony_ci A simple frame-buffer describes a frame-buffer setup by firmware or 158c2ecf20Sopenharmony_ci the bootloader, with the assumption that the display hardware has 168c2ecf20Sopenharmony_ci already been set up to scan out from the memory pointed to by the 178c2ecf20Sopenharmony_ci reg property. 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci Since simplefb nodes represent runtime information they must be 208c2ecf20Sopenharmony_ci sub-nodes of the chosen node (*). Simplefb nodes must be named 218c2ecf20Sopenharmony_ci framebuffer@<address>. 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci If the devicetree contains nodes for the display hardware used by a 248c2ecf20Sopenharmony_ci simplefb, then the simplefb node must contain a property called 258c2ecf20Sopenharmony_ci display, which contains a phandle pointing to the primary display 268c2ecf20Sopenharmony_ci hw node, so that the OS knows which simplefb to disable when handing 278c2ecf20Sopenharmony_ci over control to a driver for the real hardware. The bindings for the 288c2ecf20Sopenharmony_ci hw nodes must specify which node is considered the primary node. 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci It is advised to add display# aliases to help the OS determine how 318c2ecf20Sopenharmony_ci to number things. If display# aliases are used, then if the simplefb 328c2ecf20Sopenharmony_ci node contains a display property then the /aliases/display# path 338c2ecf20Sopenharmony_ci must point to the display hw node the display property points to, 348c2ecf20Sopenharmony_ci otherwise it must point directly to the simplefb node. 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci If a simplefb node represents the preferred console for user 378c2ecf20Sopenharmony_ci interaction, then the chosen node stdout-path property should point 388c2ecf20Sopenharmony_ci to it, or to the primary display hw node, as with display# 398c2ecf20Sopenharmony_ci aliases. If display aliases are used then it should be set to the 408c2ecf20Sopenharmony_ci alias instead. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci It is advised that devicetree files contain pre-filled, disabled 438c2ecf20Sopenharmony_ci framebuffer nodes, so that the firmware only needs to update the 448c2ecf20Sopenharmony_ci mode information and enable them. This way if e.g. later on support 458c2ecf20Sopenharmony_ci for more display clocks get added, the simplefb nodes will already 468c2ecf20Sopenharmony_ci contain this info and the firmware does not need to be updated. 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci If pre-filled framebuffer nodes are used, the firmware may need 498c2ecf20Sopenharmony_ci extra information to find the right node. In that case an extra 508c2ecf20Sopenharmony_ci platform specific compatible and platform specific properties should 518c2ecf20Sopenharmony_ci be used and documented. 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ciproperties: 548c2ecf20Sopenharmony_ci compatible: 558c2ecf20Sopenharmony_ci items: 568c2ecf20Sopenharmony_ci - enum: 578c2ecf20Sopenharmony_ci - allwinner,simple-framebuffer 588c2ecf20Sopenharmony_ci - amlogic,simple-framebuffer 598c2ecf20Sopenharmony_ci - const: simple-framebuffer 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci reg: 628c2ecf20Sopenharmony_ci description: Location and size of the framebuffer memory 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci clocks: 658c2ecf20Sopenharmony_ci description: List of clocks used by the framebuffer. 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci power-domains: 688c2ecf20Sopenharmony_ci description: List of power domains used by the framebuffer. 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci width: 718c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 728c2ecf20Sopenharmony_ci description: Width of the framebuffer in pixels 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci height: 758c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 768c2ecf20Sopenharmony_ci description: Height of the framebuffer in pixels 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci stride: 798c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 808c2ecf20Sopenharmony_ci description: Number of bytes of a line in the framebuffer 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci format: 838c2ecf20Sopenharmony_ci description: > 848c2ecf20Sopenharmony_ci Format of the framebuffer: 858c2ecf20Sopenharmony_ci * `a8b8g8r8` - 32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r 868c2ecf20Sopenharmony_ci * `r5g6b5` - 16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b 878c2ecf20Sopenharmony_ci enum: 888c2ecf20Sopenharmony_ci - a8b8g8r8 898c2ecf20Sopenharmony_ci - r5g6b5 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci display: 928c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 938c2ecf20Sopenharmony_ci description: Primary display hardware node 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci allwinner,pipeline: 968c2ecf20Sopenharmony_ci description: Pipeline used by the framebuffer on Allwinner SoCs 978c2ecf20Sopenharmony_ci enum: 988c2ecf20Sopenharmony_ci - de_be0-lcd0 998c2ecf20Sopenharmony_ci - de_be0-lcd0-hdmi 1008c2ecf20Sopenharmony_ci - de_be0-lcd0-tve0 1018c2ecf20Sopenharmony_ci - de_be1-lcd0 1028c2ecf20Sopenharmony_ci - de_be1-lcd1-hdmi 1038c2ecf20Sopenharmony_ci - de_fe0-de_be0-lcd0 1048c2ecf20Sopenharmony_ci - de_fe0-de_be0-lcd0-hdmi 1058c2ecf20Sopenharmony_ci - de_fe0-de_be0-lcd0-tve0 1068c2ecf20Sopenharmony_ci - mixer0-lcd0 1078c2ecf20Sopenharmony_ci - mixer0-lcd0-hdmi 1088c2ecf20Sopenharmony_ci - mixer1-lcd1-hdmi 1098c2ecf20Sopenharmony_ci - mixer1-lcd1-tve 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci amlogic,pipeline: 1128c2ecf20Sopenharmony_ci description: Pipeline used by the framebuffer on Amlogic SoCs 1138c2ecf20Sopenharmony_ci enum: 1148c2ecf20Sopenharmony_ci - vpu-cvbs 1158c2ecf20Sopenharmony_ci - vpu-hdmi 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_cipatternProperties: 1188c2ecf20Sopenharmony_ci "^[a-zA-Z0-9-]+-supply$": 1198c2ecf20Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 1208c2ecf20Sopenharmony_ci description: 1218c2ecf20Sopenharmony_ci Regulators used by the framebuffer. These should be named 1228c2ecf20Sopenharmony_ci according to the names in the device design. 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_cirequired: 1258c2ecf20Sopenharmony_ci # The binding requires also reg, width, height, stride and format, 1268c2ecf20Sopenharmony_ci # but usually they will be filled by the bootloader. 1278c2ecf20Sopenharmony_ci - compatible 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ciallOf: 1308c2ecf20Sopenharmony_ci - if: 1318c2ecf20Sopenharmony_ci properties: 1328c2ecf20Sopenharmony_ci compatible: 1338c2ecf20Sopenharmony_ci contains: 1348c2ecf20Sopenharmony_ci const: allwinner,simple-framebuffer 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci then: 1378c2ecf20Sopenharmony_ci required: 1388c2ecf20Sopenharmony_ci - allwinner,pipeline 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci - if: 1418c2ecf20Sopenharmony_ci properties: 1428c2ecf20Sopenharmony_ci compatible: 1438c2ecf20Sopenharmony_ci contains: 1448c2ecf20Sopenharmony_ci const: amlogic,simple-framebuffer 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ci then: 1478c2ecf20Sopenharmony_ci required: 1488c2ecf20Sopenharmony_ci - amlogic,pipeline 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ciadditionalProperties: false 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ciexamples: 1548c2ecf20Sopenharmony_ci - | 1558c2ecf20Sopenharmony_ci / { 1568c2ecf20Sopenharmony_ci compatible = "foo"; 1578c2ecf20Sopenharmony_ci model = "foo"; 1588c2ecf20Sopenharmony_ci #address-cells = <1>; 1598c2ecf20Sopenharmony_ci #size-cells = <1>; 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci chosen { 1628c2ecf20Sopenharmony_ci #address-cells = <1>; 1638c2ecf20Sopenharmony_ci #size-cells = <1>; 1648c2ecf20Sopenharmony_ci framebuffer0: framebuffer@1d385000 { 1658c2ecf20Sopenharmony_ci compatible = "allwinner,simple-framebuffer", "simple-framebuffer"; 1668c2ecf20Sopenharmony_ci allwinner,pipeline = "de_be0-lcd0"; 1678c2ecf20Sopenharmony_ci reg = <0x1d385000 3840000>; 1688c2ecf20Sopenharmony_ci width = <1600>; 1698c2ecf20Sopenharmony_ci height = <1200>; 1708c2ecf20Sopenharmony_ci stride = <3200>; 1718c2ecf20Sopenharmony_ci format = "r5g6b5"; 1728c2ecf20Sopenharmony_ci clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>; 1738c2ecf20Sopenharmony_ci lcd-supply = <®_dc1sw>; 1748c2ecf20Sopenharmony_ci display = <&lcdc0>; 1758c2ecf20Sopenharmony_ci }; 1768c2ecf20Sopenharmony_ci }; 1778c2ecf20Sopenharmony_ci }; 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci... 180