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

arm64: tegra: Add audio devices on Tegra234



Add following devices which are part of APE subsystem
 * ACONNECT, AGIC and ADMA
 * AHUB and children (ADMAIF, I2S, DMIC, DSPK, MVC, SFC,
   AMX, ADX and Mixer)

Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent cd0c2edf
Loading
Loading
Loading
Loading
+419 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/mailbox/tegra186-hsp.h>
#include <dt-bindings/memory/tegra234-mc.h>
#include <dt-bindings/power/tegra234-powergate.h>
#include <dt-bindings/reset/tegra234-reset.h>

/ {
@@ -20,6 +21,424 @@ bus@0 {

		ranges = <0x0 0x0 0x0 0x40000000>;

		aconnect@2900000 {
			compatible = "nvidia,tegra234-aconnect",
				     "nvidia,tegra210-aconnect";
			clocks = <&bpmp TEGRA234_CLK_APE>,
				 <&bpmp TEGRA234_CLK_APB2APE>;
			clock-names = "ape", "apb2ape";
			power-domains = <&bpmp TEGRA234_POWER_DOMAIN_AUD>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x02900000 0x02900000 0x200000>;
			status = "disabled";

			tegra_ahub: ahub@2900800 {
				compatible = "nvidia,tegra234-ahub";
				reg = <0x02900800 0x800>;
				clocks = <&bpmp TEGRA234_CLK_AHUB>;
				clock-names = "ahub";
				assigned-clocks = <&bpmp TEGRA234_CLK_AHUB>;
				assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x02900800 0x02900800 0x11800>;
				status = "disabled";

				tegra_i2s1: i2s@2901000 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901000 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S1>,
						 <&bpmp TEGRA234_CLK_I2S1_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S1>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S1";
					status = "disabled";
				};

				tegra_i2s2: i2s@2901100 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901100 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S2>,
						 <&bpmp TEGRA234_CLK_I2S2_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S2>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S2";
					status = "disabled";
				};

				tegra_i2s3: i2s@2901200 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901200 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S3>,
						 <&bpmp TEGRA234_CLK_I2S3_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S3>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S3";
					status = "disabled";
				};

				tegra_i2s4: i2s@2901300 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901300 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S4>,
						 <&bpmp TEGRA234_CLK_I2S4_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S4>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S4";
					status = "disabled";
				};

				tegra_i2s5: i2s@2901400 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901400 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S5>,
						 <&bpmp TEGRA234_CLK_I2S5_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S5>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S5";
					status = "disabled";
				};

				tegra_i2s6: i2s@2901500 {
					compatible = "nvidia,tegra234-i2s",
						     "nvidia,tegra210-i2s";
					reg = <0x2901500 0x100>;
					clocks = <&bpmp TEGRA234_CLK_I2S6>,
						 <&bpmp TEGRA234_CLK_I2S6_SYNC_INPUT>;
					clock-names = "i2s", "sync_input";
					assigned-clocks = <&bpmp TEGRA234_CLK_I2S6>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <1536000>;
					sound-name-prefix = "I2S6";
					status = "disabled";
				};

				tegra_sfc1: sfc@2902000 {
					compatible = "nvidia,tegra234-sfc",
						     "nvidia,tegra210-sfc";
					reg = <0x2902000 0x200>;
					sound-name-prefix = "SFC1";
					status = "disabled";
				};

				tegra_sfc2: sfc@2902200 {
					compatible = "nvidia,tegra234-sfc",
						     "nvidia,tegra210-sfc";
					reg = <0x2902200 0x200>;
					sound-name-prefix = "SFC2";
					status = "disabled";
				};

				tegra_sfc3: sfc@2902400 {
					compatible = "nvidia,tegra234-sfc",
						     "nvidia,tegra210-sfc";
					reg = <0x2902400 0x200>;
					sound-name-prefix = "SFC3";
					status = "disabled";
				};

				tegra_sfc4: sfc@2902600 {
					compatible = "nvidia,tegra234-sfc",
						     "nvidia,tegra210-sfc";
					reg = <0x2902600 0x200>;
					sound-name-prefix = "SFC4";
					status = "disabled";
				};

				tegra_amx1: amx@2903000 {
					compatible = "nvidia,tegra234-amx",
						     "nvidia,tegra194-amx";
					reg = <0x2903000 0x100>;
					sound-name-prefix = "AMX1";
					status = "disabled";
				};

				tegra_amx2: amx@2903100 {
					compatible = "nvidia,tegra234-amx",
						     "nvidia,tegra194-amx";
					reg = <0x2903100 0x100>;
					sound-name-prefix = "AMX2";
					status = "disabled";
				};

				tegra_amx3: amx@2903200 {
					compatible = "nvidia,tegra234-amx",
						     "nvidia,tegra194-amx";
					reg = <0x2903200 0x100>;
					sound-name-prefix = "AMX3";
					status = "disabled";
				};

				tegra_amx4: amx@2903300 {
					compatible = "nvidia,tegra234-amx",
						     "nvidia,tegra194-amx";
					reg = <0x2903300 0x100>;
					sound-name-prefix = "AMX4";
					status = "disabled";
				};

				tegra_adx1: adx@2903800 {
					compatible = "nvidia,tegra234-adx",
						     "nvidia,tegra210-adx";
					reg = <0x2903800 0x100>;
					sound-name-prefix = "ADX1";
					status = "disabled";
				};

				tegra_adx2: adx@2903900 {
					compatible = "nvidia,tegra234-adx",
						     "nvidia,tegra210-adx";
					reg = <0x2903900 0x100>;
					sound-name-prefix = "ADX2";
					status = "disabled";
				};

				tegra_adx3: adx@2903a00 {
					compatible = "nvidia,tegra234-adx",
						     "nvidia,tegra210-adx";
					reg = <0x2903a00 0x100>;
					sound-name-prefix = "ADX3";
					status = "disabled";
				};

				tegra_adx4: adx@2903b00 {
					compatible = "nvidia,tegra234-adx",
						     "nvidia,tegra210-adx";
					reg = <0x2903b00 0x100>;
					sound-name-prefix = "ADX4";
					status = "disabled";
				};


				tegra_dmic1: dmic@2904000 {
					compatible = "nvidia,tegra234-dmic",
						     "nvidia,tegra210-dmic";
					reg = <0x2904000 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DMIC1>;
					clock-names = "dmic";
					assigned-clocks = <&bpmp TEGRA234_CLK_DMIC1>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <3072000>;
					sound-name-prefix = "DMIC1";
					status = "disabled";
				};

				tegra_dmic2: dmic@2904100 {
					compatible = "nvidia,tegra234-dmic",
						     "nvidia,tegra210-dmic";
					reg = <0x2904100 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DMIC2>;
					clock-names = "dmic";
					assigned-clocks = <&bpmp TEGRA234_CLK_DMIC2>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <3072000>;
					sound-name-prefix = "DMIC2";
					status = "disabled";
				};

				tegra_dmic3: dmic@2904200 {
					compatible = "nvidia,tegra234-dmic",
						     "nvidia,tegra210-dmic";
					reg = <0x2904200 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DMIC3>;
					clock-names = "dmic";
					assigned-clocks = <&bpmp TEGRA234_CLK_DMIC3>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <3072000>;
					sound-name-prefix = "DMIC3";
					status = "disabled";
				};

				tegra_dmic4: dmic@2904300 {
					compatible = "nvidia,tegra234-dmic",
						     "nvidia,tegra210-dmic";
					reg = <0x2904300 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DMIC4>;
					clock-names = "dmic";
					assigned-clocks = <&bpmp TEGRA234_CLK_DMIC4>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <3072000>;
					sound-name-prefix = "DMIC4";
					status = "disabled";
				};

				tegra_dspk1: dspk@2905000 {
					compatible = "nvidia,tegra234-dspk",
						     "nvidia,tegra186-dspk";
					reg = <0x2905000 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DSPK1>;
					clock-names = "dspk";
					assigned-clocks = <&bpmp TEGRA234_CLK_DSPK1>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <12288000>;
					sound-name-prefix = "DSPK1";
					status = "disabled";
				};

				tegra_dspk2: dspk@2905100 {
					compatible = "nvidia,tegra234-dspk",
						     "nvidia,tegra186-dspk";
					reg = <0x2905100 0x100>;
					clocks = <&bpmp TEGRA234_CLK_DSPK2>;
					clock-names = "dspk";
					assigned-clocks = <&bpmp TEGRA234_CLK_DSPK2>;
					assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
					assigned-clock-rates = <12288000>;
					sound-name-prefix = "DSPK2";
					status = "disabled";
				};

				tegra_mvc1: mvc@290a000 {
					compatible = "nvidia,tegra234-mvc",
						     "nvidia,tegra210-mvc";
					reg = <0x290a000 0x200>;
					sound-name-prefix = "MVC1";
					status = "disabled";
				};

				tegra_mvc2: mvc@290a200 {
					compatible = "nvidia,tegra234-mvc",
						     "nvidia,tegra210-mvc";
					reg = <0x290a200 0x200>;
					sound-name-prefix = "MVC2";
					status = "disabled";
				};

				tegra_amixer: amixer@290bb00 {
					compatible = "nvidia,tegra234-amixer",
						     "nvidia,tegra210-amixer";
					reg = <0x290bb00 0x800>;
					sound-name-prefix = "MIXER1";
					status = "disabled";
				};

				tegra_admaif: admaif@290f000 {
					compatible = "nvidia,tegra234-admaif",
						     "nvidia,tegra186-admaif";
					reg = <0x0290f000 0x1000>;
					dmas = <&adma 1>, <&adma 1>,
					       <&adma 2>, <&adma 2>,
					       <&adma 3>, <&adma 3>,
					       <&adma 4>, <&adma 4>,
					       <&adma 5>, <&adma 5>,
					       <&adma 6>, <&adma 6>,
					       <&adma 7>, <&adma 7>,
					       <&adma 8>, <&adma 8>,
					       <&adma 9>, <&adma 9>,
					       <&adma 10>, <&adma 10>,
					       <&adma 11>, <&adma 11>,
					       <&adma 12>, <&adma 12>,
					       <&adma 13>, <&adma 13>,
					       <&adma 14>, <&adma 14>,
					       <&adma 15>, <&adma 15>,
					       <&adma 16>, <&adma 16>,
					       <&adma 17>, <&adma 17>,
					       <&adma 18>, <&adma 18>,
					       <&adma 19>, <&adma 19>,
					       <&adma 20>, <&adma 20>;
					dma-names = "rx1", "tx1",
						    "rx2", "tx2",
						    "rx3", "tx3",
						    "rx4", "tx4",
						    "rx5", "tx5",
						    "rx6", "tx6",
						    "rx7", "tx7",
						    "rx8", "tx8",
						    "rx9", "tx9",
						    "rx10", "tx10",
						    "rx11", "tx11",
						    "rx12", "tx12",
						    "rx13", "tx13",
						    "rx14", "tx14",
						    "rx15", "tx15",
						    "rx16", "tx16",
						    "rx17", "tx17",
						    "rx18", "tx18",
						    "rx19", "tx19",
						    "rx20", "tx20";
					interconnects = <&mc TEGRA234_MEMORY_CLIENT_APEDMAR &emc>,
							<&mc TEGRA234_MEMORY_CLIENT_APEDMAW &emc>;
					interconnect-names = "dma-mem", "write";
					iommus = <&smmu_niso0 TEGRA234_SID_APE>;
					status = "disabled";
				};
			};

			adma: dma-controller@2930000 {
				compatible = "nvidia,tegra234-adma",
					     "nvidia,tegra186-adma";
				reg = <0x02930000 0x20000>;
				interrupt-parent = <&agic>;
				interrupts =  <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
					      <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
				#dma-cells = <1>;
				clocks = <&bpmp TEGRA234_CLK_AHUB>;
				clock-names = "d_audio";
				status = "disabled";
			};

			agic: interrupt-controller@2a40000 {
				compatible = "nvidia,tegra234-agic",
					     "nvidia,tegra210-agic";
				#interrupt-cells = <3>;
				interrupt-controller;
				reg = <0x02a41000 0x1000>,
				      <0x02a42000 0x2000>;
				interrupts = <GIC_SPI 145
					      (GIC_CPU_MASK_SIMPLE(4) |
					       IRQ_TYPE_LEVEL_HIGH)>;
				clocks = <&bpmp TEGRA234_CLK_APE>;
				clock-names = "clk";
				status = "disabled";
			};
		};

		misc@100000 {
			compatible = "nvidia,tegra234-misc";
			reg = <0x00100000 0xf000>,