提交 1ab97c8c 编写于 作者: M Mark Brown

ASoC: Add signal generator widget type

A signal generator behaves as an input would but is not considered for
any of the special behaviour associated with external input pins. This
is especially useful when automatically working out not connected widgets.
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: NLiam Girdwood <lrg@ti.com>
上级 7270cebe
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
.num_kcontrols = 0} .num_kcontrols = 0}
/* platform domain */ /* platform domain */
#define SND_SOC_DAPM_SIGGEN(wname) \
{ .id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \
.num_kcontrols = 0, .reg = SND_SOC_NOPM }
#define SND_SOC_DAPM_INPUT(wname) \ #define SND_SOC_DAPM_INPUT(wname) \
{ .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \ { .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \
.num_kcontrols = 0, .reg = SND_SOC_NOPM } .num_kcontrols = 0, .reg = SND_SOC_NOPM }
...@@ -410,6 +413,7 @@ enum snd_soc_dapm_type { ...@@ -410,6 +413,7 @@ enum snd_soc_dapm_type {
snd_soc_dapm_supply, /* power/clock supply */ snd_soc_dapm_supply, /* power/clock supply */
snd_soc_dapm_aif_in, /* audio interface input */ snd_soc_dapm_aif_in, /* audio interface input */
snd_soc_dapm_aif_out, /* audio interface output */ snd_soc_dapm_aif_out, /* audio interface output */
snd_soc_dapm_siggen, /* signal generator */
}; };
/* /*
......
...@@ -339,6 +339,7 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w, ...@@ -339,6 +339,7 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
case snd_soc_dapm_output: case snd_soc_dapm_output:
case snd_soc_dapm_adc: case snd_soc_dapm_adc:
case snd_soc_dapm_input: case snd_soc_dapm_input:
case snd_soc_dapm_siggen:
case snd_soc_dapm_dac: case snd_soc_dapm_dac:
case snd_soc_dapm_micbias: case snd_soc_dapm_micbias:
case snd_soc_dapm_vmid: case snd_soc_dapm_vmid:
...@@ -772,6 +773,11 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget) ...@@ -772,6 +773,11 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget)
return widget->inputs; return widget->inputs;
} }
/* signal generator */
if (widget->id == snd_soc_dapm_siggen) {
widget->inputs = snd_soc_dapm_suspend_check(widget);
return widget->inputs;
}
} }
list_for_each_entry(path, &widget->sources, list_sink) { list_for_each_entry(path, &widget->sources, list_sink) {
...@@ -1982,6 +1988,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm, ...@@ -1982,6 +1988,7 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
case snd_soc_dapm_out_drv: case snd_soc_dapm_out_drv:
case snd_soc_dapm_input: case snd_soc_dapm_input:
case snd_soc_dapm_output: case snd_soc_dapm_output:
case snd_soc_dapm_siggen:
case snd_soc_dapm_micbias: case snd_soc_dapm_micbias:
case snd_soc_dapm_vmid: case snd_soc_dapm_vmid:
case snd_soc_dapm_pre: case snd_soc_dapm_pre:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册