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