Mon 14 Feb 2005 07:31:49 AM UTC, comment #10:
STAC9708 output bias mixer control
http://sourceforge.net/mailarchive/forum.php?thread_id=6553806&forum_id=33141
|
Sun 27 Jun 2004 09:49:55 AM UTC, comment #9:
It is not a good fix for the bug. ( changing ac97->caps )
http://sourceforge.net/mailarchive/forum.php?thread_id=5004325&forum_id=33141
|
Tue 22 Jun 2004 08:21:28 AM UTC, comment #8:
This also affect au8830 with STAC9704 and STAC9721 - use register 04 as LNLVL_OUT
|
Sat 19 Jun 2004 12:43:51 AM UTC, comment #7:
This affect all sound card using STAC9708
http://sourceforge.net/mailarchive/forum.php?thread_id=4957603&forum_id=1752
|
Wed 26 May 2004 02:10:26 AM UTC, comment #6:
As the Surround DAC Mixer control is disappeared (muted by default), the rear channels will never mix with the front channels by the AC97 mixer.
The mystery is the "PCM Out Path & Mute" control seem to be useless after this Surround DAC Mixer control disappeared.
|
Tue 25 May 2004 03:56:17 PM UTC, comment #5:
Refer to
6.1.1 PCM out path and optional 3D bypass of AC97 2.1 Specification
or
5.5.1 Analog Mixer Output of AC97 2.2 Specification
If analog 3D stereo enhancement is supported in AC 97 it is desirable that the PCM out source be mixable pre- or post-analog 3D processing. This allows digital 3D audio (rendered with volume, pan, reverb, Doppler, HRTF, etc.) on PCM out to bypass the analog 3D processing regardless of whether analog 3D is enabled or disabled. This prevents smearing of digital 3D audio, and also enables digital 3D audio sources to be mixed with 3D stereo enhanced analog sources (CD, AUX, etc).
The default PCM out path is through volume, mute, and analog 3D stereo enhancement. However, if the AC 97 Controller implements digital 3D audio, and detects analog 3D stereo enhancement support in the AC 97 analog, it can enable the 3D bypass path. This capability to switch to post 3D can also be exposed via APIs to support SW which emulates or accelerates digital 3D rendering.
In either PCM out scenario it is advantageous for the AC 97 Controller to use the post D/A analog volume control to support full resolution D/A conversions followed by analog attenuation as a means of achieving high SNR.
|
Tue 25 May 2004 03:28:38 PM UTC, comment #4:
Refer to page 26 of STAC9708 specification.
Any reserved bits, Marked X, can be written to but are don't care upon read back.
It seem that snd_ac97_try_bit alway true for bit 15 of register 0x20 ( General Purpose ) of STAC9708 but
the bit 15 "PCM Out Path & Mute" is not defined in STAC9708 specification.
/* build PCM out path & mute control */
if (snd_ac97_try_bit(ac97, AC97_GENERAL_PURPOSE, 15)) {
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_general[AC97_GENERAL_PCM_OUT], ac97))) < 0)
return err;
}
|
Tue 25 May 2004 01:08:41 PM UTC, comment #3:
STAC9708 using register 04 as SDAC Mixer volume control and STAC9721 using register as LNLVL volume control with bit4 of register 0 is zero ( default 6940 )
|
Tue 25 May 2004 08:21:51 AM UTC, comment #2:
static int patch_sigmatel_stac9708_specific(ac97_t *ac97)
{
int err;
if ((err = snd_ac97_cmix_new(ac97->bus->card, "Surround DAC Mixer", AC97_HEADPHONE, 0, ac97)) < 0)
return err;
snd_ac97_rename_vol_ctl(ac97, "Surround Playback", "Surround DAC Master Playback");
return patch_sigmatel_stac97xx_specific(ac97);
}
|
Tue 25 May 2004 07:25:31 AM UTC, comment #1:
A patch for this bug
replace
snd_ac97_rename_vol_ctl(ac97, "Headphone Playback", "Sigmatel Surround Playback");
in ac97_patch.c by
int err;
if ((err = snd_ac97_cmix_new(ac97->bus->card, "Sigmatel Surround DAC Mixer", AC97_HEADPHONE, 0, ac97)) < 0)
return err;
You need to declare snd_ac97_cmix_new() in ac97_local.h and make it non-static in ac97_codec.c
|
Tue 25 May 2004 05:21:58 AM UTC, original submission:
SIGMATEL SURROUND MIXER VOLUME CONTROL
http://www.mail-archive.com/alsa-cvslog@lists.sourceforge.net/msg04753.html
snd_ac97_try_volume_mix() use bit 4 (headphone support) of ac97 register 0 to create headphone volume control.
Therefore the headphone volume control will not be created for STAC9708 in ac97_codec.c and cannot be rename to "Sigmatel Surround Playback" in ac97_patch.c
http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/ac97/ac97_codec.c?r1=1.132&r2=1.133
http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/ac97/ac97_patch.c?r1=1.49&r2=1.50
You will need to create Sigmatel Surround Playback Switch and Volume controls in ac97_patch.c instead of rename it from headphone.
AC97_DOUBLE() is only defined in ac97_codec.c
It will need to define AC97_DOUBLE_VALUE (similar to AC97_SINGLE_VALUE ) and declare
snd_ac97_info_double()
snd_ac97_get_double();
snd_ac97_put_double();
in ac97_local.h
|