lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 19 Jul 2020 10:40:17 +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 10/10] 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 | 196 +++++++++++++++++++++
 arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 110 ++++++++++++
 2 files changed, 306 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..d228f02 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,199 @@
 			status = "okay";
 		};
 	};
+
+	tegra_sound {
+		status = "okay";
+
+		dais = /* FE */
+		       <&admaif_port>,
+		       /* Router */
+		       <&xbar_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";
+
+	port@1 {
+		xbar_i2s1: endpoint@a {
+			reg = <0xa>;
+			remote-endpoint = <&i2s1_cif>;
+		};
+		xbar_i2s2: endpoint@b {
+			reg = <0xb>;
+			remote-endpoint = <&i2s2_cif>;
+		};
+		xbar_i2s3: endpoint@c {
+			reg = <0xc>;
+			remote-endpoint = <&i2s3_cif>;
+		};
+		xbar_i2s4: endpoint@d {
+			reg = <0xd>;
+			remote-endpoint = <&i2s4_cif>;
+		};
+		xbar_i2s5: endpoint@e {
+			reg = <0xe>;
+			remote-endpoint = <&i2s5_cif>;
+		};
+		xbar_dmic1: endpoint@f {
+			reg = <0xf>;
+			remote-endpoint = <&dmic1_cif>;
+		};
+		xbar_dmic2: endpoint@10 {
+			reg = <0x10>;
+			remote-endpoint = <&dmic2_cif>;
+		};
+		xbar_dmic3: endpoint@11 {
+			reg = <0x11>;
+			remote-endpoint = <&dmic3_cif>;
+		};
+	};
+};
+
+&tegra_i2s1 {
+	status = "okay";
+
+	port@0 {
+		i2s1_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s1>;
+		};
+	};
+
+	i2s1_port: port@1 {
+		i2s1_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_i2s2 {
+	status = "okay";
+
+	port@0 {
+		i2s2_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s2>;
+		};
+	};
+
+	i2s2_port: port@1 {
+		i2s2_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_i2s3 {
+	status = "okay";
+
+	port@0 {
+		i2s3_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s3>;
+		};
+	};
+
+	i2s3_port: port@1 {
+		i2s3_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_i2s4 {
+	status = "okay";
+
+	port@0 {
+		i2s4_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s4>;
+		};
+	};
+
+	i2s4_port: port@1 {
+		i2s4_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_i2s5 {
+	status = "okay";
+
+	port@0 {
+		i2s5_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s5>;
+		};
+	};
+
+	i2s5_port: port@1 {
+		i2s5_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_dmic1 {
+	status = "okay";
+
+	port@0 {
+		dmic1_cif: endpoint@0 {
+			remote-endpoint = <&xbar_dmic1>;
+		};
+	};
+
+	dmic1_port: port@1 {
+		dmic1_dap: endpoint@0 {
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_dmic2 {
+	status = "okay";
+
+	port@0 {
+		dmic2_cif: endpoint@0 {
+			remote-endpoint = <&xbar_dmic2>;
+		};
+	};
+
+	dmic2_port: port@1 {
+		dmic2_dap: endpoint@0 {
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_dmic3 {
+	status = "okay";
+
+	port@0 {
+		dmic3_cif: endpoint@0 {
+			remote-endpoint = <&xbar_dmic3>;
+		};
+	};
+
+	dmic3_port: port@1 {
+		dmic3_dap: endpoint@0 {
+			/* 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 0325fc0..0226297 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";
@@ -818,4 +819,113 @@
 			status = "okay";
 		};
 	};
+
+	tegra_sound {
+		status = "okay";
+
+		dais = /* FE */
+		       <&admaif_port>,
+		       /* Router */
+		       <&xbar_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";
+
+	port@1 {
+		xbar_i2s3: endpoint@c {
+			reg = <0xc>;
+			remote-endpoint = <&i2s3_cif>;
+		};
+		xbar_i2s4: endpoint@d {
+			reg = <0xd>;
+			remote-endpoint = <&i2s4_cif>;
+		};
+		xbar_dmic1: endpoint@f {
+			reg = <0xf>;
+			remote-endpoint = <&dmic1_cif>;
+		};
+		xbar_dmic2: endpoint@10 {
+			reg = <0x10>;
+			remote-endpoint = <&dmic2_cif>;
+		};
+	};
+};
+
+&tegra_i2s3 {
+	status = "okay";
+
+	port@0 {
+		i2s3_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s3>;
+		};
+	};
+
+	i2s3_port: port@1 {
+		i2s3_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_i2s4 {
+	status = "okay";
+
+	port@0 {
+		i2s4_cif: endpoint@0 {
+			remote-endpoint = <&xbar_i2s4>;
+		};
+	};
+
+	i2s4_port: port@1 {
+		i2s4_dap: endpoint@0 {
+			dai-format = "i2s";
+
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_dmic1 {
+	status = "okay";
+
+	port@0 {
+		dmic1_cif: endpoint@0 {
+			remote-endpoint = <&xbar_dmic1>;
+		};
+	};
+
+	dmic1_port: port@1 {
+		dmic1_dap: endpoint@0 {
+			/* Placeholder for external Codec */
+		};
+	};
+};
+
+&tegra_dmic2 {
+	status = "okay";
+
+	port@0 {
+		dmic2_cif: endpoint@0 {
+			remote-endpoint = <&xbar_dmic2>;
+		};
+	};
+
+	dmic2_port: port@1 {
+		dmic2_dap: endpoint@0 {
+			/* Placeholder for external Codec */
+		};
+	};
 };
-- 
2.7.4

Powered by blists - more mailing lists