]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: imx: imx8-acm: fix flags for acm clocks
authorStefan Eichenberger <stefan.eichenberger@toradex.com>
Thu, 12 Feb 2026 08:57:50 +0000 (16:57 +0800)
committerAbel Vesa <abel.vesa@oss.qualcomm.com>
Thu, 19 Mar 2026 14:15:32 +0000 (16:15 +0200)
Currently, the flags for the ACM clocks are set to 0. This configuration
causes the fsl-sai audio driver to fail when attempting to set the
sysclk, returning an EINVAL error. The following error messages
highlight the issue:
fsl-sai 59090000.sai: ASoC: error at snd_soc_dai_set_sysclk on 59090000.sai: -22
imx-hdmi sound-hdmi: failed to set cpu sysclk: -22

By setting the flag CLK_SET_RATE_NO_REPARENT, we signal that the ACM
driver does not support reparenting and instead relies on the clock tree
as defined in the device tree. This change resolves the issue with the
fsl-sai audio driver.

CC: stable@vger.kernel.org
Fixes: d3a0946d7ac9 ("clk: imx: imx8: add audio clock mux driver")
Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Link: https://patch.msgid.link/20260212085750.3253187-1-shengjiu.wang@nxp.com
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
drivers/clk/imx/clk-imx8-acm.c

index 790f7e44b11e20e52fe3491c95f40bd0a463b278..07dca6f31cf8ee5d051e1203b1cd060e60817c2d 100644 (file)
@@ -371,7 +371,8 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
        for (i = 0; i < priv->soc_data->num_sels; i++) {
                hws[sels[i].clkid] = devm_clk_hw_register_mux_parent_data_table(dev,
                                                                                sels[i].name, sels[i].parents,
-                                                                               sels[i].num_parents, 0,
+                                                                               sels[i].num_parents,
+                                                                               CLK_SET_RATE_NO_REPARENT,
                                                                                base + sels[i].reg,
                                                                                sels[i].shift, sels[i].width,
                                                                                0, NULL, NULL);