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