[PATCH v2 0/4] ASoC: fsl_audmix: Support the i.MX952 platform

STALE193d

Revision v2 of 3 in this series.

11 messages, 3 authors, 2026-01-21 · open the first message on its own page

[PATCH v2 0/4] ASoC: fsl_audmix: Support the i.MX952 platform

From: Shengjiu Wang <hidden>
Date: 2026-01-20 03:52:49

Enable AUDMIX on i.MX952 platform, update dt binding document and
driver.

SAI is connected to AUDMIX, and the AUDMIX can be bypassed, so
add 'fsl,sai-amix-mode' property in SAI binding document for this
case.

Changes in v2:
- Move the property to SAI binding document
- The property name is 'fsl,sai-amix-mode'
- Move the code for above property to SAI driver

Shengjiu Wang (4):
  ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform
  ASoC: dt-bindings: fsl,sai: Add AUDMIX mode support on i.MX952
  ASoC: fsl_audmix: Add support for i.MX952 platform
  ASoC: fsl_sai: Add AUDMIX mode support on i.MX952

 .../devicetree/bindings/sound/fsl,audmix.yaml   | 16 ++++++++++++++--
 .../devicetree/bindings/sound/fsl,sai.yaml      | 16 ++++++++++++++++
 include/linux/firmware/imx/sm.h                 |  2 ++
 sound/soc/fsl/fsl_audmix.c                      |  3 +++
 sound/soc/fsl/fsl_sai.c                         | 17 +++++++++++++++++
 5 files changed, 52 insertions(+), 2 deletions(-)

-- 
2.34.1

[PATCH v2 1/4] ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform

From: Shengjiu Wang <hidden>
Date: 2026-01-20 03:52:56

There is no power domain defined on i.MX952, so make power-domains to be
dedicated to i.MX8QM.

Signed-off-by: Shengjiu Wang <redacted>
---
 .../devicetree/bindings/sound/fsl,audmix.yaml    | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/fsl,audmix.yaml b/Documentation/devicetree/bindings/sound/fsl,audmix.yaml
index 3ad197b3c82c..07b9a38761f2 100644
--- a/Documentation/devicetree/bindings/sound/fsl,audmix.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,audmix.yaml
@@ -34,7 +34,9 @@ description: |
 
 properties:
   compatible:
-    const: fsl,imx8qm-audmix
+    enum:
+      - fsl,imx8qm-audmix
+      - fsl,imx952-audmix
 
   reg:
     maxItems: 1
@@ -80,7 +82,17 @@ required:
   - reg
   - clocks
   - clock-names
-  - power-domains
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx8qm-audmix
+    then:
+      required:
+        - power-domains
 
 unevaluatedProperties: false
 
-- 
2.34.1

Re: [PATCH v2 1/4] ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2026-01-20 10:31:30

On Tue, Jan 20, 2026 at 11:52:07AM +0800, Shengjiu Wang wrote:
There is no power domain defined on i.MX952, so make power-domains to be
There is no defined or there is no power domain? If the first, then this
patch is incomplete. Please read writing bindings part about complete
bindings. If the latter, then you miss constraints ":false" and commit
msg phrasing is incorrect (and remember that in such case you won't be
able to add power domains later because now you add complete binding).
dedicated to i.MX8QM.

Signed-off-by: Shengjiu Wang <redacted>
---
Best regards,
Krzysztof

Re: [PATCH v2 1/4] ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform

From: Shengjiu Wang <shengjiu.wang@gmail.com>
Date: 2026-01-20 11:08:01

On Tue, Jan 20, 2026 at 6:31 PM Krzysztof Kozlowski [off-list ref] wrote:
On Tue, Jan 20, 2026 at 11:52:07AM +0800, Shengjiu Wang wrote:
quoted
There is no power domain defined on i.MX952, so make power-domains to be
There is no defined or there is no power domain? If the first, then this
patch is incomplete. Please read writing bindings part about complete
bindings. If the latter, then you miss constraints ":false" and commit
msg phrasing is incorrect (and remember that in such case you won't be
able to add power domains later because now you add complete binding).
Thanks for pointing this out.

There is a power domain on i.MX952 for the mix system of AUDMIX.
But it is enabled by default,  AUDMIX device don't need to enable it.
So can we make the power-domains to be optional for this case?

Best regards
Shengjiu Wang
quoted
dedicated to i.MX8QM.

Signed-off-by: Shengjiu Wang <redacted>
---
Best regards,
Krzysztof

Re: [PATCH v2 1/4] ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2026-01-21 07:59:20

On Tue, Jan 20, 2026 at 07:07:48PM +0800, Shengjiu Wang wrote:
On Tue, Jan 20, 2026 at 6:31 PM Krzysztof Kozlowski [off-list ref] wrote:
quoted
On Tue, Jan 20, 2026 at 11:52:07AM +0800, Shengjiu Wang wrote:
quoted
There is no power domain defined on i.MX952, so make power-domains to be
There is no defined or there is no power domain? If the first, then this
patch is incomplete. Please read writing bindings part about complete
bindings. If the latter, then you miss constraints ":false" and commit
msg phrasing is incorrect (and remember that in such case you won't be
able to add power domains later because now you add complete binding).
Thanks for pointing this out.

There is a power domain on i.MX952 for the mix system of AUDMIX.
But it is enabled by default,  AUDMIX device don't need to enable it.
This should be explained in the commit msg.

Best regards,
Krzysztof

Re: [PATCH v2 1/4] ASoC: dt-bindings: fsl,audmix: Add support for i.MX952 platform

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2026-01-21 07:59:50

On Tue, Jan 20, 2026 at 11:52:07AM +0800, Shengjiu Wang wrote:
There is no power domain defined on i.MX952, so make power-domains to be
dedicated to i.MX8QM.

Signed-off-by: Shengjiu Wang <redacted>
---
 .../devicetree/bindings/sound/fsl,audmix.yaml    | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
With changes to commit msg:

Reviewed-by: Krzysztof Kozlowski <redacted>

Best regards,
Krzysztof

[PATCH v2 2/4] ASoC: dt-bindings: fsl,sai: Add AUDMIX mode support on i.MX952

From: Shengjiu Wang <hidden>
Date: 2026-01-20 03:53:01

The SAI can connect to AUDMIX, but AUDMIX can be bypassed or not on
i.MX952, so add 'fsl,sai-amix-mode' property for this feature, with
this property present, then SAI driver will try to config the setting,
fsl,sai-amix-mode = <0> is bypass mode, fsl,sai-amix-mode = <1> is
the AUDMIX mode.

Signed-off-by: Shengjiu Wang <redacted>
---
 .../devicetree/bindings/sound/fsl,sai.yaml       | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/fsl,sai.yaml b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
index d838ee0b61cb..7808c324eebc 100644
--- a/Documentation/devicetree/bindings/sound/fsl,sai.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
@@ -133,6 +133,13 @@ properties:
         - description: dataline mask for 'rx'
         - description: dataline mask for 'tx'
 
+  fsl,sai-amix-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      The audmix module is bypassed from hardware or not.
+      Bypass AUDMIX(0), AUDMIX mode(1)
+    enum: [0, 1]
+
   fsl,sai-mclk-direction-output:
     description: SAI will output the SAI MCLK clock.
     type: boolean
@@ -180,6 +187,15 @@ allOf:
       properties:
         fsl,sai-synchronous-rx: false
 
+  - if:
+      required:
+        - fsl,sai-amix-mode
+    then:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx952-sai
+
 required:
   - compatible
   - reg
-- 
2.34.1

Re: [PATCH v2 2/4] ASoC: dt-bindings: fsl,sai: Add AUDMIX mode support on i.MX952

From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2026-01-21 08:03:58

On Tue, Jan 20, 2026 at 11:52:08AM +0800, Shengjiu Wang wrote:
The SAI can connect to AUDMIX, but AUDMIX can be bypassed or not on
i.MX952, so add 'fsl,sai-amix-mode' property for this feature, with
this property present, then SAI driver will try to config the setting,
I am still not sure this is hardware static property. You say "can be
bypassed", so I imagine same board could have it bypassed or not,
depending on use case (so mixers).
quoted hunk
fsl,sai-amix-mode = <0> is bypass mode, fsl,sai-amix-mode = <1> is
the AUDMIX mode.

Signed-off-by: Shengjiu Wang <redacted>
---
 .../devicetree/bindings/sound/fsl,sai.yaml       | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/fsl,sai.yaml b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
index d838ee0b61cb..7808c324eebc 100644
--- a/Documentation/devicetree/bindings/sound/fsl,sai.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
@@ -133,6 +133,13 @@ properties:
         - description: dataline mask for 'rx'
         - description: dataline mask for 'tx'
 
+  fsl,sai-amix-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
Anyway, string is more readable.
+    description:
+      The audmix module is bypassed from hardware or not.
+      Bypass AUDMIX(0), AUDMIX mode(1)
Drop last sentence and use enum [ bypass, mode-1-whatever-this-means ]
+    enum: [0, 1]
What is the default? What is the meaning of lack of this property?
quoted hunk
+
   fsl,sai-mclk-direction-output:
     description: SAI will output the SAI MCLK clock.
     type: boolean
@@ -180,6 +187,15 @@ allOf:
       properties:
         fsl,sai-synchronous-rx: false
 
+  - if:
+      required:
+        - fsl,sai-amix-mode
+    then:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx952-sai
There is no such compatible.
+
 required:
   - compatible
   - reg
-- 
2.34.1

Re: [PATCH v2 2/4] ASoC: dt-bindings: fsl,sai: Add AUDMIX mode support on i.MX952

From: Shengjiu Wang <shengjiu.wang@gmail.com>
Date: 2026-01-21 10:47:33

On Wed, Jan 21, 2026 at 4:03 PM Krzysztof Kozlowski [off-list ref] wrote:
On Tue, Jan 20, 2026 at 11:52:08AM +0800, Shengjiu Wang wrote:
quoted
The SAI can connect to AUDMIX, but AUDMIX can be bypassed or not on
i.MX952, so add 'fsl,sai-amix-mode' property for this feature, with
this property present, then SAI driver will try to config the setting,
I am still not sure this is hardware static property. You say "can be
bypassed", so I imagine same board could have it bypassed or not,
depending on use case (so mixers).
Yes, depending on the use case.
1.  When bypassed,   the SAI output goes to codec directly.
      like: SAI -> Codec

2.  AUDMIX mode:  the SAI output goes to AUDMIX.
      like: SAI -> AUDMIX-> Codec

Will add above info in the commit message.
quoted
fsl,sai-amix-mode = <0> is bypass mode, fsl,sai-amix-mode = <1> is
the AUDMIX mode.

Signed-off-by: Shengjiu Wang <redacted>
---
 .../devicetree/bindings/sound/fsl,sai.yaml       | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/fsl,sai.yaml b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
index d838ee0b61cb..7808c324eebc 100644
--- a/Documentation/devicetree/bindings/sound/fsl,sai.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,sai.yaml
@@ -133,6 +133,13 @@ properties:
         - description: dataline mask for 'rx'
         - description: dataline mask for 'tx'

+  fsl,sai-amix-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
Anyway, string is more readable.
Ok,  will use string
quoted
+    description:
+      The audmix module is bypassed from hardware or not.
+      Bypass AUDMIX(0), AUDMIX mode(1)
Drop last sentence and use enum [ bypass, mode-1-whatever-this-means ]
quoted
+    enum: [0, 1]
What is the default? What is the meaning of lack of this property?
  fsl,sai-amix-mode:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      The audmix module is bypassed from hardware or not.
    enum: [none, bypass, audmix]
    default: none

I'd like to use the above definition.  add 'none' for default.
Which means no audmix connection in hardware. then we don't need to
bypass or not-bypass audmix.

quoted
+
   fsl,sai-mclk-direction-output:
     description: SAI will output the SAI MCLK clock.
     type: boolean
@@ -180,6 +187,15 @@ allOf:
       properties:
         fsl,sai-synchronous-rx: false

+  - if:
+      required:
+        - fsl,sai-amix-mode
+    then:
+      properties:
+        compatible:
+          contains:
+            const: fsl,imx952-sai
There is no such compatible.
It is in another patch:
https://www.spinics.net/lists/kernel/msg6004158.html

Best regards
Shengjiu Wang
quoted
+
 required:
   - compatible
   - reg
--
2.34.1

[PATCH v2 3/4] ASoC: fsl_audmix: Add support for i.MX952 platform

From: Shengjiu Wang <hidden>
Date: 2026-01-20 03:53:08

Add compatible string to support AUDMIX on i.MX952

Signed-off-by: Shengjiu Wang <redacted>
---
 sound/soc/fsl/fsl_audmix.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/sound/soc/fsl/fsl_audmix.c b/sound/soc/fsl/fsl_audmix.c
index 7981d598ba13..40a3b7432174 100644
--- a/sound/soc/fsl/fsl_audmix.c
+++ b/sound/soc/fsl/fsl_audmix.c
@@ -444,6 +444,9 @@ static const struct of_device_id fsl_audmix_ids[] = {
 	{
 		.compatible = "fsl,imx8qm-audmix",
 	},
+	{
+		.compatible = "fsl,imx952-audmix",
+	},
 	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, fsl_audmix_ids);
-- 
2.34.1

[PATCH v2 4/4] ASoC: fsl_sai: Add AUDMIX mode support on i.MX952

From: Shengjiu Wang <hidden>
Date: 2026-01-20 03:53:15

One of SAI interfaces is connected to AUDMIX in the i.MX952 chip, but
AUDMIX can be bypassed or not bypassed on the i.MX952 platform.

so add 'fsl,sai-amix-mode' property for this feature, with this
property present,then SAI driver will try to config the setting,
fsl,sai-amix-mode = <0> is bypass mode, fsl,sai-amix-mode = <1> is
the AUDMIX mode.

Signed-off-by: Shengjiu Wang <redacted>
---
 include/linux/firmware/imx/sm.h |  2 ++
 sound/soc/fsl/fsl_sai.c         | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)
diff --git a/include/linux/firmware/imx/sm.h b/include/linux/firmware/imx/sm.h
index a33b45027356..ba5d93bd6158 100644
--- a/include/linux/firmware/imx/sm.h
+++ b/include/linux/firmware/imx/sm.h
@@ -26,6 +26,8 @@
 #define SCMI_IMX94_CTRL_SAI3_MCLK	5U	/*!< WAKE SAI3 MCLK */
 #define SCMI_IMX94_CTRL_SAI4_MCLK	6U	/*!< WAKE SAI4 MCLK */
 
+#define SCMI_IMX952_CTRL_BYPASS_AUDMIX	8U      /* WAKE AUDMIX */
+
 #if IS_ENABLED(CONFIG_IMX_SCMI_MISC_DRV)
 int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val);
 int scmi_imx_misc_ctrl_set(u32 id, u32 val);
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
index 2fa14fbdfe1a..9facb7c5ee0d 100644
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
@@ -7,6 +7,7 @@
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/dmaengine.h>
+#include <linux/firmware/imx/sm.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/pinctrl/consumer.h>
@@ -1429,6 +1430,7 @@ static int fsl_sai_probe(struct platform_device *pdev)
 	int irq, ret, i;
 	int index;
 	u32 dmas[4];
+	u32 val;
 
 	sai = devm_kzalloc(dev, sizeof(*sai), GFP_KERNEL);
 	if (!sai)
@@ -1598,6 +1600,21 @@ static int fsl_sai_probe(struct platform_device *pdev)
 	if (ret < 0 && ret != -ENOSYS)
 		goto err_pm_get_sync;
 
+	if (of_property_present(np, "fsl,sai-amix-mode") &&
+	    of_device_is_compatible(np, "fsl,imx952-sai")) {
+		ret = of_property_read_u32(np, "fsl,sai-amix-mode", &val);
+		if (ret || val > 1) {
+			dev_err_probe(dev, ret, "Invalid audmix mode\n");
+			goto err_pm_get_sync;
+		}
+
+		ret = scmi_imx_misc_ctrl_set(SCMI_IMX952_CTRL_BYPASS_AUDMIX, val);
+		if (ret) {
+			dev_err_probe(dev, ret, "Error setting audmix mode\n");
+			goto err_pm_get_sync;
+		}
+	}
+
 	/*
 	 * Register platform component before registering cpu dai for there
 	 * is not defer probe for platform component in snd_soc_add_pcm_runtime().
-- 
2.34.1

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help