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>; 
 | 
        }; 
 | 
    }; 
 | 
}; 
 |