@@ -478,6 +478,9 @@ void snd_soc_dapm_init(struct snd_soc_dapm_context *dapm,
struct snd_soc_card *card, struct snd_soc_component *component);
int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num);
+int snd_soc_dapm_add_routes_with_card(struct snd_soc_card *card,
+ struct snd_soc_dapm_context *dapm,
+ const struct snd_soc_dapm_route *routes, int num);
int snd_soc_dapm_del_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num);
int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm,
@@ -1641,22 +1641,11 @@ static int soc_probe_component(struct snd_soc_card *card,
if (ret < 0)
goto err_probe;
- ret = snd_soc_dapm_add_routes(dapm,
+ ret = snd_soc_dapm_add_routes_with_card(card, dapm,
component->driver->dapm_routes,
component->driver->num_dapm_routes);
- if (ret < 0) {
- if (card->disable_route_checks) {
- ret = 0;
- dev_info(card->dev,
- "%s: disable_route_checks set, ignoring errors on add_routes\n",
- __func__);
- } else {
- dev_err(card->dev,
- "%s: snd_soc_dapm_add_routes failed: %d\n",
- __func__, ret);
- goto err_probe;
- }
- }
+ if (ret < 0)
+ goto err_probe;
/* see for_each_card_components */
list_add(&component->card_list, &card->component_dev_list);
@@ -2233,21 +2222,10 @@ static int snd_soc_bind_card(struct snd_soc_card *card)
if (ret < 0)
goto probe_end;
- ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
+ ret = snd_soc_dapm_add_routes_with_card(card, &card->dapm, card->dapm_routes,
card->num_dapm_routes);
- if (ret < 0) {
- if (card->disable_route_checks) {
- ret = 0;
- dev_info(card->dev,
- "%s: disable_route_checks set, ignoring errors on add_routes\n",
- __func__);
- } else {
- dev_err(card->dev,
- "%s: snd_soc_dapm_add_routes failed: %d\n",
- __func__, ret);
- goto probe_end;
- }
- }
+ if (ret < 0)
+ goto probe_end;
ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
card->num_of_dapm_routes);
@@ -3189,6 +3189,21 @@ int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm,
}
EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes);
+int snd_soc_dapm_add_routes_with_card(struct snd_soc_card *card,
+ struct snd_soc_dapm_context *dapm,
+ const struct snd_soc_dapm_route *routes, int num)
+{
+ int ret = snd_soc_dapm_add_routes(dapm, routes, num);
+
+ if (ret < 0 && card->disable_route_checks) {
+ dev_info(card->dev, "disable_route_checks set, ignoring errors on add_routes\n");
+ ret = 0;
+ }
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes_with_card);
+
/**
* snd_soc_dapm_del_routes - Remove routes between DAPM widgets
* @dapm: DAPM context
@@ -1100,17 +1100,9 @@ static int soc_tplg_dapm_graph_elems_load(struct soc_tplg *tplg,
break;
}
- ret = snd_soc_dapm_add_routes(dapm, route, 1);
- if (ret) {
- if (dapm->card->disable_route_checks) {
- ret = 0;
- dev_info(tplg->dev,
- "ASoC: disable_route_checks set, ignoring dapm_add_routes errors\n");
- } else {
- dev_err(tplg->dev, "ASoC: dapm_add_routes failed: %d\n", ret);
- break;
- }
- }
+ ret = snd_soc_dapm_add_routes_with_card(dapm->card, dapm, route, 1);
+ if (ret)
+ break;
}
return ret;
Some device want to ignore snd_soc_dapm_add_routes() error, thus card->disable_route_checks flags had been added for such purpose. Because of this, ASoC has duplicate code for it. Let's adds new snd_soc_dapm_add_routes_with_card(), and share the error message handling. We don't need to indicate error message on this function, because it will be indicated from snd_soc_dapm_add_route(). Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> --- include/sound/soc-dapm.h | 3 +++ sound/soc/soc-core.c | 34 ++++++---------------------------- sound/soc/soc-dapm.c | 15 +++++++++++++++ sound/soc/soc-topology.c | 14 +++----------- 4 files changed, 27 insertions(+), 39 deletions(-)