Commit b0b4e286 authored by Sameer Pujar's avatar Sameer Pujar Committed by Thierry Reding
Browse files

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: default avatarSameer Pujar <spujar@nvidia.com>
Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent f5208672
Loading
Loading
Loading
Loading
+299 −0
Original line number Diff line number Diff line
@@ -126,5 +126,304 @@
		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";
	};
};
+163 −0
Original line number Diff line number Diff line
@@ -636,6 +636,150 @@
		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 {
@@ -870,4 +1014,23 @@

		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";
	};
};