Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 305638
b: refs/heads/master
c: 054880f
h: refs/heads/master
v: v3
  • Loading branch information
Mark Brown committed Apr 16, 2012
1 parent dfd08dd commit cd3569d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f04209a7b0a9942aa78f8b27e63a8a5cc097adf8
refs/heads/master: 054880febeb890b24d705240384856ea6b3ccf7b
36 changes: 30 additions & 6 deletions trunk/sound/soc/soc-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1196,7 +1196,6 @@ static int soc_probe_dai_link(struct snd_soc_card *card, int num, int order)
card->name, num, order);

/* config components */
codec_dai->codec = codec;
cpu_dai->platform = platform;
codec_dai->card = card;
cpu_dai->card = card;
Expand Down Expand Up @@ -3227,6 +3226,7 @@ static inline char *fmt_multiple_name(struct device *dev,
int snd_soc_register_dai(struct device *dev,
struct snd_soc_dai_driver *dai_drv)
{
struct snd_soc_codec *codec;
struct snd_soc_dai *dai;

dev_dbg(dev, "dai register %s\n", dev_name(dev));
Expand All @@ -3249,7 +3249,18 @@ int snd_soc_register_dai(struct device *dev,
dai->driver->ops = &null_dai_ops;

mutex_lock(&client_mutex);

list_for_each_entry(codec, &codec_list, list) {
if (codec->dev == dev) {
dev_dbg(dev, "Mapped DAI %s to CODEC %s\n",
dai->name, codec->name);
dai->codec = codec;
break;
}
}

list_add(&dai->list, &dai_list);

mutex_unlock(&client_mutex);

pr_debug("Registered DAI '%s'\n", dai->name);
Expand Down Expand Up @@ -3293,6 +3304,7 @@ EXPORT_SYMBOL_GPL(snd_soc_unregister_dai);
int snd_soc_register_dais(struct device *dev,
struct snd_soc_dai_driver *dai_drv, size_t count)
{
struct snd_soc_codec *codec;
struct snd_soc_dai *dai;
int i, ret = 0;

Expand Down Expand Up @@ -3325,7 +3337,18 @@ int snd_soc_register_dais(struct device *dev,
dai->driver->ops = &null_dai_ops;

mutex_lock(&client_mutex);

list_for_each_entry(codec, &codec_list, list) {
if (codec->dev == dev) {
dev_dbg(dev, "Mapped DAI %s to CODEC %s\n",
dai->name, codec->name);
dai->codec = codec;
break;
}
}

list_add(&dai->list, &dai_list);

mutex_unlock(&client_mutex);

pr_debug("Registered DAI '%s'\n", dai->name);
Expand Down Expand Up @@ -3537,17 +3560,18 @@ int snd_soc_register_codec(struct device *dev,
fixup_codec_formats(&dai_drv[i].capture);
}

mutex_lock(&client_mutex);
list_add(&codec->list, &codec_list);
mutex_unlock(&client_mutex);

/* register any DAIs */
if (num_dai) {
ret = snd_soc_register_dais(dev, dai_drv, num_dai);
if (ret < 0)
goto fail;
dev_err(codec->dev, "Failed to regster DAIs: %d\n",
ret);
}

mutex_lock(&client_mutex);
list_add(&codec->list, &codec_list);
mutex_unlock(&client_mutex);

pr_debug("Registered codec '%s'\n", codec->name);
return 0;

Expand Down

0 comments on commit cd3569d

Please sign in to comment.