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

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
......@@ -126,5 +126,304 @@ dma-controller@702e2000 {
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";
};
};
......@@ -636,6 +636,150 @@ dma-controller@702e2000 {
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 @@ vdd_5v0_usb: regulator@8 {
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";
};
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment