Message ID | MA0PR01MB7145CB5A2D487FB713CD7C01FFFC9@MA0PR01MB7145.INDPRD01.PROD.OUTLOOK.COM (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support for MAX98090/91 codec in iMX8MM evk | expand |
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-devicetree-basics.html#generic-names-recommendation > + #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.com<http://www.sisignals.com/>
> 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
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