Merge branch 'topic/rcar' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
authorMark Brown <broonie@kernel.org>
Tue, 13 Jun 2017 20:57:18 +0000 (21:57 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 13 Jun 2017 20:57:18 +0000 (21:57 +0100)
1  2 
sound/soc/generic/simple-card.c

index 33ff487193f92076b07f580fc49ad8692ce28248,e86c6e16146b7c7636c009da6cf12e7fea7fe783..e26bd14ba70ffc687f3eb48642897be9058eadb7
@@@ -233,19 -233,13 +233,19 @@@ static int asoc_simple_card_dai_link_of
        snprintf(prop, sizeof(prop), "%scpu", prefix);
        cpu = of_get_child_by_name(node, prop);
  
 +      if (!cpu) {
 +              ret = -EINVAL;
 +              dev_err(dev, "%s: Can't find %s DT node\n", __func__, prop);
 +              goto dai_link_of_err;
 +      }
 +
        snprintf(prop, sizeof(prop), "%splat", prefix);
        plat = of_get_child_by_name(node, prop);
  
        snprintf(prop, sizeof(prop), "%scodec", prefix);
        codec = of_get_child_by_name(node, prop);
  
 -      if (!cpu || !codec) {
 +      if (!codec) {
                ret = -EINVAL;
                dev_err(dev, "%s: Can't find %s DT node\n", __func__, prop);
                goto dai_link_of_err;
        dai_link->ops = &asoc_simple_card_ops;
        dai_link->init = asoc_simple_card_dai_init;
  
-       dev_dbg(dev, "\tname : %s\n", dai_link->stream_name);
-       dev_dbg(dev, "\tformat : %04x\n", dai_link->dai_fmt);
-       dev_dbg(dev, "\tcpu : %s / %d\n",
-               dai_link->cpu_dai_name,
-               dai_props->cpu_dai.sysclk);
-       dev_dbg(dev, "\tcodec : %s / %d\n",
-               dai_link->codec_dai_name,
-               dai_props->codec_dai.sysclk);
        asoc_simple_card_canonicalize_cpu(dai_link, single_cpu);
  
  dai_link_of_err:
@@@ -356,12 -341,12 +347,12 @@@ static int asoc_simple_card_parse_aux_d
        return 0;
  }
  
 -static int asoc_simple_card_parse_of(struct device_node *node,
 -                                   struct simple_card_data *priv)
 +static int asoc_simple_card_parse_of(struct simple_card_data *priv)
  {
        struct device *dev = simple_priv_to_dev(priv);
        struct snd_soc_card *card = simple_priv_to_card(priv);
        struct device_node *dai_link;
 +      struct device_node *node = dev->of_node;
        int ret;
  
        if (!node)
@@@ -460,7 -445,7 +451,7 @@@ static int asoc_simple_card_probe(struc
  
        if (np && of_device_is_available(np)) {
  
 -              ret = asoc_simple_card_parse_of(np, priv);
 +              ret = asoc_simple_card_parse_of(priv);
                if (ret < 0) {
                        if (ret != -EPROBE_DEFER)
                                dev_err(dev, "parse error %d\n", ret);
        snd_soc_card_set_drvdata(card, priv);
  
        ret = devm_snd_soc_register_card(dev, card);
-       if (ret >= 0)
-               return ret;
+       if (ret < 0)
+               goto err;
+       return 0;
  err:
        asoc_simple_card_clean_reference(card);