xref: /freebsd/sys/contrib/device-tree/Bindings/display/msm/mdp4.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotQualcomm adreno/snapdragon MDP4 display controller
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotDescription:
4*c66ec88fSEmmanuel Vadot
5*c66ec88fSEmmanuel VadotThis is the bindings documentation for the MDP4 display controller found in
6*c66ec88fSEmmanuel VadotSoCs like MSM8960, APQ8064 and MSM8660.
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotRequired properties:
9*c66ec88fSEmmanuel Vadot- compatible:
10*c66ec88fSEmmanuel Vadot  * "qcom,mdp4" - mdp4
11*c66ec88fSEmmanuel Vadot- reg: Physical base address and length of the controller's registers.
12*c66ec88fSEmmanuel Vadot- interrupts: The interrupt signal from the display controller.
13*c66ec88fSEmmanuel Vadot- clocks: device clocks
14*c66ec88fSEmmanuel Vadot  See ../clocks/clock-bindings.txt for details.
15*c66ec88fSEmmanuel Vadot- clock-names: the following clocks are required.
16*c66ec88fSEmmanuel Vadot  * "core_clk"
17*c66ec88fSEmmanuel Vadot  * "iface_clk"
18*c66ec88fSEmmanuel Vadot  * "bus_clk"
19*c66ec88fSEmmanuel Vadot  * "lut_clk"
20*c66ec88fSEmmanuel Vadot  * "hdmi_clk"
21*c66ec88fSEmmanuel Vadot  * "tv_clk"
22*c66ec88fSEmmanuel Vadot- ports: contains the list of output ports from MDP. These connect to interfaces
23*c66ec88fSEmmanuel Vadot  that are external to the MDP hardware, such as HDMI, DSI, EDP etc (LVDS is a
24*c66ec88fSEmmanuel Vadot  special case since it is a part of the MDP block itself).
25*c66ec88fSEmmanuel Vadot
26*c66ec88fSEmmanuel Vadot  Each output port contains an endpoint that describes how it is connected to an
27*c66ec88fSEmmanuel Vadot  external interface. These are described by the standard properties documented
28*c66ec88fSEmmanuel Vadot  here:
29*c66ec88fSEmmanuel Vadot	Documentation/devicetree/bindings/graph.txt
30*c66ec88fSEmmanuel Vadot	Documentation/devicetree/bindings/media/video-interfaces.txt
31*c66ec88fSEmmanuel Vadot
32*c66ec88fSEmmanuel Vadot  The output port mappings are:
33*c66ec88fSEmmanuel Vadot	Port 0 -> LCDC/LVDS
34*c66ec88fSEmmanuel Vadot	Port 1 -> DSI1 Cmd/Video
35*c66ec88fSEmmanuel Vadot	Port 2 -> DSI2 Cmd/Video
36*c66ec88fSEmmanuel Vadot	Port 3 -> DTV
37*c66ec88fSEmmanuel Vadot
38*c66ec88fSEmmanuel VadotOptional properties:
39*c66ec88fSEmmanuel Vadot- clock-names: the following clocks are optional:
40*c66ec88fSEmmanuel Vadot  * "lut_clk"
41*c66ec88fSEmmanuel Vadot- qcom,lcdc-align-lsb: Boolean value indicating that LSB alignment should be
42*c66ec88fSEmmanuel Vadot  used for LCDC. This is only valid for 18bpp panels.
43*c66ec88fSEmmanuel Vadot
44*c66ec88fSEmmanuel VadotExample:
45*c66ec88fSEmmanuel Vadot
46*c66ec88fSEmmanuel Vadot/ {
47*c66ec88fSEmmanuel Vadot	...
48*c66ec88fSEmmanuel Vadot
49*c66ec88fSEmmanuel Vadot	hdmi: hdmi@4a00000 {
50*c66ec88fSEmmanuel Vadot		...
51*c66ec88fSEmmanuel Vadot		ports {
52*c66ec88fSEmmanuel Vadot			...
53*c66ec88fSEmmanuel Vadot			port@0 {
54*c66ec88fSEmmanuel Vadot				reg = <0>;
55*c66ec88fSEmmanuel Vadot				hdmi_in: endpoint {
56*c66ec88fSEmmanuel Vadot					remote-endpoint = <&mdp_dtv_out>;
57*c66ec88fSEmmanuel Vadot				};
58*c66ec88fSEmmanuel Vadot			};
59*c66ec88fSEmmanuel Vadot			...
60*c66ec88fSEmmanuel Vadot		};
61*c66ec88fSEmmanuel Vadot		...
62*c66ec88fSEmmanuel Vadot	};
63*c66ec88fSEmmanuel Vadot
64*c66ec88fSEmmanuel Vadot	...
65*c66ec88fSEmmanuel Vadot
66*c66ec88fSEmmanuel Vadot	mdp: mdp@5100000 {
67*c66ec88fSEmmanuel Vadot		compatible = "qcom,mdp4";
68*c66ec88fSEmmanuel Vadot		reg = <0x05100000 0xf0000>;
69*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 75 0>;
70*c66ec88fSEmmanuel Vadot		clock-names =
71*c66ec88fSEmmanuel Vadot		    "core_clk",
72*c66ec88fSEmmanuel Vadot		    "iface_clk",
73*c66ec88fSEmmanuel Vadot		    "lut_clk",
74*c66ec88fSEmmanuel Vadot		    "hdmi_clk",
75*c66ec88fSEmmanuel Vadot		    "tv_clk";
76*c66ec88fSEmmanuel Vadot		clocks =
77*c66ec88fSEmmanuel Vadot		    <&mmcc MDP_CLK>,
78*c66ec88fSEmmanuel Vadot		    <&mmcc MDP_AHB_CLK>,
79*c66ec88fSEmmanuel Vadot		    <&mmcc MDP_AXI_CLK>,
80*c66ec88fSEmmanuel Vadot		    <&mmcc MDP_LUT_CLK>,
81*c66ec88fSEmmanuel Vadot		    <&mmcc HDMI_TV_CLK>,
82*c66ec88fSEmmanuel Vadot		    <&mmcc MDP_TV_CLK>;
83*c66ec88fSEmmanuel Vadot
84*c66ec88fSEmmanuel Vadot		ports {
85*c66ec88fSEmmanuel Vadot			#address-cells = <1>;
86*c66ec88fSEmmanuel Vadot			#size-cells = <0>;
87*c66ec88fSEmmanuel Vadot
88*c66ec88fSEmmanuel Vadot				port@0 {
89*c66ec88fSEmmanuel Vadot					reg = <0>;
90*c66ec88fSEmmanuel Vadot					mdp_lvds_out: endpoint {
91*c66ec88fSEmmanuel Vadot					};
92*c66ec88fSEmmanuel Vadot				};
93*c66ec88fSEmmanuel Vadot
94*c66ec88fSEmmanuel Vadot				port@1 {
95*c66ec88fSEmmanuel Vadot					reg = <1>;
96*c66ec88fSEmmanuel Vadot					mdp_dsi1_out: endpoint {
97*c66ec88fSEmmanuel Vadot					};
98*c66ec88fSEmmanuel Vadot				};
99*c66ec88fSEmmanuel Vadot
100*c66ec88fSEmmanuel Vadot				port@2 {
101*c66ec88fSEmmanuel Vadot					reg = <2>;
102*c66ec88fSEmmanuel Vadot					mdp_dsi2_out: endpoint {
103*c66ec88fSEmmanuel Vadot					};
104*c66ec88fSEmmanuel Vadot				};
105*c66ec88fSEmmanuel Vadot
106*c66ec88fSEmmanuel Vadot				port@3 {
107*c66ec88fSEmmanuel Vadot					reg = <3>;
108*c66ec88fSEmmanuel Vadot					mdp_dtv_out: endpoint {
109*c66ec88fSEmmanuel Vadot						remote-endpoint = <&hdmi_in>;
110*c66ec88fSEmmanuel Vadot					};
111*c66ec88fSEmmanuel Vadot				};
112*c66ec88fSEmmanuel Vadot		};
113*c66ec88fSEmmanuel Vadot	};
114*c66ec88fSEmmanuel Vadot};
115