# 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 Device Tree Bindings

maintainers:
  - Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  - 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.

  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

  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
    enum:
      - a1r5g5b5
      - a2r10g10b10
      - a8b8g8r8
      - a8r8g8b8
      - r5g6b5
      - r5g5b5a1
      - r8g8b8
      - x1r5g5b5
      - x2r10g10b10
      - x8r8g8b8

  display:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: Primary display hardware 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>;
            };
        };
    };

...
