From: Takashi Iwai <tiwai@suse.de>
To: bernatik@kn.vutbr.cz
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: [Alsa-user] 4 channel stereo with ALC650 (MSI KT3-ultra)
Date: Mon, 14 Oct 2002 15:47:09 +0200 [thread overview]
Message-ID: <s5hptud6ski.wl@alsa2.suse.de> (raw)
In-Reply-To: <200210121718.49766.bernatik@kn.vutbr.cz>
[-- Attachment #1: Type: text/plain, Size: 1728 bytes --]
At Sat, 12 Oct 2002 17:18:49 +0200,
Jan Bernatík wrote:
>
> Dne pá 11. říjen 2002 16:41 Takashi Iwai napsal(a):
> > At Fri, 11 Oct 2002 16:24:36 +0200,
> >
> > Jan Bernatík wrote:
> > > Hallo everyone
> > >
> > > I have alsa drivers 0.9rc3 working with my via8233 (ALC650) onboard
> > > soundcard. But I really don't know, if there is some way to play
> > > 4-channel stereo (neither with S-bracket nor without it). In alsamixer I
> > > don't have "rear speaker" option or something like that ... I installed
> > > windows just to try if it's working there, and it is (with new driver
> > > downloaded from realtek, whan i open windows sound mixer i have "rear
> > > speaker" option). So I'm asking for help or some documentation about that
> > > ... if it exist.
> >
> > the via82xx driver itself supports the multi-channel playback, simply
> > by setting up and passing 4-channel interleaved samples.
> > but, i guess, the problem is the multi-channel output on this codec.
> > there are some vendor-specific registers for multichannel controls on
> > ALC650, but they are still not supported on the alsa driver, mainly
> > due to lack of hardware for tests.
> >
> > i'll let you know if the experimental patch is ready.
> >
> >
> > ciao,
> >
> > Takashi
>
> Thank U a lot.
> I think U are probably really busy, but i want to thank you
> for what are you doing. I'm starting with programming, i want to contribute to
> opensource as well.
the attached is a patch to control switches for surround, center/lfe
pins. you'll have "Line-In As Surround" and "Mic As Center/LFE".
if you don't get sounds even after changing "Surround" and "Center",
"LFE" volumes and switches, please try to change the values above.
Takashi
[-- Attachment #2: alc650-fix.dif --]
[-- Type: application/octet-stream, Size: 5732 bytes --]
Index: alsa-kernel/include/ac97_codec.h
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/include/ac97_codec.h,v
retrieving revision 1.14
diff -u -r1.14 ac97_codec.h
--- alsa-kernel/include/ac97_codec.h 17 Sep 2002 13:40:06 -0000 1.14
+++ alsa-kernel/include/ac97_codec.h 14 Oct 2002 13:33:58 -0000
@@ -195,6 +195,10 @@
#define AC97_CXR_SPDIF_PCM 0x0
#define AC97_CXR_SPDIF_AC3 0x2
+/* specific - ALC */
+#define AC97_ALC650_MULTICH 0x6a
+#define AC97_ALC650_CLOCK 0x7a
+
/* ac97->scaps */
#define AC97_SCAP_AUDIO (1<<0) /* audio AC'97 codec */
#define AC97_SCAP_MODEM (1<<1) /* modem AC'97 codec */
Index: alsa-kernel/pci/ac97/ac97_codec.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/ac97/ac97_codec.c,v
retrieving revision 1.37
diff -u -r1.37 ac97_codec.c
--- alsa-kernel/pci/ac97/ac97_codec.c 18 Sep 2002 12:25:21 -0000 1.37
+++ alsa-kernel/pci/ac97/ac97_codec.c 14 Oct 2002 13:33:27 -0000
@@ -105,7 +105,7 @@
{ 0x414c4310, 0xfffffff0, "RL5382", NULL },
{ 0x414c4320, 0xfffffff0, "RL5383", NULL },
{ 0x414c4710, 0xfffffff0, "ALC200/200P", NULL },
-{ 0x414c4720, 0xfffffff0, "ALC650", NULL },
+{ 0x414c4720, 0xfffffff0, "ALC650", patch_alc650 },
{ 0x414c4730, 0xffffffff, "ALC101", NULL },
{ 0x414c4740, 0xfffffff0, "ALC202", NULL },
{ 0x414c4750, 0xfffffff0, "ALC250", NULL },
@@ -915,6 +915,25 @@
};
/*
+ * ALC650
+ */
+static const snd_kcontrol_new_t snd_ac97_controls_alc650[] = {
+ AC97_SINGLE("Duplicate Front", AC97_ALC650_MULTICH, 0, 1, 0),
+ AC97_SINGLE("Surround Down Mix", AC97_ALC650_MULTICH, 1, 1, 0),
+ AC97_SINGLE("Center/LFE Down Mix", AC97_ALC650_MULTICH, 2, 1, 0),
+ AC97_SINGLE("Exchange Center/LFE", AC97_ALC650_MULTICH, 3, 1, 0),
+ AC97_SINGLE("Line-In As Surround", AC97_ALC650_MULTICH, 9, 1, 0),
+ AC97_SINGLE("Mic As Center/LFE", AC97_ALC650_MULTICH, 10, 1, 0),
+ AC97_SINGLE("IEC958 Capture Switch", AC97_ALC650_MULTICH, 11, 1, 0),
+ AC97_SINGLE("Analog to IEC958 Output", AC97_ALC650_MULTICH, 12, 1, 0),
+ AC97_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 13, 1, 0),
+#if 0 /* always set in patch_alc650 */
+ AC97_SINGLE("IEC958 Input Clock Enable", AC97_ALC650_CLOCK, 0, 1, 0),
+ AC97_SINGLE("IEC958 Input Pin Enable", AC97_ALC650_CLOCK, 1, 1, 0),
+#endif
+};
+
+/*
*
*/
@@ -1340,7 +1359,7 @@
}
/* build S/PDIF controls */
- if (ac97->ext_id & AC97_EA_SPDIF) {
+ if (ac97->ext_id & AC97_EI_SPDIF) {
if (ac97->flags & AC97_CS_SPDIF) {
for (idx = 0; idx < 3; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_spdif[idx], ac97))) < 0)
@@ -1379,7 +1398,7 @@
ac97->spdif_status = SNDRV_PCM_DEFAULT_CON_SPDIF;
}
- /* build Sigmatel specific controls */
+ /* build chip specific controls */
switch (ac97->id) {
case AC97_ID_STAC9700:
case AC97_ID_STAC9708:
@@ -1393,6 +1412,12 @@
if (snd_ac97_try_bit(ac97, AC97_SIGMATEL_ANALOG, 0))
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_sigmatel_controls[1], ac97))) < 0)
return err;
+ break;
+ case AC97_ID_ALC650:
+ for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_alc650); idx++)
+ if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_alc650[idx], ac97))) < 0)
+ return err;
+ break;
default:
/* nothing */
break;
Index: alsa-kernel/pci/ac97/ac97_id.h
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/ac97/ac97_id.h,v
retrieving revision 1.2
diff -u -r1.2 ac97_id.h
--- alsa-kernel/pci/ac97/ac97_id.h 4 Sep 2002 13:06:58 -0000 1.2
+++ alsa-kernel/pci/ac97/ac97_id.h 14 Oct 2002 13:33:47 -0000
@@ -43,3 +43,4 @@
#define AC97_ID_CS4299 0x43525930
#define AC97_ID_CS4201 0x43525948
#define AC97_ID_CS4205 0x43525958
+#define AC97_ID_ALC650 0x414c4720
Index: alsa-kernel/pci/ac97/ac97_patch.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/ac97/ac97_patch.c,v
retrieving revision 1.4
diff -u -r1.4 ac97_patch.c
--- alsa-kernel/pci/ac97/ac97_patch.c 11 Sep 2002 08:53:51 -0000 1.4
+++ alsa-kernel/pci/ac97/ac97_patch.c 14 Oct 2002 13:35:11 -0000
@@ -168,7 +168,7 @@
ac97->flags |= AC97_CS_SPDIF;
ac97->rates[AC97_RATES_SPDIF] &= ~SNDRV_PCM_RATE_32000;
- ac97->ext_id |= AC97_EA_SPDIF; /* force the detection of spdif */
+ ac97->ext_id |= AC97_EI_SPDIF; /* force the detection of spdif */
snd_ac97_write_cache(ac97, AC97_CSR_ACMODE, 0x0080);
return 0;
}
@@ -184,7 +184,7 @@
int patch_conexant(ac97_t * ac97)
{
ac97->flags |= AC97_CX_SPDIF;
- ac97->ext_id |= AC97_EA_SPDIF; /* force the detection of spdif */
+ ac97->ext_id |= AC97_EI_SPDIF; /* force the detection of spdif */
return 0;
}
@@ -334,5 +334,13 @@
/* it seems that most vendors connect line-out connector to headphone out of AC'97 */
misc = snd_ac97_read(ac97, AC97_AD_MISC);
snd_ac97_write_cache(ac97, AC97_AD_MISC, misc | 0x0420);
+ return 0;
+}
+
+int patch_alc650(ac97_t * ac97)
+{
+ /* enable spdif in */
+ snd_ac97_write_cache(ac97, AC97_ALC650_CLOCK,
+ snd_ac97_read(ac97, AC97_ALC650_CLOCK) | 0x03);
return 0;
}
Index: alsa-kernel/pci/ac97/ac97_patch.h
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/ac97/ac97_patch.h,v
retrieving revision 1.3
diff -u -r1.3 ac97_patch.h
--- alsa-kernel/pci/ac97/ac97_patch.h 11 Sep 2002 08:53:51 -0000 1.3
+++ alsa-kernel/pci/ac97/ac97_patch.h 14 Oct 2002 13:28:26 -0000
@@ -38,3 +38,4 @@
int patch_ad1885(ac97_t * ac97);
int patch_ad1886(ac97_t * ac97);
int patch_ad1980(ac97_t * ac97);
+int patch_alc650(ac97_t * ac97);
parent reply other threads:[~2002-10-14 13:47 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <200210121718.49766.bernatik@kn.vutbr.cz>]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hptud6ski.wl@alsa2.suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@lists.sourceforge.net \
--cc=bernatik@kn.vutbr.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.