1*0e8011faSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*0e8011faSEmmanuel Vadot%YAML 1.2 3*0e8011faSEmmanuel Vadot--- 4*0e8011faSEmmanuel Vadot$id: http://devicetree.org/schemas/display/st,stm32mp25-lvds.yaml# 5*0e8011faSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*0e8011faSEmmanuel Vadot 7*0e8011faSEmmanuel Vadottitle: STMicroelectronics STM32 LVDS Display Interface Transmitter 8*0e8011faSEmmanuel Vadot 9*0e8011faSEmmanuel Vadotmaintainers: 10*0e8011faSEmmanuel Vadot - Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com> 11*0e8011faSEmmanuel Vadot - Yannick Fertre <yannick.fertre@foss.st.com> 12*0e8011faSEmmanuel Vadot 13*0e8011faSEmmanuel Vadotdescription: | 14*0e8011faSEmmanuel Vadot The STMicroelectronics STM32 LVDS Display Interface Transmitter handles the 15*0e8011faSEmmanuel Vadot LVDS protocol: it maps the pixels received from the upstream Pixel-DMA (LTDC) 16*0e8011faSEmmanuel Vadot onto the LVDS PHY. 17*0e8011faSEmmanuel Vadot 18*0e8011faSEmmanuel Vadot It is composed of three sub blocks: 19*0e8011faSEmmanuel Vadot - LVDS host: handles the LVDS protocol (FPD / OpenLDI) and maps its input 20*0e8011faSEmmanuel Vadot pixels onto the data lanes of the PHY 21*0e8011faSEmmanuel Vadot - LVDS PHY: parallelize the data and drives the LVDS data lanes 22*0e8011faSEmmanuel Vadot - LVDS wrapper: handles top-level settings 23*0e8011faSEmmanuel Vadot 24*0e8011faSEmmanuel Vadot The LVDS controller driver supports the following high-level features: 25*0e8011faSEmmanuel Vadot - FDP-Link-I and OpenLDI (v0.95) protocols 26*0e8011faSEmmanuel Vadot - Single-Link or Dual-Link operation 27*0e8011faSEmmanuel Vadot - Single-Display or Double-Display (with the same content duplicated on both) 28*0e8011faSEmmanuel Vadot - Flexible Bit-Mapping, including JEIDA and VESA 29*0e8011faSEmmanuel Vadot - RGB888 or RGB666 output 30*0e8011faSEmmanuel Vadot - Synchronous design, with one input pixel per clock cycle 31*0e8011faSEmmanuel Vadot 32*0e8011faSEmmanuel Vadotproperties: 33*0e8011faSEmmanuel Vadot compatible: 34*0e8011faSEmmanuel Vadot const: st,stm32mp25-lvds 35*0e8011faSEmmanuel Vadot 36*0e8011faSEmmanuel Vadot "#clock-cells": 37*0e8011faSEmmanuel Vadot const: 0 38*0e8011faSEmmanuel Vadot description: 39*0e8011faSEmmanuel Vadot Provides the internal LVDS PHY clock to the framework. 40*0e8011faSEmmanuel Vadot 41*0e8011faSEmmanuel Vadot reg: 42*0e8011faSEmmanuel Vadot maxItems: 1 43*0e8011faSEmmanuel Vadot 44*0e8011faSEmmanuel Vadot clocks: 45*0e8011faSEmmanuel Vadot items: 46*0e8011faSEmmanuel Vadot - description: APB peripheral clock 47*0e8011faSEmmanuel Vadot - description: Reference clock for the internal PLL 48*0e8011faSEmmanuel Vadot 49*0e8011faSEmmanuel Vadot clock-names: 50*0e8011faSEmmanuel Vadot items: 51*0e8011faSEmmanuel Vadot - const: pclk 52*0e8011faSEmmanuel Vadot - const: ref 53*0e8011faSEmmanuel Vadot 54*0e8011faSEmmanuel Vadot resets: 55*0e8011faSEmmanuel Vadot maxItems: 1 56*0e8011faSEmmanuel Vadot 57*0e8011faSEmmanuel Vadot ports: 58*0e8011faSEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/ports 59*0e8011faSEmmanuel Vadot 60*0e8011faSEmmanuel Vadot properties: 61*0e8011faSEmmanuel Vadot port@0: 62*0e8011faSEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/port 63*0e8011faSEmmanuel Vadot description: 64*0e8011faSEmmanuel Vadot LVDS input port node, connected to the LTDC RGB output port. 65*0e8011faSEmmanuel Vadot 66*0e8011faSEmmanuel Vadot port@1: 67*0e8011faSEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/port 68*0e8011faSEmmanuel Vadot description: 69*0e8011faSEmmanuel Vadot LVDS output port node, connected to a panel or bridge input port. 70*0e8011faSEmmanuel Vadot 71*0e8011faSEmmanuel Vadot required: 72*0e8011faSEmmanuel Vadot - port@0 73*0e8011faSEmmanuel Vadot - port@1 74*0e8011faSEmmanuel Vadot 75*0e8011faSEmmanuel Vadotrequired: 76*0e8011faSEmmanuel Vadot - compatible 77*0e8011faSEmmanuel Vadot - "#clock-cells" 78*0e8011faSEmmanuel Vadot - reg 79*0e8011faSEmmanuel Vadot - clocks 80*0e8011faSEmmanuel Vadot - clock-names 81*0e8011faSEmmanuel Vadot - resets 82*0e8011faSEmmanuel Vadot - ports 83*0e8011faSEmmanuel Vadot 84*0e8011faSEmmanuel VadotadditionalProperties: false 85*0e8011faSEmmanuel Vadot 86*0e8011faSEmmanuel Vadotexamples: 87*0e8011faSEmmanuel Vadot - | 88*0e8011faSEmmanuel Vadot #include <dt-bindings/clock/st,stm32mp25-rcc.h> 89*0e8011faSEmmanuel Vadot #include <dt-bindings/reset/st,stm32mp25-rcc.h> 90*0e8011faSEmmanuel Vadot 91*0e8011faSEmmanuel Vadot lvds: lvds@48060000 { 92*0e8011faSEmmanuel Vadot compatible = "st,stm32mp25-lvds"; 93*0e8011faSEmmanuel Vadot reg = <0x48060000 0x2000>; 94*0e8011faSEmmanuel Vadot #clock-cells = <0>; 95*0e8011faSEmmanuel Vadot clocks = <&rcc CK_BUS_LVDS>, <&rcc CK_KER_LVDSPHY>; 96*0e8011faSEmmanuel Vadot clock-names = "pclk", "ref"; 97*0e8011faSEmmanuel Vadot resets = <&rcc LVDS_R>; 98*0e8011faSEmmanuel Vadot 99*0e8011faSEmmanuel Vadot ports { 100*0e8011faSEmmanuel Vadot #address-cells = <1>; 101*0e8011faSEmmanuel Vadot #size-cells = <0>; 102*0e8011faSEmmanuel Vadot 103*0e8011faSEmmanuel Vadot port@0 { 104*0e8011faSEmmanuel Vadot reg = <0>; 105*0e8011faSEmmanuel Vadot lvds_in: endpoint { 106*0e8011faSEmmanuel Vadot remote-endpoint = <<dc_ep1_out>; 107*0e8011faSEmmanuel Vadot }; 108*0e8011faSEmmanuel Vadot }; 109*0e8011faSEmmanuel Vadot 110*0e8011faSEmmanuel Vadot port@1 { 111*0e8011faSEmmanuel Vadot reg = <1>; 112*0e8011faSEmmanuel Vadot lvds_out0: endpoint { 113*0e8011faSEmmanuel Vadot remote-endpoint = <&lvds_panel_in>; 114*0e8011faSEmmanuel Vadot }; 115*0e8011faSEmmanuel Vadot }; 116*0e8011faSEmmanuel Vadot }; 117*0e8011faSEmmanuel Vadot }; 118*0e8011faSEmmanuel Vadot 119*0e8011faSEmmanuel Vadot... 120