xref: /freebsd/sys/contrib/device-tree/Bindings/sound/nvidia,tegra210-ahub.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/sound/nvidia,tegra210-ahub.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
77ef62cebSEmmanuel Vadottitle: Tegra210 AHUB
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotdescription: |
10c66ec88fSEmmanuel Vadot  The Audio Hub (AHUB) comprises a collection of hardware accelerators
11c66ec88fSEmmanuel Vadot  for audio pre-processing, post-processing and a programmable full
12c66ec88fSEmmanuel Vadot  crossbar for routing audio data across these accelerators. It has
13c66ec88fSEmmanuel Vadot  external interfaces such as I2S, DMIC, DSPK. It interfaces with ADMA
14c66ec88fSEmmanuel Vadot  engine through ADMAIF.
15c66ec88fSEmmanuel Vadot
16c66ec88fSEmmanuel Vadotmaintainers:
17c66ec88fSEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
18c66ec88fSEmmanuel Vadot  - Sameer Pujar <spujar@nvidia.com>
19c66ec88fSEmmanuel Vadot
20c66ec88fSEmmanuel Vadotproperties:
21c66ec88fSEmmanuel Vadot  $nodename:
22c66ec88fSEmmanuel Vadot    pattern: "^ahub@[0-9a-f]*$"
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel Vadot  compatible:
25c66ec88fSEmmanuel Vadot    oneOf:
26c66ec88fSEmmanuel Vadot      - enum:
27c66ec88fSEmmanuel Vadot          - nvidia,tegra210-ahub
28c66ec88fSEmmanuel Vadot          - nvidia,tegra186-ahub
29c9ccf3a3SEmmanuel Vadot          - nvidia,tegra234-ahub
30c66ec88fSEmmanuel Vadot      - items:
31c66ec88fSEmmanuel Vadot          - const: nvidia,tegra194-ahub
32c66ec88fSEmmanuel Vadot          - const: nvidia,tegra186-ahub
33c66ec88fSEmmanuel Vadot
34c66ec88fSEmmanuel Vadot  reg:
35c66ec88fSEmmanuel Vadot    maxItems: 1
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot  clocks:
38c66ec88fSEmmanuel Vadot    maxItems: 1
39c66ec88fSEmmanuel Vadot
40c66ec88fSEmmanuel Vadot  clock-names:
41c66ec88fSEmmanuel Vadot    const: ahub
42c66ec88fSEmmanuel Vadot
43c66ec88fSEmmanuel Vadot  assigned-clocks:
44c66ec88fSEmmanuel Vadot    maxItems: 1
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot  assigned-clock-parents:
47c66ec88fSEmmanuel Vadot    maxItems: 1
48c66ec88fSEmmanuel Vadot
49c66ec88fSEmmanuel Vadot  assigned-clock-rates:
50c66ec88fSEmmanuel Vadot    maxItems: 1
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel Vadot  "#address-cells":
53*cb7aa33aSEmmanuel Vadot    enum: [ 1, 2 ]
54c66ec88fSEmmanuel Vadot
55c66ec88fSEmmanuel Vadot  "#size-cells":
56*cb7aa33aSEmmanuel Vadot    enum: [ 1, 2 ]
57c66ec88fSEmmanuel Vadot
58c66ec88fSEmmanuel Vadot  ranges: true
59c66ec88fSEmmanuel Vadot
605def4c47SEmmanuel Vadot  ports:
612eb4d8dcSEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/ports
625def4c47SEmmanuel Vadot    description: |
635def4c47SEmmanuel Vadot      Contains list of ACIF (Audio CIF) port nodes for AHUB (Audio Hub).
645def4c47SEmmanuel Vadot      These are connected to ACIF interfaces of AHUB clients. Thus the
655def4c47SEmmanuel Vadot      number of port nodes depend on the number of clients that AHUB may
665def4c47SEmmanuel Vadot      have depending on the SoC revision.
675def4c47SEmmanuel Vadot
682eb4d8dcSEmmanuel Vadot    patternProperties:
692eb4d8dcSEmmanuel Vadot      '^port@[0-9]':
702eb4d8dcSEmmanuel Vadot        $ref: audio-graph-port.yaml#
712eb4d8dcSEmmanuel Vadot        unevaluatedProperties: false
722eb4d8dcSEmmanuel Vadot
732eb4d8dcSEmmanuel VadotpatternProperties:
742eb4d8dcSEmmanuel Vadot  '^i2s@[0-9a-f]+$':
752eb4d8dcSEmmanuel Vadot    type: object
762eb4d8dcSEmmanuel Vadot
772eb4d8dcSEmmanuel Vadot  '^dmic@[0-9a-f]+$':
782eb4d8dcSEmmanuel Vadot    type: object
792eb4d8dcSEmmanuel Vadot    $ref: nvidia,tegra210-dmic.yaml#
802eb4d8dcSEmmanuel Vadot
812eb4d8dcSEmmanuel Vadot  '^admaif@[0-9a-f]+$':
822eb4d8dcSEmmanuel Vadot    type: object
832eb4d8dcSEmmanuel Vadot    $ref: nvidia,tegra210-admaif.yaml#
842eb4d8dcSEmmanuel Vadot
852eb4d8dcSEmmanuel Vadot  '^dspk@[0-9a-f]+$':
862eb4d8dcSEmmanuel Vadot    type: object
872eb4d8dcSEmmanuel Vadot    $ref: nvidia,tegra186-dspk.yaml#
882eb4d8dcSEmmanuel Vadot
898cc087a1SEmmanuel Vadot  '^mvc@[0-9a-f]+$':
908cc087a1SEmmanuel Vadot    type: object
918cc087a1SEmmanuel Vadot    $ref: nvidia,tegra210-mvc.yaml#
928cc087a1SEmmanuel Vadot
938cc087a1SEmmanuel Vadot  '^sfc@[0-9a-f]+$':
948cc087a1SEmmanuel Vadot    type: object
958cc087a1SEmmanuel Vadot    $ref: nvidia,tegra210-sfc.yaml#
968cc087a1SEmmanuel Vadot
978cc087a1SEmmanuel Vadot  '^amx@[0-9a-f]+$':
988cc087a1SEmmanuel Vadot    type: object
998cc087a1SEmmanuel Vadot    $ref: nvidia,tegra210-amx.yaml#
1008cc087a1SEmmanuel Vadot
1018cc087a1SEmmanuel Vadot  '^adx@[0-9a-f]+$':
1028cc087a1SEmmanuel Vadot    type: object
1038cc087a1SEmmanuel Vadot    $ref: nvidia,tegra210-adx.yaml#
1048cc087a1SEmmanuel Vadot
1058cc087a1SEmmanuel Vadot  '^amixer@[0-9a-f]+$':
1068cc087a1SEmmanuel Vadot    type: object
1078cc087a1SEmmanuel Vadot    $ref: nvidia,tegra210-mixer.yaml#
1088cc087a1SEmmanuel Vadot
109d5b0e70fSEmmanuel Vadot  '^asrc@[0-9a-f]+$':
110d5b0e70fSEmmanuel Vadot    type: object
111d5b0e70fSEmmanuel Vadot    $ref: nvidia,tegra186-asrc.yaml#
112d5b0e70fSEmmanuel Vadot
113b97ee269SEmmanuel Vadot  '^processing-engine@[0-9a-f]+$':
114b97ee269SEmmanuel Vadot    type: object
115b97ee269SEmmanuel Vadot    $ref: nvidia,tegra210-ope.yaml#
116b97ee269SEmmanuel Vadot
117c66ec88fSEmmanuel Vadotrequired:
118c66ec88fSEmmanuel Vadot  - compatible
119c66ec88fSEmmanuel Vadot  - reg
120c66ec88fSEmmanuel Vadot  - clocks
121c66ec88fSEmmanuel Vadot  - clock-names
122c66ec88fSEmmanuel Vadot  - assigned-clocks
123c66ec88fSEmmanuel Vadot  - assigned-clock-parents
124c66ec88fSEmmanuel Vadot  - "#address-cells"
125c66ec88fSEmmanuel Vadot  - "#size-cells"
126c66ec88fSEmmanuel Vadot  - ranges
127c66ec88fSEmmanuel Vadot
1282eb4d8dcSEmmanuel VadotadditionalProperties: false
1296be33864SEmmanuel Vadot
130c66ec88fSEmmanuel Vadotexamples:
131c66ec88fSEmmanuel Vadot  - |
132c66ec88fSEmmanuel Vadot    #include<dt-bindings/clock/tegra210-car.h>
133c66ec88fSEmmanuel Vadot
134c66ec88fSEmmanuel Vadot    ahub@702d0800 {
135c66ec88fSEmmanuel Vadot        compatible = "nvidia,tegra210-ahub";
136c66ec88fSEmmanuel Vadot        reg = <0x702d0800 0x800>;
137c66ec88fSEmmanuel Vadot        clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
138c66ec88fSEmmanuel Vadot        clock-names = "ahub";
139c66ec88fSEmmanuel Vadot        assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
140c66ec88fSEmmanuel Vadot        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
141c66ec88fSEmmanuel Vadot        #address-cells = <1>;
142c66ec88fSEmmanuel Vadot        #size-cells = <1>;
143c66ec88fSEmmanuel Vadot        ranges = <0x702d0000 0x702d0000 0x0000e400>;
144c66ec88fSEmmanuel Vadot
145c66ec88fSEmmanuel Vadot        // All AHUB child nodes below
146c66ec88fSEmmanuel Vadot        admaif@702d0000 {
147c66ec88fSEmmanuel Vadot            compatible = "nvidia,tegra210-admaif";
148c66ec88fSEmmanuel Vadot            reg = <0x702d0000 0x800>;
149c66ec88fSEmmanuel Vadot            dmas = <&adma 1>,  <&adma 1>,
150c66ec88fSEmmanuel Vadot               <&adma 2>,  <&adma 2>,
151c66ec88fSEmmanuel Vadot               <&adma 3>,  <&adma 3>,
152c66ec88fSEmmanuel Vadot               <&adma 4>,  <&adma 4>,
153c66ec88fSEmmanuel Vadot               <&adma 5>,  <&adma 5>,
154c66ec88fSEmmanuel Vadot               <&adma 6>,  <&adma 6>,
155c66ec88fSEmmanuel Vadot               <&adma 7>,  <&adma 7>,
156c66ec88fSEmmanuel Vadot               <&adma 8>,  <&adma 8>,
157c66ec88fSEmmanuel Vadot               <&adma 9>,  <&adma 9>,
158c66ec88fSEmmanuel Vadot               <&adma 10>, <&adma 10>;
159c66ec88fSEmmanuel Vadot            dma-names = "rx1",  "tx1",
160c66ec88fSEmmanuel Vadot                    "rx2",  "tx2",
161c66ec88fSEmmanuel Vadot                    "rx3",  "tx3",
162c66ec88fSEmmanuel Vadot                    "rx4",  "tx4",
163c66ec88fSEmmanuel Vadot                    "rx5",  "tx5",
164c66ec88fSEmmanuel Vadot                    "rx6",  "tx6",
165c66ec88fSEmmanuel Vadot                    "rx7",  "tx7",
166c66ec88fSEmmanuel Vadot                    "rx8",  "tx8",
167c66ec88fSEmmanuel Vadot                    "rx9",  "tx9",
168c66ec88fSEmmanuel Vadot                    "rx10", "tx10";
169c66ec88fSEmmanuel Vadot        };
170c66ec88fSEmmanuel Vadot
171c66ec88fSEmmanuel Vadot        i2s@702d1000 {
172c66ec88fSEmmanuel Vadot            compatible = "nvidia,tegra210-i2s";
173c66ec88fSEmmanuel Vadot            reg = <0x702d1000 0x100>;
174c66ec88fSEmmanuel Vadot            clocks = <&tegra_car TEGRA210_CLK_I2S0>;
175c66ec88fSEmmanuel Vadot            clock-names = "i2s";
176c66ec88fSEmmanuel Vadot            assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
177c66ec88fSEmmanuel Vadot            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
178c66ec88fSEmmanuel Vadot            assigned-clock-rates = <1536000>;
179c66ec88fSEmmanuel Vadot            sound-name-prefix = "I2S1";
180c66ec88fSEmmanuel Vadot        };
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadot        dmic@702d4000 {
183c66ec88fSEmmanuel Vadot            compatible = "nvidia,tegra210-dmic";
184c66ec88fSEmmanuel Vadot            reg = <0x702d4000 0x100>;
185c66ec88fSEmmanuel Vadot            clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
186c66ec88fSEmmanuel Vadot            clock-names = "dmic";
187c66ec88fSEmmanuel Vadot            assigned-clocks = <&tegra_car TEGRA210_CLK_DMIC1>;
188c66ec88fSEmmanuel Vadot            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
189c66ec88fSEmmanuel Vadot            assigned-clock-rates = <3072000>;
190c66ec88fSEmmanuel Vadot            sound-name-prefix = "DMIC1";
191c66ec88fSEmmanuel Vadot        };
192c66ec88fSEmmanuel Vadot
193c66ec88fSEmmanuel Vadot        // More child nodes to follow
194c66ec88fSEmmanuel Vadot    };
195c66ec88fSEmmanuel Vadot
196c66ec88fSEmmanuel Vadot...
197