2019-02-25 13:29:53

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ

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



2019-02-25 13:27:25

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 1/5 v2] arm64: dts: imx8mq: Add SDMA nodes

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

Signed-off-by: Anson Huang <[email protected]>
[initial submit in i.MX internal tree]
Signed-off-by: Daniel Baluta <[email protected]>
[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


2019-02-25 13:27:49

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 5/5 v2] arm64: dts: imx8qm: Enable wm8524 codec

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

Signed-off-by: Daniel Baluta <[email protected]>
---
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


2019-02-25 13:28:16

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 4/5 v2] arm64: dts: imx8qm: Enable SAI2 for wm8524 codec

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 <[email protected]>
---
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


2019-02-25 13:28:48

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 2/5 v2] arm64: dts: imx8mq: Add SAI2 node

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 <[email protected]>
---
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


2019-02-25 13:29:14

by Daniel Baluta

[permalink] [raw]
Subject: [PATCH 3/5 v2] arm64: dts: imx8qm: Add SAI pinctrl configuration

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

Signed-off-by: Daniel Baluta <[email protected]>
---
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


2019-02-25 14:03:18

by Chris Spencer

[permalink] [raw]
Subject: Re: [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ

Hi Daniel,

On Mon, 25 Feb 2019 at 13:26, Daniel Baluta <[email protected]> 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

2019-02-25 14:15:31

by Daniel Baluta

[permalink] [raw]
Subject: Re: [PATCH 0/5 v2] Enable wm8524 on i.MX8MQ

On Mon, Feb 25, 2019 at 4:02 PM Chris Spencer <[email protected]> wrote:
>
> Hi Daniel,
>
> On Mon, 25 Feb 2019 at 13:26, Daniel Baluta <[email protected]> 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!