# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/simple-framebuffer.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Simple Framebuffer

maintainers:
  - Hans de Goede <hdegoede@redhat.com>

description: |+
  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.

  If a panel node is given, then the driver uses this to configure the
  physical width and height of the display. If no panel node is given,
  then the driver uses the width and height properties of the simplefb
  node to estimate it.

  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 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.

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - apple,simple-framebuffer
              - allwinner,simple-framebuffer
              - amlogic,simple-framebuffer
          - const: simple-framebuffer
      - const: simple-framebuffer

  reg:
    description: Location and size of the framebuffer memory

  memory-region:
    maxItems: 1
    description: Phandle to a node describing the memory to be used for the
      framebuffer. If present, overrides the "reg" property (if one exists).

  clocks:
    description: List of clocks used by the framebuffer.

  power-domains:
    description: List of power domains used by the framebuffer.

  width:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Width of the framebuffer in pixels

  height:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Height of the framebuffer in pixels

  stride:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Number of bytes of a line in the framebuffer

  format:
    description: >
      Format of the framebuffer:
        * `a1r5g5b5` - 16-bit pixels, d[15]=a, d[14:10]=r, d[9:5]=g, d[4:0]=b
        * `a2r10g10b10` - 32-bit pixels, d[31:30]=a, d[29:20]=r, d[19:10]=g, d[9:0]=b
        * `a8b8g8r8` - 32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r
        * `a8r8g8b8` - 32-bit pixels, d[31:24]=a, d[23:16]=r, d[15:8]=g, d[7:0]=b
        * `r5g6b5` - 16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b
        * `r5g5b5a1` - 16-bit pixels, d[15:11]=r, d[10:6]=g, d[5:1]=b d[1:0]=a
        * `r8g8b8` - 24-bit pixels, d[23:16]=r, d[15:8]=g, d[7:0]=b
        * `x1r5g5b5` - 16-bit pixels, d[14:10]=r, d[9:5]=g, d[4:0]=b
        * `x2r10g10b10` - 32-bit pixels, d[29:20]=r, d[19:10]=g, d[9:0]=b
        * `x8r8g8b8` - 32-bit pixels, d[23:16]=r, d[15:8]=g, d[7:0]=b
        * `x8b8g8r8` - 32-bit pixels, d[23:16]=b, d[15:8]=g, d[7:0]=r
    enum:
      - a1r5g5b5
      - a2r10g10b10
      - a8b8g8r8
      - a8r8g8b8
      - r5g6b5
      - r5g5b5a1
      - r8g8b8
      - x1r5g5b5
      - x2r10g10b10
      - x8r8g8b8
      - x8b8g8r8

  display:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: Primary display hardware node

  panel:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: Display panel node

  allwinner,pipeline:
    description: Pipeline used by the framebuffer on Allwinner SoCs
    enum:
      - de_be0-lcd0
      - de_be0-lcd0-hdmi
      - de_be0-lcd0-tve0
      - de_be1-lcd0
      - de_be1-lcd1-hdmi
      - de_fe0-de_be0-lcd0
      - de_fe0-de_be0-lcd0-hdmi
      - de_fe0-de_be0-lcd0-tve0
      - mixer0-lcd0
      - mixer0-lcd0-hdmi
      - mixer1-lcd1-hdmi
      - mixer1-lcd1-tve

  amlogic,pipeline:
    description: Pipeline used by the framebuffer on Amlogic SoCs
    enum:
      - vpu-cvbs
      - vpu-hdmi

patternProperties:
  "^[a-zA-Z0-9-]+-supply$":
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Regulators used by the framebuffer. These should be named
      according to the names in the device design.

required:
  # The binding requires also reg, width, height, stride and format,
  # but usually they will be filled by the bootloader.
  - compatible

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: allwinner,simple-framebuffer

    then:
      required:
        - allwinner,pipeline

  - if:
      properties:
        compatible:
          contains:
            const: amlogic,simple-framebuffer

    then:
      required:
        - amlogic,pipeline


additionalProperties: false

examples:
  - |
    / {
        compatible = "foo";
        model = "foo";
        #address-cells = <1>;
        #size-cells = <1>;

        chosen {
            #address-cells = <1>;
            #size-cells = <1>;
            framebuffer0: framebuffer@1d385000 {
                compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
                allwinner,pipeline = "de_be0-lcd0";
                reg = <0x1d385000 3840000>;
                width = <1600>;
                height = <1200>;
                stride = <3200>;
                format = "r5g6b5";
                clocks = <&ahb_gates 36>, <&ahb_gates 43>, <&ahb_gates 44>;
                lcd-supply = <&reg_dc1sw>;
                display = <&lcdc0>;
            };
        };
    };

...
