On i.MX8MQ EVK 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 v6: (after Shawn's comments)
- rebased on latest Shawn's for-next branch
- added new lines between properties and child nodes
- added new lines between child nodes
- keep pinctrl nodes sorted
- added reviewed by after SoBs in commit message
Changes since v5:
- remove clocks and clock-names properties from wm8524
code node as they are not used.
Changes since v4 (after Fabio's review)
- removed mclk0 from sai2 node because it is not yet supported
by SAI driver
- s/audio-codec-0/audio-codec
- squashed patches 4 and 5
Changes since v3:
- use "arm64: dts: imx8mq-evk" prefix for patches specific to
8MQ-EVK
- squash together patches for setting up SAI (previous 3/5 and
4/5)
- add back and document "fsl, imx8mq-sdma" compatbile string
Changes since v2:
- s/QM/MQ after Chris comments
Changes since v1:
- added cover letter
- remove "fsl,imx8mq-sdma" compatible for sdma.
Daniel Baluta (4):
arm64: dts: imx8mq: Add SDMA nodes
bindings: fsl-imx-sdma: Document fsl,imx8mq-sdma compatbile string
arm64: dts: imx8mq: Add SAI2 node
arm64: dts: imx8mq-evk: Enable audio codec wm8524
.../devicetree/bindings/dma/fsl-imx-sdma.txt | 1 +
arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 48 +++++++++++++++++++
arch/arm64/boot/dts/freescale/imx8mq.dtsi | 37 ++++++++++++++
3 files changed, 86 insertions(+)
--
2.17.1
SDMA1 is part of AIPS-3 region and SDMA2 is part
of AIPS-1 region.
Signed-off-by: Anson Huang <[email protected]>
Signed-off-by: Daniel Baluta <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
---
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 32a02027df92..7a62413bc1cd 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -251,6 +251,17 @@
status = "disabled";
};
+ sdma2: sdma@302c0000 {
+ compatible = "fsl,imx8mq-sdma","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>;
@@ -600,6 +611,17 @@
status = "disabled";
};
+ sdma1: sdma@30bd0000 {
+ compatible = "fsl, imx8mq-sdma","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
SAI2 is part of AIPS-3 memory region.
Signed-off-by: Daniel Baluta <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
---
arch/arm64/boot/dts/freescale/imx8mq.dtsi | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
index 7a62413bc1cd..87faf9d2f65a 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -514,6 +514,21 @@
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_SAI2_ROOT>,
+ <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_CLK_DUMMY>;
+ clock-names = "bus", "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
The main Audio DAC used on the EVK board is wm8524
The EVK provides the MCLK to wm8524.
Digital interface is SAI2 which includes three signals:
SYNC_CLK, BCLK and DACDAT.
This patch sets:
* SAI2 pinctrl configuration
* clock hierarchy
* wm8524 codec
Then uses simple-card machine driver to connect them
into a sound card.
Signed-off-by: Daniel Baluta <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
---
arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 48 ++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
index afea110b70a3..304c28034ddf 100644
--- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
@@ -43,6 +43,35 @@
states = <1000000 0x0
900000 0x1>;
};
+
+ wm8524: audio-codec {
+ #sound-dai-cells = <0>;
+ compatible = "wlf,wm8524";
+ 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>;
+ };
+ };
};
&A53_0 {
@@ -80,6 +109,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";
@@ -283,6 +321,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_uart1: uart1grp {
fsl,pins = <
MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x49
--
2.17.1
Add imx8mq sdma support.
Signed-off-by: Daniel Baluta <[email protected]>
Reviewed-by: Rob Herring <[email protected]>
Reviewed-by: Fabio Estevam <[email protected]>
---
Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
index 3c9a57a8443b..9d8bbac27d8b 100644
--- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt
@@ -9,6 +9,7 @@ Required properties:
"fsl,imx53-sdma"
"fsl,imx6q-sdma"
"fsl,imx7d-sdma"
+ "fsl,imx8mq-sdma"
The -to variants should be preferred since they allow to determine the
correct ROM script addresses needed for the driver to work without additional
firmware.
--
2.17.1
On Tue, Mar 19, 2019 at 05:48:35PM +0000, Daniel Baluta wrote:
> On i.MX8MQ EVK 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 v6: (after Shawn's comments)
> - rebased on latest Shawn's for-next branch
> - added new lines between properties and child nodes
> - added new lines between child nodes
> - keep pinctrl nodes sorted
> - added reviewed by after SoBs in commit message
>
> Changes since v5:
> - remove clocks and clock-names properties from wm8524
> code node as they are not used.
>
> Changes since v4 (after Fabio's review)
> - removed mclk0 from sai2 node because it is not yet supported
> by SAI driver
> - s/audio-codec-0/audio-codec
> - squashed patches 4 and 5
>
> Changes since v3:
> - use "arm64: dts: imx8mq-evk" prefix for patches specific to
> 8MQ-EVK
> - squash together patches for setting up SAI (previous 3/5 and
> 4/5)
> - add back and document "fsl, imx8mq-sdma" compatbile string
>
> Changes since v2:
> - s/QM/MQ after Chris comments
>
> Changes since v1:
> - added cover letter
> - remove "fsl,imx8mq-sdma" compatible for sdma.
>
> Daniel Baluta (4):
> arm64: dts: imx8mq: Add SDMA nodes
> bindings: fsl-imx-sdma: Document fsl,imx8mq-sdma compatbile string
> arm64: dts: imx8mq: Add SAI2 node
> arm64: dts: imx8mq-evk: Enable audio codec wm8524
Applied all, thanks.