# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/atmel,lcdc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Microchip's LCDC Framebuffer

maintainers:
  - Nicolas Ferre <nicolas.ferre@microchip.com>
  - Dharma Balasubiramani <dharma.b@microchip.com>

description:
  The LCDC works with a framebuffer, which is a section of memory that contains
  a complete frame of data representing pixel values for the display. The LCDC
  reads the pixel data from the framebuffer and sends it to the LCD panel to
  render the image.

properties:
  compatible:
    enum:
      - atmel,at91sam9261-lcdc
      - atmel,at91sam9263-lcdc
      - atmel,at91sam9g10-lcdc
      - atmel,at91sam9g45-lcdc
      - atmel,at91sam9g45es-lcdc
      - atmel,at91sam9rl-lcdc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: hclk
      - const: lcdc_clk

  display:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: A phandle pointing to the display node.

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - display

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/at91.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    fb@500000 {
      compatible = "atmel,at91sam9g45-lcdc";
      reg = <0x00500000 0x1000>;
      interrupts = <23 IRQ_TYPE_LEVEL_HIGH 0>;
      pinctrl-names = "default";
      pinctrl-0 = <&pinctrl_fb>;
      clocks = <&pmc PMC_TYPE_PERIPHERAL 23>, <&pmc PMC_TYPE_PERIPHERAL 23>;
      clock-names = "hclk", "lcdc_clk";
      display = <&display>;
    };
