Loading include/sound/soc.h +2 −2 Original line number Diff line number Diff line Loading @@ -469,10 +469,10 @@ int snd_soc_register_codec(struct device *dev, struct snd_soc_dai_driver *dai_drv, int num_dai); void snd_soc_unregister_codec(struct device *dev); int snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai); int devm_snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai); void snd_soc_unregister_component(struct device *dev); int snd_soc_cache_init(struct snd_soc_codec *codec); Loading sound/soc/soc-core.c +26 −22 Original line number Diff line number Diff line Loading @@ -3326,40 +3326,40 @@ static void snd_soc_component_del_unlocked(struct snd_soc_component *component) } int snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai) { struct snd_soc_component *cmpnt; struct snd_soc_component *component; int ret; cmpnt = kzalloc(sizeof(*cmpnt), GFP_KERNEL); if (!cmpnt) { component = kzalloc(sizeof(*component), GFP_KERNEL); if (!component) { dev_err(dev, "ASoC: Failed to allocate memory\n"); return -ENOMEM; } ret = snd_soc_component_initialize(cmpnt, cmpnt_drv, dev); ret = snd_soc_component_initialize(component, component_driver, dev); if (ret) goto err_free; cmpnt->ignore_pmdown_time = true; cmpnt->registered_as_component = true; component->ignore_pmdown_time = true; component->registered_as_component = true; ret = snd_soc_register_dais(cmpnt, dai_drv, num_dai, true); ret = snd_soc_register_dais(component, dai_drv, num_dai, true); if (ret < 0) { dev_err(dev, "ASoC: Failed to register DAIs: %d\n", ret); goto err_cleanup; } snd_soc_component_add(cmpnt); snd_soc_component_add(component); return 0; err_cleanup: snd_soc_component_cleanup(cmpnt); snd_soc_component_cleanup(component); err_free: kfree(cmpnt); kfree(component); return ret; } EXPORT_SYMBOL_GPL(snd_soc_register_component); Loading @@ -3371,22 +3371,26 @@ EXPORT_SYMBOL_GPL(snd_soc_register_component); */ void snd_soc_unregister_component(struct device *dev) { struct snd_soc_component *cmpnt; struct snd_soc_component *component; int found = 0; mutex_lock(&client_mutex); list_for_each_entry(cmpnt, &component_list, list) { if (dev == cmpnt->dev && cmpnt->registered_as_component) goto found; list_for_each_entry(component, &component_list, list) { if (dev != component->dev || !component->registered_as_component) continue; snd_soc_tplg_component_remove(component, SND_SOC_TPLG_INDEX_ALL); snd_soc_component_del_unlocked(component); found = 1; break; } mutex_unlock(&client_mutex); return; found: snd_soc_tplg_component_remove(cmpnt, SND_SOC_TPLG_INDEX_ALL); snd_soc_component_del_unlocked(cmpnt); mutex_unlock(&client_mutex); snd_soc_component_cleanup(cmpnt); kfree(cmpnt); if (found) { snd_soc_component_cleanup(component); kfree(component); } } EXPORT_SYMBOL_GPL(snd_soc_unregister_component); Loading Loading
include/sound/soc.h +2 −2 Original line number Diff line number Diff line Loading @@ -469,10 +469,10 @@ int snd_soc_register_codec(struct device *dev, struct snd_soc_dai_driver *dai_drv, int num_dai); void snd_soc_unregister_codec(struct device *dev); int snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai); int devm_snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai); void snd_soc_unregister_component(struct device *dev); int snd_soc_cache_init(struct snd_soc_codec *codec); Loading
sound/soc/soc-core.c +26 −22 Original line number Diff line number Diff line Loading @@ -3326,40 +3326,40 @@ static void snd_soc_component_del_unlocked(struct snd_soc_component *component) } int snd_soc_register_component(struct device *dev, const struct snd_soc_component_driver *cmpnt_drv, const struct snd_soc_component_driver *component_driver, struct snd_soc_dai_driver *dai_drv, int num_dai) { struct snd_soc_component *cmpnt; struct snd_soc_component *component; int ret; cmpnt = kzalloc(sizeof(*cmpnt), GFP_KERNEL); if (!cmpnt) { component = kzalloc(sizeof(*component), GFP_KERNEL); if (!component) { dev_err(dev, "ASoC: Failed to allocate memory\n"); return -ENOMEM; } ret = snd_soc_component_initialize(cmpnt, cmpnt_drv, dev); ret = snd_soc_component_initialize(component, component_driver, dev); if (ret) goto err_free; cmpnt->ignore_pmdown_time = true; cmpnt->registered_as_component = true; component->ignore_pmdown_time = true; component->registered_as_component = true; ret = snd_soc_register_dais(cmpnt, dai_drv, num_dai, true); ret = snd_soc_register_dais(component, dai_drv, num_dai, true); if (ret < 0) { dev_err(dev, "ASoC: Failed to register DAIs: %d\n", ret); goto err_cleanup; } snd_soc_component_add(cmpnt); snd_soc_component_add(component); return 0; err_cleanup: snd_soc_component_cleanup(cmpnt); snd_soc_component_cleanup(component); err_free: kfree(cmpnt); kfree(component); return ret; } EXPORT_SYMBOL_GPL(snd_soc_register_component); Loading @@ -3371,22 +3371,26 @@ EXPORT_SYMBOL_GPL(snd_soc_register_component); */ void snd_soc_unregister_component(struct device *dev) { struct snd_soc_component *cmpnt; struct snd_soc_component *component; int found = 0; mutex_lock(&client_mutex); list_for_each_entry(cmpnt, &component_list, list) { if (dev == cmpnt->dev && cmpnt->registered_as_component) goto found; list_for_each_entry(component, &component_list, list) { if (dev != component->dev || !component->registered_as_component) continue; snd_soc_tplg_component_remove(component, SND_SOC_TPLG_INDEX_ALL); snd_soc_component_del_unlocked(component); found = 1; break; } mutex_unlock(&client_mutex); return; found: snd_soc_tplg_component_remove(cmpnt, SND_SOC_TPLG_INDEX_ALL); snd_soc_component_del_unlocked(cmpnt); mutex_unlock(&client_mutex); snd_soc_component_cleanup(cmpnt); kfree(cmpnt); if (found) { snd_soc_component_cleanup(component); kfree(component); } } EXPORT_SYMBOL_GPL(snd_soc_unregister_component); Loading