* [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions
@ 2011-04-25 19:15 Mark Brown
2011-04-25 19:15 ` [PATCH 2/2] ASoC: Implement WM8962 DMIC support Mark Brown
2011-04-26 8:55 ` [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Liam Girdwood
0 siblings, 2 replies; 5+ messages in thread
From: Mark Brown @ 2011-04-25 19:15 UTC (permalink / raw)
To: Liam Girdwood; +Cc: alsa-devel, patches, Mark Brown
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
include/sound/wm8962.h | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/include/sound/wm8962.h b/include/sound/wm8962.h
index 2b5306c..1750bed 100644
--- a/include/sound/wm8962.h
+++ b/include/sound/wm8962.h
@@ -14,6 +14,28 @@
/* Use to set GPIO default values to zero */
#define WM8962_GPIO_SET 0x10000
+#define WM8962_GPIO_FN_CLKOUT 0
+#define WM8962_GPIO_FN_LOGIC 1
+#define WM8962_GPIO_FN_SDOUT 2
+#define WM8962_GPIO_FN_IRQ 3
+#define WM8962_GPIO_FN_THERMAL 4
+#define WM8962_GPIO_FN_PLL2_LOCK 6
+#define WM8962_GPIO_FN_PLL3_LOCK 7
+#define WM8962_GPIO_FN_FLL_LOCK 9
+#define WM8962_GPIO_FN_DRC_ACT 10
+#define WM8962_GPIO_FN_WSEQ_DONE 11
+#define WM8962_GPIO_FN_ALC_NG_ACT 12
+#define WM8962_GPIO_FN_ALC_PEAK_LIMIT 13
+#define WM8962_GPIO_FN_ALC_SATURATION 14
+#define WM8962_GPIO_FN_ALC_LEVEL_THR 15
+#define WM8962_GPIO_FN_ALC_LEVEL_LOCK 16
+#define WM8962_GPIO_FN_FIFO_ERR 17
+#define WM8962_GPIO_FN_OPCLK 18
+#define WM8962_GPIO_FN_DMICCLK 19
+#define WM8962_GPIO_FN_DMICDAT 20
+#define WM8962_GPIO_FN_MICD 21
+#define WM8962_GPIO_FN_MICSCD 22
+
struct wm8962_pdata {
int gpio_base;
u32 gpio_init[WM8962_MAX_GPIO];
--
1.7.4.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] ASoC: Implement WM8962 DMIC support
2011-04-25 19:15 [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Mark Brown
@ 2011-04-25 19:15 ` Mark Brown
2011-04-25 19:33 ` Stephen Warren
2011-04-26 8:55 ` [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Liam Girdwood
1 sibling, 1 reply; 5+ messages in thread
From: Mark Brown @ 2011-04-25 19:15 UTC (permalink / raw)
To: Liam Girdwood; +Cc: alsa-devel, patches, Mark Brown
DMIC support is automatically disabled when none of the GPIOs are set up
to bring out the DMICCLK and DMICDAT pins at startup.
Note that there's no support for controlling DMIC routing except the power
control so the board DAPM configuration will need to manage DMIC enable and
disable if analogue mics (eg, a headset) also exist.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
sound/soc/codecs/wm8962.c | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index bc84a1a..7949f89 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -2468,6 +2468,7 @@ SND_SOC_DAPM_INPUT("IN3R"),
SND_SOC_DAPM_INPUT("IN4L"),
SND_SOC_DAPM_INPUT("IN4R"),
SND_SOC_DAPM_INPUT("Beep"),
+SND_SOC_DAPM_INPUT("DMICDAT"),
SND_SOC_DAPM_MICBIAS("MICBIAS", WM8962_PWR_MGMT_1, 1, 0),
@@ -2487,6 +2488,8 @@ SND_SOC_DAPM_MIXER("MIXINL", WM8962_PWR_MGMT_1, 5, 0,
SND_SOC_DAPM_MIXER("MIXINR", WM8962_PWR_MGMT_1, 4, 0,
mixinr, ARRAY_SIZE(mixinr)),
+SND_SOC_DAPM_AIF_IN("DMIC", NULL, 0, WM8962_PWR_MGMT_1, 10, 0),
+
SND_SOC_DAPM_ADC("ADCL", "Capture", WM8962_PWR_MGMT_1, 3, 0),
SND_SOC_DAPM_ADC("ADCR", "Capture", WM8962_PWR_MGMT_1, 2, 0),
@@ -2564,13 +2567,17 @@ static const struct snd_soc_dapm_route wm8962_intercon[] = {
{ "MICBIAS", NULL, "SYSCLK" },
+ { "DMIC", NULL, "DMICDAT" },
+
{ "ADCL", NULL, "SYSCLK" },
{ "ADCL", NULL, "TOCLK" },
{ "ADCL", NULL, "MIXINL" },
+ { "ADCL", NULL, "DMIC" },
{ "ADCR", NULL, "SYSCLK" },
{ "ADCR", NULL, "TOCLK" },
{ "ADCR", NULL, "MIXINR" },
+ { "ADCR", NULL, "DMIC" },
{ "STL", "Left", "ADCL" },
{ "STL", "Right", "ADCR" },
@@ -3718,6 +3725,7 @@ static int wm8962_probe(struct snd_soc_codec *codec)
dev);
u16 *reg_cache = codec->reg_cache;
int i, trigger, irq_pol;
+ bool dmicclk, dmicdat;
wm8962->codec = codec;
INIT_DELAYED_WORK(&wm8962->mic_work, wm8962_mic_work);
@@ -3855,6 +3863,29 @@ static int wm8962_probe(struct snd_soc_codec *codec)
wm8962_add_widgets(codec);
+ /* Save boards having to disable DMIC when not in use */
+ dmicclk = false;
+ dmicdat = false;
+ for (i = 0; i < WM8962_MAX_GPIO; i++) {
+ switch (snd_soc_read(codec, WM8962_GPIO_BASE + i)
+ & WM8962_GP2_FN_MASK) {
+ case WM8962_GPIO_FN_DMICCLK:
+ dmicclk = true;
+ break;
+ case WM8962_GPIO_FN_DMICDAT:
+ dmicdat = true;
+ break;
+ default:
+ break;
+ }
+ }
+ if (!dmicclk || !dmicdat) {
+ dev_dbg(codec->dev, "DMIC not in use, disabling\n");
+ snd_soc_dapm_nc_pin(&codec->dapm, "DMICDAT");
+ }
+ if (dmicclk != dmicdat)
+ dev_warn(codec->dev, "DMIC GPIOs partially configured\n");
+
wm8962_init_beep(codec);
wm8962_init_gpio(codec);
--
1.7.4.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ASoC: Implement WM8962 DMIC support
2011-04-25 19:15 ` [PATCH 2/2] ASoC: Implement WM8962 DMIC support Mark Brown
@ 2011-04-25 19:33 ` Stephen Warren
2011-04-26 11:25 ` Mark Brown
0 siblings, 1 reply; 5+ messages in thread
From: Stephen Warren @ 2011-04-25 19:33 UTC (permalink / raw)
To: Mark Brown, Liam Girdwood; +Cc: alsa-devel@alsa-project.org
Mark Brown wrote at Monday, April 25, 2011 1:15 PM:
>...
> --- a/sound/soc/codecs/wm8962.c
> +++ b/sound/soc/codecs/wm8962.c
> @@ -2468,6 +2468,7 @@ SND_SOC_DAPM_INPUT("IN3R"),
> SND_SOC_DAPM_INPUT("IN4L"),
> SND_SOC_DAPM_INPUT("IN4R"),
> SND_SOC_DAPM_INPUT("Beep"),
> +SND_SOC_DAPM_INPUT("DMICDAT"),
>
> SND_SOC_DAPM_MICBIAS("MICBIAS", WM8962_PWR_MGMT_1, 1, 0),
>
> @@ -2487,6 +2488,8 @@ SND_SOC_DAPM_MIXER("MIXINL", WM8962_PWR_MGMT_1, 5,
> 0,
> SND_SOC_DAPM_MIXER("MIXINR", WM8962_PWR_MGMT_1, 4, 0,
> mixinr, ARRAY_SIZE(mixinr)),
>
> +SND_SOC_DAPM_AIF_IN("DMIC", NULL, 0, WM8962_PWR_MGMT_1, 10, 0),
> +
Mark,
I notice you added both a SND_SOC_DAPM_INPUT and a SND_SOC_DAPM_AIF_IN
for the DMIC path here. Should the WM8903 DMIC patch I provided have
done the same?
Thanks
--
nvpublic
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions
2011-04-25 19:15 [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Mark Brown
2011-04-25 19:15 ` [PATCH 2/2] ASoC: Implement WM8962 DMIC support Mark Brown
@ 2011-04-26 8:55 ` Liam Girdwood
1 sibling, 0 replies; 5+ messages in thread
From: Liam Girdwood @ 2011-04-26 8:55 UTC (permalink / raw)
To: Mark Brown; +Cc: alsa-devel, patches
On Mon, 2011-04-25 at 20:15 +0100, Mark Brown wrote:
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> include/sound/wm8962.h | 22 ++++++++++++++++++++++
> 1 files changed, 22 insertions(+), 0 deletions(-)
Both
Acked-by: Liam Girdwood <lrg@ti.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] ASoC: Implement WM8962 DMIC support
2011-04-25 19:33 ` Stephen Warren
@ 2011-04-26 11:25 ` Mark Brown
0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2011-04-26 11:25 UTC (permalink / raw)
To: Stephen Warren; +Cc: alsa-devel@alsa-project.org, Liam Girdwood
On Mon, Apr 25, 2011 at 12:33:14PM -0700, Stephen Warren wrote:
> I notice you added both a SND_SOC_DAPM_INPUT and a SND_SOC_DAPM_AIF_IN
> for the DMIC path here. Should the WM8903 DMIC patch I provided have
> done the same?
Note that the AIF widget here is a power control, not a routing control.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-04-26 11:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-25 19:15 [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Mark Brown
2011-04-25 19:15 ` [PATCH 2/2] ASoC: Implement WM8962 DMIC support Mark Brown
2011-04-25 19:33 ` Stephen Warren
2011-04-26 11:25 ` Mark Brown
2011-04-26 8:55 ` [PATCH 1/2] ASoC: Define constants for WM8962 GPIO functions Liam Girdwood
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.