4.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tero Kristo t-kristo@ti.com
commit 573eda59c772d11fc2b56d525dfb698b0f87ddb3 upstream.
In 4.16 the clock hierarchy got changed by a5c82a09d876 ARM: dts: omap4: add clkctrl nodes
The fck of dmic is no longer a mux clock, it's parent is.
Signed-off-by: Tero Kristo t-kristo@ti.com Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com Signed-off-by: Mark Brown broonie@kernel.org Cc: stable@vger.kernel.org # 4.16+ Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
--- sound/soc/omap/omap-dmic.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
--- a/sound/soc/omap/omap-dmic.c +++ b/sound/soc/omap/omap-dmic.c @@ -281,7 +281,7 @@ static int omap_dmic_dai_trigger(struct static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id, unsigned int freq) { - struct clk *parent_clk; + struct clk *parent_clk, *mux; char *parent_clk_name; int ret = 0;
@@ -329,14 +329,21 @@ static int omap_dmic_select_fclk(struct return -ENODEV; }
+ mux = clk_get_parent(dmic->fclk); + if (IS_ERR(mux)) { + dev_err(dmic->dev, "can't get fck mux parent\n"); + clk_put(parent_clk); + return -ENODEV; + } + mutex_lock(&dmic->mutex); if (dmic->active) { /* disable clock while reparenting */ pm_runtime_put_sync(dmic->dev); - ret = clk_set_parent(dmic->fclk, parent_clk); + ret = clk_set_parent(mux, parent_clk); pm_runtime_get_sync(dmic->dev); } else { - ret = clk_set_parent(dmic->fclk, parent_clk); + ret = clk_set_parent(mux, parent_clk); } mutex_unlock(&dmic->mutex);
@@ -349,6 +356,7 @@ static int omap_dmic_select_fclk(struct dmic->fclk_freq = freq;
err_busy: + clk_put(mux); clk_put(parent_clk);
return ret;