# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-graph-card.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Audio Graph based Tegra sound card driver

description: |
  This is based on generic audio graph card driver along with additional
  customizations for Tegra platforms. It uses the same bindings with
  additional standard clock DT bindings required for Tegra.

maintainers:
  - Jon Hunter <jonathanh@nvidia.com>
  - Sameer Pujar <spujar@nvidia.com>

allOf:
  - $ref: audio-graph.yaml#

properties:
  compatible:
    enum:
      - nvidia,tegra210-audio-graph-card
      - nvidia,tegra186-audio-graph-card

  clocks:
    minItems: 2

  clock-names:
    minItems: 2
    items:
      - const: pll_a
      - const: plla_out0

  assigned-clocks:
    minItems: 1
    maxItems: 3

  assigned-clock-parents:
    minItems: 1
    maxItems: 3

  assigned-clock-rates:
    minItems: 1
    maxItems: 3

  iommus:
    maxItems: 1

required:
  - clocks
  - clock-names
  - assigned-clocks
  - assigned-clock-parents

unevaluatedProperties: false

examples:
  - |
    #include<dt-bindings/clock/tegra210-car.h>

    tegra_sound {
        compatible = "nvidia,tegra210-audio-graph-card";

        clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
                 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
        clock-names = "pll_a", "plla_out0";

        assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
                          <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
                          <&tegra_car TEGRA210_CLK_EXTERN1>;
        assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
        assigned-clock-rates = <368640000>, <49152000>, <12288000>;

        dais = /* FE */
               <&admaif1_port>,
               /* Router */
               <&xbar_i2s1_port>,
               /* I/O DAP Ports */
               <&i2s1_port>;

        label = "jetson-tx1-ape";
    };

    // The ports are defined for AHUB and its child devices.
    ahub@702d0800 {
        compatible = "nvidia,tegra210-ahub";
        reg = <0x702d0800 0x800>;
        clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
        clock-names = "ahub";
        assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0x702d0000 0x702d0000 0x0000e400>;

        ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0x0>;
                xbar_admaif1_ep: endpoint {
                    remote-endpoint = <&admaif1_ep>;
                };
            };

            // ...

            xbar_i2s1_port: port@a {
                reg = <0xa>;
                xbar_i2s1_ep: endpoint {
                    remote-endpoint = <&i2s1_cif_ep>;
                };
            };
        };

        admaif@702d0000 {
            compatible = "nvidia,tegra210-admaif";
            reg = <0x702d0000 0x800>;
            dmas = <&adma 1>,  <&adma 1>,
                   <&adma 2>,  <&adma 2>,
                   <&adma 3>,  <&adma 3>,
                   <&adma 4>,  <&adma 4>,
                   <&adma 5>,  <&adma 5>,
                   <&adma 6>,  <&adma 6>,
                   <&adma 7>,  <&adma 7>,
                   <&adma 8>,  <&adma 8>,
                   <&adma 9>,  <&adma 9>,
                   <&adma 10>, <&adma 10>;
            dma-names = "rx1",  "tx1",
                        "rx2",  "tx2",
                        "rx3",  "tx3",
                        "rx4",  "tx4",
                        "rx5",  "tx5",
                        "rx6",  "tx6",
                        "rx7",  "tx7",
                        "rx8",  "tx8",
                        "rx9",  "tx9",
                        "rx10", "tx10";

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                admaif1_port: port@0 {
                    reg = <0x0>;
                    admaif1_ep: endpoint {
                        remote-endpoint = <&xbar_admaif1_ep>;
                    };
                };

                // More ADMAIF ports to follow
            };
        };

        i2s@702d1000 {
            compatible = "nvidia,tegra210-i2s";
            clocks = <&tegra_car TEGRA210_CLK_I2S0>;
            clock-names = "i2s";
            assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
            assigned-clock-rates = <1536000>;
            reg = <0x702d1000 0x100>;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0x0>;

                    i2s1_cif_ep: endpoint {
                        remote-endpoint = <&xbar_i2s1_ep>;
                    };
                };

                i2s1_port: port@1 {
                    reg = <0x1>;

                    i2s1_dap: endpoint {
                        dai-format = "i2s";
                    };
                };
            };
        };
    };

...
