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
19allOf:
20  - $ref: audio-graph-port.yaml#
21
22properties:
23  $nodename:
24    pattern: "^i2s@[0-9a-f]*$"
25
26  compatible:
27    oneOf:
28      - const: nvidia,tegra210-i2s
29      - items:
30          - enum:
31              - nvidia,tegra194-i2s
32              - nvidia,tegra186-i2s
33          - const: nvidia,tegra210-i2s
34
35  reg:
36    maxItems: 1
37
38  clocks:
39    minItems: 1
40    maxItems: 2
41    items:
42      - description: I2S bit clock
43      - description:
44          Sync input clock, which can act as clock source to other I/O
45          modules in AHUB. The Tegra I2S driver sets this clock rate as
46          per bit clock rate. I/O module which wants to use this clock
47          as source, can mention this clock as parent in the DT bindings.
48          This is an optional clock entry, since it is only required when
49          some other I/O wants to reference from a particular I2Sx
50          instance.
51
52  clock-names:
53    minItems: 1
54    maxItems: 2
55    items:
56      - const: i2s
57      - const: sync_input
58
59  assigned-clocks:
60    minItems: 1
61    maxItems: 2
62
63  assigned-clock-parents:
64    minItems: 1
65    maxItems: 2
66
67  assigned-clock-rates:
68    minItems: 1
69    maxItems: 2
70
71  sound-name-prefix:
72    pattern: "^I2S[1-9]$"
73    $ref: /schemas/types.yaml#/definitions/string
74    description:
75      Used as prefix for sink/source names of the component. Must be a
76      unique string among multiple instances of the same component.
77      The name can be "I2S1" or "I2S2" ... "I2Sx", where x depends
78      on the maximum available instances on a Tegra SoC.
79
80  ports:
81    type: object
82    properties:
83      port@0:
84        description: |
85          I2S ACIF (Audio Client Interface) port connected to the
86          corresponding AHUB (Audio Hub) ACIF port.
87
88      port@1:
89        description: |
90          I2S DAP (Digital Audio Port) interface which can be connected
91          to external audio codec for playback or capture.
92
93required:
94  - compatible
95  - reg
96  - clocks
97  - clock-names
98  - assigned-clocks
99  - assigned-clock-parents
100
101unevaluatedProperties: false
102
103examples:
104  - |
105    #include<dt-bindings/clock/tegra210-car.h>
106
107    i2s@702d1000 {
108        compatible = "nvidia,tegra210-i2s";
109        reg = <0x702d1000 0x100>;
110        clocks = <&tegra_car TEGRA210_CLK_I2S0>;
111        clock-names = "i2s";
112        assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
113        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
114        assigned-clock-rates = <1536000>;
115        sound-name-prefix = "I2S1";
116    };
117
118...
119