forked from Minki/linux
cbab579bf8
Add device tree bindings for OMAP Display Subsystem for the following SoCs: OMAP2, OMAP3, OMAP4. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Archit Taneja <archit@ti.com>
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/video/video-
|
|
ports.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>;
|
|
};
|
|
};
|
|
};
|