[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Openvortex-dev] au8830 - AC3 pass through SPDIF

From: Raymond
Subject: [Openvortex-dev] au8830 - AC3 pass through SPDIF
Date: Sat, 05 Mar 2005 23:13:44 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.4.3) Gecko/20041005

> 1) What is the difference between Consumer mode and Professional mode ?

What do you mean ?

> 2) What change will be needed in order to support the SPDIF IN/OUT of > Turtle Beach Montego II Quadzilla ?

Reverse engineering :P SPDIF out should work. The required audio routes
are known. But we need to know which GPIO pins evetually must be set to
enable/operate external optical transceivers.

SPDIF IN/OUT and rear is only available on Montego II Home Studio and
Montego II Quadzilla has SPDIF OUT and rear only

>> > 5) How can STAC9721 stereo codec provide quad audio ? ( Is it through
>> > SPDIF-I2S link ? )
>> That depends on the hardware. AFAIK, the STAC9721 supports only 2
>> channels. If we want 4, then obviously, the other two must go through
>> any other codec. It could be a secondary STAC9721, a I2S codec connected
>> to the I2S interface, some other kind of codec/DSP connected to any of
>> the 8 coprocessor I/O interfaces, SPDIF, or whatever interfaces there
>> might be we don't even know about.

Refer to the photo, there is only one ST9721T on Montego II,

1) Is LNLVL_OUT (pin 39,41) just a copy of LINE_OUT (pin 35,36) ?

> 3) Is it correct to return the following value in
> snd_vortex_spdif_mask_get() ?
> ucontrol->value.iec958.status[3] = IEC958_AES3_CON_FS;


Although CS8412 and CS8402a support consumer mode and professional,
there is no professional mode connector. May need to mask off the

2) Which of the following code is correct ?

static int snd_vortex_spdif_mask_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
    ucontrol->value.iec958.status[0] = ~(IEC958_AES0_PROFESSIONAL);
    ucontrol->value.iec958.status[1] = 0xff;
    ucontrol->value.iec958.status[2] = 0xff;
    ucontrol->value.iec958.status[3] = IEC958_AES3_CON_FS;
    return 0;


static int snd_vortex_spdif_default_put(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
     vortex_t *vortex = snd_kcontrol_chip(kcontrol);
    vortex->spdif_out.status[0]=ucontrol->value.iec958.status[0] &
    switch(vortex->spdif_out.status[3] & IEC958_AES3_CON_FS){
    case IEC958_AES3_CON_FS_32000: vortex->spdif_sr = 32000; break;
    case IEC958_AES3_CON_FS_44100: vortex->spdif_sr = 44100; break;
    case IEC958_AES3_CON_FS_48000: vortex->spdif_sr = 48000; break;
    return 0;

> 5) Can any au8810/au8830 owner verify that EN_CODEC1 should/should not > be used for those au8810/au8830 not using a quad codec ? (e.g Montego II > using STAC9721 stereo codec, SQ1500, Vortex Advantage, ASUS L8400B > notebook au8810 with modem) > > #define VORTEX_CODEC_CTRL 0x29184
> #define VORTEX_CODEC_EN        0x29190
> #define        EN_CODEC0    0x00000300
> #define     EN_AC98        0x00000c00 /* Modem AC98 slots. */
> #define        EN_CODEC1    0x00003000
> #define        EN_CODEC    (EN_CODEC0 | EN_CODEC1)

The EN_CODEC1 flag, is there to enable the AC97 channels 4 and 5. AFAIK,
the bits in that register (VORTEX_CODEC_EN) map as follows:

8,9: AC97 channels 0 and 1
10,11: AC97 channels 2 and 3 (used as AC98 modem channels)
12,13: AC97 channels 4 and 5 (rear/headphones channels)

For more details:

This mean that EN_CODEC1 should only be enabled if au88x0 have a quad codec

> > 3) Do we need to change the ADB routing when using AC3 passthrough ?

Hmm, good question. Maybe yes, because the current SPDIF PCM device
route does stereo deinterlacing (separating two stereo channels). The
SPDIF interface has 2 input sinks. For AC3 data, 2 interlaced channels
does not make ant sense, because it could be 4, 6 or more, encoded in
who knows what. Its just some raw data that must be passed through
intact. It may be that in AC3 passthrough mode the SPDIF transmitter
just re-joins the 2 data streams resulting in the original raw bit
stream, hopefuly not messing it up. Maybe someone with more SPDIF
knowledge can comment on this ?

3) Do we need to remove the MIXOUT to SPDIFOUT routes or just mute
the corresponding MIXIN to MIXOUT (0x14) when using AC3 pass through SPDIF ?

> There is already a parser to parse the sound font au30gm.arl in the
> vortex control panel.

> 6) What else will be needed for the au88x0 driver to support
>wavetable synthesis ?

The main problem is, that the audio routes from the WT engine are broken
and thus the DMA engine does not seem transfer any data.

# more /proc/asound/card0/pcm3p/info
card: 0
device: 3
subdevice: 0
stream: PLAYBACK
id: AU88x0 WT
name: wt
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 64
subdevices_avail: 64

# aplay -D hw:0,3 test.wav
Playing WAVE 'test.wav' : Unsigned 8 bit, Rate 11025 Hz, Mono
aplay: set_params:857: Sample format non available

4) How can we use "aplay" to play test.wav on the card 0 device 3 ?

> >
> > > 5) What additional kcontrol and routine are needed for SPDIF IN ?
> >

AFAIK, there is no direct SPDIF input interface on the au8830 chip. It
looks like that the SPDIF input is implemented using a I2S port or one
of the coporecessor interfaces. Since they are all sincronous serial
interfaces, they probably are almost the same and almost compatible
between each other, requiring little tweaking/additional circuitry on
the interface daughter-board.

Most likely SPORT interface.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]