18c2ecf20Sopenharmony_ciQualcomm adreno/snapdragon MDP5 display controller 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciDescription: 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ciThis is the bindings documentation for the Mobile Display Subsytem(MDSS) that 68c2ecf20Sopenharmony_ciencapsulates sub-blocks like MDP5, DSI, HDMI, eDP etc, and the MDP5 display 78c2ecf20Sopenharmony_cicontroller found in SoCs like MSM8974, APQ8084, MSM8916, MSM8994 and MSM8996. 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciMDSS: 108c2ecf20Sopenharmony_ciRequired properties: 118c2ecf20Sopenharmony_ci- compatible: 128c2ecf20Sopenharmony_ci * "qcom,mdss" - MDSS 138c2ecf20Sopenharmony_ci- reg: Physical base address and length of the controller's registers. 148c2ecf20Sopenharmony_ci- reg-names: The names of register regions. The following regions are required: 158c2ecf20Sopenharmony_ci * "mdss_phys" 168c2ecf20Sopenharmony_ci * "vbif_phys" 178c2ecf20Sopenharmony_ci- interrupts: The interrupt signal from MDSS. 188c2ecf20Sopenharmony_ci- interrupt-controller: identifies the node as an interrupt controller. 198c2ecf20Sopenharmony_ci- #interrupt-cells: specifies the number of cells needed to encode an interrupt 208c2ecf20Sopenharmony_ci source, should be 1. 218c2ecf20Sopenharmony_ci- power-domains: a power domain consumer specifier according to 228c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/power/power_domain.txt 238c2ecf20Sopenharmony_ci- clocks: device clocks. See ../clocks/clock-bindings.txt for details. 248c2ecf20Sopenharmony_ci- clock-names: the following clocks are required. 258c2ecf20Sopenharmony_ci * "iface" 268c2ecf20Sopenharmony_ci * "bus" 278c2ecf20Sopenharmony_ci * "vsync" 288c2ecf20Sopenharmony_ci- #address-cells: number of address cells for the MDSS children. Should be 1. 298c2ecf20Sopenharmony_ci- #size-cells: Should be 1. 308c2ecf20Sopenharmony_ci- ranges: parent bus address space is the same as the child bus address space. 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciOptional properties: 338c2ecf20Sopenharmony_ci- clock-names: the following clocks are optional: 348c2ecf20Sopenharmony_ci * "lut" 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciMDP5: 378c2ecf20Sopenharmony_ciRequired properties: 388c2ecf20Sopenharmony_ci- compatible: 398c2ecf20Sopenharmony_ci * "qcom,mdp5" - MDP5 408c2ecf20Sopenharmony_ci- reg: Physical base address and length of the controller's registers. 418c2ecf20Sopenharmony_ci- reg-names: The names of register regions. The following regions are required: 428c2ecf20Sopenharmony_ci * "mdp_phys" 438c2ecf20Sopenharmony_ci- interrupts: Interrupt line from MDP5 to MDSS interrupt controller. 448c2ecf20Sopenharmony_ci- clocks: device clocks. See ../clocks/clock-bindings.txt for details. 458c2ecf20Sopenharmony_ci- clock-names: the following clocks are required. 468c2ecf20Sopenharmony_ci- * "bus" 478c2ecf20Sopenharmony_ci- * "iface" 488c2ecf20Sopenharmony_ci- * "core" 498c2ecf20Sopenharmony_ci- * "vsync" 508c2ecf20Sopenharmony_ci- ports: contains the list of output ports from MDP. These connect to interfaces 518c2ecf20Sopenharmony_ci that are external to the MDP hardware, such as HDMI, DSI, EDP etc (LVDS is a 528c2ecf20Sopenharmony_ci special case since it is a part of the MDP block itself). 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci Each output port contains an endpoint that describes how it is connected to an 558c2ecf20Sopenharmony_ci external interface. These are described by the standard properties documented 568c2ecf20Sopenharmony_ci here: 578c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/graph.txt 588c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/media/video-interfaces.txt 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci The availability of output ports can vary across SoC revisions: 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci For MSM8974 and APQ8084: 638c2ecf20Sopenharmony_ci Port 0 -> MDP_INTF0 (eDP) 648c2ecf20Sopenharmony_ci Port 1 -> MDP_INTF1 (DSI1) 658c2ecf20Sopenharmony_ci Port 2 -> MDP_INTF2 (DSI2) 668c2ecf20Sopenharmony_ci Port 3 -> MDP_INTF3 (HDMI) 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci For MSM8916: 698c2ecf20Sopenharmony_ci Port 0 -> MDP_INTF1 (DSI1) 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci For MSM8994 and MSM8996: 728c2ecf20Sopenharmony_ci Port 0 -> MDP_INTF1 (DSI1) 738c2ecf20Sopenharmony_ci Port 1 -> MDP_INTF2 (DSI2) 748c2ecf20Sopenharmony_ci Port 2 -> MDP_INTF3 (HDMI) 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ciOptional properties: 778c2ecf20Sopenharmony_ci- clock-names: the following clocks are optional: 788c2ecf20Sopenharmony_ci * "lut" 798c2ecf20Sopenharmony_ci * "tbu" 808c2ecf20Sopenharmony_ci * "tbu_rt" 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ciExample: 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci/ { 858c2ecf20Sopenharmony_ci ... 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci mdss: mdss@1a00000 { 888c2ecf20Sopenharmony_ci compatible = "qcom,mdss"; 898c2ecf20Sopenharmony_ci reg = <0x1a00000 0x1000>, 908c2ecf20Sopenharmony_ci <0x1ac8000 0x3000>; 918c2ecf20Sopenharmony_ci reg-names = "mdss_phys", "vbif_phys"; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci power-domains = <&gcc MDSS_GDSC>; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci clocks = <&gcc GCC_MDSS_AHB_CLK>, 968c2ecf20Sopenharmony_ci <&gcc GCC_MDSS_AXI_CLK>, 978c2ecf20Sopenharmony_ci <&gcc GCC_MDSS_VSYNC_CLK>; 988c2ecf20Sopenharmony_ci clock-names = "iface", 998c2ecf20Sopenharmony_ci "bus", 1008c2ecf20Sopenharmony_ci "vsync" 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci interrupts = <0 72 0>; 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci interrupt-controller; 1058c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci #address-cells = <1>; 1088c2ecf20Sopenharmony_ci #size-cells = <1>; 1098c2ecf20Sopenharmony_ci ranges; 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci mdp: mdp@1a01000 { 1128c2ecf20Sopenharmony_ci compatible = "qcom,mdp5"; 1138c2ecf20Sopenharmony_ci reg = <0x1a01000 0x90000>; 1148c2ecf20Sopenharmony_ci reg-names = "mdp_phys"; 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci interrupt-parent = <&mdss>; 1178c2ecf20Sopenharmony_ci interrupts = <0 0>; 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci clocks = <&gcc GCC_MDSS_AHB_CLK>, 1208c2ecf20Sopenharmony_ci <&gcc GCC_MDSS_AXI_CLK>, 1218c2ecf20Sopenharmony_ci <&gcc GCC_MDSS_MDP_CLK>, 1228c2ecf20Sopenharmony_ci <&gcc GCC_MDSS_VSYNC_CLK>; 1238c2ecf20Sopenharmony_ci clock-names = "iface", 1248c2ecf20Sopenharmony_ci "bus", 1258c2ecf20Sopenharmony_ci "core", 1268c2ecf20Sopenharmony_ci "vsync"; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci ports { 1298c2ecf20Sopenharmony_ci #address-cells = <1>; 1308c2ecf20Sopenharmony_ci #size-cells = <0>; 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci port@0 { 1338c2ecf20Sopenharmony_ci reg = <0>; 1348c2ecf20Sopenharmony_ci mdp5_intf1_out: endpoint { 1358c2ecf20Sopenharmony_ci remote-endpoint = <&dsi0_in>; 1368c2ecf20Sopenharmony_ci }; 1378c2ecf20Sopenharmony_ci }; 1388c2ecf20Sopenharmony_ci }; 1398c2ecf20Sopenharmony_ci }; 1408c2ecf20Sopenharmony_ci 1418c2ecf20Sopenharmony_ci dsi0: dsi@1a98000 { 1428c2ecf20Sopenharmony_ci ... 1438c2ecf20Sopenharmony_ci ports { 1448c2ecf20Sopenharmony_ci ... 1458c2ecf20Sopenharmony_ci port@0 { 1468c2ecf20Sopenharmony_ci reg = <0>; 1478c2ecf20Sopenharmony_ci dsi0_in: endpoint { 1488c2ecf20Sopenharmony_ci remote-endpoint = <&mdp5_intf1_out>; 1498c2ecf20Sopenharmony_ci }; 1508c2ecf20Sopenharmony_ci }; 1518c2ecf20Sopenharmony_ci ... 1528c2ecf20Sopenharmony_ci }; 1538c2ecf20Sopenharmony_ci ... 1548c2ecf20Sopenharmony_ci }; 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci dsi_phy0: dsi-phy@1a98300 { 1578c2ecf20Sopenharmony_ci ... 1588c2ecf20Sopenharmony_ci }; 1598c2ecf20Sopenharmony_ci }; 1608c2ecf20Sopenharmony_ci}; 161