Qualcomm adreno/snapdragon MDP5 display controller 
 | 
  
 | 
Description: 
 | 
  
 | 
This is the bindings documentation for the Mobile Display Subsytem(MDSS) that 
 | 
encapsulates sub-blocks like MDP5, DSI, HDMI, eDP etc, and the MDP5 display 
 | 
controller found in SoCs like MSM8974, APQ8084, MSM8916, MSM8994 and MSM8996. 
 | 
  
 | 
MDSS: 
 | 
Required properties: 
 | 
- compatible: 
 | 
  * "qcom,mdss" - MDSS 
 | 
- reg: Physical base address and length of the controller's registers. 
 | 
- reg-names: The names of register regions. The following regions are required: 
 | 
  * "mdss_phys" 
 | 
  * "vbif_phys" 
 | 
- interrupts: The interrupt signal from MDSS. 
 | 
- interrupt-controller: identifies the node as an interrupt controller. 
 | 
- #interrupt-cells: specifies the number of cells needed to encode an interrupt 
 | 
  source, should be 1. 
 | 
- power-domains: a power domain consumer specifier according to 
 | 
  Documentation/devicetree/bindings/power/power_domain.txt 
 | 
- clocks: device clocks. See ../clocks/clock-bindings.txt for details. 
 | 
- clock-names: the following clocks are required. 
 | 
  * "iface" 
 | 
  * "bus" 
 | 
  * "vsync" 
 | 
- #address-cells: number of address cells for the MDSS children. Should be 1. 
 | 
- #size-cells: Should be 1. 
 | 
- ranges: parent bus address space is the same as the child bus address space. 
 | 
  
 | 
Optional properties: 
 | 
- clock-names: the following clocks are optional: 
 | 
  * "lut" 
 | 
  
 | 
MDP5: 
 | 
Required properties: 
 | 
- compatible: 
 | 
  * "qcom,mdp5" - MDP5 
 | 
- reg: Physical base address and length of the controller's registers. 
 | 
- reg-names: The names of register regions. The following regions are required: 
 | 
  * "mdp_phys" 
 | 
- interrupts: Interrupt line from MDP5 to MDSS interrupt controller. 
 | 
- clocks: device clocks. See ../clocks/clock-bindings.txt for details. 
 | 
- clock-names: the following clocks are required. 
 | 
-   * "bus" 
 | 
-   * "iface" 
 | 
-   * "core" 
 | 
-   * "vsync" 
 | 
- ports: contains the list of output ports from MDP. These connect to interfaces 
 | 
  that are external to the MDP hardware, such as HDMI, DSI, EDP etc (LVDS is a 
 | 
  special case since it is a part of the MDP block itself). 
 | 
  
 | 
  Each output port contains an endpoint that describes how it is connected to an 
 | 
  external interface. These are described by the standard properties documented 
 | 
  here: 
 | 
    Documentation/devicetree/bindings/graph.txt 
 | 
    Documentation/devicetree/bindings/media/video-interfaces.txt 
 | 
  
 | 
  The availability of output ports can vary across SoC revisions: 
 | 
  
 | 
  For MSM8974 and APQ8084: 
 | 
     Port 0 -> MDP_INTF0 (eDP) 
 | 
     Port 1 -> MDP_INTF1 (DSI1) 
 | 
     Port 2 -> MDP_INTF2 (DSI2) 
 | 
     Port 3 -> MDP_INTF3 (HDMI) 
 | 
  
 | 
  For MSM8916: 
 | 
     Port 0 -> MDP_INTF1 (DSI1) 
 | 
  
 | 
  For MSM8994 and MSM8996: 
 | 
     Port 0 -> MDP_INTF1 (DSI1) 
 | 
     Port 1 -> MDP_INTF2 (DSI2) 
 | 
     Port 2 -> MDP_INTF3 (HDMI) 
 | 
  
 | 
Optional properties: 
 | 
- clock-names: the following clocks are optional: 
 | 
  * "lut" 
 | 
  
 | 
Example: 
 | 
  
 | 
/ { 
 | 
    ... 
 | 
  
 | 
    mdss: mdss@1a00000 { 
 | 
        compatible = "qcom,mdss"; 
 | 
        reg = <0x1a00000 0x1000>, 
 | 
              <0x1ac8000 0x3000>; 
 | 
        reg-names = "mdss_phys", "vbif_phys"; 
 | 
  
 | 
        power-domains = <&gcc MDSS_GDSC>; 
 | 
  
 | 
        clocks = <&gcc GCC_MDSS_AHB_CLK>, 
 | 
             <&gcc GCC_MDSS_AXI_CLK>, 
 | 
             <&gcc GCC_MDSS_VSYNC_CLK>; 
 | 
        clock-names = "iface", 
 | 
                  "bus", 
 | 
                  "vsync" 
 | 
  
 | 
        interrupts = <0 72 0>; 
 | 
  
 | 
        interrupt-controller; 
 | 
        #interrupt-cells = <1>; 
 | 
  
 | 
        #address-cells = <1>; 
 | 
        #size-cells = <1>; 
 | 
        ranges; 
 | 
  
 | 
        mdp: mdp@1a01000 { 
 | 
            compatible = "qcom,mdp5"; 
 | 
            reg = <0x1a01000 0x90000>; 
 | 
            reg-names = "mdp_phys"; 
 | 
  
 | 
            interrupt-parent = <&mdss>; 
 | 
            interrupts = <0 0>; 
 | 
  
 | 
            clocks = <&gcc GCC_MDSS_AHB_CLK>, 
 | 
                 <&gcc GCC_MDSS_AXI_CLK>, 
 | 
                 <&gcc GCC_MDSS_MDP_CLK>, 
 | 
                 <&gcc GCC_MDSS_VSYNC_CLK>; 
 | 
            clock-names = "iface", 
 | 
                      "bus", 
 | 
                      "core", 
 | 
                      "vsync"; 
 | 
  
 | 
            ports { 
 | 
                #address-cells = <1>; 
 | 
                #size-cells = <0>; 
 | 
  
 | 
                port@0 { 
 | 
                    reg = <0>; 
 | 
                    mdp5_intf1_out: endpoint { 
 | 
                        remote-endpoint = <&dsi0_in>; 
 | 
                    }; 
 | 
                }; 
 | 
            }; 
 | 
        }; 
 | 
  
 | 
        dsi0: dsi@1a98000 { 
 | 
            ... 
 | 
            ports { 
 | 
                ... 
 | 
                port@0 { 
 | 
                    reg = <0>; 
 | 
                    dsi0_in: endpoint { 
 | 
                        remote-endpoint = <&mdp5_intf1_out>; 
 | 
                    }; 
 | 
                }; 
 | 
                ... 
 | 
            }; 
 | 
            ... 
 | 
        }; 
 | 
  
 | 
        dsi_phy0: dsi-phy@1a98300 { 
 | 
            ... 
 | 
        }; 
 | 
    }; 
 | 
}; 
 |