[Top][All Lists]
[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;
}
Message not available
Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- Message not available
- [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Sasha Khapyorsky, 2005/09/13
- [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Philipp Matthias Hahn, 2005/09/13
- [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Sasha Khapyorsky, 2005/09/13
- [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Philipp Matthias Hahn, 2005/09/14
- Re: [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Maarten Vanraes, 2005/09/14
- Re: [Openvortex-dev] Re: Re: au88x0 modem, Raymond, 2005/09/14
- Re: [Openvortex-dev] Re: Re: au88x0 modem, Maarten Vanraes, 2005/09/14
Re: [Openvortex-dev] Re: [Alsa-devel] Re: au88x0 modem, Sasha Khapyorsky, 2005/09/14