mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 15:49:42 -04:00
ASoC: soc-dapm.c: merge dapm_power_one_widget() and dapm_widget_set_power()
dapm_widget_set_power() (= X) is called only from
dapm_power_one_widget() (= Y), and total purpose of these functions are
calling dapm_seq_insert() (= a) accordingly for each widget.
(X) static void dapm_widget_set_power(...)
{
...
if (power)
(a) dapm_seq_insert(w, up_list, true);
else
(a) dapm_seq_insert(w, down_list, false);
}
(Y) static void dapm_power_one_widget(...)
{
..
switch (w->id) {
case snd_soc_dapm_pre:
(a) dapm_seq_insert(w, down_list, false);
break;
case snd_soc_dapm_post:
(a) dapm_seq_insert(w, up_list, true);
break;
default:
power = dapm_widget_power_check(w);
(X) dapm_widget_set_power(w, power, up_list, down_list);
break;
}
}
It should be more simple, but the code is unnecessarily complicated,
and difficult to read/understand. This patch merge these into one.
Link: https://lore.kernel.org/all/87tu42owdd.wl-kuninori.morimoto.gx@renesas.com/
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/8735bktzrx.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
2e3fafbb14
commit
9941ba4bae
@@ -1873,11 +1873,25 @@ static void dapm_widget_set_peer_power(struct snd_soc_dapm_widget *peer,
|
||||
dapm_mark_dirty(peer, "peer state change");
|
||||
}
|
||||
|
||||
static void dapm_widget_set_power(struct snd_soc_dapm_widget *w, bool power,
|
||||
static void dapm_power_one_widget(struct snd_soc_dapm_widget *w,
|
||||
struct list_head *up_list,
|
||||
struct list_head *down_list)
|
||||
{
|
||||
struct snd_soc_dapm_path *path;
|
||||
int power;
|
||||
|
||||
switch (w->id) {
|
||||
case snd_soc_dapm_pre:
|
||||
power = 0;
|
||||
goto end;
|
||||
case snd_soc_dapm_post:
|
||||
power = 1;
|
||||
goto end;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
power = dapm_widget_power_check(w);
|
||||
|
||||
if (w->power == power)
|
||||
return;
|
||||
@@ -1897,35 +1911,13 @@ static void dapm_widget_set_power(struct snd_soc_dapm_widget *w, bool power,
|
||||
if (!w->is_supply)
|
||||
snd_soc_dapm_widget_for_each_sink_path(w, path)
|
||||
dapm_widget_set_peer_power(path->sink, power, path->connect);
|
||||
|
||||
end:
|
||||
if (power)
|
||||
dapm_seq_insert(w, up_list, true);
|
||||
else
|
||||
dapm_seq_insert(w, down_list, false);
|
||||
}
|
||||
|
||||
static void dapm_power_one_widget(struct snd_soc_dapm_widget *w,
|
||||
struct list_head *up_list,
|
||||
struct list_head *down_list)
|
||||
{
|
||||
int power;
|
||||
|
||||
switch (w->id) {
|
||||
case snd_soc_dapm_pre:
|
||||
dapm_seq_insert(w, down_list, false);
|
||||
break;
|
||||
case snd_soc_dapm_post:
|
||||
dapm_seq_insert(w, up_list, true);
|
||||
break;
|
||||
|
||||
default:
|
||||
power = dapm_widget_power_check(w);
|
||||
|
||||
dapm_widget_set_power(w, power, up_list, down_list);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static bool dapm_idle_bias_off(struct snd_soc_dapm_context *dapm)
|
||||
{
|
||||
if (dapm->idle_bias_off)
|
||||
|
||||
Reference in New Issue
Block a user