xref: /freebsd/sys/contrib/device-tree/Bindings/sound/nvidia,tegra-audio-graph-card.yaml (revision e67e85659c0de33e617e5fbf1028c6e8b49eee53)
15def4c47SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
25def4c47SEmmanuel Vadot%YAML 1.2
35def4c47SEmmanuel Vadot---
45def4c47SEmmanuel Vadot$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-graph-card.yaml#
55def4c47SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65def4c47SEmmanuel Vadot
75def4c47SEmmanuel Vadottitle: Audio Graph based Tegra sound card driver
85def4c47SEmmanuel Vadot
95def4c47SEmmanuel Vadotdescription: |
105def4c47SEmmanuel Vadot  This is based on generic audio graph card driver along with additional
115def4c47SEmmanuel Vadot  customizations for Tegra platforms. It uses the same bindings with
125def4c47SEmmanuel Vadot  additional standard clock DT bindings required for Tegra.
135def4c47SEmmanuel Vadot
145def4c47SEmmanuel Vadotmaintainers:
155def4c47SEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
165def4c47SEmmanuel Vadot  - Sameer Pujar <spujar@nvidia.com>
175def4c47SEmmanuel Vadot
185def4c47SEmmanuel VadotallOf:
195def4c47SEmmanuel Vadot  - $ref: audio-graph.yaml#
205def4c47SEmmanuel Vadot
215def4c47SEmmanuel Vadotproperties:
225def4c47SEmmanuel Vadot  compatible:
235def4c47SEmmanuel Vadot    enum:
245def4c47SEmmanuel Vadot      - nvidia,tegra210-audio-graph-card
255def4c47SEmmanuel Vadot      - nvidia,tegra186-audio-graph-card
265def4c47SEmmanuel Vadot
275def4c47SEmmanuel Vadot  clocks:
285def4c47SEmmanuel Vadot    minItems: 2
295def4c47SEmmanuel Vadot
305def4c47SEmmanuel Vadot  clock-names:
315def4c47SEmmanuel Vadot    items:
325def4c47SEmmanuel Vadot      - const: pll_a
335def4c47SEmmanuel Vadot      - const: plla_out0
345def4c47SEmmanuel Vadot
355def4c47SEmmanuel Vadot  assigned-clocks:
365def4c47SEmmanuel Vadot    minItems: 1
375def4c47SEmmanuel Vadot    maxItems: 3
385def4c47SEmmanuel Vadot
395def4c47SEmmanuel Vadot  assigned-clock-parents:
405def4c47SEmmanuel Vadot    minItems: 1
415def4c47SEmmanuel Vadot    maxItems: 3
425def4c47SEmmanuel Vadot
435def4c47SEmmanuel Vadot  assigned-clock-rates:
445def4c47SEmmanuel Vadot    minItems: 1
455def4c47SEmmanuel Vadot    maxItems: 3
465def4c47SEmmanuel Vadot
47*e67e8565SEmmanuel Vadot  interconnects:
48*e67e8565SEmmanuel Vadot    items:
49*e67e8565SEmmanuel Vadot      - description: APE read memory client
50*e67e8565SEmmanuel Vadot      - description: APE write memory client
51*e67e8565SEmmanuel Vadot
52*e67e8565SEmmanuel Vadot  interconnect-names:
53*e67e8565SEmmanuel Vadot    items:
54*e67e8565SEmmanuel Vadot      - const: dma-mem # read
55*e67e8565SEmmanuel Vadot      - const: write
56*e67e8565SEmmanuel Vadot
575def4c47SEmmanuel Vadot  iommus:
585def4c47SEmmanuel Vadot    maxItems: 1
595def4c47SEmmanuel Vadot
605def4c47SEmmanuel Vadotrequired:
615def4c47SEmmanuel Vadot  - clocks
625def4c47SEmmanuel Vadot  - clock-names
635def4c47SEmmanuel Vadot  - assigned-clocks
645def4c47SEmmanuel Vadot  - assigned-clock-parents
655def4c47SEmmanuel Vadot
665def4c47SEmmanuel VadotunevaluatedProperties: false
675def4c47SEmmanuel Vadot
685def4c47SEmmanuel Vadotexamples:
695def4c47SEmmanuel Vadot  - |
705def4c47SEmmanuel Vadot    #include<dt-bindings/clock/tegra210-car.h>
715def4c47SEmmanuel Vadot
725def4c47SEmmanuel Vadot    tegra_sound {
735def4c47SEmmanuel Vadot        compatible = "nvidia,tegra210-audio-graph-card";
745def4c47SEmmanuel Vadot
755def4c47SEmmanuel Vadot        clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
765def4c47SEmmanuel Vadot                 <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
775def4c47SEmmanuel Vadot        clock-names = "pll_a", "plla_out0";
785def4c47SEmmanuel Vadot
795def4c47SEmmanuel Vadot        assigned-clocks = <&tegra_car TEGRA210_CLK_PLL_A>,
805def4c47SEmmanuel Vadot                          <&tegra_car TEGRA210_CLK_PLL_A_OUT0>,
815def4c47SEmmanuel Vadot                          <&tegra_car TEGRA210_CLK_EXTERN1>;
825def4c47SEmmanuel Vadot        assigned-clock-parents = <0>, <0>, <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
835def4c47SEmmanuel Vadot        assigned-clock-rates = <368640000>, <49152000>, <12288000>;
845def4c47SEmmanuel Vadot
855def4c47SEmmanuel Vadot        dais = /* FE */
865def4c47SEmmanuel Vadot               <&admaif1_port>,
875def4c47SEmmanuel Vadot               /* Router */
885def4c47SEmmanuel Vadot               <&xbar_i2s1_port>,
895def4c47SEmmanuel Vadot               /* I/O DAP Ports */
905def4c47SEmmanuel Vadot               <&i2s1_port>;
915def4c47SEmmanuel Vadot
925def4c47SEmmanuel Vadot        label = "jetson-tx1-ape";
935def4c47SEmmanuel Vadot    };
945def4c47SEmmanuel Vadot
955def4c47SEmmanuel Vadot    // The ports are defined for AHUB and its child devices.
965def4c47SEmmanuel Vadot    ahub@702d0800 {
975def4c47SEmmanuel Vadot        compatible = "nvidia,tegra210-ahub";
985def4c47SEmmanuel Vadot        reg = <0x702d0800 0x800>;
995def4c47SEmmanuel Vadot        clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
1005def4c47SEmmanuel Vadot        clock-names = "ahub";
1015def4c47SEmmanuel Vadot        assigned-clocks = <&tegra_car TEGRA210_CLK_D_AUDIO>;
1025def4c47SEmmanuel Vadot        assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
1035def4c47SEmmanuel Vadot        #address-cells = <1>;
1045def4c47SEmmanuel Vadot        #size-cells = <1>;
1055def4c47SEmmanuel Vadot        ranges = <0x702d0000 0x702d0000 0x0000e400>;
1065def4c47SEmmanuel Vadot
1075def4c47SEmmanuel Vadot        ports {
1085def4c47SEmmanuel Vadot            #address-cells = <1>;
1095def4c47SEmmanuel Vadot            #size-cells = <0>;
1105def4c47SEmmanuel Vadot
1115def4c47SEmmanuel Vadot            port@0 {
1125def4c47SEmmanuel Vadot                reg = <0x0>;
1135def4c47SEmmanuel Vadot                xbar_admaif1_ep: endpoint {
1145def4c47SEmmanuel Vadot                    remote-endpoint = <&admaif1_ep>;
1155def4c47SEmmanuel Vadot                };
1165def4c47SEmmanuel Vadot            };
1175def4c47SEmmanuel Vadot
1185def4c47SEmmanuel Vadot            // ...
1195def4c47SEmmanuel Vadot
1205def4c47SEmmanuel Vadot            xbar_i2s1_port: port@a {
1215def4c47SEmmanuel Vadot                reg = <0xa>;
1225def4c47SEmmanuel Vadot                xbar_i2s1_ep: endpoint {
1235def4c47SEmmanuel Vadot                    remote-endpoint = <&i2s1_cif_ep>;
1245def4c47SEmmanuel Vadot                };
1255def4c47SEmmanuel Vadot            };
1265def4c47SEmmanuel Vadot        };
1275def4c47SEmmanuel Vadot
1285def4c47SEmmanuel Vadot        admaif@702d0000 {
1295def4c47SEmmanuel Vadot            compatible = "nvidia,tegra210-admaif";
1305def4c47SEmmanuel Vadot            reg = <0x702d0000 0x800>;
1315def4c47SEmmanuel Vadot            dmas = <&adma 1>,  <&adma 1>,
1325def4c47SEmmanuel Vadot                   <&adma 2>,  <&adma 2>,
1335def4c47SEmmanuel Vadot                   <&adma 3>,  <&adma 3>,
1345def4c47SEmmanuel Vadot                   <&adma 4>,  <&adma 4>,
1355def4c47SEmmanuel Vadot                   <&adma 5>,  <&adma 5>,
1365def4c47SEmmanuel Vadot                   <&adma 6>,  <&adma 6>,
1375def4c47SEmmanuel Vadot                   <&adma 7>,  <&adma 7>,
1385def4c47SEmmanuel Vadot                   <&adma 8>,  <&adma 8>,
1395def4c47SEmmanuel Vadot                   <&adma 9>,  <&adma 9>,
1405def4c47SEmmanuel Vadot                   <&adma 10>, <&adma 10>;
1415def4c47SEmmanuel Vadot            dma-names = "rx1",  "tx1",
1425def4c47SEmmanuel Vadot                        "rx2",  "tx2",
1435def4c47SEmmanuel Vadot                        "rx3",  "tx3",
1445def4c47SEmmanuel Vadot                        "rx4",  "tx4",
1455def4c47SEmmanuel Vadot                        "rx5",  "tx5",
1465def4c47SEmmanuel Vadot                        "rx6",  "tx6",
1475def4c47SEmmanuel Vadot                        "rx7",  "tx7",
1485def4c47SEmmanuel Vadot                        "rx8",  "tx8",
1495def4c47SEmmanuel Vadot                        "rx9",  "tx9",
1505def4c47SEmmanuel Vadot                        "rx10", "tx10";
1515def4c47SEmmanuel Vadot
1525def4c47SEmmanuel Vadot            ports {
1535def4c47SEmmanuel Vadot                #address-cells = <1>;
1545def4c47SEmmanuel Vadot                #size-cells = <0>;
1555def4c47SEmmanuel Vadot
1565def4c47SEmmanuel Vadot                admaif1_port: port@0 {
1575def4c47SEmmanuel Vadot                    reg = <0x0>;
1585def4c47SEmmanuel Vadot                    admaif1_ep: endpoint {
1595def4c47SEmmanuel Vadot                        remote-endpoint = <&xbar_admaif1_ep>;
1605def4c47SEmmanuel Vadot                    };
1615def4c47SEmmanuel Vadot                };
1625def4c47SEmmanuel Vadot
1635def4c47SEmmanuel Vadot                // More ADMAIF ports to follow
1645def4c47SEmmanuel Vadot            };
1655def4c47SEmmanuel Vadot        };
1665def4c47SEmmanuel Vadot
1675def4c47SEmmanuel Vadot        i2s@702d1000 {
1685def4c47SEmmanuel Vadot            compatible = "nvidia,tegra210-i2s";
1695def4c47SEmmanuel Vadot            clocks = <&tegra_car TEGRA210_CLK_I2S0>;
1705def4c47SEmmanuel Vadot            clock-names = "i2s";
1715def4c47SEmmanuel Vadot            assigned-clocks = <&tegra_car TEGRA210_CLK_I2S0>;
1725def4c47SEmmanuel Vadot            assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_A_OUT0>;
1735def4c47SEmmanuel Vadot            assigned-clock-rates = <1536000>;
1745def4c47SEmmanuel Vadot            reg = <0x702d1000 0x100>;
1755def4c47SEmmanuel Vadot
1765def4c47SEmmanuel Vadot            ports {
1775def4c47SEmmanuel Vadot                #address-cells = <1>;
1785def4c47SEmmanuel Vadot                #size-cells = <0>;
1795def4c47SEmmanuel Vadot
1805def4c47SEmmanuel Vadot                port@0 {
1815def4c47SEmmanuel Vadot                    reg = <0x0>;
1825def4c47SEmmanuel Vadot
1835def4c47SEmmanuel Vadot                    i2s1_cif_ep: endpoint {
1845def4c47SEmmanuel Vadot                        remote-endpoint = <&xbar_i2s1_ep>;
1855def4c47SEmmanuel Vadot                    };
1865def4c47SEmmanuel Vadot                };
1875def4c47SEmmanuel Vadot
1885def4c47SEmmanuel Vadot                i2s1_port: port@1 {
1895def4c47SEmmanuel Vadot                    reg = <0x1>;
1905def4c47SEmmanuel Vadot
1915def4c47SEmmanuel Vadot                    i2s1_dap: endpoint {
1925def4c47SEmmanuel Vadot                        dai-format = "i2s";
1935def4c47SEmmanuel Vadot                    };
1945def4c47SEmmanuel Vadot                };
1955def4c47SEmmanuel Vadot            };
1965def4c47SEmmanuel Vadot        };
1975def4c47SEmmanuel Vadot    };
1985def4c47SEmmanuel Vadot
1995def4c47SEmmanuel Vadot...
200