Commit 6cc240f3 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown

ASoC: Pass CODEC to snd_soc_register_dais()

snd_soc_register_dais() looks up the CODEC that is registering the DAIs by
looping over all registered CODECs. This patch updates the code to
simply pass the CODEC that registers the DAIs to snd_soc_register_dais() thus
avoiding the lookup.
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 32c9ba54
...@@ -3933,17 +3933,18 @@ static void snd_soc_unregister_dais(struct snd_soc_component *component) ...@@ -3933,17 +3933,18 @@ static void snd_soc_unregister_dais(struct snd_soc_component *component)
* snd_soc_register_dais - Register a DAI with the ASoC core * snd_soc_register_dais - Register a DAI with the ASoC core
* *
* @component: The component the DAIs are registered for * @component: The component the DAIs are registered for
* @codec: The CODEC that the DAIs are registered for, NULL if the component is
* not a CODEC.
* @dai_drv: DAI driver to use for the DAIs * @dai_drv: DAI driver to use for the DAIs
* @count: Number of DAIs * @count: Number of DAIs
* @legacy_dai_naming: Use the legacy naming scheme and let the DAI inherit the * @legacy_dai_naming: Use the legacy naming scheme and let the DAI inherit the
* parent's name. * parent's name.
*/ */
static int snd_soc_register_dais(struct snd_soc_component *component, static int snd_soc_register_dais(struct snd_soc_component *component,
struct snd_soc_dai_driver *dai_drv, size_t count, struct snd_soc_codec *codec, struct snd_soc_dai_driver *dai_drv,
bool legacy_dai_naming) size_t count, bool legacy_dai_naming)
{ {
struct device *dev = component->dev; struct device *dev = component->dev;
struct snd_soc_codec *codec;
struct snd_soc_dai *dai; struct snd_soc_dai *dai;
unsigned int i; unsigned int i;
int ret; int ret;
...@@ -3982,28 +3983,19 @@ static int snd_soc_register_dais(struct snd_soc_component *component, ...@@ -3982,28 +3983,19 @@ static int snd_soc_register_dais(struct snd_soc_component *component,
} }
dai->component = component; dai->component = component;
dai->codec = codec;
dai->dev = dev; dai->dev = dev;
dai->driver = &dai_drv[i]; dai->driver = &dai_drv[i];
dai->dapm.dev = dev; dai->dapm.dev = dev;
if (!dai->driver->ops) if (!dai->driver->ops)
dai->driver->ops = &null_dai_ops; 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, "ASoC: Mapped DAI %s to CODEC %s\n",
dai->name, codec->name);
dai->codec = codec;
break;
}
}
if (!dai->codec) if (!dai->codec)
dai->dapm.idle_bias_off = 1; dai->dapm.idle_bias_off = 1;
mutex_lock(&client_mutex);
list_add(&dai->list, &dai_list); list_add(&dai->list, &dai_list);
mutex_unlock(&client_mutex); mutex_unlock(&client_mutex);
dev_dbg(dev, "ASoC: Registered DAI '%s'\n", dai->name); dev_dbg(dev, "ASoC: Registered DAI '%s'\n", dai->name);
...@@ -4025,6 +4017,7 @@ static int ...@@ -4025,6 +4017,7 @@ static int
__snd_soc_register_component(struct device *dev, __snd_soc_register_component(struct device *dev,
struct snd_soc_component *cmpnt, struct snd_soc_component *cmpnt,
const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *cmpnt_drv,
struct snd_soc_codec *codec,
struct snd_soc_dai_driver *dai_drv, struct snd_soc_dai_driver *dai_drv,
int num_dai, bool allow_single_dai) int num_dai, bool allow_single_dai)
{ {
...@@ -4048,7 +4041,8 @@ __snd_soc_register_component(struct device *dev, ...@@ -4048,7 +4041,8 @@ __snd_soc_register_component(struct device *dev,
cmpnt->dai_drv = dai_drv; cmpnt->dai_drv = dai_drv;
cmpnt->num_dai = num_dai; cmpnt->num_dai = num_dai;
ret = snd_soc_register_dais(cmpnt, dai_drv, num_dai, allow_single_dai); ret = snd_soc_register_dais(cmpnt, codec, dai_drv, num_dai,
allow_single_dai);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "ASoC: Failed to regster DAIs: %d\n", ret); dev_err(dev, "ASoC: Failed to regster DAIs: %d\n", ret);
goto error_component_name; goto error_component_name;
...@@ -4083,7 +4077,7 @@ int snd_soc_register_component(struct device *dev, ...@@ -4083,7 +4077,7 @@ int snd_soc_register_component(struct device *dev,
cmpnt->ignore_pmdown_time = true; cmpnt->ignore_pmdown_time = true;
return __snd_soc_register_component(dev, cmpnt, cmpnt_drv, return __snd_soc_register_component(dev, cmpnt, cmpnt_drv, NULL,
dai_drv, num_dai, true); dai_drv, num_dai, true);
} }
EXPORT_SYMBOL_GPL(snd_soc_register_component); EXPORT_SYMBOL_GPL(snd_soc_register_component);
...@@ -4304,7 +4298,7 @@ int snd_soc_register_codec(struct device *dev, ...@@ -4304,7 +4298,7 @@ int snd_soc_register_codec(struct device *dev,
/* register component */ /* register component */
ret = __snd_soc_register_component(dev, &codec->component, ret = __snd_soc_register_component(dev, &codec->component,
&codec_drv->component_driver, &codec_drv->component_driver,
dai_drv, num_dai, false); codec, dai_drv, num_dai, false);
if (ret < 0) { if (ret < 0) {
dev_err(codec->dev, "ASoC: Failed to regster component: %d\n", ret); dev_err(codec->dev, "ASoC: Failed to regster component: %d\n", ret);
goto fail_codec_name; goto fail_codec_name;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment