summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2015-09-10 07:04:24 +0000
committerMark Brown <broonie@kernel.org>2015-09-14 19:47:32 +0100
commit248e88c2fb5a09eb87b21b00fd4167cc99c05759 (patch)
tree26cb2fd612baa10347e5e912d6afccebe4b21bff
parent3af6c3ac91eb937fc611f9c745f89e7c53d55282 (diff)
downloadlinux-248e88c2fb5a09eb87b21b00fd4167cc99c05759.tar.gz
linux-248e88c2fb5a09eb87b21b00fd4167cc99c05759.tar.bz2
linux-248e88c2fb5a09eb87b21b00fd4167cc99c05759.zip
ASoC: rsnd: adg: ignore undefined clock error
undefined clock is not error. Accept such case. And this is prepare for clock out support in the same time. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/sh/rcar/adg.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c
index 606d416c51b2..d4fb11a3ce64 100644
--- a/sound/soc/sh/rcar/adg.c
+++ b/sound/soc/sh/rcar/adg.c
@@ -394,6 +394,28 @@ found_clock:
return 0;
}
+static void rsnd_adg_get_clkin(struct rsnd_priv *priv,
+ struct rsnd_adg *adg)
+{
+ struct device *dev = rsnd_priv_to_dev(priv);
+ struct clk *clk;
+ static const char * const clk_name[] = {
+ [CLKA] = "clk_a",
+ [CLKB] = "clk_b",
+ [CLKC] = "clk_c",
+ [CLKI] = "clk_i",
+ };
+ int i;
+
+ for (i = 0; i < CLKMAX; i++) {
+ clk = devm_clk_get(dev, clk_name[i]);
+ adg->clk[i] = IS_ERR(clk) ? NULL : clk;
+ }
+
+ for_each_rsnd_clk(clk, adg, i)
+ dev_dbg(dev, "clk %d : %p : %ld\n", i, clk, clk_get_rate(clk));
+}
+
static void rsnd_adg_ssi_clk_init(struct rsnd_priv *priv, struct rsnd_adg *adg)
{
struct clk *clk;
@@ -466,8 +488,6 @@ int rsnd_adg_probe(struct platform_device *pdev,
{
struct rsnd_adg *adg;
struct device *dev = rsnd_priv_to_dev(priv);
- struct clk *clk;
- int i;
adg = devm_kzalloc(dev, sizeof(*adg), GFP_KERNEL);
if (!adg) {
@@ -483,13 +503,7 @@ int rsnd_adg_probe(struct platform_device *pdev,
adg->mod.ops = &adg_ops;
adg->mod.priv = priv;
- adg->clk[CLKA] = devm_clk_get(dev, "clk_a");
- adg->clk[CLKB] = devm_clk_get(dev, "clk_b");
- adg->clk[CLKC] = devm_clk_get(dev, "clk_c");
- adg->clk[CLKI] = devm_clk_get(dev, "clk_i");
-
- for_each_rsnd_clk(clk, adg, i)
- dev_dbg(dev, "clk %d : %p : %ld\n", i, clk, clk_get_rate(clk));
+ rsnd_adg_get_clkin(priv, adg);
rsnd_adg_ssi_clk_init(priv, adg);