[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1596605064-27748-10-git-send-email-spujar@nvidia.com>
Date: Wed, 5 Aug 2020 10:54:24 +0530
From: Sameer Pujar <spujar@...dia.com>
To: <broonie@...nel.org>, <perex@...ex.cz>, <tiwai@...e.com>,
<kuninori.morimoto.gx@...esas.com>, <robh+dt@...nel.org>,
<lgirdwood@...il.com>
CC: <thierry.reding@...il.com>, <jonathanh@...dia.com>,
<alsa-devel@...a-project.org>, <linux-tegra@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <sharadg@...dia.com>,
<mkumard@...dia.com>, <viswanathl@...dia.com>,
<rlokhande@...dia.com>, <dramesh@...dia.com>,
<atalambedu@...dia.com>, <nwartikar@...dia.com>,
<swarren@...dia.com>, <nicoleotsuka@...il.com>,
Sameer Pujar <spujar@...dia.com>
Subject: [PATCH v2 9/9] arm64: tegra: Audio graph sound card for Jetson Nano and TX1
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@...dia.com>
---
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 217 +++++++++++++++++++++
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 122 ++++++++++++
2 files changed, 339 insertions(+)
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
index 56adf28..0eefad7 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
@@ -3,6 +3,7 @@
#include "tegra210-p2180.dtsi"
#include "tegra210-p2597.dtsi"
+#include "tegra210-audio-graph.dtsi"
/ {
model = "NVIDIA Jetson TX1 Developer Kit";
@@ -126,4 +127,220 @@
status = "okay";
};
};
+
+ tegra_sound {
+ 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";
+ };
+};
+
+&tegra_admaif {
+ status = "okay";
+};
+
+&tegra_ahub {
+ status = "okay";
+
+ 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>;
+ };
+ };
+ };
+};
+
+&tegra_i2s1 {
+ status = "okay";
+
+ port@0 {
+ i2s1_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s1_ep>;
+ };
+ };
+
+ i2s1_port: port@1 {
+ i2s1_dap: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_i2s2 {
+ status = "okay";
+
+ port@0 {
+ i2s2_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s2_ep>;
+ };
+ };
+
+ i2s2_port: port@1 {
+ i2s2_dap: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_i2s3 {
+ status = "okay";
+
+ port@0 {
+ i2s3_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s3_ep>;
+ };
+ };
+
+ i2s3_port: port@1 {
+ i2s3_dap_ep: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_i2s4 {
+ status = "okay";
+
+ port@0 {
+ i2s4_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s4_ep>;
+ };
+ };
+
+ i2s4_port: port@1 {
+ i2s4_dap: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_i2s5 {
+ status = "okay";
+
+ port@0 {
+ i2s5_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s5_ep>;
+ };
+ };
+
+ i2s5_port: port@1 {
+ i2s5_dap: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_dmic1 {
+ status = "okay";
+
+ port@0 {
+ dmic1_cif_ep: endpoint {
+ remote-endpoint = <&xbar_dmic1_ep>;
+ };
+ };
+
+ dmic1_port: port@1 {
+ dmic1_dap: endpoint {
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_dmic2 {
+ status = "okay";
+
+ port@0 {
+ dmic2_cif_ep: endpoint {
+ remote-endpoint = <&xbar_dmic2_ep>;
+ };
+ };
+
+ dmic2_port: port@1 {
+ dmic2_dap: endpoint {
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_dmic3 {
+ status = "okay";
+
+ port@0 {
+ dmic3_cif_ep: endpoint {
+ remote-endpoint = <&xbar_dmic3_ep>;
+ };
+ };
+
+ dmic3_port: port@1 {
+ dmic3_dap: endpoint {
+ /* Placeholder for external Codec */
+ };
+ };
};
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
index 0dd3d02..dc6a1d8 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
@@ -6,6 +6,7 @@
#include <dt-bindings/mfd/max77620.h>
#include "tegra210.dtsi"
+#include "tegra210-audio-graph.dtsi"
/ {
model = "NVIDIA Jetson Nano Developer Kit";
@@ -855,4 +856,125 @@
status = "okay";
};
};
+
+ tegra_sound {
+ 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";
+ };
+};
+
+&tegra_admaif {
+ status = "okay";
+};
+
+&tegra_ahub {
+ status = "okay";
+
+ 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>;
+ };
+ };
+ };
+};
+
+&tegra_i2s3 {
+ status = "okay";
+
+ port@0 {
+ i2s3_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s3_ep>;
+ };
+ };
+
+ i2s3_port: port@1 {
+ i2s3_dap_ep: endpoint {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_i2s4 {
+ status = "okay";
+
+ port@0 {
+ i2s4_cif_ep: endpoint {
+ remote-endpoint = <&xbar_i2s4_ep>;
+ };
+ };
+
+ i2s4_port: port@1 {
+ i2s4_dap: endpoint@0 {
+ dai-format = "i2s";
+
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_dmic1 {
+ status = "okay";
+
+ port@0 {
+ dmic1_cif_ep: endpoint@0 {
+ remote-endpoint = <&xbar_dmic1_ep>;
+ };
+ };
+
+ dmic1_port: port@1 {
+ dmic1_dap: endpoint@0 {
+ /* Placeholder for external Codec */
+ };
+ };
+};
+
+&tegra_dmic2 {
+ status = "okay";
+
+ port@0 {
+ dmic2_cif_ep: endpoint@0 {
+ remote-endpoint = <&xbar_dmic2_ep>;
+ };
+ };
+
+ dmic2_port: port@1 {
+ dmic2_dap: endpoint@0 {
+ /* Placeholder for external Codec */
+ };
+ };
};
--
2.7.4
Powered by blists - more mailing lists