diff mbox series

Support for MAX98090/91 codec in iMX8MM evk

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

Commit Message

Hardevsinh Palaniya Jan. 11, 2023, 7:16 a.m. UTC
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>

--
2.25.1

Comments

Krzysztof Kozlowski Jan. 11, 2023, 8:58 a.m. UTC | #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-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
Daniel Baluta Jan. 11, 2023, 9:05 a.m. UTC | #2
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.
Hardevsinh Palaniya Jan. 11, 2023, 9:13 a.m. UTC | #3
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/>
Daniel Baluta Jan. 11, 2023, 11:56 a.m. UTC | #4
> 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?
Hardevsinh Palaniya Jan. 13, 2023, 5:50 a.m. UTC | #5
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
+		>;
+	}
+}
Krzysztof Kozlowski Jan. 13, 2023, 8:31 a.m. UTC | #6
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 mbox series

Patch

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