Hi Dan Thank you for your research. > sound/soc/sh/rcar/adg.c > 423 static int rsnd_adg_get_clkin(struct rsnd_priv *priv) > 424 { > 425 struct rsnd_adg *adg = priv->adg; > 426 struct device *dev = rsnd_priv_to_dev(priv); > 427 struct clk *clk; > 428 int i; > 429 > 430 for (i = 0; i < CLKMAX; i++) { > 431 clk = devm_clk_get(dev, clk_name[i]); > > If devm_clk_get() returns NULL that's not an error. > > > 432 > 433 if (IS_ERR(clk)) > 434 clk = rsnd_adg_null_clk_get(priv); > > But I think if rsnd_adg_null_clk_get() returns an error then it is an > error. > > > 435 if (IS_ERR(clk)) > > This is impossible. > > 436 goto err; > > So I think it should be: > > if (IS_ERR(clk)) { > clk = rsnd_adg_null_clk_get(priv); > if (!clk) > goto err; > } Hmm indeed. Thank you for your report, I didn't notice about it. How about this ? ---------- diff --git a/sound/soc/sh/rcar/adg.c b/sound/soc/sh/rcar/adg.c index 0ebee1ed06a9..2b05a1568ee8 100644 --- a/sound/soc/sh/rcar/adg.c +++ b/sound/soc/sh/rcar/adg.c @@ -393,7 +393,7 @@ static struct clk *rsnd_adg_create_null_clk(struct rsnd_priv *priv, clk = clk_register_fixed_rate(dev, name, parent, 0, 0); if (IS_ERR(clk)) { dev_err(dev, "create null clk error\n"); - return NULL; + return PTR_ERR(clk); } return clk; @@ -430,9 +430,9 @@ static int rsnd_adg_get_clkin(struct rsnd_priv *priv) for (i = 0; i < CLKMAX; i++) { clk = devm_clk_get(dev, clk_name[i]); - if (IS_ERR(clk)) + if (IS_ERR_OR_NULL(clk)) clk = rsnd_adg_null_clk_get(priv); - if (IS_ERR(clk)) + if (IS_ERR_OR_NULL(clk)) goto err; adg->clk[i] = clk; Thank you for your help !! Best regards --- Kuninori Morimoto