arm64: tegra: Audio graph sound card for Jetson Nano and TX1
authorSameer Pujar <spujar@nvidia.com>
Tue, 19 Jan 2021 09:28:16 +0000 (14:58 +0530)
committerThierry Reding <treding@nvidia.com>
Tue, 26 Jan 2021 23:11:49 +0000 (00:11 +0100)
Enable support for audio-graph based sound card on Jetson-Nano and
Jetson-TX1. Depending on the platform, required I/O interfaces are
enabled.

 * Jetson-Nano: Enable I2S3, I2S4, DMIC1 and DMIC2.
 * Jetson-TX1: Enable all I2S and DMIC interfaces.

Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts

index 69102dc..497635a 100644 (file)
                interrupt-controller@702f9000 {
                        status = "okay";
                };
+
+               ahub@702d0800 {
+                       status = "okay";
+
+                       admaif@702d0000 {
+                               status = "okay";
+                       };
+
+                       i2s@702d1000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               };
+                                       };
+
+                                       i2s1_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s1_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s2_ep>;
+                                               };
+                                       };
+
+                                       i2s2_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s2_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1300 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               };
+                                       };
+
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s4_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s5_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s5_ep>;
+                                               };
+                                       };
+
+                                       i2s5_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s5_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic3_ep>;
+                                               };
+                                       };
+
+                                       dmic3_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic3_dap_ep: endpoint {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               xbar_i2s1_port: port@a {
+                                       reg = <0xa>;
+
+                                       xbar_i2s1_ep: endpoint {
+                                               remote-endpoint = <&i2s1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s2_port: port@b {
+                                       reg = <0xb>;
+
+                                       xbar_i2s2_ep: endpoint {
+                                               remote-endpoint = <&i2s2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s3_port: port@c {
+                                       reg = <0xc>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s4_port: port@d {
+                                       reg = <0xd>;
+
+                                       xbar_i2s4_ep: endpoint {
+                                               remote-endpoint = <&i2s4_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s5_port: port@e {
+                                       reg = <0xe>;
+
+                                       xbar_i2s5_ep: endpoint {
+                                               remote-endpoint = <&i2s5_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@f {
+                                       reg = <0xf>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic3_port: port@11 {
+                                       reg = <0x11>;
+
+                                       xbar_dmic3_ep: endpoint {
+                                               remote-endpoint = <&dmic3_cif_ep>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       sound {
+               compatible = "nvidia,tegra210-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>,
+                      <&admaif7_port>, <&admaif8_port>, <&admaif9_port>,
+                      <&admaif10_port>,
+                      /* Router */
+                      <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s3_port>,
+                      <&xbar_i2s4_port>, <&xbar_i2s5_port>, <&xbar_dmic1_port>,
+                      <&xbar_dmic2_port>, <&xbar_dmic3_port>,
+                      /* I/O DAP Ports */
+                      <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>,
+                      <&i2s5_port>, <&dmic1_port>, <&dmic2_port>, <&dmic3_port>;
+
+               label = "jetson-tx1-ape";
        };
 };
index 6a877de..1170f33 100644 (file)
                interrupt-controller@702f9000 {
                        status = "okay";
                };
+
+               ahub@702d0800 {
+                       status = "okay";
+
+                       admaif@702d0000 {
+                               status = "okay";
+                       };
+
+                       i2s@702d1200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@702d1300 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               };
+                                       };
+
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s4_dap_ep: endpoint@0 {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint@0 {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint@0 {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@702d4100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint@0 {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint@0 {
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       ports {
+                               xbar_i2s3_port: port@c {
+                                       reg = <0xc>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s4_port: port@d {
+                                       reg = <0xd>;
+
+                                       xbar_i2s4_ep: endpoint {
+                                               remote-endpoint = <&i2s4_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@f {
+                                       reg = <0xf>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+                       };
+               };
        };
 
        clk32k_in: clock@0 {
 
                vin-supply = <&vdd_5v0_sys>;
        };
+
+       sound {
+               compatible = "nvidia,tegra210-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>,
+                      <&admaif7_port>, <&admaif8_port>, <&admaif9_port>,
+                      <&admaif10_port>,
+                      /* Router */
+                      <&xbar_i2s3_port>, <&xbar_i2s4_port>,
+                      <&xbar_dmic1_port>, <&xbar_dmic2_port>,
+                      /* I/O DAP Ports */
+                      <&i2s3_port>, <&i2s4_port>,
+                      <&dmic1_port>, <&dmic2_port>;
+
+               label = "jetson-nano-ape";
+       };
 };