212 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Texas Instruments OMAP Display Subsystem
 | 
						|
========================================
 | 
						|
 | 
						|
Generic Description
 | 
						|
-------------------
 | 
						|
 | 
						|
This document is a generic description of the OMAP Display Subsystem bindings.
 | 
						|
Binding details for each OMAP SoC version are described in respective binding
 | 
						|
documentation.
 | 
						|
 | 
						|
The OMAP Display Subsystem (DSS) hardware consists of DSS Core, DISPC module and
 | 
						|
a number of encoder modules. All DSS versions contain DSS Core and DISPC, but
 | 
						|
the encoder modules vary.
 | 
						|
 | 
						|
The DSS Core is the parent of the other DSS modules, and manages clock routing,
 | 
						|
integration to the SoC, etc.
 | 
						|
 | 
						|
DISPC is the display controller, which reads pixels from the memory and outputs
 | 
						|
a RGB pixel stream to encoders.
 | 
						|
 | 
						|
The encoder modules encode the received RGB pixel stream to a video output like
 | 
						|
HDMI, MIPI DPI, etc.
 | 
						|
 | 
						|
Video Ports
 | 
						|
-----------
 | 
						|
 | 
						|
The DSS Core and the encoders have video port outputs. The structure of the
 | 
						|
video ports is described in Documentation/devicetree/bindings/graph.txt,
 | 
						|
and the properties for the ports and endpoints for each encoder are
 | 
						|
described in the SoC's DSS binding documentation.
 | 
						|
 | 
						|
The video ports are used to describe the connections to external hardware, like
 | 
						|
panels or external encoders.
 | 
						|
 | 
						|
Aliases
 | 
						|
-------
 | 
						|
 | 
						|
The board dts file may define aliases for displays to assign "displayX" style
 | 
						|
name for each display. If no aliases are defined, a semi-random number is used
 | 
						|
for the display.
 | 
						|
 | 
						|
Example
 | 
						|
-------
 | 
						|
 | 
						|
A shortened example of the DSS description for OMAP4, with non-relevant parts
 | 
						|
removed, defined in omap4.dtsi:
 | 
						|
 | 
						|
dss: dss@58000000 {
 | 
						|
	compatible = "ti,omap4-dss";
 | 
						|
	reg = <0x58000000 0x80>;
 | 
						|
	status = "disabled";
 | 
						|
	ti,hwmods = "dss_core";
 | 
						|
	clocks = <&dss_dss_clk>;
 | 
						|
	clock-names = "fck";
 | 
						|
	#address-cells = <1>;
 | 
						|
	#size-cells = <1>;
 | 
						|
	ranges;
 | 
						|
 | 
						|
	dispc@58001000 {
 | 
						|
		compatible = "ti,omap4-dispc";
 | 
						|
		reg = <0x58001000 0x1000>;
 | 
						|
		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
		ti,hwmods = "dss_dispc";
 | 
						|
		clocks = <&dss_dss_clk>;
 | 
						|
		clock-names = "fck";
 | 
						|
	};
 | 
						|
 | 
						|
	hdmi: encoder@58006000 {
 | 
						|
		compatible = "ti,omap4-hdmi";
 | 
						|
		reg = <0x58006000 0x200>,
 | 
						|
		      <0x58006200 0x100>,
 | 
						|
		      <0x58006300 0x100>,
 | 
						|
		      <0x58006400 0x1000>;
 | 
						|
		reg-names = "wp", "pll", "phy", "core";
 | 
						|
		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
		status = "disabled";
 | 
						|
		ti,hwmods = "dss_hdmi";
 | 
						|
		clocks = <&dss_48mhz_clk>, <&dss_sys_clk>;
 | 
						|
		clock-names = "fck", "sys_clk";
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
A shortened example of the board description for OMAP4 Panda board, defined in
 | 
						|
omap4-panda.dts.
 | 
						|
 | 
						|
The Panda board has a DVI and a HDMI connector, and the board contains a TFP410
 | 
						|
chip (MIPI DPI to DVI encoder) and a TPD12S015 chip (HDMI ESD protection & level
 | 
						|
shifter). The video pipelines for the connectors are formed as follows:
 | 
						|
 | 
						|
DSS Core --(MIPI DPI)--> TFP410 --(DVI)--> DVI Connector
 | 
						|
OMAP HDMI --(HDMI)--> TPD12S015 --(HDMI)--> HDMI Connector
 | 
						|
 | 
						|
/ {
 | 
						|
	aliases {
 | 
						|
		display0 = &dvi0;
 | 
						|
		display1 = &hdmi0;
 | 
						|
	};
 | 
						|
 | 
						|
	tfp410: encoder@0 {
 | 
						|
		compatible = "ti,tfp410";
 | 
						|
		gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;	/* 0, power-down */
 | 
						|
 | 
						|
		pinctrl-names = "default";
 | 
						|
		pinctrl-0 = <&tfp410_pins>;
 | 
						|
 | 
						|
		ports {
 | 
						|
			#address-cells = <1>;
 | 
						|
			#size-cells = <0>;
 | 
						|
 | 
						|
			port@0 {
 | 
						|
				reg = <0>;
 | 
						|
 | 
						|
				tfp410_in: endpoint@0 {
 | 
						|
					remote-endpoint = <&dpi_out>;
 | 
						|
				};
 | 
						|
			};
 | 
						|
 | 
						|
			port@1 {
 | 
						|
				reg = <1>;
 | 
						|
 | 
						|
				tfp410_out: endpoint@0 {
 | 
						|
					remote-endpoint = <&dvi_connector_in>;
 | 
						|
				};
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	dvi0: connector@0 {
 | 
						|
		compatible = "dvi-connector";
 | 
						|
		label = "dvi";
 | 
						|
 | 
						|
		i2c-bus = <&i2c3>;
 | 
						|
 | 
						|
		port {
 | 
						|
			dvi_connector_in: endpoint {
 | 
						|
				remote-endpoint = <&tfp410_out>;
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	tpd12s015: encoder@1 {
 | 
						|
		compatible = "ti,tpd12s015";
 | 
						|
 | 
						|
		pinctrl-names = "default";
 | 
						|
		pinctrl-0 = <&tpd12s015_pins>;
 | 
						|
 | 
						|
		gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,	/* 60, CT CP HPD */
 | 
						|
			<&gpio2 9 GPIO_ACTIVE_HIGH>,	/* 41, LS OE */
 | 
						|
			<&gpio2 31 GPIO_ACTIVE_HIGH>;	/* 63, HPD */
 | 
						|
 | 
						|
		ports {
 | 
						|
			#address-cells = <1>;
 | 
						|
			#size-cells = <0>;
 | 
						|
 | 
						|
			port@0 {
 | 
						|
				reg = <0>;
 | 
						|
 | 
						|
				tpd12s015_in: endpoint@0 {
 | 
						|
					remote-endpoint = <&hdmi_out>;
 | 
						|
				};
 | 
						|
			};
 | 
						|
 | 
						|
			port@1 {
 | 
						|
				reg = <1>;
 | 
						|
 | 
						|
				tpd12s015_out: endpoint@0 {
 | 
						|
					remote-endpoint = <&hdmi_connector_in>;
 | 
						|
				};
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	hdmi0: connector@1 {
 | 
						|
		compatible = "hdmi-connector";
 | 
						|
		label = "hdmi";
 | 
						|
 | 
						|
		port {
 | 
						|
			hdmi_connector_in: endpoint {
 | 
						|
				remote-endpoint = <&tpd12s015_out>;
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&dss {
 | 
						|
	status = "ok";
 | 
						|
 | 
						|
	pinctrl-names = "default";
 | 
						|
	pinctrl-0 = <&dss_dpi_pins>;
 | 
						|
 | 
						|
	port {
 | 
						|
		dpi_out: endpoint {
 | 
						|
			remote-endpoint = <&tfp410_in>;
 | 
						|
			data-lines = <24>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
&hdmi {
 | 
						|
	status = "ok";
 | 
						|
	vdda-supply = <&vdac>;
 | 
						|
 | 
						|
	pinctrl-names = "default";
 | 
						|
	pinctrl-0 = <&dss_hdmi_pins>;
 | 
						|
 | 
						|
	port {
 | 
						|
		hdmi_out: endpoint {
 | 
						|
			remote-endpoint = <&tpd12s015_in>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 |