1a9f22c03SSameer Pujar# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2a9f22c03SSameer Pujar%YAML 1.2
3a9f22c03SSameer Pujar---
4a9f22c03SSameer Pujar$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-graph-card.yaml#
5a9f22c03SSameer Pujar$schema: http://devicetree.org/meta-schemas/core.yaml#
6a9f22c03SSameer Pujar
7a9f22c03SSameer Pujartitle: Audio Graph based Tegra sound card driver
8a9f22c03SSameer Pujar
9a9f22c03SSameer Pujardescription: |
10a9f22c03SSameer Pujar  This is based on generic audio graph card driver along with additional
11a9f22c03SSameer Pujar  customizations for Tegra platforms. It uses the same bindings with
12a9f22c03SSameer Pujar  additional standard clock DT bindings required for Tegra.
13a9f22c03SSameer Pujar
14a9f22c03SSameer Pujarmaintainers:
15a9f22c03SSameer Pujar  - Jon Hunter <jonathanh@nvidia.com>
16a9f22c03SSameer Pujar  - Sameer Pujar <spujar@nvidia.com>
17a9f22c03SSameer Pujar
18a9f22c03SSameer PujarallOf:
19a9f22c03SSameer Pujar  - $ref: audio-graph.yaml#
20a9f22c03SSameer Pujar
21a9f22c03SSameer Pujarproperties:
22a9f22c03SSameer Pujar  compatible:
23a9f22c03SSameer Pujar    enum:
24a9f22c03SSameer Pujar      - nvidia,tegra210-audio-graph-card
25a9f22c03SSameer Pujar      - nvidia,tegra186-audio-graph-card
26a9f22c03SSameer Pujar
27a9f22c03SSameer Pujar  clocks:
28a9f22c03SSameer Pujar    minItems: 2
29a9f22c03SSameer Pujar
30a9f22c03SSameer Pujar  clock-names:
31a9f22c03SSameer Pujar    items:
32a9f22c03SSameer Pujar      - const: pll_a
33a9f22c03SSameer Pujar      - const: plla_out0
34a9f22c03SSameer Pujar
35a9f22c03SSameer Pujar  assigned-clocks:
36a9f22c03SSameer Pujar    minItems: 1
37a9f22c03SSameer Pujar    maxItems: 3
38a9f22c03SSameer Pujar
39a9f22c03SSameer Pujar  assigned-clock-parents:
40a9f22c03SSameer Pujar    minItems: 1
41a9f22c03SSameer Pujar    maxItems: 3
42a9f22c03SSameer Pujar
43a9f22c03SSameer Pujar  assigned-clock-rates:
44a9f22c03SSameer Pujar    minItems: 1
45a9f22c03SSameer Pujar    maxItems: 3
46a9f22c03SSameer Pujar
47*5f9155a7SThierry Reding  interconnects:
48*5f9155a7SThierry Reding    items:
49*5f9155a7SThierry Reding      - description: APE read memory client
50*5f9155a7SThierry Reding      - description: APE write memory client
51*5f9155a7SThierry Reding
52*5f9155a7SThierry Reding  interconnect-names:
53*5f9155a7SThierry Reding    items:
54*5f9155a7SThierry Reding      - const: dma-mem # read
55*5f9155a7SThierry Reding      - const: write
56*5f9155a7SThierry Reding
5770f0bc65SSameer Pujar  iommus:
5870f0bc65SSameer Pujar    maxItems: 1
5970f0bc65SSameer Pujar
60a9f22c03SSameer Pujarrequired:
61a9f22c03SSameer Pujar  - clocks
62a9f22c03SSameer Pujar  - clock-names
63a9f22c03SSameer Pujar  - assigned-clocks
64a9f22c03SSameer Pujar  - assigned-clock-parents
65a9f22c03SSameer Pujar
66a9f22c03SSameer PujarunevaluatedProperties: false
67a9f22c03SSameer Pujar
68a9f22c03SSameer Pujarexamples:
69a9f22c03SSameer Pujar  - |
70a9f22c03SSameer Pujar    #include<dt-bindings/clock/tegra210-car.h>
71a9f22c03SSameer Pujar
72a9f22c03SSameer Pujar    tegra_sound {
73a9f22c03SSameer Pujar        compatible = "nvidia,tegra210-audio-graph-card";
74a9f22c03SSameer Pujar
75a9f22c03SSameer Pujar        clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
76a9f22c03SSameer Pujar                 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
77a9f22c03SSameer Pujar        clock-names = "pll_a", "plla_out0";
78a9f22c03SSameer Pujar
79a9f22c03SSameer Pujar        assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
80a9f22c03SSameer Pujar                          <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
81a9f22c03SSameer Pujar                          <&tegra_car TEGRA210_CLK_EXTERN1>;
82a9f22c03SSameer Pujar        assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
83a9f22c03SSameer Pujar        assigned-clock-rates = <368640000>, <49152000>, <12288000>;
84a9f22c03SSameer Pujar
85a9f22c03SSameer Pujar        dais = /* FE */
86a9f22c03SSameer Pujar               <&admaif1_port>,
87a9f22c03SSameer Pujar               /* Router */
88a9f22c03SSameer Pujar               <&xbar_i2s1_port>,
89a9f22c03SSameer Pujar               /* I/O DAP Ports */
90a9f22c03SSameer Pujar               <&i2s1_port>;
91a9f22c03SSameer Pujar
92a9f22c03SSameer Pujar        label = "jetson-tx1-ape";
93a9f22c03SSameer Pujar    };
94a9f22c03SSameer Pujar
95a9f22c03SSameer Pujar    // The ports are defined for AHUB and its child devices.
96a9f22c03SSameer Pujar    ahub@702d0800 {
97a9f22c03SSameer Pujar        compatible = "nvidia,tegra210-ahub";
98a9f22c03SSameer Pujar        reg = <0x702d0800 0x800>;
99a9f22c03SSameer Pujar        clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
100a9f22c03SSameer Pujar        clock-names = "ahub";
101a9f22c03SSameer Pujar        assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
102a9f22c03SSameer Pujar        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
103a9f22c03SSameer Pujar        #address-cells = <1>;
104a9f22c03SSameer Pujar        #size-cells = <1>;
105a9f22c03SSameer Pujar        ranges = <0x702d0000 0x702d0000 0x0000e400>;
106a9f22c03SSameer Pujar
107a9f22c03SSameer Pujar        ports {
108a9f22c03SSameer Pujar            #address-cells = <1>;
109a9f22c03SSameer Pujar            #size-cells = <0>;
110a9f22c03SSameer Pujar
111a9f22c03SSameer Pujar            port@0 {
112a9f22c03SSameer Pujar                reg = <0x0>;
113a9f22c03SSameer Pujar                xbar_admaif1_ep: endpoint {
114a9f22c03SSameer Pujar                    remote-endpoint = <&admaif1_ep>;
115a9f22c03SSameer Pujar                };
116a9f22c03SSameer Pujar            };
117a9f22c03SSameer Pujar
118a9f22c03SSameer Pujar            // ...
119a9f22c03SSameer Pujar
120a9f22c03SSameer Pujar            xbar_i2s1_port: port@a {
121a9f22c03SSameer Pujar                reg = <0xa>;
122a9f22c03SSameer Pujar                xbar_i2s1_ep: endpoint {
123a9f22c03SSameer Pujar                    remote-endpoint = <&i2s1_cif_ep>;
124a9f22c03SSameer Pujar                };
125a9f22c03SSameer Pujar            };
126a9f22c03SSameer Pujar        };
127a9f22c03SSameer Pujar
128a9f22c03SSameer Pujar        admaif@702d0000 {
129a9f22c03SSameer Pujar            compatible = "nvidia,tegra210-admaif";
130a9f22c03SSameer Pujar            reg = <0x702d0000 0x800>;
131a9f22c03SSameer Pujar            dmas = <&adma 1>,  <&adma 1>,
132a9f22c03SSameer Pujar                   <&adma 2>,  <&adma 2>,
133a9f22c03SSameer Pujar                   <&adma 3>,  <&adma 3>,
134a9f22c03SSameer Pujar                   <&adma 4>,  <&adma 4>,
135a9f22c03SSameer Pujar                   <&adma 5>,  <&adma 5>,
136a9f22c03SSameer Pujar                   <&adma 6>,  <&adma 6>,
137a9f22c03SSameer Pujar                   <&adma 7>,  <&adma 7>,
138a9f22c03SSameer Pujar                   <&adma 8>,  <&adma 8>,
139a9f22c03SSameer Pujar                   <&adma 9>,  <&adma 9>,
140a9f22c03SSameer Pujar                   <&adma 10>, <&adma 10>;
141a9f22c03SSameer Pujar            dma-names = "rx1",  "tx1",
142a9f22c03SSameer Pujar                        "rx2",  "tx2",
143a9f22c03SSameer Pujar                        "rx3",  "tx3",
144a9f22c03SSameer Pujar                        "rx4",  "tx4",
145a9f22c03SSameer Pujar                        "rx5",  "tx5",
146a9f22c03SSameer Pujar                        "rx6",  "tx6",
147a9f22c03SSameer Pujar                        "rx7",  "tx7",
148a9f22c03SSameer Pujar                        "rx8",  "tx8",
149a9f22c03SSameer Pujar                        "rx9",  "tx9",
150a9f22c03SSameer Pujar                        "rx10", "tx10";
151a9f22c03SSameer Pujar
152a9f22c03SSameer Pujar            ports {
153a9f22c03SSameer Pujar                #address-cells = <1>;
154a9f22c03SSameer Pujar                #size-cells = <0>;
155a9f22c03SSameer Pujar
156a9f22c03SSameer Pujar                admaif1_port: port@0 {
157a9f22c03SSameer Pujar                    reg = <0x0>;
158a9f22c03SSameer Pujar                    admaif1_ep: endpoint {
159a9f22c03SSameer Pujar                        remote-endpoint = <&xbar_admaif1_ep>;
160a9f22c03SSameer Pujar                    };
161a9f22c03SSameer Pujar                };
162a9f22c03SSameer Pujar
163a9f22c03SSameer Pujar                // More ADMAIF ports to follow
164a9f22c03SSameer Pujar            };
165a9f22c03SSameer Pujar        };
166a9f22c03SSameer Pujar
167a9f22c03SSameer Pujar        i2s@702d1000 {
168a9f22c03SSameer Pujar            compatible = "nvidia,tegra210-i2s";
169a9f22c03SSameer Pujar            clocks = <&tegra_car TEGRA210_CLK_I2S0>;
170a9f22c03SSameer Pujar            clock-names = "i2s";
171a9f22c03SSameer Pujar            assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
172a9f22c03SSameer Pujar            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
173a9f22c03SSameer Pujar            assigned-clock-rates = <1536000>;
174a9f22c03SSameer Pujar            reg = <0x702d1000 0x100>;
175a9f22c03SSameer Pujar
176a9f22c03SSameer Pujar            ports {
177a9f22c03SSameer Pujar                #address-cells = <1>;
178a9f22c03SSameer Pujar                #size-cells = <0>;
179a9f22c03SSameer Pujar
180a9f22c03SSameer Pujar                port@0 {
181a9f22c03SSameer Pujar                    reg = <0x0>;
182a9f22c03SSameer Pujar
183a9f22c03SSameer Pujar                    i2s1_cif_ep: endpoint {
184a9f22c03SSameer Pujar                        remote-endpoint = <&xbar_i2s1_ep>;
185a9f22c03SSameer Pujar                    };
186a9f22c03SSameer Pujar                };
187a9f22c03SSameer Pujar
188a9f22c03SSameer Pujar                i2s1_port: port@1 {
189a9f22c03SSameer Pujar                    reg = <0x1>;
190a9f22c03SSameer Pujar
191a9f22c03SSameer Pujar                    i2s1_dap: endpoint {
192a9f22c03SSameer Pujar                        dai-format = "i2s";
193a9f22c03SSameer Pujar                    };
194a9f22c03SSameer Pujar                };
195a9f22c03SSameer Pujar            };
196a9f22c03SSameer Pujar        };
197a9f22c03SSameer Pujar    };
198a9f22c03SSameer Pujar
199a9f22c03SSameer Pujar...
200