Update of /cvsroot/alsa/alsa-kernel/pci/ac97
In directory sc8-pr-cvs1:/tmp/cvs-serv32731/ac97
Modified Files:
ac97_codec.c ac97_local.h ac97_patch.c
Log Message:
- use ADI-compatible mode on AD1980 for more better controls.
- swap master and headphone on AD1980 and AD1985 as default.
- export remove_ctl, swap_ctl and rename_ctl for patch functions.
- removed AD1980/AD1985 master-swap quirks (since it's set as default).
Index: ac97_codec.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_codec.c,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -r1.106 -r1.107
--- ac97_codec.c 14 Oct 2003 14:33:03 -0000 1.106
+++ ac97_codec.c 16 Oct 2003 15:13:54 -0000 1.107
@@ -2234,7 +2234,7 @@
/*
*/
-static int remove_ctl(ac97_t *ac97, const char *name)
+int snd_ac97_remove_ctl(ac97_t *ac97, const char *name)
{
snd_ctl_elem_id_t id;
memset(&id, 0, sizeof(id));
@@ -2252,7 +2252,7 @@
return snd_ctl_find_id(ac97->card, &sid);
}
-static int rename_ctl(ac97_t *ac97, const char *src, const char *dst)
+int snd_ac97_rename_ctl(ac97_t *ac97, const char *src, const char *dst)
{
snd_kcontrol_t *kctl = ctl_find(ac97, src);
if (kctl) {
@@ -2262,7 +2262,7 @@
return -ENOENT;
}
-static int swap_ctl(ac97_t *ac97, const char *s1, const char *s2)
+int snd_ac97_swap_ctl(ac97_t *ac97, const char *s1, const char *s2)
{
snd_kcontrol_t *kctl1, *kctl2;
kctl1 = ctl_find(ac97, s1);
@@ -2279,22 +2279,22 @@
{
/* FIXME: error checks.. */
if (remove_master) {
- remove_ctl(ac97, "Master Playback Switch");
- remove_ctl(ac97, "Master Playback Volume");
+ snd_ac97_remove_ctl(ac97, "Master Playback Switch");
+ snd_ac97_remove_ctl(ac97, "Master Playback Volume");
} else {
- rename_ctl(ac97, "Master Playback Switch", "Line-Out Playback Switch");
- rename_ctl(ac97, "Master Playback Volume", "Line-Out Playback Volume");
+ snd_ac97_rename_ctl(ac97, "Master Playback Switch", "Line-Out Playback
Switch");
+ snd_ac97_rename_ctl(ac97, "Master Playback Volume", "Line-Out Playback
Volume");
}
- rename_ctl(ac97, "Headphone Playback Switch", "Master Playback Switch");
- rename_ctl(ac97, "Headphone Playback Volume", "Master Playback Volume");
+ snd_ac97_rename_ctl(ac97, "Headphone Playback Switch", "Master Playback
Switch");
+ snd_ac97_rename_ctl(ac97, "Headphone Playback Volume", "Master Playback
Volume");
return 0;
}
static int swap_surround(ac97_t *ac97)
{
/* FIXME: error checks.. */
- swap_ctl(ac97, "Master Playback Switch", "Surround Playback Switch");
- swap_ctl(ac97, "Master Playback Volume", "Surround Playback Volume");
+ snd_ac97_swap_ctl(ac97, "Master Playback Switch", "Surround Playback Switch");
+ snd_ac97_swap_ctl(ac97, "Master Playback Volume", "Surround Playback Volume");
return 0;
}
@@ -2304,7 +2304,7 @@
/* Turn on OMS bit to route microphone to back panel */
scfg = snd_ac97_read(ac97, AC97_AD_SERIAL_CFG);
snd_ac97_write_cache(ac97, AC97_AD_SERIAL_CFG, scfg | 0x0200);
- return swap_headphone(ac97, 1);
+ return 0;
}
/**
Index: ac97_local.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_local.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ac97_local.h 27 Aug 2003 16:17:32 -0000 1.2
+++ ac97_local.h 16 Oct 2003 15:13:54 -0000 1.3
@@ -37,6 +37,9 @@
int snd_ac97_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol);
int snd_ac97_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol);
int snd_ac97_try_bit(ac97_t * ac97, int reg, int bit);
+int snd_ac97_remove_ctl(ac97_t *ac97, const char *name);
+int snd_ac97_rename_ctl(ac97_t *ac97, const char *src, const char *dst);
+int snd_ac97_swap_ctl(ac97_t *ac97, const char *s1, const char *s2);
/* ac97_proc.c */
void snd_ac97_proc_init(snd_card_t * card, ac97_t * ac97, const char *prefix);
Index: ac97_patch.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- ac97_patch.c 6 Oct 2003 10:55:25 -0000 1.24
+++ ac97_patch.c 16 Oct 2003 15:13:54 -0000 1.25
@@ -764,8 +764,19 @@
return patch_build_controls(ac97, &snd_ac97_ad1980_spdif_source, 1);
}
+static int patch_ad1980_specific(ac97_t *ac97)
+{
+ /* rename 0x04 as "Master" and 0x02 as "Master Surround" */
+ snd_ac97_rename_ctl(ac97, "Master Playback Switch", "Master Surround Playback
Switch");
+ snd_ac97_rename_ctl(ac97, "Master Playback Volume", "Master Surround Playback
Volume");
+ snd_ac97_rename_ctl(ac97, "Headphone Playback Switch", "Master Playback
Switch");
+ snd_ac97_rename_ctl(ac97, "Headphone Playback Volume", "Headphone Playback
Volume");
+ return 0;
+}
+
static struct snd_ac97_build_ops patch_ad1980_build_ops = {
- .build_post_spdif = &patch_ad1980_post_spdif
+ .build_post_spdif = patch_ad1980_post_spdif,
+ .build_specific = patch_ad1980_specific
};
int patch_ad1980(ac97_t * ac97)
@@ -776,12 +787,14 @@
ac97->build_ops = &patch_ad1980_build_ops;
/* Switch FRONT/SURROUND LINE-OUT/HP-OUT default connection */
/* it seems that most vendors connect line-out connector to headphone out of
AC'97 */
+ /* AD-compatible mode */
/* Stereo mutes enabled */
misc = snd_ac97_read(ac97, AC97_AD_MISC);
snd_ac97_write_cache(ac97, AC97_AD_MISC, misc |
AC97_AD198X_LOSEL |
AC97_AD198X_HPSEL |
- AC97_AD198X_MSPLT);
+ AC97_AD198X_MSPLT |
+ AC97_AD198X_AC97NC);
ac97->flags |= AC97_STEREO_MUTES;
return 0;
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog