MLK-21484-1: ASoC: fsl_micfil: unprepare the clk before reparent
authorViorel Suman <viorel.suman@nxp.com>
Thu, 18 Apr 2019 12:14:17 +0000 (15:14 +0300)
committerViorel Suman <viorel.suman@nxp.com>
Mon, 22 Apr 2019 06:47:00 +0000 (09:47 +0300)
On recent kernels clks which are marked with CLK_SET_RATE_GATE are
"protected" against further changes at clk_prepare time, including clk
reparent. Fix this by moving clk_disable_unprepare before clk_set_parent.

Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
sound/soc/fsl/fsl_micfil.c

index 591aefc..4e8fd72 100644 (file)
@@ -1414,6 +1414,7 @@ static int fsl_micfil_set_mclk_rate(struct fsl_micfil *micfil, int clk_id,
                return -EINVAL;
        }
 
+       clk_disable_unprepare(micfil->mclk);
        if (!clk_is_match(pll, npll)) {
                ret = clk_set_parent(p, npll);
                if (ret < 0)
@@ -1421,7 +1422,6 @@ static int fsl_micfil_set_mclk_rate(struct fsl_micfil *micfil, int clk_id,
                                 "failed to set parrent %d\n", ret);
        }
 
-       clk_disable_unprepare(micfil->mclk);
        ret = clk_set_rate(micfil->mclk, freq * 1024);
        if (ret)
                dev_warn(dev, "failed to set rate (%u): %d\n",