提交 248e88c2 编写于 作者: K Kuninori Morimoto 提交者: Mark Brown

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: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 3af6c3ac
...@@ -394,6 +394,28 @@ int rsnd_adg_ssi_clk_try_start(struct rsnd_mod *mod, unsigned int rate) ...@@ -394,6 +394,28 @@ int rsnd_adg_ssi_clk_try_start(struct rsnd_mod *mod, unsigned int rate)
return 0; 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) static void rsnd_adg_ssi_clk_init(struct rsnd_priv *priv, struct rsnd_adg *adg)
{ {
struct clk *clk; struct clk *clk;
...@@ -466,8 +488,6 @@ int rsnd_adg_probe(struct platform_device *pdev, ...@@ -466,8 +488,6 @@ int rsnd_adg_probe(struct platform_device *pdev,
{ {
struct rsnd_adg *adg; struct rsnd_adg *adg;
struct device *dev = rsnd_priv_to_dev(priv); struct device *dev = rsnd_priv_to_dev(priv);
struct clk *clk;
int i;
adg = devm_kzalloc(dev, sizeof(*adg), GFP_KERNEL); adg = devm_kzalloc(dev, sizeof(*adg), GFP_KERNEL);
if (!adg) { if (!adg) {
...@@ -483,13 +503,7 @@ int rsnd_adg_probe(struct platform_device *pdev, ...@@ -483,13 +503,7 @@ int rsnd_adg_probe(struct platform_device *pdev,
adg->mod.ops = &adg_ops; adg->mod.ops = &adg_ops;
adg->mod.priv = priv; adg->mod.priv = priv;
adg->clk[CLKA] = devm_clk_get(dev, "clk_a"); rsnd_adg_get_clkin(priv, adg);
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_ssi_clk_init(priv, adg); rsnd_adg_ssi_clk_init(priv, adg);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册