static int soc_tplg_control_load(struct soc_tplg *tplg,
        struct snd_kcontrol_new *k, struct snd_soc_tplg_ctl_hdr *hdr)
 {
+       int ret = 0;
+
        if (tplg->ops && tplg->ops->control_load)
-               return tplg->ops->control_load(tplg->comp, tplg->index, k,
-                       hdr);
+               ret = tplg->ops->control_load(tplg->comp, tplg->index, k, hdr);
 
-       return 0;
+       if (ret)
+               dev_err(tplg->dev, "ASoC: failed to init %s\n", hdr->name);
+
+       return ret;
 }
 
 
 
        /* pass control to driver for optional further init */
        ret = soc_tplg_control_load(tplg, &kc, &be->hdr);
-       if (ret < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n", be->hdr.name);
+       if (ret < 0)
                goto err;
-       }
 
        /* register control here */
        ret = soc_tplg_add_kcontrol(tplg, &kc, &sbe->dobj.control.kcontrol);
 
        /* pass control to driver for optional further init */
        ret = soc_tplg_control_load(tplg, &kc, &mc->hdr);
-       if (ret < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n", mc->hdr.name);
+       if (ret < 0)
                goto err;
-       }
 
        /* register control here */
        ret = soc_tplg_add_kcontrol(tplg, &kc, &sm->dobj.control.kcontrol);
 
        /* pass control to driver for optional further init */
        ret = soc_tplg_control_load(tplg, &kc, &ec->hdr);
-       if (ret < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n", ec->hdr.name);
+       if (ret < 0)
                goto err;
-       }
 
        /* register control here */
        ret = soc_tplg_add_kcontrol(tplg, &kc, &se->dobj.control.kcontrol);
 
        /* pass control to driver for optional further init */
        err = soc_tplg_control_load(tplg, kc, &mc->hdr);
-       if (err < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n",
-                       mc->hdr.name);
+       if (err < 0)
                return err;
-       }
 
        return 0;
 }
 
        /* pass control to driver for optional further init */
        err = soc_tplg_control_load(tplg, kc, &ec->hdr);
-       if (err < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n",
-                       ec->hdr.name);
+       if (err < 0)
                return err;
-       }
 
        return 0;
 }
 
        /* pass control to driver for optional further init */
        err = soc_tplg_control_load(tplg, kc, &be->hdr);
-       if (err < 0) {
-               dev_err(tplg->dev, "ASoC: failed to init %s\n",
-                       be->hdr.name);
+       if (err < 0)
                return err;
-       }
 
        return 0;
 }