All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.