xref: /freebsd/sys/contrib/device-tree/Bindings/display/bridge/cdns,dsi.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotCadence DSI bridge
2*c66ec88fSEmmanuel Vadot==================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotThe Cadence DSI bridge is a DPI to DSI bridge supporting up to 4 DSI lanes.
5*c66ec88fSEmmanuel Vadot
6*c66ec88fSEmmanuel VadotRequired properties:
7*c66ec88fSEmmanuel Vadot- compatible: should be set to "cdns,dsi".
8*c66ec88fSEmmanuel Vadot- reg: physical base address and length of the controller's registers.
9*c66ec88fSEmmanuel Vadot- interrupts: interrupt line connected to the DSI bridge.
10*c66ec88fSEmmanuel Vadot- clocks: DSI bridge clocks.
11*c66ec88fSEmmanuel Vadot- clock-names: must contain "dsi_p_clk" and "dsi_sys_clk".
12*c66ec88fSEmmanuel Vadot- phys: phandle link to the MIPI D-PHY controller.
13*c66ec88fSEmmanuel Vadot- phy-names: must contain "dphy".
14*c66ec88fSEmmanuel Vadot- #address-cells: must be set to 1.
15*c66ec88fSEmmanuel Vadot- #size-cells: must be set to 0.
16*c66ec88fSEmmanuel Vadot
17*c66ec88fSEmmanuel VadotOptional properties:
18*c66ec88fSEmmanuel Vadot- resets: DSI reset lines.
19*c66ec88fSEmmanuel Vadot- reset-names: can contain "dsi_p_rst".
20*c66ec88fSEmmanuel Vadot
21*c66ec88fSEmmanuel VadotRequired subnodes:
22*c66ec88fSEmmanuel Vadot- ports: Ports as described in Documentation/devicetree/bindings/graph.txt.
23*c66ec88fSEmmanuel Vadot  2 ports are available:
24*c66ec88fSEmmanuel Vadot  * port 0: this port is only needed if some of your DSI devices are
25*c66ec88fSEmmanuel Vadot	    controlled through  an external bus like I2C or SPI. Can have at
26*c66ec88fSEmmanuel Vadot	    most 4 endpoints. The endpoint number is directly encoding the
27*c66ec88fSEmmanuel Vadot	    DSI virtual channel used by this device.
28*c66ec88fSEmmanuel Vadot  * port 1: represents the DPI input.
29*c66ec88fSEmmanuel Vadot  Other ports will be added later to support the new kind of inputs.
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel Vadot- one subnode per DSI device connected on the DSI bus. Each DSI device should
32*c66ec88fSEmmanuel Vadot  contain a reg property encoding its virtual channel.
33*c66ec88fSEmmanuel Vadot
34*c66ec88fSEmmanuel VadotExample:
35*c66ec88fSEmmanuel Vadot	dsi0: dsi@fd0c0000 {
36*c66ec88fSEmmanuel Vadot		compatible = "cdns,dsi";
37*c66ec88fSEmmanuel Vadot		reg = <0x0 0xfd0c0000 0x0 0x1000>;
38*c66ec88fSEmmanuel Vadot		clocks = <&pclk>, <&sysclk>;
39*c66ec88fSEmmanuel Vadot		clock-names = "dsi_p_clk", "dsi_sys_clk";
40*c66ec88fSEmmanuel Vadot		interrupts = <1>;
41*c66ec88fSEmmanuel Vadot		phys = <&dphy0>;
42*c66ec88fSEmmanuel Vadot		phy-names = "dphy";
43*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
44*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
45*c66ec88fSEmmanuel Vadot
46*c66ec88fSEmmanuel Vadot		ports {
47*c66ec88fSEmmanuel Vadot			#address-cells = <1>;
48*c66ec88fSEmmanuel Vadot			#size-cells = <0>;
49*c66ec88fSEmmanuel Vadot
50*c66ec88fSEmmanuel Vadot			port@1 {
51*c66ec88fSEmmanuel Vadot				reg = <1>;
52*c66ec88fSEmmanuel Vadot				dsi0_dpi_input: endpoint {
53*c66ec88fSEmmanuel Vadot					remote-endpoint = <&xxx_dpi_output>;
54*c66ec88fSEmmanuel Vadot				};
55*c66ec88fSEmmanuel Vadot			};
56*c66ec88fSEmmanuel Vadot		};
57*c66ec88fSEmmanuel Vadot
58*c66ec88fSEmmanuel Vadot		panel: dsi-dev@0 {
59*c66ec88fSEmmanuel Vadot			compatible = "<vendor,panel>";
60*c66ec88fSEmmanuel Vadot			reg = <0>;
61*c66ec88fSEmmanuel Vadot		};
62*c66ec88fSEmmanuel Vadot	};
63*c66ec88fSEmmanuel Vadot
64*c66ec88fSEmmanuel Vadotor
65*c66ec88fSEmmanuel Vadot
66*c66ec88fSEmmanuel Vadot	dsi0: dsi@fd0c0000 {
67*c66ec88fSEmmanuel Vadot		compatible = "cdns,dsi";
68*c66ec88fSEmmanuel Vadot		reg = <0x0 0xfd0c0000 0x0 0x1000>;
69*c66ec88fSEmmanuel Vadot		clocks = <&pclk>, <&sysclk>;
70*c66ec88fSEmmanuel Vadot		clock-names = "dsi_p_clk", "dsi_sys_clk";
71*c66ec88fSEmmanuel Vadot		interrupts = <1>;
72*c66ec88fSEmmanuel Vadot		phys = <&dphy1>;
73*c66ec88fSEmmanuel Vadot		phy-names = "dphy";
74*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
75*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
76*c66ec88fSEmmanuel Vadot
77*c66ec88fSEmmanuel Vadot		ports {
78*c66ec88fSEmmanuel Vadot			#address-cells = <1>;
79*c66ec88fSEmmanuel Vadot			#size-cells = <0>;
80*c66ec88fSEmmanuel Vadot
81*c66ec88fSEmmanuel Vadot			port@0 {
82*c66ec88fSEmmanuel Vadot				reg = <0>;
83*c66ec88fSEmmanuel Vadot				#address-cells = <1>;
84*c66ec88fSEmmanuel Vadot				#size-cells = <0>;
85*c66ec88fSEmmanuel Vadot
86*c66ec88fSEmmanuel Vadot				dsi0_output: endpoint@0 {
87*c66ec88fSEmmanuel Vadot					reg = <0>;
88*c66ec88fSEmmanuel Vadot					remote-endpoint = <&dsi_panel_input>;
89*c66ec88fSEmmanuel Vadot				};
90*c66ec88fSEmmanuel Vadot			};
91*c66ec88fSEmmanuel Vadot
92*c66ec88fSEmmanuel Vadot			port@1 {
93*c66ec88fSEmmanuel Vadot				reg = <1>;
94*c66ec88fSEmmanuel Vadot				dsi0_dpi_input: endpoint {
95*c66ec88fSEmmanuel Vadot					remote-endpoint = <&xxx_dpi_output>;
96*c66ec88fSEmmanuel Vadot				};
97*c66ec88fSEmmanuel Vadot			};
98*c66ec88fSEmmanuel Vadot		};
99*c66ec88fSEmmanuel Vadot	};
100*c66ec88fSEmmanuel Vadot
101*c66ec88fSEmmanuel Vadot	i2c@xxx {
102*c66ec88fSEmmanuel Vadot		panel: panel@59 {
103*c66ec88fSEmmanuel Vadot			compatible = "<vendor,panel>";
104*c66ec88fSEmmanuel Vadot			reg = <0x59>;
105*c66ec88fSEmmanuel Vadot
106*c66ec88fSEmmanuel Vadot			port {
107*c66ec88fSEmmanuel Vadot				dsi_panel_input: endpoint {
108*c66ec88fSEmmanuel Vadot					remote-endpoint = <&dsi0_output>;
109*c66ec88fSEmmanuel Vadot				};
110*c66ec88fSEmmanuel Vadot			};
111*c66ec88fSEmmanuel Vadot		};
112*c66ec88fSEmmanuel Vadot	};
113