1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2# Copyright 2019 Texas Instruments Incorporated
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/display/ti/ti,am65x-dss.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: Texas Instruments AM65x Display Subsystem
9
10maintainers:
11  - Jyri Sarha <jsarha@ti.com>
12  - Tomi Valkeinen <tomi.valkeinen@ti.com>
13
14description: |
15  The AM625 and AM65x TI Keystone Display SubSystem with two output
16  ports and two video planes. In AM65x DSS, the first video port
17  supports 1 OLDI TX and in AM625 DSS, the first video port output is
18  internally routed to 2 OLDI TXes. The second video port supports DPI
19  format. The first plane is full video plane with all features and the
20  second is a "lite plane" without scaling support.
21
22properties:
23  compatible:
24    enum:
25      - ti,am625-dss
26      - ti,am62a7,dss
27      - ti,am65x-dss
28
29  reg:
30    description:
31      Addresses to each DSS memory region described in the SoC's TRM.
32    items:
33      - description: common DSS register area
34      - description: VIDL1 light video plane
35      - description: VID video plane
36      - description: OVR1 overlay manager for vp1
37      - description: OVR2 overlay manager for vp2
38      - description: VP1 video port 1
39      - description: VP2 video port 2
40      - description: common1 DSS register area
41
42  reg-names:
43    items:
44      - const: common
45      - const: vidl1
46      - const: vid
47      - const: ovr1
48      - const: ovr2
49      - const: vp1
50      - const: vp2
51      - const: common1
52
53  clocks:
54    items:
55      - description: fck DSS functional clock
56      - description: vp1 Video Port 1 pixel clock
57      - description: vp2 Video Port 2 pixel clock
58
59  clock-names:
60    items:
61      - const: fck
62      - const: vp1
63      - const: vp2
64
65  assigned-clocks:
66    minItems: 1
67    maxItems: 3
68
69  assigned-clock-parents:
70    minItems: 1
71    maxItems: 3
72
73  interrupts:
74    maxItems: 1
75
76  power-domains:
77    maxItems: 1
78    description: phandle to the associated power domain
79
80  dma-coherent:
81    type: boolean
82
83  ports:
84    $ref: /schemas/graph.yaml#/properties/ports
85
86    properties:
87      port@0:
88        $ref: /schemas/graph.yaml#/properties/port
89        description:
90          For AM65x DSS, the OLDI output port node from video port 1.
91          For AM625 DSS, the internal DPI output port node from video
92          port 1.
93          For AM62A7 DSS, the port is tied off inside the SoC.
94
95      port@1:
96        $ref: /schemas/graph.yaml#/properties/port
97        description:
98          The DSS DPI output port node from video port 2
99
100  ti,am65x-oldi-io-ctrl:
101    $ref: /schemas/types.yaml#/definitions/phandle
102    description:
103      phandle to syscon device node mapping OLDI IO_CTRL registers.
104      The mapped range should point to OLDI_DAT0_IO_CTRL, map it and
105      following OLDI_DAT1_IO_CTRL, OLDI_DAT2_IO_CTRL, OLDI_DAT3_IO_CTRL,
106      and OLDI_CLK_IO_CTRL registers. This property is needed for OLDI
107      interface to work.
108
109  max-memory-bandwidth:
110    $ref: /schemas/types.yaml#/definitions/uint32
111    description:
112      Input memory (from main memory to dispc) bandwidth limit in
113      bytes per second
114
115allOf:
116  - if:
117      properties:
118        compatible:
119          contains:
120            const: ti,am62a7-dss
121    then:
122      properties:
123        ports:
124          properties:
125            port@0: false
126
127required:
128  - compatible
129  - reg
130  - reg-names
131  - clocks
132  - clock-names
133  - interrupts
134  - ports
135
136additionalProperties: false
137
138examples:
139  - |
140    #include <dt-bindings/interrupt-controller/arm-gic.h>
141    #include <dt-bindings/interrupt-controller/irq.h>
142    #include <dt-bindings/soc/ti,sci_pm_domain.h>
143
144    dss: dss@4a00000 {
145            compatible = "ti,am65x-dss";
146            reg =   <0x04a00000 0x1000>, /* common */
147                    <0x04a02000 0x1000>, /* vidl1 */
148                    <0x04a06000 0x1000>, /* vid */
149                    <0x04a07000 0x1000>, /* ovr1 */
150                    <0x04a08000 0x1000>, /* ovr2 */
151                    <0x04a0a000 0x1000>, /* vp1 */
152                    <0x04a0b000 0x1000>, /* vp2 */
153                    <0x04a01000 0x1000>; /* common1 */
154            reg-names = "common", "vidl1", "vid",
155                    "ovr1", "ovr2", "vp1", "vp2", "common1";
156            ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>;
157            power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>;
158            clocks =        <&k3_clks 67 1>,
159                            <&k3_clks 216 1>,
160                            <&k3_clks 67 2>;
161            clock-names = "fck", "vp1", "vp2";
162            interrupts = <GIC_SPI 166 IRQ_TYPE_EDGE_RISING>;
163            ports {
164                    #address-cells = <1>;
165                    #size-cells = <0>;
166                    port@0 {
167                            reg = <0>;
168                            oldi_out0: endpoint {
169                                    remote-endpoint = <&lcd_in0>;
170                            };
171                    };
172            };
173    };
174