Merge tag 'for-5.12/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device...
[linux-2.6-microblaze.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 allOf:
21   - $ref: audio-graph-port.yaml#
22
23 properties:
24   $nodename:
25     pattern: "^ahub@[0-9a-f]*$"
26
27   compatible:
28     oneOf:
29       - enum:
30           - nvidia,tegra210-ahub
31           - nvidia,tegra186-ahub
32       - items:
33           - const: nvidia,tegra194-ahub
34           - const: nvidia,tegra186-ahub
35
36   reg:
37     maxItems: 1
38
39   clocks:
40     maxItems: 1
41
42   clock-names:
43     const: ahub
44
45   assigned-clocks:
46     maxItems: 1
47
48   assigned-clock-parents:
49     maxItems: 1
50
51   assigned-clock-rates:
52     maxItems: 1
53
54   "#address-cells":
55     const: 1
56
57   "#size-cells":
58     const: 1
59
60   ranges: true
61
62   ports:
63     description: |
64       Contains list of ACIF (Audio CIF) port nodes for AHUB (Audio Hub).
65       These are connected to ACIF interfaces of AHUB clients. Thus the
66       number of port nodes depend on the number of clients that AHUB may
67       have depending on the SoC revision.
68
69 required:
70   - compatible
71   - reg
72   - clocks
73   - clock-names
74   - assigned-clocks
75   - assigned-clock-parents
76   - "#address-cells"
77   - "#size-cells"
78   - ranges
79
80 unevaluatedProperties: false
81
82 examples:
83   - |
84     #include<dt-bindings/clock/tegra210-car.h>
85
86     ahub@702d0800 {
87         compatible = "nvidia,tegra210-ahub";
88         reg = <0x702d0800 0x800>;
89         clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
90         clock-names = "ahub";
91         assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
92         assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
93         #address-cells = <1>;
94         #size-cells = <1>;
95         ranges = <0x702d0000 0x702d0000 0x0000e400>;
96
97         // All AHUB child nodes below
98         admaif@702d0000 {
99             compatible = "nvidia,tegra210-admaif";
100             reg = <0x702d0000 0x800>;
101             dmas = <&adma 1>,  <&adma 1>,
102                <&adma 2>,  <&adma 2>,
103                <&adma 3>,  <&adma 3>,
104                <&adma 4>,  <&adma 4>,
105                <&adma 5>,  <&adma 5>,
106                <&adma 6>,  <&adma 6>,
107                <&adma 7>,  <&adma 7>,
108                <&adma 8>,  <&adma 8>,
109                <&adma 9>,  <&adma 9>,
110                <&adma 10>, <&adma 10>;
111             dma-names = "rx1",  "tx1",
112                     "rx2",  "tx2",
113                     "rx3",  "tx3",
114                     "rx4",  "tx4",
115                     "rx5",  "tx5",
116                     "rx6",  "tx6",
117                     "rx7",  "tx7",
118                     "rx8",  "tx8",
119                     "rx9",  "tx9",
120                     "rx10", "tx10";
121         };
122
123         i2s@702d1000 {
124             compatible = "nvidia,tegra210-i2s";
125             reg = <0x702d1000 0x100>;
126             clocks = <&tegra_car TEGRA210_CLK_I2S0>;
127             clock-names = "i2s";
128             assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
129             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
130             assigned-clock-rates = <1536000>;
131             sound-name-prefix = "I2S1";
132         };
133
134         dmic@702d4000 {
135             compatible = "nvidia,tegra210-dmic";
136             reg = <0x702d4000 0x100>;
137             clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
138             clock-names = "dmic";
139             assigned-clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
140             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
141             assigned-clock-rates = <3072000>;
142             sound-name-prefix = "DMIC1";
143         };
144
145         // More child nodes to follow
146     };
147
148 ...