1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/nvidia,tegra210-i2s.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Tegra210 I2S Controller Device Tree Bindings
8
9description: |
10  The Inter-IC Sound (I2S) controller implements full-duplex,
11  bi-directional and single direction point-to-point serial
12  interfaces. It can interface with I2S compatible devices.
13  I2S controller can operate both in master and slave mode.
14
15maintainers:
16  - Jon Hunter <jonathanh@nvidia.com>
17  - Sameer Pujar <spujar@nvidia.com>
18
19properties:
20  $nodename:
21    pattern: "^i2s@[0-9a-f]*$"
22
23  compatible:
24    oneOf:
25      - const: nvidia,tegra210-i2s
26      - items:
27          - enum:
28              - nvidia,tegra194-i2s
29              - nvidia,tegra186-i2s
30          - const: nvidia,tegra210-i2s
31
32  reg:
33    maxItems: 1
34
35  clocks:
36    minItems: 1
37    maxItems: 2
38    items:
39      - description: I2S bit clock
40      - description:
41          Sync input clock, which can act as clock source to other I/O
42          modules in AHUB. The Tegra I2S driver sets this clock rate as
43          per bit clock rate. I/O module which wants to use this clock
44          as source, can mention this clock as parent in the DT bindings.
45          This is an optional clock entry, since it is only required when
46          some other I/O wants to reference from a particular I2Sx
47          instance.
48
49  clock-names:
50    minItems: 1
51    maxItems: 2
52    items:
53      - const: i2s
54      - const: sync_input
55
56  assigned-clocks:
57    minItems: 1
58    maxItems: 2
59
60  assigned-clock-parents:
61    minItems: 1
62    maxItems: 2
63
64  assigned-clock-rates:
65    minItems: 1
66    maxItems: 2
67
68  sound-name-prefix:
69    pattern: "^I2S[1-9]$"
70    $ref: /schemas/types.yaml#/definitions/string
71    description:
72      Used as prefix for sink/source names of the component. Must be a
73      unique string among multiple instances of the same component.
74      The name can be "I2S1" or "I2S2" ... "I2Sx", where x depends
75      on the maximum available instances on a Tegra SoC.
76
77  ports:
78    $ref: /schemas/graph.yaml#/properties/ports
79    properties:
80      port@0:
81        $ref: audio-graph-port.yaml#
82        unevaluatedProperties: false
83        description: |
84          I2S ACIF (Audio Client Interface) port connected to the
85          corresponding AHUB (Audio Hub) ACIF port.
86
87      port@1:
88        $ref: audio-graph-port.yaml#
89        unevaluatedProperties: false
90        description: |
91          I2S DAP (Digital Audio Port) interface which can be connected
92          to external audio codec for playback or capture.
93
94required:
95  - compatible
96  - reg
97  - clocks
98  - clock-names
99  - assigned-clocks
100  - assigned-clock-parents
101
102additionalProperties: false
103
104examples:
105  - |
106    #include<dt-bindings/clock/tegra210-car.h>
107
108    i2s@702d1000 {
109        compatible = "nvidia,tegra210-i2s";
110        reg = <0x702d1000 0x100>;
111        clocks = <&tegra_car TEGRA210_CLK_I2S0>;
112        clock-names = "i2s";
113        assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
114        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
115        assigned-clock-rates = <1536000>;
116        sound-name-prefix = "I2S1";
117    };
118
119...
120