161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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"
 | 
						|
  * "tbu"
 | 
						|
  * "tbu_rt"
 | 
						|
 | 
						|
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 {
 | 
						|
			...
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 |