aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-11-27 11:21:51 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-12-02 05:26:07 -0500
commit1ab97c8cad98de016cb36a870e118feaf0a0caaf (patch)
treee6aff2ba4a53bf7585263ac9b1955cbd5f784396
parent7270cebef293c7af3f91afdbe7514797ca53a5dd (diff)
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: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
-rw-r--r--include/sound/soc-dapm.h4
-rw-r--r--sound/soc/soc-dapm.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 0c159a7d211e..d26a9b784772 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -43,6 +43,9 @@
43 .num_kcontrols = 0} 43 .num_kcontrols = 0}
44 44
45/* platform domain */ 45/* platform domain */
46#define SND_SOC_DAPM_SIGGEN(wname) \
47{ .id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \
48 .num_kcontrols = 0, .reg = SND_SOC_NOPM }
46#define SND_SOC_DAPM_INPUT(wname) \ 49#define SND_SOC_DAPM_INPUT(wname) \
47{ .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \ 50{ .id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \
48 .num_kcontrols = 0, .reg = SND_SOC_NOPM } 51 .num_kcontrols = 0, .reg = SND_SOC_NOPM }
@@ -410,6 +413,7 @@ enum snd_soc_dapm_type {
410 snd_soc_dapm_supply, /* power/clock supply */ 413 snd_soc_dapm_supply, /* power/clock supply */
411 snd_soc_dapm_aif_in, /* audio interface input */ 414 snd_soc_dapm_aif_in, /* audio interface input */
412 snd_soc_dapm_aif_out, /* audio interface output */ 415 snd_soc_dapm_aif_out, /* audio interface output */
416 snd_soc_dapm_siggen, /* signal generator */
413}; 417};
414 418
415/* 419/*
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index da5c1ae7cc30..6bb327e431a5 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -339,6 +339,7 @@ static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
339 case snd_soc_dapm_output: 339 case snd_soc_dapm_output:
340 case snd_soc_dapm_adc: 340 case snd_soc_dapm_adc:
341 case snd_soc_dapm_input: 341 case snd_soc_dapm_input:
342 case snd_soc_dapm_siggen:
342 case snd_soc_dapm_dac: 343 case snd_soc_dapm_dac:
343 case snd_soc_dapm_micbias: 344 case snd_soc_dapm_micbias:
344 case snd_soc_dapm_vmid: 345 case snd_soc_dapm_vmid:
@@ -772,6 +773,11 @@ static int is_connected_input_ep(struct snd_soc_dapm_widget *widget)
772 return widget->inputs; 773 return widget->inputs;
773 } 774 }
774 775
776 /* signal generator */
777 if (widget->id == snd_soc_dapm_siggen) {
778 widget->inputs = snd_soc_dapm_suspend_check(widget);
779 return widget->inputs;
780 }
775 } 781 }
776 782
777 list_for_each_entry(path, &widget->sources, list_sink) { 783 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 case snd_soc_dapm_out_drv: 1988 case snd_soc_dapm_out_drv:
1983 case snd_soc_dapm_input: 1989 case snd_soc_dapm_input:
1984 case snd_soc_dapm_output: 1990 case snd_soc_dapm_output:
1991 case snd_soc_dapm_siggen:
1985 case snd_soc_dapm_micbias: 1992 case snd_soc_dapm_micbias:
1986 case snd_soc_dapm_vmid: 1993 case snd_soc_dapm_vmid:
1987 case snd_soc_dapm_pre: 1994 case snd_soc_dapm_pre: