Forwarded Conversation Subject: [ASoC] Mic record is not working with wm9713 ASoC driver ------------------------
From: Nobin Mathew nobin.mathew@gmail.com To: linux-kernel@vger.kernel.org Date: Wed, May 9, 2007 at 2:48 PM
I am trying to record mic with AsoC wm9713 driver. My Mic is connected "Mic 1".
My settings
'Mic A Source' -> "Mic 1" 'Mic Boost (+20dB)' [on] 'Capture' [on] 'Left Capture Source' "Mic 1" 'Right Capture Source' "Mic 1"
i am issuing following command to record "arecord -M -f S16_LE sound.wav"
But what i found is driver is not enabling "Mic bias" and "Mic A PGA"
this dump of /sys/devices/platform/soc-audio/dapm_widget while "arecord" is running is given below
Mic Bias: Off Mic B Pre Amp: Off Mic A Pre Amp: On Mic B PGA: Off Mic A PGA: Off Mono In: Off Right Line In: Off Left Line In: Off Mono Out: Off Out 4: Off Out 3: Off Right Speaker: Off Left Speaker: Off Right Headphone: Off Left Headphone: Off Right ADC: On Left ADC: On Aux DAC: Off Voice DAC: Off Capture Mixer: Off HP Mixer: Off AC97 Mixer: Off Right DAC: Off Left DAC: Off Speaker Mixer: Off Mono Mixer: Off Right HP Mixer: Off Left HP Mixer: Off PM State: D0
In idea why this is happening? what is going wrong with my settings?
Nobin Mathew
-------- From: Andrew Morton akpm@linux-foundation.org To: Nobin Mathew nobin.mathew@gmail.com Cc: linux-kernel@vger.kernel.org, Jaroslav Kysela perex@suse.cz, Takashi Iwai tiwai@suse.de Date: Wed, May 9, 2007 at 3:51 PM
[Quoted text hidden](maintainers cc'ed)
-------- From: Liam Girdwood lg@opensource.wolfsonmicro.com To: Nobin Mathew nobin.mathew@gmail.com Cc: linux-kernel@vger.kernel.org Date: Wed, May 9, 2007 at 3:55 PM
On Wed, 2007-05-09 at 14:48 +0530, Nobin Mathew wrote:
I am trying to record mic with AsoC wm9713 driver. My Mic is connected "Mic 1".
I've replied to this duplicate post on alsa-dev.
Liam
-------- From: Nobin Mathew nobin.mathew@gmail.com To: Liam Girdwood lg@opensource.wolfsonmicro.com Cc: linux-kernel@vger.kernel.org Date: Wed, May 9, 2007 at 4:14 PM
Liam Sorry for disturbing you again,
I could not find that reply on alsa devel mailing list
Can u send that to me
Thanks [Quoted text hidden] -------- From: Liam Girdwood lg@opensource.wolfsonmicro.com To: Nobin Mathew nobin.mathew@gmail.com Date: Wed, May 9, 2007 at 4:22 PM
The mail server is probably a little behind..... give it about 30 mins...
Liam [Quoted text hidden]> -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
-------- From: Nobin Mathew nobin.mathew@gmail.com To: Liam Girdwood lg@opensource.wolfsonmicro.com Date: Wed, May 9, 2007 at 4:25 PM Attachments: identity_wm9713.c
Liam i got the mail. I am not setting any audio paths in my machine driver [Quoted text hidden] -------- From: Nobin Mathew nobin.mathew@gmail.com To: linux-kernel@vger.kernel.org Date: Wed, May 9, 2007 at 4:28 PM Attachments: identity_wm9713.c
[Quoted text hidden] -------- From: Nobin Mathew nobin.mathew@gmail.com To: Liam Girdwood lg@opensource.wolfsonmicro.com Date: Wed, May 9, 2007 at 5:00 PM
Liam i have few more doubts
i have only Mic1, i am not connecting to Mic2A and Mic 2B So can i remove audio path to Mic2A and Mic2B means my audio path will be like static const char* audio_map[][3] = {
/* mic is connected to mic1 - with bias */ {"MIC1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 1"}, #if 0 /* mic is connected to mic2A - with bias */ {"MIC2A", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 2"}, /* mic is connected to mic2B - with bias */ {"MIC2B", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 3"}, #endif
{NULL, NULL, NULL}, };
instead of
static const char* audio_map[][3] = {
/* mic is connected to mic1 - with bias */ {"MIC1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 1"}, /* mic is connected to mic2A - with bias */ {"MIC2A", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 2"}, /* mic is connected to mic2B - with bias */ {"MIC2B", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 3"},
{NULL, NULL, NULL}, };
what is the meaning of these lines, what is RXP and RXN
/* set up mainstone codec pins */ // snd_soc_dapm_set_endpoint(codec, "RXP", 0); // snd_soc_dapm_set_endpoint(codec, "RXN", 0); snd_soc_dapm_set_endpoint(codec, "MIC1", 0); [Quoted text hidden] -------- From: Liam Girdwood lg@opensource.wolfsonmicro.com To: Nobin Mathew nobin.mathew@gmail.com Date: Wed, May 9, 2007 at 5:30 PM
On Wed, 2007-05-09 at 17:00 +0530, Nobin Mathew wrote:
Liam i have few more doubts
i have only Mic1, i am not connecting to Mic2A and Mic 2B So can i remove audio path to Mic2A and Mic2B means my audio path will be like static const char* audio_map[][3] = {
/* mic is connected to mic1 - with bias */ {"MIC1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 1"},
#if 0 /* mic is connected to mic2A - with bias */ {"MIC2A", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 2"}, /* mic is connected to mic2B - with bias */ {"MIC2B", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 3"}, #endif
{NULL, NULL, NULL},
};
This is fine, it's safe to remove unused Mic's.
instead of
static const char* audio_map[][3] = {
/* mic is connected to mic1 - with bias */ {"MIC1", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 1"}, /* mic is connected to mic2A - with bias */ {"MIC2A", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 2"}, /* mic is connected to mic2B - with bias */ {"MIC2B", NULL, "Mic Bias"}, {"Mic Bias", NULL, "Mic 3"}, {NULL, NULL, NULL},
};
what is the meaning of these lines, what is RXP and RXN
/* set up mainstone codec pins */
// snd_soc_dapm_set_endpoint(codec, "RXP", 0); // snd_soc_dapm_set_endpoint(codec, "RXN", 0); snd_soc_dapm_set_endpoint(codec, "MIC1", 0);
RXP and RXN are from a different codec and should be removed. Also remove the MIC1 endpoint setting to 0 as this will disconnect it.
Comments from driver :-
static int identity_wm9713_ac97_init(struct snd_soc_codec *codec) { struct platform_controller *controller = codec->ac97->bus->private_data; struct aaci *aaci = (struct aaci *)controller->bus_controller;
snd_ac97_pcm_assign(codec->ac97->bus, 3, ac97_defs); aaci->ac97_bus = codec->ac97->bus;
/* * * Disable AC97 PC Beep input on audio codecs. * */ if (ac97_is_audio(codec->ac97)) snd_ac97_write_cache(codec->ac97, AC97_PC_BEEP, 0x801e); return 0; }
AC97 beep should be disabled in userspace. e.g. alsa configuration file or by changing mixers settings (alsactl can save and restore settings).
unsigned int identity_wm9713_config_sysclk(struct snd_soc_pcm_runtime *rtd, struct snd_soc_clock_info *info) { return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12187500); }
This function has been removed in current ASoC versions. It's best to upgrade from kernel.org or from here :-
http://opensource.wolfsonmicro.com/cgi-bin/gitweb/gitweb.cgi?p=linux-2.6-aso...
Liam
-------- From: Nobin Mathew nobin.mathew@gmail.com To: Liam Girdwood lg@opensource.wolfsonmicro.com Date: Wed, May 9, 2007 at 5:30 PM
Liam Thanks of lot
i got it working
Cheers [Quoted text hidden] -------- From: Liam Girdwood lg@opensource.wolfsonmicro.com To: Nobin Mathew nobin.mathew@gmail.com Cc: linux-kernel@vger.kernel.org Date: Wed, May 9, 2007 at 5:38 PM
It's probably best to keep this thread on alsa-dev otherwise things start to get confusing when cross posting occurs.
Liam
--------