alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
@ 2007-05-27 22:50 Ivan N. Zlatev
  2007-05-29 15:08 ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Ivan N. Zlatev @ 2007-05-27 22:50 UTC (permalink / raw)
  To: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 1572 bytes --]

Hello,

I am on an iMac ("*imac-20" model/pinconfig) with a Intel HD card with
the SigmaTel STAC9221 codec. I have attached the inital codec info
after modprobe. I am using Alsa HG. Setting the mux gain to a value >
20 (0x02 Amp-Out value) results a non-working microphone. Steps and
codec diffs as follows:

1) initial - microphone working
2) Mux Gain = 10 - microphone working

 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]
+  Amp-Out vals:  [0x01 0x01]
   Connection: 7
      0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a

3) Mux Gain = 20 - microphone working

 Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
   Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
-  Amp-Out vals:  [0x01 0x01]
+  Amp-Out vals:  [0x02 0x02]
   Connection: 7
      0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a


4) Mux Gain = 30 - microphone not working

 Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
   Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
-  Amp-Out vals:  [0x02 0x02]
+  Amp-Out vals:  [0x03 0x03]
   Connection: 7
      0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a


4) Mux Gain = 40 - microphone not working

 Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
   Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
-  Amp-Out vals:  [0x03 0x03]
+  Amp-Out vals:  [0x04 0x04]
   Connection: 7
      0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a

Regards
-- 
Ivan N. Zlatev

Web: http://www.i-nZ.net
"It's all some kind of whacked out conspiracy."

[-- Attachment #2: codec-info --]
[-- Type: application/octet-stream, Size: 4405 bytes --]

Codec: SigmaTel STAC9221 A1
Address: 0
Vendor Id: 0x83847680
Subsystem Id: 0x106b1700
Revision Id: 0x103401
Default PCM:
    rates [0x7e0]: 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Default Amp-In caps: ofs=0x00, nsteps=0x0e, stepsize=0x05, mute=1
Default Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x02, mute=1
Node 0x02 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out
  Amp-Out caps: N/A
  Amp-Out vals:  [0x5b 0x5b]
  Power: 0x0
Node 0x03 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out
  Amp-Out caps: N/A
  Amp-Out vals:  [0x7f 0x7f]
  Power: 0x0
Node 0x04 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out
  Amp-Out caps: N/A
  Amp-Out vals:  [0x7f 0x7f]
  Power: 0x0
Node 0x05 [Audio Output] wcaps 0xd0c05: Stereo Amp-Out
  Amp-Out caps: N/A
  Amp-Out vals:  [0x7f 0x7f]
  Power: 0x0
Node 0x06 [Audio Input] wcaps 0x1d0541: Stereo
  Power: 0x0
  Connection: 1
     0x17
Node 0x07 [Audio Input] wcaps 0x1d0541: Stereo
  Power: 0x0
  Connection: 1
     0x18
Node 0x08 [Audio Output] wcaps 0x40211: Stereo Digital
  PCM:
    rates [0x7e0]: 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24
    formats [0x5]: PCM AC3
Node 0x09 [Audio Input] wcaps 0x140311: Stereo Digital
  PCM:
    rates [0x160]: 44100 48000 96000
    bits [0xe]: 16 20 24
    formats [0x5]: PCM AC3
  Connection: 1
     0x11
Node 0x0a [Pin Complex] wcaps 0x400181: Stereo
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x0121e21f: [Jack] HP Out at Ext Rear
    Conn = 1/8, Color = White
  Pin-ctls: 0xc0: OUT HP
  Connection: 1
     0x02
Node 0x0b [Pin Complex] wcaps 0x400181: Stereo
  Pincap 0x081737: IN OUT Detect
  Pin Default 0x90a7012e: [Fixed] Mic at Int N/A
    Conn = Analog, Color = Unknown
  Pin-ctls: 0x24: IN
  Connection: 1
     0x04
Node 0x0c [Pin Complex] wcaps 0x400181: Stereo
  Pincap 0x081737: IN OUT Detect
  Pin Default 0x9017e110: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = White
  Pin-ctls: 0x40: OUT
  Connection: 1
     0x03
Node 0x0d [Pin Complex] wcaps 0x400181: Stereo
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x400000fd: [N/A] Line Out at Ext N/A
    Conn = Unknown, Color = Unknown
  Pin-ctls: 0x40: OUT
  Connection: 1
     0x02
Node 0x0e [Pin Complex] wcaps 0x400081: Stereo
  Pincap 0x0824: IN Detect
  Pin Default 0x400000fe: [N/A] Line Out at Ext N/A
    Conn = Unknown, Color = Unknown
  Pin-ctls: 0x20: IN
Node 0x0f [Pin Complex] wcaps 0x400181: Stereo
  Pincap 0x0837: IN OUT Detect
  Pin Default 0x0181e020: [Jack] Line In at Ext Rear
    Conn = 1/8, Color = White
  Pin-ctls: 0x20: IN
  Connection: 1
     0x05
Node 0x10 [Pin Complex] wcaps 0x400301: Stereo Digital
  Pincap 0x0810: OUT
  Pin Default 0x1145e230: [Jack] SPDIF Out at Int Rear
    Conn = Optical, Color = White
  Pin-ctls: 0x40: OUT
  Connection: 3
     0x08* 0x17 0x19
Node 0x11 [Pin Complex] wcaps 0x430681: Stereo Digital
  Pincap 0x0810024: IN EAPD Detect
  Pin Default 0x11c5e240: [Jack] SPDIF In at Int Rear
    Conn = Optical, Color = White
  Pin-ctls: 0x20: IN
  Power: 0x0
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
Node 0x13 [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
Node 0x14 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out
  Amp-Out caps: ofs=0x03, nsteps=0x03, stepsize=0x17, mute=0
  Amp-Out vals:  [0x00]
Node 0x15 [Pin Complex] wcaps 0x400001: Stereo
  Pincap 0x0820: IN
  Pin Default 0x400000fc: [N/A] Line Out at Ext N/A
    Conn = Unknown, Color = Unknown
  Pin-ctls: 0x00:
Node 0x16 [Volume Knob Widget] wcaps 0x600000: Mono
Node 0x17 [Audio Selector] wcaps 0x300903: Stereo Amp-In
  Amp-In caps: N/A
  Amp-In vals:  [0x0e 0x0e]
  Connection: 1
     0x12
Node 0x18 [Audio Selector] wcaps 0x300903: Stereo Amp-In
  Amp-In caps: N/A
  Amp-In vals:  [0x80 0x80]
  Connection: 1
     0x13
Node 0x19 [Vendor Defined Widget] wcaps 0xf30201: Stereo Digital
Node 0x1a [Audio Output] wcaps 0x30201: Stereo Digital
Node 0x1b [Pin Complex] wcaps 0x400301: Stereo Digital
  Pincap 0x0810: OUT
  Pin Default 0x400000fb: [N/A] Line Out at Ext N/A
    Conn = Unknown, Color = Unknown
  Pin-ctls: 0x00:
  Connection: 1
     0x1a

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-27 22:50 SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working Ivan N. Zlatev
@ 2007-05-29 15:08 ` Takashi Iwai
  2007-05-29 15:20   ` Ivan N. Zlatev
  0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2007-05-29 15:08 UTC (permalink / raw)
  To: Ivan N. Zlatev; +Cc: alsa-devel

At Sun, 27 May 2007 23:50:35 +0100,
Ivan N. Zlatev wrote:
> 
> Hello,
> 
> I am on an iMac ("*imac-20" model/pinconfig) with a Intel HD card with
> the SigmaTel STAC9221 codec. I have attached the inital codec info
> after modprobe. I am using Alsa HG. Setting the mux gain to a value >
> 20 (0x02 Amp-Out value) results a non-working microphone. Steps and
> codec diffs as follows:

Thanks for the survey!

And, does this volume have any influence on the quality of recorded
sound at all?  If not, we should remove this control rather than
keeping a dangerous thing...


Takashi


> 1) initial - microphone working
> 2) Mux Gain = 10 - microphone working
> 
>  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]
> +  Amp-Out vals:  [0x01 0x01]
>    Connection: 7
>       0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a
> 
> 3) Mux Gain = 20 - microphone working
> 
>  Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>    Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
> -  Amp-Out vals:  [0x01 0x01]
> +  Amp-Out vals:  [0x02 0x02]
>    Connection: 7
>       0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a
> 
> 
> 4) Mux Gain = 30 - microphone not working
> 
>  Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>    Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
> -  Amp-Out vals:  [0x02 0x02]
> +  Amp-Out vals:  [0x03 0x03]
>    Connection: 7
>       0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a
> 
> 
> 4) Mux Gain = 40 - microphone not working
> 
>  Node 0x12 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>    Amp-Out caps: ofs=0x00, nsteps=0x04, stepsize=0x27, mute=0
> -  Amp-Out vals:  [0x03 0x03]
> +  Amp-Out vals:  [0x04 0x04]
>    Connection: 7
>       0x0e 0x15 0x0f 0x0b* 0x0c 0x0d 0x0a
> 
> Regards
> -- 
> Ivan N. Zlatev
> 
> Web: http://www.i-nZ.net
> "It's all some kind of whacked out conspiracy."

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-29 15:08 ` Takashi Iwai
@ 2007-05-29 15:20   ` Ivan N. Zlatev
  2007-05-29 15:29     ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Ivan N. Zlatev @ 2007-05-29 15:20 UTC (permalink / raw)
  To: alsa-devel; +Cc: Takashi Iwai

On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
>
> And, does this volume have any influence on the quality of recorded
> sound at all?  If not, we should remove this control rather than
> keeping a dangerous thing...
>

Yes. This controls the microphone boost level (without boost the sound
recorded has *very* low volume). Also Windows shows  up a +20db
microphone boost slider on this machine.

-- 
Ivan N. Zlatev

Web: http://www.i-nZ.net
"It's all some kind of whacked out conspiracy."

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-29 15:20   ` Ivan N. Zlatev
@ 2007-05-29 15:29     ` Takashi Iwai
  2007-05-29 16:18       ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2007-05-29 15:29 UTC (permalink / raw)
  To: Ivan N. Zlatev; +Cc: alsa-devel

At Tue, 29 May 2007 16:20:33 +0100,
Ivan N. Zlatev wrote:
> 
> On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> >
> > And, does this volume have any influence on the quality of recorded
> > sound at all?  If not, we should remove this control rather than
> > keeping a dangerous thing...
> >
> 
> Yes. This controls the microphone boost level (without boost the sound
> recorded has *very* low volume). Also Windows shows  up a +20db
> microphone boost slider on this machine.

Ah, OK.  Then the control seems indicates the wrong max level indeed.
So, we need two fixes:

- rename "Mux Capture Volume" to more intuitive one, such as "Capture
  Boost" or something like that.

- limit the max level of this volume to 2.

The latter is a bit hard to fix.  Let's see whether I can do some
hack...


thanks,

Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-29 15:29     ` Takashi Iwai
@ 2007-05-29 16:18       ` Takashi Iwai
  2007-05-29 16:49         ` Ivan N. Zlatev
  0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2007-05-29 16:18 UTC (permalink / raw)
  To: Ivan N. Zlatev; +Cc: alsa-devel

At Tue, 29 May 2007 17:29:10 +0200,
I wrote:
> 
> At Tue, 29 May 2007 16:20:33 +0100,
> Ivan N. Zlatev wrote:
> > 
> > On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> > >
> > > And, does this volume have any influence on the quality of recorded
> > > sound at all?  If not, we should remove this control rather than
> > > keeping a dangerous thing...
> > >
> > 
> > Yes. This controls the microphone boost level (without boost the sound
> > recorded has *very* low volume). Also Windows shows  up a +20db
> > microphone boost slider on this machine.
> 
> Ah, OK.  Then the control seems indicates the wrong max level indeed.
> So, we need two fixes:
> 
> - rename "Mux Capture Volume" to more intuitive one, such as "Capture
>   Boost" or something like that.
> 
> - limit the max level of this volume to 2.
> 
> The latter is a bit hard to fix.  Let's see whether I can do some
> hack...

Could you check the patch below?
(This doesn't rename but just fix the latter item.)


Takashi

diff -r 200fc3a7ef62 pci/hda/hda_codec.c
--- a/pci/hda/hda_codec.c	Tue May 29 18:01:06 2007 +0200
+++ b/pci/hda/hda_codec.c	Tue May 29 18:17:15 2007 +0200
@@ -711,6 +711,19 @@ static u32 query_amp_caps(struct hda_cod
 			info->status |= INFO_AMP_CAPS;
 	}
 	return info->amp_caps;
+}
+
+int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
+			      unsigned int caps)
+{
+	struct hda_amp_info *info;
+
+	info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, dir, 0));
+	if (!info)
+		return -EINVAL;
+	info->amp_caps = caps;
+	info->status |= INFO_AMP_CAPS;
+	return 0;
 }
 
 /*
diff -r 200fc3a7ef62 pci/hda/hda_local.h
--- a/pci/hda/hda_local.h	Tue May 29 18:01:06 2007 +0200
+++ b/pci/hda/hda_local.h	Tue May 29 18:17:02 2007 +0200
@@ -277,5 +277,7 @@ static inline u32 get_wcaps(struct hda_c
 	return codec->wcaps[nid - codec->start_nid];
 }
 
+int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
+			      unsigned int caps);
 
 #endif /* __SOUND_HDA_LOCAL_H */
diff -r 200fc3a7ef62 pci/hda/patch_sigmatel.c
--- a/pci/hda/patch_sigmatel.c	Tue May 29 18:01:06 2007 +0200
+++ b/pci/hda/patch_sigmatel.c	Tue May 29 18:12:30 2007 +0200
@@ -2033,6 +2033,12 @@ static int patch_stac925x(struct hda_cod
 
 	codec->patch_ops = stac92xx_patch_ops;
 
+	/* Fix Mux capture level; max to 2 */
+	snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT,
+				  (0 << AC_AMPCAP_OFFSET_SHIFT) |
+				  (2 << AC_AMPCAP_NUM_STEPS_SHIFT) |
+				  (0x27 << AC_AMPCAP_STEP_SIZE_SHIFT) |
+				  (0 << AC_AMPCAP_MUTE_SHIFT));
 	return 0;
 }

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-29 16:18       ` Takashi Iwai
@ 2007-05-29 16:49         ` Ivan N. Zlatev
  2007-05-29 17:03           ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Ivan N. Zlatev @ 2007-05-29 16:49 UTC (permalink / raw)
  To: alsa-devel; +Cc: Takashi Iwai

On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> At Tue, 29 May 2007 17:29:10 +0200,
> I wrote:
> >
> > At Tue, 29 May 2007 16:20:33 +0100,
> > Ivan N. Zlatev wrote:
> > >
> > > On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> > > >
> > > > And, does this volume have any influence on the quality of recorded
> > > > sound at all?  If not, we should remove this control rather than
> > > > keeping a dangerous thing...
> > > >
> > >
> > > Yes. This controls the microphone boost level (without boost the sound
> > > recorded has *very* low volume). Also Windows shows  up a +20db
> > > microphone boost slider on this machine.
> >
> > Ah, OK.  Then the control seems indicates the wrong max level indeed.
> > So, we need two fixes:
> >
> > - rename "Mux Capture Volume" to more intuitive one, such as "Capture
> >   Boost" or something like that.
> >
> > - limit the max level of this volume to 2.
> >
> > The latter is a bit hard to fix.  Let's see whether I can do some
> > hack...
>
> Could you check the patch below?
> (This doesn't rename but just fix the latter item.)
>
>
> Takashi
>
> diff -r 200fc3a7ef62 pci/hda/hda_codec.c
> --- a/pci/hda/hda_codec.c       Tue May 29 18:01:06 2007 +0200
> +++ b/pci/hda/hda_codec.c       Tue May 29 18:17:15 2007 +0200
> @@ -711,6 +711,19 @@ static u32 query_amp_caps(struct hda_cod
>                         info->status |= INFO_AMP_CAPS;
>         }
>         return info->amp_caps;
> +}
> +
> +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
> +                             unsigned int caps)
> +{
> +       struct hda_amp_info *info;
> +
> +       info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, dir, 0));
> +       if (!info)
> +               return -EINVAL;
> +       info->amp_caps = caps;
> +       info->status |= INFO_AMP_CAPS;
> +       return 0;
>  }
>
>  /*
> diff -r 200fc3a7ef62 pci/hda/hda_local.h
> --- a/pci/hda/hda_local.h       Tue May 29 18:01:06 2007 +0200
> +++ b/pci/hda/hda_local.h       Tue May 29 18:17:02 2007 +0200
> @@ -277,5 +277,7 @@ static inline u32 get_wcaps(struct hda_c
>         return codec->wcaps[nid - codec->start_nid];
>  }
>
> +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
> +                             unsigned int caps);
>
>  #endif /* __SOUND_HDA_LOCAL_H */
> diff -r 200fc3a7ef62 pci/hda/patch_sigmatel.c
> --- a/pci/hda/patch_sigmatel.c  Tue May 29 18:01:06 2007 +0200
> +++ b/pci/hda/patch_sigmatel.c  Tue May 29 18:12:30 2007 +0200
> @@ -2033,6 +2033,12 @@ static int patch_stac925x(struct hda_cod
>
>         codec->patch_ops = stac92xx_patch_ops;
>
> +       /* Fix Mux capture level; max to 2 */
> +       snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT,
> +                                 (0 << AC_AMPCAP_OFFSET_SHIFT) |
> +                                 (2 << AC_AMPCAP_NUM_STEPS_SHIFT) |
> +                                 (0x27 << AC_AMPCAP_STEP_SIZE_SHIFT) |
> +                                 (0 << AC_AMPCAP_MUTE_SHIFT));
>         return 0;
>  }
>
>

Works, BUT the last hunk is at the wrong place. The
snd_hda_override_amp_caps call should be in patch_stac922x (...) and
not in patch_stac925x (...)

Cheers!
-- 
Ivan N. Zlatev

Web: http://www.i-nZ.net
"It's all some kind of whacked out conspiracy."

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working
  2007-05-29 16:49         ` Ivan N. Zlatev
@ 2007-05-29 17:03           ` Takashi Iwai
  0 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2007-05-29 17:03 UTC (permalink / raw)
  To: Ivan N. Zlatev; +Cc: alsa-devel

At Tue, 29 May 2007 17:49:54 +0100,
Ivan N. Zlatev wrote:
> 
> On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> > At Tue, 29 May 2007 17:29:10 +0200,
> > I wrote:
> > >
> > > At Tue, 29 May 2007 16:20:33 +0100,
> > > Ivan N. Zlatev wrote:
> > > >
> > > > On 5/29/07, Takashi Iwai <tiwai@suse.de> wrote:
> > > > >
> > > > > And, does this volume have any influence on the quality of recorded
> > > > > sound at all?  If not, we should remove this control rather than
> > > > > keeping a dangerous thing...
> > > > >
> > > >
> > > > Yes. This controls the microphone boost level (without boost the sound
> > > > recorded has *very* low volume). Also Windows shows  up a +20db
> > > > microphone boost slider on this machine.
> > >
> > > Ah, OK.  Then the control seems indicates the wrong max level indeed.
> > > So, we need two fixes:
> > >
> > > - rename "Mux Capture Volume" to more intuitive one, such as "Capture
> > >   Boost" or something like that.
> > >
> > > - limit the max level of this volume to 2.
> > >
> > > The latter is a bit hard to fix.  Let's see whether I can do some
> > > hack...
> >
> > Could you check the patch below?
> > (This doesn't rename but just fix the latter item.)
> >
> >
> > Takashi
> >
> > diff -r 200fc3a7ef62 pci/hda/hda_codec.c
> > --- a/pci/hda/hda_codec.c       Tue May 29 18:01:06 2007 +0200
> > +++ b/pci/hda/hda_codec.c       Tue May 29 18:17:15 2007 +0200
> > @@ -711,6 +711,19 @@ static u32 query_amp_caps(struct hda_cod
> >                         info->status |= INFO_AMP_CAPS;
> >         }
> >         return info->amp_caps;
> > +}
> > +
> > +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
> > +                             unsigned int caps)
> > +{
> > +       struct hda_amp_info *info;
> > +
> > +       info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, dir, 0));
> > +       if (!info)
> > +               return -EINVAL;
> > +       info->amp_caps = caps;
> > +       info->status |= INFO_AMP_CAPS;
> > +       return 0;
> >  }
> >
> >  /*
> > diff -r 200fc3a7ef62 pci/hda/hda_local.h
> > --- a/pci/hda/hda_local.h       Tue May 29 18:01:06 2007 +0200
> > +++ b/pci/hda/hda_local.h       Tue May 29 18:17:02 2007 +0200
> > @@ -277,5 +277,7 @@ static inline u32 get_wcaps(struct hda_c
> >         return codec->wcaps[nid - codec->start_nid];
> >  }
> >
> > +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
> > +                             unsigned int caps);
> >
> >  #endif /* __SOUND_HDA_LOCAL_H */
> > diff -r 200fc3a7ef62 pci/hda/patch_sigmatel.c
> > --- a/pci/hda/patch_sigmatel.c  Tue May 29 18:01:06 2007 +0200
> > +++ b/pci/hda/patch_sigmatel.c  Tue May 29 18:12:30 2007 +0200
> > @@ -2033,6 +2033,12 @@ static int patch_stac925x(struct hda_cod
> >
> >         codec->patch_ops = stac92xx_patch_ops;
> >
> > +       /* Fix Mux capture level; max to 2 */
> > +       snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT,
> > +                                 (0 << AC_AMPCAP_OFFSET_SHIFT) |
> > +                                 (2 << AC_AMPCAP_NUM_STEPS_SHIFT) |
> > +                                 (0x27 << AC_AMPCAP_STEP_SIZE_SHIFT) |
> > +                                 (0 << AC_AMPCAP_MUTE_SHIFT));
> >         return 0;
> >  }
> >
> >
> 
> Works, BUT the last hunk is at the wrong place. The
> snd_hda_override_amp_caps call should be in patch_stac922x (...) and
> not in patch_stac925x (...)

Aha, a typical error :)
I committed the fixed patch to ALSA HG tree now.
Could you check the HG tree later whether it really works?

Also, any other pending issues?


thanks,

Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-05-29 17:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-27 22:50 SigmaTel STAC9221 - Mux Amp-Out > 0x02 == microphone not working Ivan N. Zlatev
2007-05-29 15:08 ` Takashi Iwai
2007-05-29 15:20   ` Ivan N. Zlatev
2007-05-29 15:29     ` Takashi Iwai
2007-05-29 16:18       ` Takashi Iwai
2007-05-29 16:49         ` Ivan N. Zlatev
2007-05-29 17:03           ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).