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
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.
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
© 2016 - 2026 Red Hat, Inc.