[alsa-devel] Strange findings about the microphone in SigmaTel STAC9221 A1

Takashi Iwai tiwai at suse.de
Fri May 18 19:12:41 CEST 2007


At Tue, 15 May 2007 18:11:58 +0100,
Ivan N. Zlatev wrote:
> 
> I was wrong about _vref. Output %X of pincap  and returned vref as
> follows on modprobe:
> 
> hda_codec: STAC922x, Apple subsys_id=106b1700
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2270:
> autoconfig: line_outs=1 (0xd/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2274:
> speaker_outs=1 (0xc/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2278:
> hp_outs=1 (0xa/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2286:
> inputs: mic=0xb, fmic=0xe, line=0xf, fline=0x0, cd=0x0, aux=0x0
> 17 - AC_PINCTL_VREF_80
> 0 - AC_PINCTL_VREF_0
> 17 - AC_PINCTL_VREF_80

Hmm, what is the second call with the number 0?


> > Could you check the connection of node 0x12 at the very beginning?
> > I guess it's not 0x0b.
> 
> Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>   Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
>   Amp-Out vals:  [0x00 0x00]
>   Connection: 7
>      0x0e* 0x15 0x0f 0x0b 0x0c 0x0d 0x0a
> 
> > Then try to add model=macbook or model=macbook-pro-v2.  Now iMac has
> > its own pin setting (corresponding to model=imac-intel).
> 
> I am on an intel imac. Also I wanted to mention that I have manged to
> get hold of the pin configs supplied by apple for windows for all
> apple systems. I mailed them last month to the list. I don't honestly
> know if they could be of any use to you. For example according to them
> for my codec subsystem's the pin config is:
> 
> [HKR\Settings\Pin\0A]
> CfgDflt = dword: 0x0121E21F
> Action = hex: 01,0A,81,0C,81,10,85,51,05,21
> [HKR\Settings\Pin\0B]
> CfgDflt = dword: 0x90A7012E
> [HKR\Settings\Pin\0C]
> CfgDflt = dword: 0x9017E110
> [HKR\Settings\Pin\0D]
> CfgDflt = dword: 0x400000FD
> [HKR\Settings\Pin\0E]
> CfgDflt = dword: 0x400000FE
> Action = hex: 01,10,81,0A,81,0C
> [HKR\Settings\Pin\0F]
> CfgDflt = dword: 0x0181E020
> Action = hex: 09,0F
> [HKR\Settings\Pin\10]
> CfgDflt = dword: 0x1145E230
> [HKR\Settings\Pin\11]
> CfgDflt = dword: 0x11C5E240
> [HKR\Settings\Pin\15]
> CfgDflt = dword: 0x400000FC
> [HKR\Settings\Pin\1B]
> CfgDflt = dword: 0x400000FB
> [HKR\Settings\GPIO]
> 00                                   = hex: 85
> 01                                   = hex: 82
> 
> This in comparison to the current imac-intel pinconfig
> 
> static unsigned int imac_intel_pin_configs[10] = {
> 	0x0121e230, 0x90a70120, 0x9017e110, 0x400000fe,
> 	0x400000fd, 0x0181e021, 0x1145e040, 0x400000fa,
> 	0x400000fc, 0x400000fb,
> };
> 
> My mail on the archive with the pinconfigs is
> http://mailman.alsa-project.org/pipermail/alsa-devel/2007-April/000731.html

Oh, then please give a similar array expression instead of files.
It's so sucking to retrieve files from this ML archive and then doing
something what you already did...

> I have tried using this pinconfig with rc4 and the input is set okay,
> but I still need to set capture to 0. A major issue is that there is
> no sound with this pinconfig. This is the output of modprobe:
> 
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:1795:
> hda_codec: model 'imac-intel' is selected
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2270:
> autoconfig: line_outs=0 (0x0/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2274:
> speaker_outs=1 (0xc/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2278:
> hp_outs=1 (0xa/0x0/0x0/0x0/0x0)
> ALSA /root/tmp/alsa-driver-1.0.14rc4/pci/hda/hda_codec.c:2286:
> inputs: mic=0xb, fmic=0x0, line=0xf, fline=0x0, cd=0x0, aux=0x0
> 17 - AC_PINCTL_VREF_80
> 17 - AC_PINCTL_VREF_80
> 
> I have attached the initial codec info after modprobing with the
> pinconfig from apple.

Which one?  There are so many posts...

> > What happens if you use different values for "Capture Volume" and
> > "Capture Mux Volume"?
> 
> There seems to be a proportional dependancy. If I increase caption vol
> by 1 and lower capture mux vol by 1 it will record (not 100% sure on
> the 1 to 1 factor here).

Wait - I thought that "Capture Mux Volume" is zero at initialization?

> Else, recording doesn't work if I change capture volume to something >
> 0. This is the change in the codec:

So, you mean that "Capture volume" must be zero?

> Node 0x17 [Audio Selector] wcaps 0x300903: Stereo Amp-In
>    Amp-In caps: N/A
> -  Amp-In vals:  [0x00 0x00]
> +  Amp-In vals:  [0x0e 0x0e]
>    Connection: 1
>       0x12

Is this the non-working state?
I'm puzzled now...

OK, let's make things straight.  To make the things clear, please
attach the codec info file at each state.  The step is like below:

- Build the latest driver with your pingconfig patch.
- Unload the driver module.
- Remove /etc/asound.state (or whatever alsactl stores -- the path is
  depending on distro)
- Load the module again; at this state, mixers are muted
- Get the first codec dump here once
- Unmute the playbacks as usual.  Check playback.
- Turn on only "Capture Switch".  Don't adjust "Capture Volume" and
  "Mux Capture Volume" if they are zero.
  Test recording once here.  Get codec dump again.
- If not working, try resetting the input source.
  Test recording.  Get codec dump.
- Raise "Capture Volume".  Test recording, get codec dump.
- Raise "Mux Capture Volume".  Test recording, get codec dump.
- If still not working, tune as you like.  Then get codec dump.

Either attach each codec dump as it is, or make diff incrementally so
that we can follow the codec register changes, too.


thanks,

Takashi


More information about the Alsa-devel mailing list