162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-graph-card.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Audio Graph based Tegra sound card driver
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription: |
1062306a36Sopenharmony_ci  This is based on generic audio graph card driver along with additional
1162306a36Sopenharmony_ci  customizations for Tegra platforms. It uses the same bindings with
1262306a36Sopenharmony_ci  additional standard clock DT bindings required for Tegra.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cimaintainers:
1562306a36Sopenharmony_ci  - Jon Hunter <jonathanh@nvidia.com>
1662306a36Sopenharmony_ci  - Sameer Pujar <spujar@nvidia.com>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciallOf:
1962306a36Sopenharmony_ci  - $ref: audio-graph.yaml#
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciproperties:
2262306a36Sopenharmony_ci  compatible:
2362306a36Sopenharmony_ci    enum:
2462306a36Sopenharmony_ci      - nvidia,tegra210-audio-graph-card
2562306a36Sopenharmony_ci      - nvidia,tegra186-audio-graph-card
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  clocks:
2862306a36Sopenharmony_ci    minItems: 2
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  clock-names:
3162306a36Sopenharmony_ci    items:
3262306a36Sopenharmony_ci      - const: pll_a
3362306a36Sopenharmony_ci      - const: plla_out0
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  assigned-clocks:
3662306a36Sopenharmony_ci    minItems: 1
3762306a36Sopenharmony_ci    maxItems: 3
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  assigned-clock-parents:
4062306a36Sopenharmony_ci    minItems: 1
4162306a36Sopenharmony_ci    maxItems: 3
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  assigned-clock-rates:
4462306a36Sopenharmony_ci    minItems: 1
4562306a36Sopenharmony_ci    maxItems: 3
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  interconnects:
4862306a36Sopenharmony_ci    items:
4962306a36Sopenharmony_ci      - description: APE read memory client
5062306a36Sopenharmony_ci      - description: APE write memory client
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  interconnect-names:
5362306a36Sopenharmony_ci    items:
5462306a36Sopenharmony_ci      - const: dma-mem # read
5562306a36Sopenharmony_ci      - const: write
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  iommus:
5862306a36Sopenharmony_ci    maxItems: 1
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cirequired:
6162306a36Sopenharmony_ci  - clocks
6262306a36Sopenharmony_ci  - clock-names
6362306a36Sopenharmony_ci  - assigned-clocks
6462306a36Sopenharmony_ci  - assigned-clock-parents
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciunevaluatedProperties: false
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciexamples:
6962306a36Sopenharmony_ci  - |
7062306a36Sopenharmony_ci    #include<dt-bindings/clock/tegra210-car.h>
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci    tegra_sound {
7362306a36Sopenharmony_ci        compatible = "nvidia,tegra210-audio-graph-card";
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci        clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
7662306a36Sopenharmony_ci                 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
7762306a36Sopenharmony_ci        clock-names = "pll_a", "plla_out0";
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci        assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
8062306a36Sopenharmony_ci                          <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
8162306a36Sopenharmony_ci                          <&tegra_car TEGRA210_CLK_EXTERN1>;
8262306a36Sopenharmony_ci        assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
8362306a36Sopenharmony_ci        assigned-clock-rates = <368640000>, <49152000>, <12288000>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci        dais = /* FE */
8662306a36Sopenharmony_ci               <&admaif1_port>,
8762306a36Sopenharmony_ci               /* Router */
8862306a36Sopenharmony_ci               <&xbar_i2s1_port>,
8962306a36Sopenharmony_ci               /* I/O DAP Ports */
9062306a36Sopenharmony_ci               <&i2s1_port>;
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci        label = "jetson-tx1-ape";
9362306a36Sopenharmony_ci    };
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci    // The ports are defined for AHUB and its child devices.
9662306a36Sopenharmony_ci    ahub@702d0800 {
9762306a36Sopenharmony_ci        compatible = "nvidia,tegra210-ahub";
9862306a36Sopenharmony_ci        reg = <0x702d0800 0x800>;
9962306a36Sopenharmony_ci        clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
10062306a36Sopenharmony_ci        clock-names = "ahub";
10162306a36Sopenharmony_ci        assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
10262306a36Sopenharmony_ci        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
10362306a36Sopenharmony_ci        #address-cells = <1>;
10462306a36Sopenharmony_ci        #size-cells = <1>;
10562306a36Sopenharmony_ci        ranges = <0x702d0000 0x702d0000 0x0000e400>;
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci        ports {
10862306a36Sopenharmony_ci            #address-cells = <1>;
10962306a36Sopenharmony_ci            #size-cells = <0>;
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci            port@0 {
11262306a36Sopenharmony_ci                reg = <0x0>;
11362306a36Sopenharmony_ci                xbar_admaif1_ep: endpoint {
11462306a36Sopenharmony_ci                    remote-endpoint = <&admaif1_ep>;
11562306a36Sopenharmony_ci                };
11662306a36Sopenharmony_ci            };
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci            // ...
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci            xbar_i2s1_port: port@a {
12162306a36Sopenharmony_ci                reg = <0xa>;
12262306a36Sopenharmony_ci                xbar_i2s1_ep: endpoint {
12362306a36Sopenharmony_ci                    remote-endpoint = <&i2s1_cif_ep>;
12462306a36Sopenharmony_ci                };
12562306a36Sopenharmony_ci            };
12662306a36Sopenharmony_ci        };
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci        admaif@702d0000 {
12962306a36Sopenharmony_ci            compatible = "nvidia,tegra210-admaif";
13062306a36Sopenharmony_ci            reg = <0x702d0000 0x800>;
13162306a36Sopenharmony_ci            dmas = <&adma 1>,  <&adma 1>,
13262306a36Sopenharmony_ci                   <&adma 2>,  <&adma 2>,
13362306a36Sopenharmony_ci                   <&adma 3>,  <&adma 3>,
13462306a36Sopenharmony_ci                   <&adma 4>,  <&adma 4>,
13562306a36Sopenharmony_ci                   <&adma 5>,  <&adma 5>,
13662306a36Sopenharmony_ci                   <&adma 6>,  <&adma 6>,
13762306a36Sopenharmony_ci                   <&adma 7>,  <&adma 7>,
13862306a36Sopenharmony_ci                   <&adma 8>,  <&adma 8>,
13962306a36Sopenharmony_ci                   <&adma 9>,  <&adma 9>,
14062306a36Sopenharmony_ci                   <&adma 10>, <&adma 10>;
14162306a36Sopenharmony_ci            dma-names = "rx1",  "tx1",
14262306a36Sopenharmony_ci                        "rx2",  "tx2",
14362306a36Sopenharmony_ci                        "rx3",  "tx3",
14462306a36Sopenharmony_ci                        "rx4",  "tx4",
14562306a36Sopenharmony_ci                        "rx5",  "tx5",
14662306a36Sopenharmony_ci                        "rx6",  "tx6",
14762306a36Sopenharmony_ci                        "rx7",  "tx7",
14862306a36Sopenharmony_ci                        "rx8",  "tx8",
14962306a36Sopenharmony_ci                        "rx9",  "tx9",
15062306a36Sopenharmony_ci                        "rx10", "tx10";
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci            ports {
15362306a36Sopenharmony_ci                #address-cells = <1>;
15462306a36Sopenharmony_ci                #size-cells = <0>;
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci                admaif1_port: port@0 {
15762306a36Sopenharmony_ci                    reg = <0x0>;
15862306a36Sopenharmony_ci                    admaif1_ep: endpoint {
15962306a36Sopenharmony_ci                        remote-endpoint = <&xbar_admaif1_ep>;
16062306a36Sopenharmony_ci                    };
16162306a36Sopenharmony_ci                };
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci                // More ADMAIF ports to follow
16462306a36Sopenharmony_ci            };
16562306a36Sopenharmony_ci        };
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci        i2s@702d1000 {
16862306a36Sopenharmony_ci            compatible = "nvidia,tegra210-i2s";
16962306a36Sopenharmony_ci            clocks = <&tegra_car TEGRA210_CLK_I2S0>;
17062306a36Sopenharmony_ci            clock-names = "i2s";
17162306a36Sopenharmony_ci            assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
17262306a36Sopenharmony_ci            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
17362306a36Sopenharmony_ci            assigned-clock-rates = <1536000>;
17462306a36Sopenharmony_ci            reg = <0x702d1000 0x100>;
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci            ports {
17762306a36Sopenharmony_ci                #address-cells = <1>;
17862306a36Sopenharmony_ci                #size-cells = <0>;
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci                port@0 {
18162306a36Sopenharmony_ci                    reg = <0x0>;
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci                    i2s1_cif_ep: endpoint {
18462306a36Sopenharmony_ci                        remote-endpoint = <&xbar_i2s1_ep>;
18562306a36Sopenharmony_ci                    };
18662306a36Sopenharmony_ci                };
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci                i2s1_port: port@1 {
18962306a36Sopenharmony_ci                    reg = <0x1>;
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci                    i2s1_dap: endpoint {
19262306a36Sopenharmony_ci                        dai-format = "i2s";
19362306a36Sopenharmony_ci                    };
19462306a36Sopenharmony_ci                };
19562306a36Sopenharmony_ci            };
19662306a36Sopenharmony_ci        };
19762306a36Sopenharmony_ci    };
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci...
200