xref: /freebsd-src/sys/contrib/device-tree/Bindings/display/tegra/nvidia,tegra124-dpaux.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
1*b97ee269SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*b97ee269SEmmanuel Vadot%YAML 1.2
3*b97ee269SEmmanuel Vadot---
4*b97ee269SEmmanuel Vadot$id: http://devicetree.org/schemas/display/tegra/nvidia,tegra124-dpaux.yaml#
5*b97ee269SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b97ee269SEmmanuel Vadot
7*b97ee269SEmmanuel Vadottitle: NVIDIA Tegra DisplayPort AUX Interface
8*b97ee269SEmmanuel Vadot
9*b97ee269SEmmanuel Vadotmaintainers:
10*b97ee269SEmmanuel Vadot  - Thierry Reding <thierry.reding@gmail.com>
11*b97ee269SEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
12*b97ee269SEmmanuel Vadot
13*b97ee269SEmmanuel Vadotdescription: |
14*b97ee269SEmmanuel Vadot  The Tegra Display Port Auxiliary (DPAUX) pad controller manages two
15*b97ee269SEmmanuel Vadot  pins which can be assigned to either the DPAUX channel or to an I2C
16*b97ee269SEmmanuel Vadot  controller.
17*b97ee269SEmmanuel Vadot
18*b97ee269SEmmanuel Vadot  When configured for DisplayPort AUX operation, the DPAUX controller
19*b97ee269SEmmanuel Vadot  can also be used to communicate with a DisplayPort device using the
20*b97ee269SEmmanuel Vadot  AUX channel.
21*b97ee269SEmmanuel Vadot
22*b97ee269SEmmanuel Vadotproperties:
23*b97ee269SEmmanuel Vadot  $nodename:
24*b97ee269SEmmanuel Vadot    pattern: "^dpaux@[0-9a-f]+$"
25*b97ee269SEmmanuel Vadot
26*b97ee269SEmmanuel Vadot  compatible:
27*b97ee269SEmmanuel Vadot    oneOf:
28*b97ee269SEmmanuel Vadot      - enum:
29*b97ee269SEmmanuel Vadot          - nvidia,tegra124-dpaux
30*b97ee269SEmmanuel Vadot          - nvidia,tegra210-dpaux
31*b97ee269SEmmanuel Vadot          - nvidia,tegra186-dpaux
32*b97ee269SEmmanuel Vadot          - nvidia,tegra194-dpaux
33*b97ee269SEmmanuel Vadot
34*b97ee269SEmmanuel Vadot      - items:
35*b97ee269SEmmanuel Vadot          - const: nvidia,tegra132-dpaux
36*b97ee269SEmmanuel Vadot          - const: nvidia,tegra124-dpaux
37*b97ee269SEmmanuel Vadot
38*b97ee269SEmmanuel Vadot  reg:
39*b97ee269SEmmanuel Vadot    maxItems: 1
40*b97ee269SEmmanuel Vadot
41*b97ee269SEmmanuel Vadot  interrupts:
42*b97ee269SEmmanuel Vadot    maxItems: 1
43*b97ee269SEmmanuel Vadot
44*b97ee269SEmmanuel Vadot  clocks:
45*b97ee269SEmmanuel Vadot    items:
46*b97ee269SEmmanuel Vadot      - description: clock input for the DPAUX hardware
47*b97ee269SEmmanuel Vadot      - description: reference clock
48*b97ee269SEmmanuel Vadot
49*b97ee269SEmmanuel Vadot  clock-names:
50*b97ee269SEmmanuel Vadot    items:
51*b97ee269SEmmanuel Vadot      - const: dpaux
52*b97ee269SEmmanuel Vadot      - const: parent
53*b97ee269SEmmanuel Vadot
54*b97ee269SEmmanuel Vadot  resets:
55*b97ee269SEmmanuel Vadot    items:
56*b97ee269SEmmanuel Vadot      - description: module reset
57*b97ee269SEmmanuel Vadot
58*b97ee269SEmmanuel Vadot  reset-names:
59*b97ee269SEmmanuel Vadot    items:
60*b97ee269SEmmanuel Vadot      - const: dpaux
61*b97ee269SEmmanuel Vadot
62*b97ee269SEmmanuel Vadot  power-domains:
63*b97ee269SEmmanuel Vadot    maxItems: 1
64*b97ee269SEmmanuel Vadot
65*b97ee269SEmmanuel Vadot  i2c-bus:
66*b97ee269SEmmanuel Vadot    description: Subnode where I2C slave devices are listed. This
67*b97ee269SEmmanuel Vadot      subnode must be always present. If there are no I2C slave
68*b97ee269SEmmanuel Vadot      devices, an empty node should be added. See ../../i2c/i2c.yaml
69*b97ee269SEmmanuel Vadot      for more information.
70*b97ee269SEmmanuel Vadot    type: object
71*b97ee269SEmmanuel Vadot
72*b97ee269SEmmanuel Vadot  aux-bus:
73*b97ee269SEmmanuel Vadot    $ref: /schemas/display/dp-aux-bus.yaml#
74*b97ee269SEmmanuel Vadot
75*b97ee269SEmmanuel Vadot  vdd-supply:
76*b97ee269SEmmanuel Vadot    description: phandle of a supply that powers the DisplayPort
77*b97ee269SEmmanuel Vadot      link
78*b97ee269SEmmanuel Vadot
79*b97ee269SEmmanuel VadotpatternProperties:
80*b97ee269SEmmanuel Vadot  "^pinmux-[a-z0-9]+$":
81*b97ee269SEmmanuel Vadot    description:
82*b97ee269SEmmanuel Vadot      Since only three configurations are possible, only three child
83*b97ee269SEmmanuel Vadot      nodes are needed to describe the pin mux'ing options for the
84*b97ee269SEmmanuel Vadot      DPAUX pads. Furthermore, given that the pad functions are only
85*b97ee269SEmmanuel Vadot      applicable to a single set of pads, the child nodes only need
86*b97ee269SEmmanuel Vadot      to describe the pad group the functions are being applied to
87*b97ee269SEmmanuel Vadot      rather than the individual pads.
88*b97ee269SEmmanuel Vadot    type: object
89*b97ee269SEmmanuel Vadot    properties:
90*b97ee269SEmmanuel Vadot      groups:
91*b97ee269SEmmanuel Vadot        const: dpaux-io
92*b97ee269SEmmanuel Vadot
93*b97ee269SEmmanuel Vadot      function:
94*b97ee269SEmmanuel Vadot        enum:
95*b97ee269SEmmanuel Vadot          - aux
96*b97ee269SEmmanuel Vadot          - i2c
97*b97ee269SEmmanuel Vadot          - off
98*b97ee269SEmmanuel Vadot
99*b97ee269SEmmanuel Vadot    additionalProperties: false
100*b97ee269SEmmanuel Vadot
101*b97ee269SEmmanuel Vadot    required:
102*b97ee269SEmmanuel Vadot      - groups
103*b97ee269SEmmanuel Vadot      - function
104*b97ee269SEmmanuel Vadot
105*b97ee269SEmmanuel VadotadditionalProperties: false
106*b97ee269SEmmanuel Vadot
107*b97ee269SEmmanuel Vadotrequired:
108*b97ee269SEmmanuel Vadot  - compatible
109*b97ee269SEmmanuel Vadot  - reg
110*b97ee269SEmmanuel Vadot  - interrupts
111*b97ee269SEmmanuel Vadot  - clocks
112*b97ee269SEmmanuel Vadot  - clock-names
113*b97ee269SEmmanuel Vadot  - resets
114*b97ee269SEmmanuel Vadot  - reset-names
115*b97ee269SEmmanuel Vadot
116*b97ee269SEmmanuel Vadotexamples:
117*b97ee269SEmmanuel Vadot  - |
118*b97ee269SEmmanuel Vadot    #include <dt-bindings/clock/tegra210-car.h>
119*b97ee269SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
120*b97ee269SEmmanuel Vadot
121*b97ee269SEmmanuel Vadot    dpaux: dpaux@545c0000 {
122*b97ee269SEmmanuel Vadot        compatible = "nvidia,tegra210-dpaux";
123*b97ee269SEmmanuel Vadot        reg = <0x545c0000 0x00040000>;
124*b97ee269SEmmanuel Vadot        interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
125*b97ee269SEmmanuel Vadot        clocks = <&tegra_car TEGRA210_CLK_DPAUX>,
126*b97ee269SEmmanuel Vadot                 <&tegra_car TEGRA210_CLK_PLL_DP>;
127*b97ee269SEmmanuel Vadot        clock-names = "dpaux", "parent";
128*b97ee269SEmmanuel Vadot        resets = <&tegra_car 181>;
129*b97ee269SEmmanuel Vadot        reset-names = "dpaux";
130*b97ee269SEmmanuel Vadot        power-domains = <&pd_sor>;
131*b97ee269SEmmanuel Vadot
132*b97ee269SEmmanuel Vadot        state_dpaux_aux: pinmux-aux {
133*b97ee269SEmmanuel Vadot            groups = "dpaux-io";
134*b97ee269SEmmanuel Vadot            function = "aux";
135*b97ee269SEmmanuel Vadot        };
136*b97ee269SEmmanuel Vadot
137*b97ee269SEmmanuel Vadot        state_dpaux_i2c: pinmux-i2c {
138*b97ee269SEmmanuel Vadot            groups = "dpaux-io";
139*b97ee269SEmmanuel Vadot            function = "i2c";
140*b97ee269SEmmanuel Vadot        };
141*b97ee269SEmmanuel Vadot
142*b97ee269SEmmanuel Vadot        state_dpaux_off: pinmux-off {
143*b97ee269SEmmanuel Vadot            groups = "dpaux-io";
144*b97ee269SEmmanuel Vadot            function = "off";
145*b97ee269SEmmanuel Vadot        };
146*b97ee269SEmmanuel Vadot
147*b97ee269SEmmanuel Vadot        i2c-bus {
148*b97ee269SEmmanuel Vadot            #address-cells = <1>;
149*b97ee269SEmmanuel Vadot            #size-cells = <0>;
150*b97ee269SEmmanuel Vadot        };
151*b97ee269SEmmanuel Vadot    };
152