summary refs log tree commit diff
path: root/sound/soc/sh/rcar/adg.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2017-04-06 11:50:04 +0100
committerMark Brown <broonie@kernel.org>2017-04-06 11:50:04 +0100
commit3a37471551cd3b287ce7f02ed25bcf8ec37a191d (patch)
treef7bacf98400f55bed2737c9f7cf3b68f9a070c2b /sound/soc/sh/rcar/adg.c
parente0c4211854bfebd5507761a2bfddaa9e37074230 (diff)
parentfc99d23f6d3ec6b17772915114018444393e0ad1 (diff)
downloadlinux-3a37471551cd3b287ce7f02ed25bcf8ec37a191d.tar.gz
Merge branch 'fix/rcar' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-rcar
Diffstat (limited to 'sound/soc/sh/rcar/adg.c')
-rw-r--r--sound/soc/sh/rcar/adg.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c
index 54146f66538c..214a9ce90bb4 100644
--- a/sound/soc/sh/rcar/adg.c
+++ b/sound/soc/sh/rcar/adg.c
@@ -537,16 +537,14 @@ static void rsnd_adg_get_clkout(struct rsnd_priv *priv,
 			clk = clk_register_fixed_rate(dev, clkout_name[i],
 						      parent_clk_name, 0,
 						      req_rate);
-			if (!IS_ERR(clk)) {
-				adg->onecell.clks	= adg->clkout;
-				adg->onecell.clk_num	= CLKOUTMAX;
-
+			adg->clkout[i] = ERR_PTR(-ENOENT);
+			if (!IS_ERR(clk))
 				adg->clkout[i] = clk;
-
-				of_clk_add_provider(np, of_clk_src_onecell_get,
-						    &adg->onecell);
-			}
 		}
+		adg->onecell.clks	= adg->clkout;
+		adg->onecell.clk_num	= CLKOUTMAX;
+		of_clk_add_provider(np, of_clk_src_onecell_get,
+				    &adg->onecell);
 	}
 
 	adg->ckr = ckr;
@@ -592,5 +590,10 @@ int rsnd_adg_probe(struct rsnd_priv *priv)
 
 void rsnd_adg_remove(struct rsnd_priv *priv)
 {
+	struct device *dev = rsnd_priv_to_dev(priv);
+	struct device_node *np = dev->of_node;
+
+	of_clk_del_provider(np);
+
 	rsnd_adg_clk_disable(priv);
 }