Like cpus and platforms, defer sound card initialization if the codec
component is missing when initializing the dai_link

Signed-off-by: Jerome Brunet <jbru...@baylibre.com>
---
 sound/soc/soc-core.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 358f1fbf9a30..0ec1d7a59b24 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1064,12 +1064,20 @@ static int soc_init_dai_link(struct snd_soc_card *card,
                                link->name);
                        return -EINVAL;
                }
+
                /* Codec DAI name must be specified */
                if (!codec->dai_name) {
                        dev_err(card->dev, "ASoC: codec_dai_name not set for 
%s\n",
                                link->name);
                        return -EINVAL;
                }
+
+               /*
+                * Defer card registration if codec component is not added to
+                * component list.
+                */
+               if (!soc_find_component(codec))
+                       return -EPROBE_DEFER;
        }
 
        /*
-- 
2.21.0

Reply via email to