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