Merge remote-tracking branch 'asoc/fix/dapm' into asoc-next
This commit is contained in:
@@ -488,6 +488,7 @@ struct snd_soc_dapm_path {
|
|||||||
/* status */
|
/* status */
|
||||||
u32 connect:1; /* source and sink widgets are connected */
|
u32 connect:1; /* source and sink widgets are connected */
|
||||||
u32 walked:1; /* path has been walked */
|
u32 walked:1; /* path has been walked */
|
||||||
|
u32 walking:1; /* path is in the process of being walked */
|
||||||
u32 weak:1; /* path ignored for power management */
|
u32 weak:1; /* path ignored for power management */
|
||||||
|
|
||||||
int (*connected)(struct snd_soc_dapm_widget *source,
|
int (*connected)(struct snd_soc_dapm_widget *source,
|
||||||
|
@@ -831,6 +831,9 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
if (path->weak)
|
if (path->weak)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (path->walking)
|
||||||
|
return 1;
|
||||||
|
|
||||||
if (path->walked)
|
if (path->walked)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -838,6 +841,7 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
|
|
||||||
if (path->sink && path->connect) {
|
if (path->sink && path->connect) {
|
||||||
path->walked = 1;
|
path->walked = 1;
|
||||||
|
path->walking = 1;
|
||||||
|
|
||||||
/* do we need to add this widget to the list ? */
|
/* do we need to add this widget to the list ? */
|
||||||
if (list) {
|
if (list) {
|
||||||
@@ -847,11 +851,14 @@ static int is_connected_output_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
dev_err(widget->dapm->dev,
|
dev_err(widget->dapm->dev,
|
||||||
"ASoC: could not add widget %s\n",
|
"ASoC: could not add widget %s\n",
|
||||||
widget->name);
|
widget->name);
|
||||||
|
path->walking = 0;
|
||||||
return con;
|
return con;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
con += is_connected_output_ep(path->sink, list);
|
con += is_connected_output_ep(path->sink, list);
|
||||||
|
|
||||||
|
path->walking = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -931,6 +938,9 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
if (path->weak)
|
if (path->weak)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (path->walking)
|
||||||
|
return 1;
|
||||||
|
|
||||||
if (path->walked)
|
if (path->walked)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -938,6 +948,7 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
|
|
||||||
if (path->source && path->connect) {
|
if (path->source && path->connect) {
|
||||||
path->walked = 1;
|
path->walked = 1;
|
||||||
|
path->walking = 1;
|
||||||
|
|
||||||
/* do we need to add this widget to the list ? */
|
/* do we need to add this widget to the list ? */
|
||||||
if (list) {
|
if (list) {
|
||||||
@@ -947,11 +958,14 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget,
|
|||||||
dev_err(widget->dapm->dev,
|
dev_err(widget->dapm->dev,
|
||||||
"ASoC: could not add widget %s\n",
|
"ASoC: could not add widget %s\n",
|
||||||
widget->name);
|
widget->name);
|
||||||
|
path->walking = 0;
|
||||||
return con;
|
return con;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
con += is_connected_input_ep(path->source, list);
|
con += is_connected_input_ep(path->source, list);
|
||||||
|
|
||||||
|
path->walking = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user