Commit b86c3afa authored by Marek Vasut's avatar Marek Vasut Committed by Shawn Guo
Browse files

arm64: dts: imx8mp: Add SAI, SDMA, AudioMIX



Add all SAI nodes, SDMA2 and SDMA3 nodes, and AudioMIX node. This is
needed to get audio operational on i.MX8MP .

Acked-by: default avatarPeng Fan <peng.fan@nxp.com>
Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
Reviewed-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: default avatarMarco Felsch <m.felsch@pengutronix.de>
Tested-by: Adam Ford <aford173@gmail.com> #imx8mp-beacon-kit
Tested-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
Tested-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
Tested-by: default avatarRichard Leitner <richard.leitner@skidata.com>
Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 6bc3ea47
Loading
Loading
Loading
Loading
+158 −0
Original line number Diff line number Diff line
@@ -595,6 +595,13 @@ pgc_usb2_phy: power-domain@3 {
						reg = <IMX8MP_POWER_DOMAIN_USB2_PHY>;
					};

					pgc_audio: power-domain@5 {
						#power-domain-cells = <0>;
						reg = <IMX8MP_POWER_DOMAIN_AUDIOMIX>;
						clocks = <&clk IMX8MP_CLK_AUDIO_ROOT>,
							 <&clk IMX8MP_CLK_AUDIO_AXI>;
					};

					pgc_gpu2d: power-domain@6 {
						#power-domain-cells = <0>;
						reg = <IMX8MP_POWER_DOMAIN_GPU2D>;
@@ -1167,6 +1174,157 @@ opp-1000000000 {
			};
		};

		aips5: bus@30c00000 {
			compatible = "fsl,aips-bus", "simple-bus";
			reg = <0x30c00000 0x400000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			spba-bus@30c00000 {
				compatible = "fsl,spba-bus", "simple-bus";
				reg = <0x30c00000 0x100000>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges;

				sai1: sai@30c10000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c10000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 0 2 0>, <&sdma2 1 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};

				sai2: sai@30c20000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c20000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI2_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 2 2 0>, <&sdma2 3 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};

				sai3: sai@30c30000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c30000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 4 2 0>, <&sdma2 5 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};

				sai5: sai@30c50000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c50000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 8 2 0>, <&sdma2 9 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};

				sai6: sai@30c60000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c60000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI6_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI6_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI6_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI6_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 10 2 0>, <&sdma2 11 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};

				sai7: sai@30c80000 {
					compatible = "fsl,imx8mp-sai", "fsl,imx8mq-sai";
					reg = <0x30c80000 0x10000>;
					#sound-dai-cells = <0>;
					clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI7_IPG>,
						 <&clk IMX8MP_CLK_DUMMY>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI7_MCLK1>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI7_MCLK2>,
						 <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI7_MCLK3>;
					clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
					dmas = <&sdma2 12 2 0>, <&sdma2 13 2 0>;
					dma-names = "rx", "tx";
					interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
					status = "disabled";
				};
			};

			sdma3: dma-controller@30e00000 {
				compatible = "fsl,imx8mp-sdma", "fsl,imx8mq-sdma";
				reg = <0x30e00000 0x10000>;
				#dma-cells = <3>;
				clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SDMA3_ROOT>,
					 <&clk IMX8MP_CLK_AUDIO_ROOT>;
				clock-names = "ipg", "ahb";
				interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
			};

			sdma2: dma-controller@30e10000 {
				compatible = "fsl,imx8mp-sdma", "fsl,imx8mq-sdma";
				reg = <0x30e10000 0x10000>;
				#dma-cells = <3>;
				clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SDMA2_ROOT>,
					 <&clk IMX8MP_CLK_AUDIO_ROOT>;
				clock-names = "ipg", "ahb";
				interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
			};

			audio_blk_ctrl: clock-controller@30e20000 {
				compatible = "fsl,imx8mp-audio-blk-ctrl";
				reg = <0x30e20000 0x10000>;
				#clock-cells = <1>;
				clocks = <&clk IMX8MP_CLK_AUDIO_ROOT>,
					 <&clk IMX8MP_CLK_SAI1>,
					 <&clk IMX8MP_CLK_SAI2>,
					 <&clk IMX8MP_CLK_SAI3>,
					 <&clk IMX8MP_CLK_SAI5>,
					 <&clk IMX8MP_CLK_SAI6>,
					 <&clk IMX8MP_CLK_SAI7>;
				clock-names = "ahb",
					      "sai1", "sai2", "sai3",
					      "sai5", "sai6", "sai7";
				power-domains = <&pgc_audio>;
			};
		};

		aips4: bus@32c00000 {
			compatible = "fsl,aips-bus", "simple-bus";
			reg = <0x32c00000 0x400000>;