Documentation / devicetree / bindings / display / st,stm32mp25-lvds.yaml


Based on kernel version 6.18. Page generated on 2025-12-02 09:03 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/st,stm32mp25-lvds.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics STM32 LVDS Display Interface Transmitter

maintainers:
  - Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
  - Yannick Fertre <yannick.fertre@foss.st.com>

description: |
  The STMicroelectronics STM32 LVDS Display Interface Transmitter handles the
  LVDS protocol: it maps the pixels received from the upstream Pixel-DMA (LTDC)
  onto the LVDS PHY.
 
  It is composed of three sub blocks:
    - LVDS host: handles the LVDS protocol (FPD / OpenLDI) and maps its input
      pixels onto the data lanes of the PHY
    - LVDS PHY: parallelize the data and drives the LVDS data lanes
    - LVDS wrapper: handles top-level settings
 
  The LVDS controller driver supports the following high-level features:
    - FDP-Link-I and OpenLDI (v0.95) protocols
    - Single-Link or Dual-Link operation
    - Single-Display or Double-Display (with the same content duplicated on both)
    - Flexible Bit-Mapping, including JEIDA and VESA
    - RGB888 or RGB666 output
    - Synchronous design, with one input pixel per clock cycle

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - st,stm32mp255-lvds
          - const: st,stm32mp25-lvds
      - const: st,stm32mp25-lvds
 
  "#clock-cells":
    const: 0
    description:
      Provides the internal LVDS PHY clock to the framework.

  reg:
    maxItems: 1

  clocks:
    items:
      - description: APB peripheral clock
      - description: Reference clock for the internal PLL

  clock-names:
    items:
      - const: pclk
      - const: ref

  resets:
    maxItems: 1

  access-controllers:
    maxItems: 1

  power-domains:
    maxItems: 1

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          LVDS input port node, connected to the LTDC RGB output port.

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          LVDS output port node, connected to a panel or bridge input port.

    required:
      - port@0
      - port@1

required:
  - compatible
  - "#clock-cells"
  - reg
  - clocks
  - clock-names
  - resets
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/st,stm32mp25-rcc.h>
    #include <dt-bindings/reset/st,stm32mp25-rcc.h>
 
    lvds: lvds@48060000 {
        compatible = "st,stm32mp25-lvds";
        reg = <0x48060000 0x2000>;
        #clock-cells = <0>;
        clocks = <&rcc CK_BUS_LVDS>, <&rcc CK_KER_LVDSPHY>;
        clock-names = "pclk", "ref";
        resets = <&rcc LVDS_R>;
 
        ports {
            #address-cells = <1>;
            #size-cells = <0>;
 
            port@0 {
                reg = <0>;
                lvds_in: endpoint {
                   remote-endpoint = <&ltdc_ep1_out>;
                };
            };
 
            port@1 {
                reg = <1>;
                lvds_out0: endpoint {
                   remote-endpoint = <&lvds_panel_in>;
                };
            };
        };
    };

...