[PATCH] Support for MAX98090/91 codec in iMX8MM evk
From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Sat, 7 Jan 2023 17:08:28 +0530 Subject: [PATCH] Support for MAX98090/91 codec in iMX8MM evk
- Adding node for MAX98090/91 in dts imx8mm-evk.dtsi - Adding tristate option in <sound/soc/codecs/Kconfig>
Signed-off-by: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi index e0b604ac0da4..58ff63cbc930 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi @@ -132,6 +132,32 @@ simple-audio-card,codec { clocks = <&clk IMX8MM_CLK_SAI3_ROOT>; }; }; + + sound-max98090 { + compatible = "simple-audio-card"; + simple-audio-card,name = "max98090-audio"; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&cpudai>; + simple-audio-card,bitclock-master = <&cpudai>; + simple-audio-card,widgets = "Speakers", "Speakers"; + simple-audio-card,routing = + "Speakers", "SPKR", + "Speakers", "SPKL", + "IN1", "MICBIAS", + "MIC1","IN1", + "MIC2","IN1"; + + cpudai: simple-audio-card,cpu { + sound-dai = <&sai5>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <32>; + }; + + simple-audio-card,codec { + sound-dai = <&max98090>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + }; + }; };
&A53_0 { @@ -339,6 +365,14 @@ &i2c3 { pinctrl-0 = <&pinctrl_i2c3>; status = "okay";
+ max98090: max98090@10 { + #sound-dai-cells = <0>; + compatible = "maxim,max98090"; + reg = <0x10>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + clock-names = "mclk"; + }; + pca6416: gpio@20 { compatible = "ti,tca6416"; reg = <0x20>; @@ -391,6 +425,20 @@ &sai3 { status = "okay"; };
+&sai5 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai5>; + assigned-clocks = <&clk IMX8MM_CLK_SAI5>; + assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + clocks = <&clk IMX8MM_CLK_SAI5_IPG>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_SAI5_ROOT>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_AUDIO_PLL1_OUT>, + <&clk IMX8MM_AUDIO_PLL2_OUT>; + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k"; + status = "okay"; +}; + &snvs_pwrkey { status = "okay"; }; @@ -552,6 +600,16 @@ MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6 >; };
+ pinctrl_sai5: sai5grp { + fsl,pins = < + MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC 0xd6 + MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0 0xd6 + MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0 0xd6 + >; + } + pinctrl_typec1: typec1grp { fsl,pins = < MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11 0x159 diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 0f9d71490075..efef2df362a4 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -1009,7 +1009,7 @@ config SND_SOC_MAX98088 depends on I2C
config SND_SOC_MAX98090 - tristate + tristate "Maxim MAX98090/1, Stereo Audio Codec" depends on I2C
config SND_SOC_MAX98095 -- 2.25.1
On 11/01/2023 08:16, Hardevsinh Palaniya wrote:
From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Sat, 7 Jan 2023 17:08:28 +0530 Subject: [PATCH] Support for MAX98090/91 codec in iMX8MM evk
Use subject prefixes matching the subsystem (which you can get for example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching).
- Adding node for MAX98090/91 in dts imx8mm-evk.dtsi
- Adding tristate option in <sound/soc/codecs/Kconfig>
Signed-off-by: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io
Your CC list insane. Use get_maintainers.pl.
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi index e0b604ac0da4..58ff63cbc930 100644 --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi @@ -132,6 +132,32 @@ simple-audio-card,codec { clocks = <&clk IMX8MM_CLK_SAI3_ROOT>; }; };
+ sound-max98090 { + compatible = "simple-audio-card"; + simple-audio-card,name = "max98090-audio"; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&cpudai>; + simple-audio-card,bitclock-master = <&cpudai>; + simple-audio-card,widgets = "Speakers", "Speakers"; + simple-audio-card,routing = + "Speakers", "SPKR", + "Speakers", "SPKL", + "IN1", "MICBIAS", + "MIC1","IN1", + "MIC2","IN1";
+ cpudai: simple-audio-card,cpu { + sound-dai = <&sai5>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <32>; + };
+ simple-audio-card,codec { + sound-dai = <&max98090>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + }; + }; };
&A53_0 { @@ -339,6 +365,14 @@ &i2c3 { pinctrl-0 = <&pinctrl_i2c3>; status = "okay";
+ max98090: max98090@10 {
Node names should be generic. https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetre...
+ #sound-dai-cells = <0>; + compatible = "maxim,max98090";
compatible is first, then reg.
+ reg = <0x10>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + clock-names = "mclk"; + };
pca6416: gpio@20 { compatible = "ti,tca6416"; reg = <0x20>; @@ -391,6 +425,20 @@ &sai3 { status = "okay"; };
+&sai5 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai5>; + assigned-clocks = <&clk IMX8MM_CLK_SAI5>; + assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + clocks = <&clk IMX8MM_CLK_SAI5_IPG>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_SAI5_ROOT>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_AUDIO_PLL1_OUT>, + <&clk IMX8MM_AUDIO_PLL2_OUT>; + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k"; + status = "okay"; +};
&snvs_pwrkey { status = "okay"; }; @@ -552,6 +600,16 @@ MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6 >; };
+ pinctrl_sai5: sai5grp { + fsl,pins = < + MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC 0xd6 + MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0 0xd6 + MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0 0xd6 + >; + }
pinctrl_typec1: typec1grp { fsl,pins = < MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11 0x159 diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 0f9d71490075..efef2df362a4 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -1009,7 +1009,7 @@ config SND_SOC_MAX98088 depends on I2C
config SND_SOC_MAX98090 - tristate + tristate "Maxim MAX98090/1, Stereo Audio Codec"
No, code cannot be mixed with DTS. This is unrelated and not explained in commit msg.
depends on I2C
config SND_SOC_MAX98095
2.25.1
Best regards, Krzysztof
Hi Hardevsinh,
Does your imx8mm-evk have a max98090 codec? That's very strange because I thought that EVK has wm8524?
On Wed, Jan 11, 2023 at 9:31 AM Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io wrote:
From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Sat, 7 Jan 2023 17:08:28 +0530 Subject: [PATCH] Support for MAX98090/91 codec in iMX8MM evk
- Adding node for MAX98090/91 in dts imx8mm-evk.dtsi
- Adding tristate option in <sound/soc/codecs/Kconfig>
This should come as a separate patch.
Hi Daniel,
I have added support for the external codec MAX98091 with I.MX8MM-EVK.\
[photograph]
Hardevsinh Palaniya
Embedded Engineering | Product Engineering | Digital Engineering
[linkedin icon]https://www.linkedin.com/company/silicon-signals-pvt-ltd
M +91 88666 21333 E hardevsinh.palaniya@siliconsignals.io Silicon Signals 616, Anushri Accolade 2, Science City Rd, Sola, Ahmedabad - 380060 www.sisignals.comhttp://www.sisignals.com/ ________________________________ From: Daniel Baluta daniel.baluta@gmail.com Sent: Wednesday, January 11, 2023 2:35 PM To: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Cc: robh+dt@kernel.org robh+dt@kernel.org; krzysztof.kozlowski+dt@linaro.org krzysztof.kozlowski+dt@linaro.org; shawnguo@kernel.org shawnguo@kernel.org; s.hauer@pengutronix.de s.hauer@pengutronix.de; kernel@pengutronix.de kernel@pengutronix.de; festevam@gmail.com festevam@gmail.com; linux-imx@nxp.com linux-imx@nxp.com; lgirdwood@gmail.com lgirdwood@gmail.com; broonie@kernel.org broonie@kernel.org; perex@perex.cz perex@perex.cz; tiwai@suse.com tiwai@suse.com; peng.fan@nxp.com peng.fan@nxp.com; m.felsch@pengutronix.de m.felsch@pengutronix.de; shengjiu.wang@nxp.com shengjiu.wang@nxp.com; Markus.Niebel@ew.tq-group.com Markus.Niebel@ew.tq-group.com; hongxing.zhu@nxp.com hongxing.zhu@nxp.com; tommaso.merciai@amarulasolutions.com tommaso.merciai@amarulasolutions.com; jun.li@nxp.com jun.li@nxp.com; ckeepax@opensource.cirrus.com ckeepax@opensource.cirrus.com; rf@opensource.cirrus.com rf@opensource.cirrus.com; povik+lin@cutebit.org povik+lin@cutebit.org; pierre-louis.bossart@linux.intel.com pierre-louis.bossart@linux.intel.com; james.schulman@cirrus.com james.schulman@cirrus.com; flatmax@flatmax.com flatmax@flatmax.com; srinivas.kandagatla@linaro.org srinivas.kandagatla@linaro.org; ryan.lee.analog@gmail.com ryan.lee.analog@gmail.com; devicetree@vger.kernel.org devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org linux-kernel@vger.kernel.org; alsa-devel@alsa-project.org alsa-devel@alsa-project.org Subject: Re: [PATCH] Support for MAX98090/91 codec in iMX8MM evk
Hi Hardevsinh,
Does your imx8mm-evk have a max98090 codec? That's very strange because I thought that EVK has wm8524?
On Wed, Jan 11, 2023 at 9:31 AM Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io wrote:
From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Sat, 7 Jan 2023 17:08:28 +0530 Subject: [PATCH] Support for MAX98090/91 codec in iMX8MM evk
- Adding node for MAX98090/91 in dts imx8mm-evk.dtsi
- Adding tristate option in <sound/soc/codecs/Kconfig>
This should come as a separate patch.
I have added support for the external codec MAX98091 with I.MX8MM-EVK.
Please fix your email client to start sending email in text format only.
Now, going back to the matter at hand.
I do think that for an external codec we should find a smarter way of enabling it.
What would happen if you enable MAX codec in the dts but expander board is not plugged in?
Maybe create a separate dts which includes imx8mm-evk.dtsi?
From d2001cdbc2fda3345af307b4cf3d0f2e53d80c35 Mon Sep 17 00:00:00 2001
From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Fri, 13 Jan 2023 11:01:22 +0530 Subject: [PATCH] Add dts to support MAX98090/91 with i.MX8MM-evk
- Add sound-max98090 node to support external codec MAX98090/91 - Use i2c3 for i2c communicate with codec - Use sai5 for i2s communication
Signed-off-by: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts new file mode 100644 index 000000000000..d053c586514a --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts @@ -0,0 +1,65 @@ +#include "imx8mm-evk.dtsi" + +/ { + sound-max98090 { + compatible = "simple-audio-card"; + simple-audio-card,name = "max98090-audio"; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&cpudai>; + simple-audio-card,bitclock-master = <&cpudai>; + simple-audio-card,widgets = "Speakers", "Speakers"; + simple-audio-card,routing = + "Speakers", "SPKR", + "Speakers", "SPKL", + "IN1", "MICBIAS", + "MIC1","IN1", + "MIC2","IN1"; + + cpudai: simple-audio-card,cpu { + sound-dai = <&sai5>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <32>; + }; + + simple-audio-card,codec { + sound-dai = <&max98090>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + }; + }; +} + +&i2c3 { + max98090: audio-codec@10 { + compatible = "maxim,max98090","maxim,max98091"; + #sound-dai-ceddlls = <0>; + reg = <0x10>; + clocks = <&clk IMX8MM_CLK_SAI5_ROOT>; + clock-names = "mclk"; + }; +} + +&sai5 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai5>; + assigned-clocks = <&clk IMX8MM_CLK_SAI5>; + assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>; + assigned-clock-rates = <24576000>; + clocks = <&clk IMX8MM_CLK_SAI5_IPG>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_SAI5_ROOT>, <&clk IMX8MM_CLK_DUMMY>, + <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_AUDIO_PLL1_OUT>, + <&clk IMX8MM_AUDIO_PLL2_OUT>; + clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k"; + status = "okay"; +}; + +&iomuxc { + pinctrl_sai5: sai5grp { + fsl,pins = < + MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK 0xd6 + MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC 0xd6 + MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0 0xd6 + MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0 0xd6 + >; + } +}
On 13/01/2023 06:50, Hardevsinh Palaniya wrote:
From d2001cdbc2fda3345af307b4cf3d0f2e53d80c35 Mon Sep 17 00:00:00 2001 From: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io Date: Fri, 13 Jan 2023 11:01:22 +0530
That's still not correct patch format.
Subject: [PATCH] Add dts to support MAX98090/91 with i.MX8MM-evk
That's still not correct subject. You already got this comment and ignored it.
Your recipient list is enormous. Use get_maintainers.pl. You already got this comment and ignored it.
If you intend to ignore all the comments, then this is NAK.
This is v2? Patch subject should be marked with it. You need to add changelog.
- Add sound-max98090 node to support external codec MAX98090/91
Why? Explain what you want to achieve and why do you do it.
- Use i2c3 for i2c communicate with codec
- Use sai5 for i2s communication
Signed-off-by: Hardevsinh Palaniya hardevsinh.palaniya@siliconsignals.io
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts b/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts new file mode 100644 index 000000000000..d053c586514a --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk-max98090-91.dts
That's a dead code without Makefile.
Missing bindings.
@@ -0,0 +1,65 @@ +#include "imx8mm-evk.dtsi"
+/ {
- sound-max98090 {
compatible = "simple-audio-card";
simple-audio-card,name = "max98090-audio";
simple-audio-card,format = "i2s";
simple-audio-card,frame-master = <&cpudai>;
simple-audio-card,bitclock-master = <&cpudai>;
simple-audio-card,widgets = "Speakers", "Speakers";
simple-audio-card,routing =
"Speakers", "SPKR",
"Speakers", "SPKL",
"IN1", "MICBIAS",
"MIC1","IN1",
"MIC2","IN1";
cpudai: simple-audio-card,cpu {
sound-dai = <&sai5>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <32>;
};
simple-audio-card,codec {
sound-dai = <&max98090>;
clocks = <&clk IMX8MM_CLK_SAI5_ROOT>;
};
- };
+}
+&i2c3 {
- max98090: audio-codec@10 {
compatible = "maxim,max98090","maxim,max98091";
You either ignored the comment or misread it. Go back to previous code.
#sound-dai-ceddlls = <0>;
This is no way working... Test your code against bindings. Please run `make dtbs_check` (see Documentation/devicetree/bindings/writing-schema.rst for instructions).
Best regards, Krzysztof
participants (3)
-
Daniel Baluta
-
Hardevsinh Palaniya
-
Krzysztof Kozlowski