1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/tegra/nvidia,tegra124-sor.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NVIDIA Tegra SOR Output Encoder
8
9maintainers:
10  - Thierry Reding <thierry.reding@gmail.com>
11  - Jon Hunter <jonathanh@nvidia.com>
12
13description: |
14  The Serial Output Resource (SOR) can be used to drive HDMI, LVDS, eDP
15  and DP outputs.
16
17properties:
18  $nodename:
19    pattern: "^sor@[0-9a-f]+$"
20
21  compatible:
22    oneOf:
23      - enum:
24          - nvidia,tegra124-sor
25          - nvidia,tegra210-sor
26          - nvidia,tegra210-sor1
27          - nvidia,tegra186-sor
28          - nvidia,tegra186-sor1
29          - nvidia,tegra194-sor
30
31      - items:
32          - const: nvidia,tegra132-sor
33          - const: nvidia,tegra124-sor
34
35  reg:
36    maxItems: 1
37
38  interrupts:
39    maxItems: 1
40
41  clocks:
42    minItems: 5
43    maxItems: 6
44
45  clock-names:
46    minItems: 5
47    maxItems: 6
48
49  resets:
50    items:
51      - description: module reset
52
53  reset-names:
54    items:
55      - const: sor
56
57  power-domains:
58    maxItems: 1
59
60  avdd-io-hdmi-dp-supply:
61    description: I/O supply for HDMI/DP
62
63  vdd-hdmi-dp-pll-supply:
64    description: PLL supply for HDMI/DP
65
66  hdmi-supply:
67    description: +5.0V HDMI connector supply, required for HDMI
68
69  # Tegra186 and later
70  nvidia,interface:
71    description: index of the SOR interface
72    $ref: /schemas/types.yaml#/definitions/uint32
73
74  nvidia,ddc-i2c-bus:
75    description: phandle of an I2C controller used for DDC EDID
76      probing
77    $ref: /schemas/types.yaml#/definitions/phandle
78
79  nvidia,hpd-gpio:
80    description: specifies a GPIO used for hotplug detection
81    maxItems: 1
82
83  nvidia,edid:
84    description: supplies a binary EDID blob
85    $ref: /schemas/types.yaml#/definitions/uint8-array
86
87  nvidia,panel:
88    description: phandle of a display panel, required for eDP
89    $ref: /schemas/types.yaml#/definitions/phandle
90
91  nvidia,xbar-cfg:
92    description: 5 cells containing the crossbar configuration.
93      Each lane of the SOR, identified by the cell's index, is
94      mapped via the crossbar to the pad specified by the cell's
95      value.
96    $ref: /schemas/types.yaml#/definitions/uint32-array
97
98  # optional when driving an eDP output
99  nvidia,dpaux:
100    description: phandle to a DisplayPort AUX interface
101    $ref: /schemas/types.yaml#/definitions/phandle
102
103allOf:
104  - if:
105      properties:
106        compatible:
107          contains:
108            enum:
109              - nvidia,tegra186-sor
110              - nvidia,tegra194-sor
111    then:
112      properties:
113        clocks:
114          items:
115            - description: clock input for the SOR hardware
116            - description: SOR output clock
117            - description: input for the pixel clock
118            - description: reference clock for the SOR clock
119            - description: safe reference clock for the SOR clock
120                during power up
121            - description: SOR pad output clock
122
123        clock-names:
124          items:
125            - const: sor
126            - enum:
127                - source # deprecated
128                - out
129            - const: parent
130            - const: dp
131            - const: safe
132            - const: pad
133    else:
134      properties:
135        clocks:
136          items:
137            - description: clock input for the SOR hardware
138            - description: SOR output clock
139            - description: input for the pixel clock
140            - description: reference clock for the SOR clock
141            - description: safe reference clock for the SOR clock
142                during power up
143
144        clock-names:
145          items:
146            - const: sor
147            - enum:
148                - source # deprecated
149                - out
150            - const: parent
151            - const: dp
152            - const: safe
153
154additionalProperties: false
155
156required:
157  - compatible
158  - reg
159  - interrupts
160  - clocks
161  - clock-names
162  - resets
163  - reset-names
164  - avdd-io-hdmi-dp-supply
165  - vdd-hdmi-dp-pll-supply
166
167examples:
168  - |
169    #include <dt-bindings/clock/tegra210-car.h>
170    #include <dt-bindings/gpio/tegra-gpio.h>
171    #include <dt-bindings/interrupt-controller/arm-gic.h>
172
173    sor0: sor@54540000 {
174        compatible = "nvidia,tegra210-sor";
175        reg = <0x54540000 0x00040000>;
176        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
177        clocks = <&tegra_car TEGRA210_CLK_SOR0>,
178                 <&tegra_car TEGRA210_CLK_SOR0_OUT>,
179                 <&tegra_car TEGRA210_CLK_PLL_D_OUT0>,
180                 <&tegra_car TEGRA210_CLK_PLL_DP>,
181                 <&tegra_car TEGRA210_CLK_SOR_SAFE>;
182        clock-names = "sor", "out", "parent", "dp", "safe";
183        resets = <&tegra_car 182>;
184        reset-names = "sor";
185        pinctrl-0 = <&state_dpaux_aux>;
186        pinctrl-1 = <&state_dpaux_i2c>;
187        pinctrl-2 = <&state_dpaux_off>;
188        pinctrl-names = "aux", "i2c", "off";
189        power-domains = <&pd_sor>;
190
191        avdd-io-hdmi-dp-supply = <&avdd_1v05>;
192        vdd-hdmi-dp-pll-supply = <&vdd_1v8>;
193        hdmi-supply = <&vdd_hdmi>;
194
195        nvidia,ddc-i2c-bus = <&hdmi_ddc>;
196        nvidia,hpd-gpio = <&gpio TEGRA_GPIO(CC, 1) GPIO_ACTIVE_LOW>;
197    };
198