openvortex-dev
[Top][All Lists]
Advanced

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

[Openvortex-dev] Re: au88x0 modem [was: Re: Mo' better modem support]


From: Raymond
Subject: [Openvortex-dev] Re: au88x0 modem [was: Re: Mo' better modem support]
Date: Tue, 13 Sep 2005 17:12:56 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.7.8) Gecko/20050603 Fedora/1.7.8-1.1.1.legacy

Philipp Matthias Hahn wrote:
> Hello!
>
> On Tue, Sep 13, 2005 at 03:09:09AM +0300, Sasha Khapyorsky wrote:
>
>>Could you try the patch below? And then look again at '/proc/asond/au8810'?
>
>
> See attached tar-file for a full copy of everything under
> /proc/asound/au8810 after applying the attached patch against ASLA from
> linux-2.6.13.1.
>
> BYtE
> Philipp


Is it an ALSA bug to display STAC9705 as STAC9704 ?



Sasha Khapyorsky wrote:
On 00:36 Tue 13 Sep     , Raymond wrote:

cat /proc/asound/au8810/codec97#0/ac97#0-0+regs

0:7c = 8384
0:7e = 7605


Is it STAC9705 ?

18-bit full-duplex audio codec with intergrated modem analog front end.

http://www6.tomshardware.com/mobile/20010126/notebooks-06.html

What is the usage of MOT6269353 if it already connected to STAC9705 ?


It is likely secondary modem-only codec (Motorola/SiLabs).

Philipp,

MOT6269353 and MOT6269352 is an AC-Link SM56 Building block.

http://www.motorola.com/softmodem/driver.htm

Is it normal to have a primary audio/modem codec STAC9705 and a secondary codec (AC-link SM56) ?

I guess DAA Si3014 is similar to MOT6269352


Could you try the patch below? And then look again at '/proc/asond/au8810'?

This is against CVS, untested and may be dangerous because I know nothing
about au8810 (somebody knows, please comment).

Sasha.


At a first glance, it's rather DANGER to try your patch.

The LAN card and MDC share the RJ11 jack on l8400b

Does it need to disable the LAN in BIOS before you make any test on the
MDC ?

Please cc your reply to address@hidden

Index: alsa-kernel/pci/au88x0/au8830.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au8830.h,v
retrieving revision 1.3
diff -u -p -r1.3 au8830.h
--- alsa-kernel/pci/au88x0/au8830.h     13 Apr 2004 15:26:27 -0000      1.3
+++ alsa-kernel/pci/au88x0/au8830.h     12 Sep 2005 23:35:27 -0000
@@ -203,12 +203,12 @@
 #define VORTEX_CODEC_SPORTCTRL 0x2918c

 #define VORTEX_CODEC_EN 0x29190
-#define                EN_AUDIO0               0x00000300
+#define                EN_CODEC0               0x00000300
 #define                EN_MODEM                0x00000c00
-#define                EN_AUDIO1               0x00003000
+#define                EN_CODEC1               0x00003000
 #define                EN_SPORT                0x00030000
 #define                EN_SPDIF                0x000c0000
-#define                EN_CODEC                (EN_AUDIO1 | EN_AUDIO0)
+#define                EN_CODEC                (EN_CODEC0|EN_MODEM|EN_CODEC1)

 #define VORTEX_SPDIF_SMPRATE   0x29194

AFAIK, EN_AUDIO0 is for the front channels and EN_AUDIO1 is the rear
channels of the AC97 link

#define         EN_AUDIO0               0x00000300
#define         EN_AUDIO1               0x00003000


Photo of Aureal sound cards can be found in

http://www.dearhoney.idv.tw/MUSEUM/soundcard-07.php

Turtle Beach Montego II (STAC9721) is supported but the rear speakers of
Quadzilla and the rear speakers and SPDIF IN/OUT of Home Studio Daugther
card are not yet supported.


JP1 of SQ2500 is connect to the WaveBlaster daugther card.

http://www.dayc.vispa.com/faq/vtximg.htm

JP2 and JP3 of SQ2500 are connected to SQ3500 daugther card with
Motorola DSP56362.

The usage of the 20-pins connectors at the top of SuperQuad is unknown.


Index: alsa-kernel/pci/au88x0/au8820.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au8820.h,v
retrieving revision 1.3
diff -u -p -r1.3 au8820.h
--- alsa-kernel/pci/au88x0/au8820.h     13 Apr 2004 15:26:27 -0000      1.3
+++ alsa-kernel/pci/au88x0/au8820.h     12 Sep 2005 23:35:26 -0000
@@ -158,7 +158,10 @@
 /* CODEC */
 #define VORTEX_CODEC_CTRL 0x11984
 #define VORTEX_CODEC_EN 0x11990
-#define                EN_CODEC        0x00000300
+#define                EN_CODEC0       0x00000300
+#define                EN_MODEM        0x00000c00
+#define                EN_CODEC1       0x00003000
+#define                EN_CODEC        (EN_CODEC0|EN_MODEM|EN_CODEC1)
 #define                EN_SPORT        0x00030000
 #define                EN_SPDIF        0x000c0000
 #define VORTEX_CODEC_CHN 0x11880


-#define                EN_CODEC        0x00000300
+#define                EN_AUDIO0       0x00000300


It seem all Vortex cards (e.g. Turtle Beach Montego, Diamond S90,... )
have only one stereo codec and do not support soft modem.



Index: alsa-kernel/pci/au88x0/au8810.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au8810.h,v
retrieving revision 1.3
diff -u -p -r1.3 au8810.h
--- alsa-kernel/pci/au88x0/au8810.h     13 Apr 2004 15:26:27 -0000      1.3
+++ alsa-kernel/pci/au88x0/au8810.h     12 Sep 2005 23:35:26 -0000
@@ -171,9 +171,9 @@
 #define VORTEX_CODEC_CTRL      0x29184
 #define VORTEX_CODEC_EN                0x29190
 #define                EN_CODEC0       0x00000300
-#define        EN_AC98         0x00000c00 /* Modem AC98 slots. */
+#define        EN_MODEM        0x00000c00 /* Modem AC98 slots. */
 #define                EN_CODEC1       0x00003000
-#define                EN_CODEC        (EN_CODEC0 | EN_CODEC1)
+#define                EN_CODEC        (EN_CODEC0 | EN_MODEM | EN_CODEC1)
 #define                EN_SPORT        0x00030000
 #define                EN_SPDIF        0x000c0000


+#define  VORTEX_PCI_SUBSYSTEM_ID   0x2A804


-#define                EN_CODEC0       0x00000300
+#define                EN_AUDIO0       0x00000300
-#define        EN_AC98         0x00000c00 /* Modem AC98 slots. */
+#define        EN_MODEM        0x00000c00 /* Modem AC98 slots. */
-#define                EN_CODEC1       0x00003000
+#define                EN_AUDIO1       0x00003000


SQ1500, Aureal Advantage and most of the au8810 sound cards do not
has any seconday modem codec.

SoundCom PCI Audio/Modem Combo card and some motherboard with
onboard au8810 (e.g. ASUS l8400b, MS-6178E) have aureal soft modem




http://pci-ids.ucw.cz/iii/?i=12eb8803

I suspect Aureal VCOM PCI Modem Card has different PCI vendor/device id
12eb:8803


I suspect SQ1500 is the only au8810 has a quad codec (need confirmation
from SQ1500 user).

Index: alsa-kernel/pci/au88x0/au88x0.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au88x0.h,v
retrieving revision 1.11
diff -u -p -r1.11 au88x0.h
--- alsa-kernel/pci/au88x0/au88x0.h     22 Mar 2005 08:50:55 -0000      1.11
+++ alsa-kernel/pci/au88x0/au88x0.h     12 Sep 2005 23:35:27 -0000
@@ -135,7 +135,8 @@ struct snd_vortex {
        snd_pcm_t *pcm[VORTEX_PCM_LAST];
snd_rawmidi_t *rmidi; /* Legacy Midi interface. */
-       ac97_t *codec;
+       unsigned int num_of_codecs;
+       ac97_t *codecs[2];
/* Stream structs. */
        stream_t dma_adb[NR_ADB];
Index: alsa-kernel/pci/au88x0/au88x0_core.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au88x0_core.c,v
retrieving revision 1.11
diff -u -p -r1.11 au88x0_core.c
--- alsa-kernel/pci/au88x0/au88x0_core.c        23 Feb 2005 11:00:31 -0000      
1.11
+++ alsa-kernel/pci/au88x0/au88x0_core.c        12 Sep 2005 23:35:33 -0000
@@ -2511,6 +2511,11 @@ static void vortex_codec_init(vortex_t *
        /* Enable codec channels 0 and 1. */
        hwwrite(vortex->mmio, VORTEX_CODEC_EN,
                hwread(vortex->mmio, VORTEX_CODEC_EN) | EN_CODEC);
+       vortex->num_of_codecs = 1;
+       /* nothing know about that */
+       msleep(2);
+       if (hwread(vortex->mmio, VORTEX_CODEC_EN)&(EN_CODEC1|EN_MODEM))
+               vortex->num_of_codecs = 2;
 }
static void

au88x0.h

        ac97_t *codec;
+#ifdef AU8810_CHIP
+       ac97_t *modem_codec;
+#endif
+       u32 pci_subsystem_id;


au88x0_core.c

        /* Enable codec channels 0 and 1. */
        hwwrite(vortex->mmio, VORTEX_CODEC_EN,
-               hwread(vortex->mmio, VORTEX_CODEC_EN) | EN_CODEC);
+               hwread(vortex->mmio, VORTEX_CODEC_EN) | EN_AUDIO0);


au88x0_mixer.c

-       vortex->isquad = ((vortex->codec == NULL) ?  0 :
(vortex->codec->ext_id&0x80));
+       vortex->isquad = ((vortex->codec == NULL) ?  0 :
(vortex->codec->ext_id & AC97_EI_SDAC));
+        if  ( VORTEX_IS_QUAD(vortex) ) {
+               /* Enable codec rear channels . */
+               hwwrite(vortex->mmio, VORTEX_CODEC_EN,
+               hwread(vortex->mmio, VORTEX_CODEC_EN) | EN_AUDIO1 );
+
+        };
+#ifdef AU8810_CHIP
+        /* Enable modem codec for ASUS L8400B
+       switch ( vortex->pci_subsystem_id ) {
+       case 0x10431043:
+               hwwrite(vortex->mmio, VORTEX_CODEC_EN,
+                       hwread(vortex->mmio, VORTEX_CODEC_EN) | EN_MODEM);      
     
+               break;
+       };
+#endif
+



Index: alsa-kernel/pci/au88x0/au88x0_mixer.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/au88x0/au88x0_mixer.c,v
retrieving revision 1.5
diff -u -p -r1.5 au88x0_mixer.c
--- alsa-kernel/pci/au88x0/au88x0_mixer.c       23 Mar 2005 17:04:16 -0000      
1.5
+++ alsa-kernel/pci/au88x0/au88x0_mixer.c       12 Sep 2005 23:35:33 -0000
@@ -15,7 +15,7 @@ static int __devinit snd_vortex_mixer(vo
 {
        ac97_bus_t *pbus;
        ac97_template_t ac97;
-       int err;
+       int i, err;
        static ac97_bus_ops_t ops = {
                .write = vortex_codec_write,
                .read = vortex_codec_read,
@@ -27,7 +27,10 @@ static int __devinit snd_vortex_mixer(vo
        // Intialize AC97 codec stuff.
        ac97.private_data = vortex;
        ac97.scaps = AC97_SCAP_NO_SPDIF;
-       err = snd_ac97_mixer(pbus, &ac97, &vortex->codec);
-       vortex->isquad = ((vortex->codec == NULL) ?  0 : 
(vortex->codec->ext_id&0x80));
+       for (i = 0 ; i < vortex->num_of_codecs ; i++) {
+               ac97.num = i;
+               err = snd_ac97_mixer(pbus, &ac97, &vortex->codecs[i]);
+       }
+       vortex->isquad = ((vortex->codecs[0] == NULL) ?  0 : 
(vortex->codecs[0]->ext_id&0x80));
        return err;
 }




au88x0.c
+        chip->pci_subsystem_id = pci_read_config_byte(pci,0x2c);

        // snd_ac97_mixer and Vortex mixer.
        if ((err = snd_vortex_mixer(chip)) < 0) {
                snd_card_free(card);
                return err;
        }
+#ifdef AU8810_CHIP
+        /* ASUS l8400b , MS-6178E,  SoundCom  */
+       switch ( chip->pci_subsystem_id ) {
+       case 0x10431043:
+             err = snd_vortex_modem_mixer(chip);               
+             break;
+       };
+#endif



/* for VCOM PCI Modem card */

au8810_modem.c

#define PCI_DEVICE_ID_AUREAL_MODEM          0x8803
#include "au8810.h"
#include "au88x0.h"
static struct pci_device_id snd_vortex_ids[] = {
        {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_MODEM,
         PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1,},
        {0,}
};
#include "au88x0_modem.c"
#include "au88x0_core.c"
#include "au88x0_pcm.c"
#include "au88x0.c"



au88x0_modem.c

/* modem routine for audio/modem combo or modem card */


static int __devinit snd_vortex_modem_mixer(vortex_t *vortex)
{
        ac97_bus_t *pbus;
        ac97_template_t ac97;
        int err;
        static ac97_bus_ops_t ops = {
                .write = vortex_modem_codec_write,
                .read = vortex_modem_codec_read,
        };
        if ((err = snd_ac97_bus(vortex->card, 0, &ops, NULL, &pbus)) < 0)
                return err;
        memset(&ac97, 0, sizeof(ac97));
        // Intialize AC97 codec stuff.
        ac97.private_data = vortex;
        ac97.scaps = AC97_SCAP_NO_SPDIF;        
        if ( vortex->device == PCI_DEVICE_ID_AUREAL_MODEM )
                ac97.num = 0 ;
        else
                ac97.num = 1 ;
        err = snd_ac97_mixer(pbus, &ac97, &vortex->modem_codec);
        return err;

}
















reply via email to

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