linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ
@ 2019-02-25 13:26 Daniel Baluta
  2019-02-25 13:26 ` [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes Daniel Baluta
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta

On i.MX8MQ we can start the party using the wm8524 codec
which gets it's data through the SAI2 interface.

In order to make it work this patch series enables the SDMA nodes,
sets the correct pinctrl configuration and uses the simple card
machine driver to put everything together.

Changes since v1:
	- added cover letter
	- remove "fsl,imx8mq-sdma" compatible for sdma.

Daniel Baluta (5):
  arm64: dts: imx8mq: Add SDMA nodes
  arm64: dts: imx8mq: Add SAI2 node
  arm64: dts: imx8qm: Add SAI pinctrl configuration
  arm64: dts: imx8qm: Enable SAI2 for wm8524 codec
  arm64: dts: imx8qm: Enable wm8524 codec

 arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 48 ++++++++++++++++++++
 arch/arm64/boot/dts/freescale/imx8mq.dtsi    | 38 ++++++++++++++++
 2 files changed, 86 insertions(+)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
@ 2019-02-25 13:26 ` Daniel Baluta
  2019-02-25 13:26 ` [PATCH 2/5 v2] arm64: dts: imx8mq: Add SAI2 node Daniel Baluta
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta, Anson Huang

SDMA1 is part of AIPS-3 region and SDMA2 is part
of AIPS-1 region.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
[initial submit in i.MX internal tree]
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
[adaptation for linux-next]
---
 arch/arm64/boot/dts/freescale/imx8mq.dtsi | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
index 9155bd4784eb..8cafec17726b 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -234,6 +234,17 @@
 				status = "disabled";
 			};
 
+			sdma2: sdma@302c0000 {
+				compatible = "fsl,imx7d-sdma";
+				reg = <0x302c0000 0x10000>;
+				interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clk IMX8MQ_CLK_SDMA2_ROOT>,
+					 <&clk IMX8MQ_CLK_SDMA2_ROOT>;
+				clock-names = "ipg", "ahb";
+				#dma-cells = <3>;
+				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
+			};
+
 			iomuxc: iomuxc@30330000 {
 				compatible = "fsl,imx8mq-iomuxc";
 				reg = <0x30330000 0x10000>;
@@ -575,6 +586,17 @@
 				status = "disabled";
 			};
 
+			sdma1: sdma@30bd0000 {
+				compatible = "fsl,imx7d-sdma";
+				reg = <0x30bd0000 0x10000>;
+				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clk IMX8MQ_CLK_SDMA1_ROOT>,
+					 <&clk IMX8MQ_CLK_SDMA1_ROOT>;
+				clock-names = "ipg", "ahb";
+				#dma-cells = <3>;
+				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
+			};
+
 			fec1: ethernet@30be0000 {
 				compatible = "fsl,imx8mq-fec", "fsl,imx6sx-fec";
 				reg = <0x30be0000 0x10000>;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/5 v2] arm64: dts: imx8mq: Add SAI2 node
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
  2019-02-25 13:26 ` [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes Daniel Baluta
@ 2019-02-25 13:26 ` Daniel Baluta
  2019-02-25 13:26 ` [PATCH 3/5 v2] arm64: dts: imx8qm: Add SAI pinctrl configuration Daniel Baluta
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta

SAI2 is part of AIPS-3 memory region and it's the DAI through
which the wm8524 codec gets its data.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mq.dtsi | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
index 8cafec17726b..6fe5798afd2d 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -489,6 +489,22 @@
 				status = "disabled";
 			};
 
+			sai2: sai@308b0000 {
+				#sound-dai-cells = <0>;
+				compatible = "fsl,imx8mq-sai",
+					     "fsl,imx6sx-sai";
+				reg = <0x308b0000 0x10000>;
+				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clk IMX8MQ_CLK_SAI2_IPG>,
+					 <&clk IMX8MQ_CLK_DUMMY>,
+					 <&clk IMX8MQ_CLK_SAI2_ROOT>,
+					 <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
+				clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+				dmas = <&sdma1 10 24 0>, <&sdma1 11 24 0>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
 			i2c1: i2c@30a20000 {
 				compatible = "fsl,imx8mq-i2c", "fsl,imx21-i2c";
 				reg = <0x30a20000 0x10000>;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/5 v2] arm64: dts: imx8qm: Add SAI pinctrl configuration
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
  2019-02-25 13:26 ` [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes Daniel Baluta
  2019-02-25 13:26 ` [PATCH 2/5 v2] arm64: dts: imx8mq: Add SAI2 node Daniel Baluta
@ 2019-02-25 13:26 ` Daniel Baluta
  2019-02-25 13:26 ` [PATCH 4/5 v2] arm64: dts: imx8qm: Enable SAI2 for wm8524 codec Daniel Baluta
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta

This sets the pin configuration for SAI pins BLCK/MCLK/FSYNC/DATA.
GPIO_01 is used for mute.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
index 54737bf1772f..d21ee2a5312c 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
@@ -223,6 +223,16 @@
 		>;
 	};
 
+	pinctrl_sai2: sai2grp {
+		fsl,pins = <
+			MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC     0xd6
+			MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK      0xd6
+			MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK        0xd6
+			MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0    0xd6
+			MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8       0xd6
+		>;
+	};
+
 	pinctrl_i2c1: i2c1grp {
 		fsl,pins = <
 			MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL			0x4000007f
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/5 v2] arm64: dts: imx8qm: Enable SAI2 for wm8524 codec
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
                   ` (2 preceding siblings ...)
  2019-02-25 13:26 ` [PATCH 3/5 v2] arm64: dts: imx8qm: Add SAI pinctrl configuration Daniel Baluta
@ 2019-02-25 13:26 ` Daniel Baluta
  2019-02-25 13:26 ` [PATCH 5/5 v2] arm64: dts: imx8qm: Enable " Daniel Baluta
  2019-02-25 14:02 ` [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Chris Spencer
  5 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta

This enables SAI2 digital audio interface to be used with
wm8524 codec.

wm8524 works only in slave mode, so we make sure that IMX8MQ_CLK_SAI2
has an appropriate frequency in order to easily derive rates divisible
with 8000.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
index d21ee2a5312c..58de4a3d6029 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
@@ -52,6 +52,15 @@
 	};
 };
 
+&sai2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_sai2>;
+	assigned-clocks = <&clk IMX8MQ_CLK_SAI2>;
+	assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
+	assigned-clock-rates = <24576000>;
+	status = "okay";
+};
+
 &i2c1 {
 	clock-frequency = <100000>;
 	pinctrl-names = "default";
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/5 v2] arm64: dts: imx8qm: Enable wm8524 codec
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
                   ` (3 preceding siblings ...)
  2019-02-25 13:26 ` [PATCH 4/5 v2] arm64: dts: imx8qm: Enable SAI2 for wm8524 codec Daniel Baluta
@ 2019-02-25 13:26 ` Daniel Baluta
  2019-02-25 14:02 ` [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Chris Spencer
  5 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 13:26 UTC (permalink / raw)
  To: shawnguo
  Cc: S.j. Wang, angus, robh+dt, mark.rutland, s.hauer, kernel,
	festevam, l.stach, Abel Vesa, ccaione, baruch, agx, devicetree,
	linux-arm-kernel, linux-kernel, dl-linux-imx, Aisheng Dong,
	Daniel Baluta

This uses simple-audio-card machine driver adding 1 CPU DAI
and 1 Codec DAI.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 29 ++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
index 58de4a3d6029..77f590c13ee0 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
@@ -31,6 +31,35 @@
 		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 	};
+
+	wm8524: audio-codec-0 {
+		#sound-dai-cells = <0>;
+		compatible = "wlf,wm8524";
+		clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
+		clock-names = "mclk";
+		wlf,mute-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+	};
+
+	sound-wm8524 {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "wm8524-audio";
+		simple-audio-card,format = "i2s";
+		simple-audio-card,frame-master = <&cpudai>;
+		simple-audio-card,bitclock-master = <&cpudai>;
+		simple-audio-card,widgets =
+			"Line", "Left Line Out Jack",
+			"Line", "Right Line Out Jack";
+		simple-audio-card,routing =
+			"Left Line Out Jack", "LINEVOUTL",
+			"Right Line Out Jack", "LINEVOUTR";
+		cpudai: simple-audio-card,cpu {
+			sound-dai = <&sai2>;
+		};
+		link_codec: simple-audio-card,codec {
+			sound-dai = <&wm8524>;
+			clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
+		};
+	};
 };
 
 &fec1 {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ
  2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
                   ` (4 preceding siblings ...)
  2019-02-25 13:26 ` [PATCH 5/5 v2] arm64: dts: imx8qm: Enable " Daniel Baluta
@ 2019-02-25 14:02 ` Chris Spencer
  2019-02-25 14:12   ` Daniel Baluta
  5 siblings, 1 reply; 8+ messages in thread
From: Chris Spencer @ 2019-02-25 14:02 UTC (permalink / raw)
  To: Daniel Baluta
  Cc: shawnguo, mark.rutland, devicetree, baruch, Abel Vesa, ccaione,
	S.j. Wang, angus, linux-kernel, robh+dt, dl-linux-imx, kernel,
	Aisheng Dong, agx, festevam, s.hauer, linux-arm-kernel, l.stach

Hi Daniel,

On Mon, 25 Feb 2019 at 13:26, Daniel Baluta <daniel.baluta@nxp.com> wrote:
>   arm64: dts: imx8mq: Add SDMA nodes
>   arm64: dts: imx8mq: Add SAI2 node
>   arm64: dts: imx8qm: Add SAI pinctrl configuration
>   arm64: dts: imx8qm: Enable SAI2 for wm8524 codec
>   arm64: dts: imx8qm: Enable wm8524 codec

imx8qm ought to be imx8mq here by the looks of it.

Thanks,
Chris

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ
  2019-02-25 14:02 ` [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Chris Spencer
@ 2019-02-25 14:12   ` Daniel Baluta
  0 siblings, 0 replies; 8+ messages in thread
From: Daniel Baluta @ 2019-02-25 14:12 UTC (permalink / raw)
  To: Chris Spencer
  Cc: Daniel Baluta, shawnguo, mark.rutland, devicetree, baruch,
	Abel Vesa, ccaione, S.j. Wang, angus, linux-kernel, robh+dt,
	dl-linux-imx, kernel, Aisheng Dong, agx, festevam, s.hauer,
	linux-arm-kernel, l.stach

On Mon, Feb 25, 2019 at 4:02 PM Chris Spencer <spencercw@gmail.com> wrote:
>
> Hi Daniel,
>
> On Mon, 25 Feb 2019 at 13:26, Daniel Baluta <daniel.baluta@nxp.com> wrote:
> >   arm64: dts: imx8mq: Add SDMA nodes
> >   arm64: dts: imx8mq: Add SAI2 node
> >   arm64: dts: imx8qm: Add SAI pinctrl configuration
> >   arm64: dts: imx8qm: Enable SAI2 for wm8524 codec
> >   arm64: dts: imx8qm: Enable wm8524 codec
>
> imx8qm ought to be imx8mq here by the looks of it.

Hi Chris,

You are right :), will fix with v3. Will send v3 tomorrow to allow some
time for more feedback.

Thanks!

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-02-25 14:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-25 13:26 [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Daniel Baluta
2019-02-25 13:26 ` [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes Daniel Baluta
2019-02-25 13:26 ` [PATCH 2/5 v2] arm64: dts: imx8mq: Add SAI2 node Daniel Baluta
2019-02-25 13:26 ` [PATCH 3/5 v2] arm64: dts: imx8qm: Add SAI pinctrl configuration Daniel Baluta
2019-02-25 13:26 ` [PATCH 4/5 v2] arm64: dts: imx8qm: Enable SAI2 for wm8524 codec Daniel Baluta
2019-02-25 13:26 ` [PATCH 5/5 v2] arm64: dts: imx8qm: Enable " Daniel Baluta
2019-02-25 14:02 ` [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ Chris Spencer
2019-02-25 14:12   ` Daniel Baluta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).