Qualcomm Technologies Inc. adreno/snapdragon DSI output 
 | 
  
 | 
DSI Controller: 
 | 
Required properties: 
 | 
- compatible: 
 | 
  * "qcom,mdss-dsi-ctrl" 
 | 
- reg: Physical base address and length of the registers of controller 
 | 
- reg-names: The names of register regions. The following regions are required: 
 | 
  * "dsi_ctrl" 
 | 
- interrupts: The interrupt signal from the DSI block. 
 | 
- power-domains: Should be <&mmcc MDSS_GDSC>. 
 | 
- clocks: Phandles to device clocks. 
 | 
- clock-names: the following clocks are required: 
 | 
  * "mdp_core" 
 | 
  * "iface" 
 | 
  * "bus" 
 | 
  * "core_mmss" 
 | 
  * "byte" 
 | 
  * "pixel" 
 | 
  * "core" 
 | 
  For DSIv2, we need an additional clock: 
 | 
   * "src" 
 | 
  For DSI6G v2.0 onwards, we need also need the clock: 
 | 
   * "byte_intf" 
 | 
- assigned-clocks: Parents of "byte" and "pixel" for the given platform. 
 | 
- assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided 
 | 
  by a DSI PHY block. See [1] for details on clock bindings. 
 | 
- vdd-supply: phandle to vdd regulator device node 
 | 
- vddio-supply: phandle to vdd-io regulator device node 
 | 
- vdda-supply: phandle to vdda regulator device node 
 | 
- phys: phandle to DSI PHY device node 
 | 
- phy-names: the name of the corresponding PHY device 
 | 
- syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) 
 | 
- ports: Contains 2 DSI controller ports as child nodes. Each port contains 
 | 
  an endpoint subnode as defined in [2] and [3]. 
 | 
  
 | 
Optional properties: 
 | 
- panel@0: Node of panel connected to this DSI controller. 
 | 
  See files in [4] for each supported panel. 
 | 
- qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is 
 | 
  driving a panel which needs 2 DSI links. 
 | 
- qcom,master-dsi: Boolean value indicating if the DSI controller is driving 
 | 
  the master link of the 2-DSI panel. 
 | 
- qcom,sync-dual-dsi: Boolean value indicating if the DSI controller is 
 | 
  driving a 2-DSI panel whose 2 links need receive command simultaneously. 
 | 
- pinctrl-names: the pin control state names; should contain "default" 
 | 
- pinctrl-0: the default pinctrl state (active) 
 | 
- pinctrl-n: the "sleep" pinctrl state 
 | 
- ports: contains DSI controller input and output ports as children, each 
 | 
  containing one endpoint subnode. 
 | 
  
 | 
  DSI Endpoint properties: 
 | 
  - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's 
 | 
    input endpoint. For port@1, set to the MDP interface output. See [2] for 
 | 
    device graph info. 
 | 
  
 | 
  - data-lanes: this describes how the physical DSI data lanes are mapped 
 | 
    to the logical lanes on the given platform. The value contained in 
 | 
    index n describes what physical lane is mapped to the logical lane n 
 | 
    (DATAn, where n lies between 0 and 3). The clock lane position is fixed 
 | 
    and can't be changed. Hence, they aren't a part of the DT bindings. See 
 | 
    [3] for more info on the data-lanes property. 
 | 
  
 | 
    For example: 
 | 
  
 | 
    data-lanes = <3 0 1 2>; 
 | 
  
 | 
    The above mapping describes that the logical data lane DATA0 is mapped to 
 | 
    the physical data lane DATA3, logical DATA1 to physical DATA0, logic DATA2 
 | 
    to phys DATA1 and logic DATA3 to phys DATA2. 
 | 
  
 | 
    There are only a limited number of physical to logical mappings possible: 
 | 
    <0 1 2 3> 
 | 
    <1 2 3 0> 
 | 
    <2 3 0 1> 
 | 
    <3 0 1 2> 
 | 
    <0 3 2 1> 
 | 
    <1 0 3 2> 
 | 
    <2 1 0 3> 
 | 
    <3 2 1 0> 
 | 
  
 | 
DSI PHY: 
 | 
Required properties: 
 | 
- compatible: Could be the following 
 | 
  * "qcom,dsi-phy-28nm-hpm" 
 | 
  * "qcom,dsi-phy-28nm-lp" 
 | 
  * "qcom,dsi-phy-20nm" 
 | 
  * "qcom,dsi-phy-28nm-8960" 
 | 
  * "qcom,dsi-phy-14nm" 
 | 
  * "qcom,dsi-phy-10nm" 
 | 
- reg: Physical base address and length of the registers of PLL, PHY. Some 
 | 
  revisions require the PHY regulator base address, whereas others require the 
 | 
  PHY lane base address. See below for each PHY revision. 
 | 
- reg-names: The names of register regions. The following regions are required: 
 | 
  For DSI 28nm HPM/LP/8960 PHYs and 20nm PHY: 
 | 
  * "dsi_pll" 
 | 
  * "dsi_phy" 
 | 
  * "dsi_phy_regulator" 
 | 
  For DSI 14nm and 10nm PHYs: 
 | 
  * "dsi_pll" 
 | 
  * "dsi_phy" 
 | 
  * "dsi_phy_lane" 
 | 
- clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating 
 | 
  2 clocks: A byte clock (index 0), and a pixel clock (index 1). 
 | 
- power-domains: Should be <&mmcc MDSS_GDSC>. 
 | 
- clocks: Phandles to device clocks. See [1] for details on clock bindings. 
 | 
- clock-names: the following clocks are required: 
 | 
  * "iface" 
 | 
  For 28nm HPM/LP, 28nm 8960 PHYs: 
 | 
- vddio-supply: phandle to vdd-io regulator device node 
 | 
  For 20nm PHY: 
 | 
- vddio-supply: phandle to vdd-io regulator device node 
 | 
- vcca-supply: phandle to vcca regulator device node 
 | 
  For 14nm PHY: 
 | 
- vcca-supply: phandle to vcca regulator device node 
 | 
  For 10nm PHY: 
 | 
- vdds-supply: phandle to vdds regulator device node 
 | 
  
 | 
Optional properties: 
 | 
- qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY 
 | 
  regulator is wanted. 
 | 
- qcom,mdss-mdp-transfer-time-us:    Specifies the dsi transfer time for command mode 
 | 
                    panels in microseconds. Driver uses this number to adjust 
 | 
                    the clock rate according to the expected transfer time. 
 | 
                    Increasing this value would slow down the mdp processing 
 | 
                    and can result in slower performance. 
 | 
                    Decreasing this value can speed up the mdp processing, 
 | 
                    but this can also impact power consumption. 
 | 
                    As a rule this time should not be higher than the time 
 | 
                    that would be expected with the processing at the 
 | 
                    dsi link rate since anyways this would be the maximum 
 | 
                    transfer time that could be achieved. 
 | 
                    If ping pong split is enabled, this time should not be higher 
 | 
                    than two times the dsi link rate time. 
 | 
                    If the property is not specified, then the default value is 14000 us. 
 | 
  
 | 
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt 
 | 
[2] Documentation/devicetree/bindings/graph.txt 
 | 
[3] Documentation/devicetree/bindings/media/video-interfaces.txt 
 | 
[4] Documentation/devicetree/bindings/display/panel/ 
 | 
  
 | 
Example: 
 | 
    dsi0: dsi@fd922800 { 
 | 
        compatible = "qcom,mdss-dsi-ctrl"; 
 | 
        qcom,dsi-host-index = <0>; 
 | 
        interrupt-parent = <&mdp>; 
 | 
        interrupts = <4 0>; 
 | 
        reg-names = "dsi_ctrl"; 
 | 
        reg = <0xfd922800 0x200>; 
 | 
        power-domains = <&mmcc MDSS_GDSC>; 
 | 
        clock-names = 
 | 
            "bus", 
 | 
            "byte", 
 | 
            "core", 
 | 
            "core_mmss", 
 | 
            "iface", 
 | 
            "mdp_core", 
 | 
            "pixel"; 
 | 
        clocks = 
 | 
            <&mmcc MDSS_AXI_CLK>, 
 | 
            <&mmcc MDSS_BYTE0_CLK>, 
 | 
            <&mmcc MDSS_ESC0_CLK>, 
 | 
            <&mmcc MMSS_MISC_AHB_CLK>, 
 | 
            <&mmcc MDSS_AHB_CLK>, 
 | 
            <&mmcc MDSS_MDP_CLK>, 
 | 
            <&mmcc MDSS_PCLK0_CLK>; 
 | 
  
 | 
        assigned-clocks = 
 | 
                 <&mmcc BYTE0_CLK_SRC>, 
 | 
                 <&mmcc PCLK0_CLK_SRC>; 
 | 
        assigned-clock-parents = 
 | 
                 <&dsi_phy0 0>, 
 | 
                 <&dsi_phy0 1>; 
 | 
  
 | 
        vdda-supply = <&pma8084_l2>; 
 | 
        vdd-supply = <&pma8084_l22>; 
 | 
        vddio-supply = <&pma8084_l12>; 
 | 
  
 | 
        phys = <&dsi_phy0>; 
 | 
        phy-names ="dsi-phy"; 
 | 
  
 | 
        qcom,dual-dsi-mode; 
 | 
        qcom,master-dsi; 
 | 
        qcom,sync-dual-dsi; 
 | 
  
 | 
        qcom,mdss-mdp-transfer-time-us = <12000>; 
 | 
  
 | 
        pinctrl-names = "default", "sleep"; 
 | 
        pinctrl-0 = <&dsi_active>; 
 | 
        pinctrl-1 = <&dsi_suspend>; 
 | 
  
 | 
        ports { 
 | 
            #address-cells = <1>; 
 | 
            #size-cells = <0>; 
 | 
  
 | 
            port@0 { 
 | 
                reg = <0>; 
 | 
                dsi0_in: endpoint { 
 | 
                    remote-endpoint = <&mdp_intf1_out>; 
 | 
                }; 
 | 
            }; 
 | 
  
 | 
            port@1 { 
 | 
                reg = <1>; 
 | 
                dsi0_out: endpoint { 
 | 
                    remote-endpoint = <&panel_in>; 
 | 
                    data-lanes = <0 1 2 3>; 
 | 
                }; 
 | 
            }; 
 | 
        }; 
 | 
  
 | 
        panel: panel@0 { 
 | 
            compatible = "sharp,lq101r1sx01"; 
 | 
            reg = <0>; 
 | 
            link2 = <&secondary>; 
 | 
  
 | 
            power-supply = <...>; 
 | 
            backlight = <...>; 
 | 
  
 | 
            port { 
 | 
                panel_in: endpoint { 
 | 
                    remote-endpoint = <&dsi0_out>; 
 | 
                }; 
 | 
            }; 
 | 
        }; 
 | 
    }; 
 | 
  
 | 
    dsi_phy0: dsi-phy@fd922a00 { 
 | 
        compatible = "qcom,dsi-phy-28nm-hpm"; 
 | 
        qcom,dsi-phy-index = <0>; 
 | 
        reg-names = 
 | 
            "dsi_pll", 
 | 
            "dsi_phy", 
 | 
            "dsi_phy_regulator"; 
 | 
        reg =   <0xfd922a00 0xd4>, 
 | 
            <0xfd922b00 0x2b0>, 
 | 
            <0xfd922d80 0x7b>; 
 | 
        clock-names = "iface"; 
 | 
        clocks = <&mmcc MDSS_AHB_CLK>; 
 | 
        #clock-cells = <1>; 
 | 
        vddio-supply = <&pma8084_l12>; 
 | 
  
 | 
        qcom,dsi-phy-regulator-ldo-mode; 
 | 
    }; 
 |