Qualcomm Technologies, Inc. DPU KMS 
 | 
  
 | 
Description: 
 | 
  
 | 
Device tree bindings for MSM Mobile Display Subsytem(MDSS) that encapsulates 
 | 
sub-blocks like DPU display controller, DSI and DP interfaces etc. 
 | 
The DPU display controller is found in SDM845 SoC. 
 | 
  
 | 
MDSS: 
 | 
Required properties: 
 | 
- compatible: "qcom,sdm845-mdss" 
 | 
- reg: physical base address and length of contoller's registers. 
 | 
- reg-names: register region names. The following region is required: 
 | 
  * "mdss" 
 | 
- power-domains: a power domain consumer specifier according to 
 | 
  Documentation/devicetree/bindings/power/power_domain.txt 
 | 
- clocks: list of clock specifiers for clocks needed by the device. 
 | 
- clock-names: device clock names, must be in same order as clocks property. 
 | 
  The following clocks are required: 
 | 
  * "iface" 
 | 
  * "bus" 
 | 
  * "core" 
 | 
- interrupts: 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. 
 | 
- iommus: phandle of iommu device node. 
 | 
- #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: 
 | 
- assigned-clocks: list of clock specifiers for clocks needing rate assignment 
 | 
- assigned-clock-rates: list of clock frequencies sorted in the same order as 
 | 
  the assigned-clocks property. 
 | 
  
 | 
MDP: 
 | 
Required properties: 
 | 
- compatible: "qcom,sdm845-dpu" 
 | 
- reg: physical base address and length of controller's registers. 
 | 
- reg-names : register region names. The following region is required: 
 | 
  * "mdp" 
 | 
  * "vbif" 
 | 
- clocks: list of clock specifiers for clocks needed by the device. 
 | 
- clock-names: device clock names, must be in same order as clocks property. 
 | 
  The following clocks are required. 
 | 
  * "bus" 
 | 
  * "iface" 
 | 
  * "core" 
 | 
  * "vsync" 
 | 
- interrupts: interrupt line from DPU to MDSS. 
 | 
- ports: contains the list of output ports from DPU device. These ports connect 
 | 
  to interfaces that are external to the DPU hardware, such as DSI, DP etc. 
 | 
  
 | 
  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 
 | 
  
 | 
    Port 0 -> DPU_INTF1 (DSI1) 
 | 
    Port 1 -> DPU_INTF2 (DSI2) 
 | 
  
 | 
Optional properties: 
 | 
- assigned-clocks: list of clock specifiers for clocks needing rate assignment 
 | 
- assigned-clock-rates: list of clock frequencies sorted in the same order as 
 | 
  the assigned-clocks property. 
 | 
  
 | 
Example: 
 | 
  
 | 
    mdss: mdss@ae00000 { 
 | 
        compatible = "qcom,sdm845-mdss"; 
 | 
        reg = <0xae00000 0x1000>; 
 | 
        reg-names = "mdss"; 
 | 
  
 | 
        power-domains = <&clock_dispcc 0>; 
 | 
  
 | 
        clocks = <&gcc GCC_DISP_AHB_CLK>, <&gcc GCC_DISP_AXI_CLK>, 
 | 
             <&clock_dispcc DISP_CC_MDSS_MDP_CLK>; 
 | 
        clock-names = "iface", "bus", "core"; 
 | 
  
 | 
        assigned-clocks = <&clock_dispcc DISP_CC_MDSS_MDP_CLK>; 
 | 
        assigned-clock-rates = <300000000>; 
 | 
  
 | 
        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 
 | 
        interrupt-controller; 
 | 
        #interrupt-cells = <1>; 
 | 
  
 | 
        iommus = <&apps_iommu 0>; 
 | 
  
 | 
        #address-cells = <2>; 
 | 
        #size-cells = <1>; 
 | 
        ranges = <0 0 0xae00000 0xb2008>; 
 | 
  
 | 
        mdss_mdp: mdp@ae01000 { 
 | 
            compatible = "qcom,sdm845-dpu"; 
 | 
            reg = <0 0x1000 0x8f000>, <0 0xb0000 0x2008>; 
 | 
            reg-names = "mdp", "vbif"; 
 | 
  
 | 
            clocks = <&clock_dispcc DISP_CC_MDSS_AHB_CLK>, 
 | 
                 <&clock_dispcc DISP_CC_MDSS_AXI_CLK>, 
 | 
                 <&clock_dispcc DISP_CC_MDSS_MDP_CLK>, 
 | 
                 <&clock_dispcc DISP_CC_MDSS_VSYNC_CLK>; 
 | 
            clock-names = "iface", "bus", "core", "vsync"; 
 | 
  
 | 
            assigned-clocks = <&clock_dispcc DISP_CC_MDSS_MDP_CLK>, 
 | 
                      <&clock_dispcc DISP_CC_MDSS_VSYNC_CLK>; 
 | 
            assigned-clock-rates = <0 0 300000000 19200000>; 
 | 
  
 | 
            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>; 
 | 
  
 | 
            ports { 
 | 
                #address-cells = <1>; 
 | 
                #size-cells = <0>; 
 | 
  
 | 
                port@0 { 
 | 
                    reg = <0>; 
 | 
                    dpu_intf1_out: endpoint { 
 | 
                        remote-endpoint = <&dsi0_in>; 
 | 
                    }; 
 | 
                }; 
 | 
  
 | 
                port@1 { 
 | 
                    reg = <1>; 
 | 
                    dpu_intf2_out: endpoint { 
 | 
                        remote-endpoint = <&dsi1_in>; 
 | 
                    }; 
 | 
                }; 
 | 
            }; 
 | 
        }; 
 | 
    }; 
 |