GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / sound / nvidia,tegra210-ahub.yaml
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-ahub.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Tegra210 AHUB Device Tree Bindings
8
9 description: |
10   The Audio Hub (AHUB) comprises a collection of hardware accelerators
11   for audio pre-processing, post-processing and a programmable full
12   crossbar for routing audio data across these accelerators. It has
13   external interfaces such as I2S, DMIC, DSPK. It interfaces with ADMA
14   engine through ADMAIF.
15
16 maintainers:
17   - Jon Hunter <jonathanh@nvidia.com>
18   - Sameer Pujar <spujar@nvidia.com>
19
20 properties:
21   $nodename:
22     pattern: "^ahub@[0-9a-f]*$"
23
24   compatible:
25     oneOf:
26       - enum:
27           - nvidia,tegra210-ahub
28           - nvidia,tegra186-ahub
29           - nvidia,tegra234-ahub
30       - items:
31           - const: nvidia,tegra194-ahub
32           - const: nvidia,tegra186-ahub
33
34   reg:
35     maxItems: 1
36
37   clocks:
38     maxItems: 1
39
40   clock-names:
41     const: ahub
42
43   assigned-clocks:
44     maxItems: 1
45
46   assigned-clock-parents:
47     maxItems: 1
48
49   assigned-clock-rates:
50     maxItems: 1
51
52   "#address-cells":
53     const: 1
54
55   "#size-cells":
56     const: 1
57
58   ranges: true
59
60   ports:
61     $ref: /schemas/graph.yaml#/properties/ports
62     description: |
63       Contains list of ACIF (Audio CIF) port nodes for AHUB (Audio Hub).
64       These are connected to ACIF interfaces of AHUB clients. Thus the
65       number of port nodes depend on the number of clients that AHUB may
66       have depending on the SoC revision.
67
68     patternProperties:
69       '^port@[0-9]':
70         $ref: audio-graph-port.yaml#
71         unevaluatedProperties: false
72
73 patternProperties:
74   '^i2s@[0-9a-f]+$':
75     type: object
76
77   '^dmic@[0-9a-f]+$':
78     type: object
79     $ref: nvidia,tegra210-dmic.yaml#
80
81   '^admaif@[0-9a-f]+$':
82     type: object
83     $ref: nvidia,tegra210-admaif.yaml#
84
85   '^dspk@[0-9a-f]+$':
86     type: object
87     $ref: nvidia,tegra186-dspk.yaml#
88
89   '^mvc@[0-9a-f]+$':
90     type: object
91     $ref: nvidia,tegra210-mvc.yaml#
92
93   '^sfc@[0-9a-f]+$':
94     type: object
95     $ref: nvidia,tegra210-sfc.yaml#
96
97   '^amx@[0-9a-f]+$':
98     type: object
99     $ref: nvidia,tegra210-amx.yaml#
100
101   '^adx@[0-9a-f]+$':
102     type: object
103     $ref: nvidia,tegra210-adx.yaml#
104
105   '^amixer@[0-9a-f]+$':
106     type: object
107     $ref: nvidia,tegra210-mixer.yaml#
108
109   '^asrc@[0-9a-f]+$':
110     type: object
111     $ref: nvidia,tegra186-asrc.yaml#
112
113 required:
114   - compatible
115   - reg
116   - clocks
117   - clock-names
118   - assigned-clocks
119   - assigned-clock-parents
120   - "#address-cells"
121   - "#size-cells"
122   - ranges
123
124 additionalProperties: false
125
126 examples:
127   - |
128     #include<dt-bindings/clock/tegra210-car.h>
129
130     ahub@702d0800 {
131         compatible = "nvidia,tegra210-ahub";
132         reg = <0x702d0800 0x800>;
133         clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
134         clock-names = "ahub";
135         assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
136         assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
137         #address-cells = <1>;
138         #size-cells = <1>;
139         ranges = <0x702d0000 0x702d0000 0x0000e400>;
140
141         // All AHUB child nodes below
142         admaif@702d0000 {
143             compatible = "nvidia,tegra210-admaif";
144             reg = <0x702d0000 0x800>;
145             dmas = <&adma 1>,  <&adma 1>,
146                <&adma 2>,  <&adma 2>,
147                <&adma 3>,  <&adma 3>,
148                <&adma 4>,  <&adma 4>,
149                <&adma 5>,  <&adma 5>,
150                <&adma 6>,  <&adma 6>,
151                <&adma 7>,  <&adma 7>,
152                <&adma 8>,  <&adma 8>,
153                <&adma 9>,  <&adma 9>,
154                <&adma 10>, <&adma 10>;
155             dma-names = "rx1",  "tx1",
156                     "rx2",  "tx2",
157                     "rx3",  "tx3",
158                     "rx4",  "tx4",
159                     "rx5",  "tx5",
160                     "rx6",  "tx6",
161                     "rx7",  "tx7",
162                     "rx8",  "tx8",
163                     "rx9",  "tx9",
164                     "rx10", "tx10";
165         };
166
167         i2s@702d1000 {
168             compatible = "nvidia,tegra210-i2s";
169             reg = <0x702d1000 0x100>;
170             clocks = <&tegra_car TEGRA210_CLK_I2S0>;
171             clock-names = "i2s";
172             assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
173             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
174             assigned-clock-rates = <1536000>;
175             sound-name-prefix = "I2S1";
176         };
177
178         dmic@702d4000 {
179             compatible = "nvidia,tegra210-dmic";
180             reg = <0x702d4000 0x100>;
181             clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
182             clock-names = "dmic";
183             assigned-clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
184             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
185             assigned-clock-rates = <3072000>;
186             sound-name-prefix = "DMIC1";
187         };
188
189         // More child nodes to follow
190     };
191
192 ...