mainThe OpenVortex Project - Support: sr #103090, STAC9708 ac97_code.c and...

 
 

sr #103090: STAC9708 ac97_code.c and ac97_patch.c

Submitter:  None
Submitted:  Tue 25 May 2004 05:21:58 AM UTC
   
 
Category:  None Priority:  5 - Normal
Severity:  6 - Security Status:  None
Privacy:  Public Assigned to:  None
Originator Email:  -email is unavailable- Open/Closed:  Open
Operating System:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Mon 14 Feb 2005 07:31:49 AM UTC, comment #10: 
Anonymous
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

Anonymous
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

Anonymous
Sat 19 Jun 2004 12:43:51 AM UTC, comment #7: 
Anonymous
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.

Anonymous
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 API’s 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.

Anonymous
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;
}


Anonymous
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 )

Anonymous
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);
}

Anonymous
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

Anonymous
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

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

CC list is empty

 

There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

Only logged-in users can vote.

 

No changes have been made to this item

Back to the top

Powered by Savane 3.14-3b9d.
Corresponding source code