]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'hdlcd/for-upstream/hdlcd'
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Feb 2016 01:21:32 +0000 (12:21 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Feb 2016 01:21:32 +0000 (12:21 +1100)
Documentation/devicetree/bindings/display/arm,hdlcd.txt [new file with mode: 0644]
arch/arm64/boot/dts/arm/juno-base.dtsi

diff --git a/Documentation/devicetree/bindings/display/arm,hdlcd.txt b/Documentation/devicetree/bindings/display/arm,hdlcd.txt
new file mode 100644 (file)
index 0000000..78bc242
--- /dev/null
@@ -0,0 +1,79 @@
+ARM HDLCD
+
+This is a display controller found on several development platforms produced
+by ARM Ltd and in more modern of its' Fast Models. The HDLCD is an RGB
+streamer that reads the data from a framebuffer and sends it to a single
+digital encoder (DVI or HDMI).
+
+Required properties:
+  - compatible: "arm,hdlcd"
+  - reg: Physical base address and length of the controller's registers.
+  - interrupts: One interrupt used by the display controller to notify the
+    interrupt controller when any of the interrupt sources programmed in
+    the interrupt mask register have activated.
+  - clocks: A list of phandle + clock-specifier pairs, one for each
+    entry in 'clock-names'.
+  - clock-names: A list of clock names. For HDLCD it should contain:
+      - "pxlclk" for the clock feeding the output PLL of the controller.
+
+Required sub-nodes:
+  - port: The HDLCD connection to an encoder chip. The connection is modeled
+    using the OF graph bindings specified in
+    Documentation/devicetree/bindings/graph.txt.
+
+Optional properties:
+  - memory-region: phandle to a node describing memory (see
+    Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt) to be
+    used for the framebuffer; if not present, the framebuffer may be located
+    anywhere in memory.
+
+
+Example:
+
+/ {
+       ...
+
+       hdlcd@2b000000 {
+               compatible = "arm,hdlcd";
+               reg = <0 0x2b000000 0 0x1000>;
+               interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&oscclk5>;
+               clock-names = "pxlclk";
+               port {
+                       hdlcd_output: endpoint@0 {
+                               remote-endpoint = <&hdmi_enc_input>;
+                       };
+               };
+       };
+
+       /* HDMI encoder on I2C bus */
+       i2c@7ffa0000 {
+               ....
+               hdmi-transmitter@70 {
+                       compatible = ".....";
+                       reg = <0x70>;
+                       port@0 {
+                               hdmi_enc_input: endpoint {
+                                       remote-endpoint = <&hdlcd_output>;
+                               };
+
+                               hdmi_enc_output: endpoint {
+                                       remote-endpoint = <&hdmi_1_port>;
+                               };
+                       };
+               };
+
+       };
+
+       hdmi1: connector@1 {
+               compatible = "hdmi-connector";
+               type = "a";
+               port {
+                       hdmi_1_port: endpoint {
+                               remote-endpoint = <&hdmi_enc_output>;
+                       };
+               };
+       };
+
+       ...
+};
index e5b59ca9debb1916764746bb168d969572e17771..7c83e3ac84c9ce650fb27d4f49d5c225778ab5b5 100644 (file)
@@ -92,8 +92,8 @@
                        scpi_clk: scpi_clocks@3 {
                                compatible = "arm,scpi-variable-clocks";
                                #clock-cells = <1>;
-                               clock-indices = <3>, <4>;
-                               clock-output-names = "pxlclk0", "pxlclk1";
+                               clock-indices = <3>;
+                               clock-output-names = "pxlclk";
                        };
                };
 
                clock-names = "apb_pclk";
        };
 
+       hdlcd@7ff50000 {
+               compatible = "arm,hdlcd";
+               reg = <0 0x7ff50000 0 0x1000>;
+               interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&scpi_clk 3>;
+               clock-names = "pxlclk";
+
+               port {
+                       hdlcd1_output: endpoint@0 {
+                               remote-endpoint = <&tda998x_1_input>;
+                       };
+               };
+       };
+
+       hdlcd@7ff60000 {
+               compatible = "arm,hdlcd";
+               reg = <0 0x7ff60000 0 0x1000>;
+               interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&scpi_clk 3>;
+               clock-names = "pxlclk";
+
+               port {
+                       hdlcd0_output: endpoint@0 {
+                               remote-endpoint = <&tda998x_0_input>;
+                       };
+               };
+       };
+
        soc_uart0: uart@7ff80000 {
                compatible = "arm,pl011", "arm,primecell";
                reg = <0x0 0x7ff80000 0x0 0x1000>;
                i2c-sda-hold-time-ns = <500>;
                clocks = <&soc_smc50mhz>;
 
-               dvi0: dvi-transmitter@70 {
+               hdmi-transmitter@70 {
                        compatible = "nxp,tda998x";
                        reg = <0x70>;
+                       port {
+                               tda998x_0_input: endpoint@0 {
+                                       remote-endpoint = <&hdlcd0_output>;
+                               };
+                       };
                };
 
-               dvi1: dvi-transmitter@71 {
+               hdmi-transmitter@71 {
                        compatible = "nxp,tda998x";
                        reg = <0x71>;
+                       port {
+                               tda998x_1_input: endpoint@0 {
+                                       remote-endpoint = <&hdlcd1_output>;
+                               };
+                       };
                };
        };