Update of /cvsroot/alsa/alsa-kernel/pci/ac97
In directory sc8-pr-cvs1:/tmp/cvs-serv15504/pci/ac97

Modified Files:
        ac97_codec.c ac97_patch.c ac97_patch.h 
Log Message:
- added quirk type AC97_TUNE_AD_SHARING.
- added mask field to snd_ac97_quirk.
- new patch for AD1985.  set more config bits for line/mic sharing.
- rewritten quirk table in C99 init style.
- more quirks for intel ICH5/AD1985 boards.



Index: ac97_codec.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_codec.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -r1.99 -r1.100
--- ac97_codec.c        1 Jul 2003 10:07:54 -0000       1.99
+++ ac97_codec.c        30 Jul 2003 10:54:03 -0000      1.100
@@ -103,7 +103,7 @@
 { 0x41445370, 0xffffffff, "AD1980",            patch_ad1980,   NULL },
 { 0x41445372, 0xffffffff, "AD1981A",           patch_ad1881,   NULL },
 { 0x41445374, 0xffffffff, "AD1981B",           patch_ad1881,   NULL },
-{ 0x41445375, 0xffffffff, "AD1985",            patch_ad1980,   NULL },
+{ 0x41445375, 0xffffffff, "AD1985",            patch_ad1985,   NULL },
 { 0x414c4300, 0xfffffff0, "RL5306",            NULL,           NULL },
 { 0x414c4310, 0xfffffff0, "RL5382",            NULL,           NULL },
 { 0x414c4320, 0xfffffff0, "RL5383",            NULL,           NULL },
@@ -2235,6 +2235,14 @@
        return 0;
 }
 
+static int tune_ad_sharing(ac97_t *ac97)
+{
+       unsigned short scfg;
+       /* 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);
+}
 
 /**
  * snd_ac97_tune_hardware - tune up the hardware
@@ -2253,7 +2261,10 @@
        snd_assert(quirk, return -EINVAL);
 
        for (; quirk->vendor; quirk++) {
-               if (quirk->vendor == ac97->subsystem_vendor && quirk->device == 
ac97->subsystem_device) {
+               if (quirk->vendor != ac97->subsystem_vendor)
+                       continue;
+               if ((! quirk->mask && quirk->device == ac97->subsystem_device) ||
+                   quirk->device == (quirk->mask & ac97->subsystem_device)) {
                        snd_printdd("ac97 quirk for %s (%04x:%04x)\n", quirk->name, 
ac97->subsystem_vendor, ac97->subsystem_device);
                        switch (quirk->type) {
                        case AC97_TUNE_HP_ONLY:
@@ -2262,6 +2273,8 @@
                                return swap_headphone(ac97, 0);
                        case AC97_TUNE_SWAP_SURROUND:
                                return swap_surround(ac97);
+                       case AC97_TUNE_AD_SHARING:
+                               return tune_ad_sharing(ac97);
                        }
                        snd_printk(KERN_ERR "invalid quirk type %d for %s\n", 
quirk->type, quirk->name);
                        return -EINVAL;

Index: ac97_patch.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ac97_patch.c        26 Jul 2003 09:46:14 -0000      1.17
+++ ac97_patch.c        30 Jul 2003 10:54:03 -0000      1.18
@@ -759,6 +759,19 @@
        return 0;
 }
 
+int patch_ad1985(ac97_t * ac97)
+{
+       unsigned short misc;
+       
+       patch_ad1881(ac97);
+       ac97->build_ops = &patch_ad1980_build_ops;
+       misc = snd_ac97_read(ac97, AC97_AD_MISC);
+       /* switch front/surround line-out/hp-out */
+       /* center/LFE, surround in High-Z mode */
+       snd_ac97_write_cache(ac97, AC97_AD_MISC, misc | 0x1c28);
+       return 0;
+}
+
 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),

Index: ac97_patch.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ac97_patch.h        17 Jun 2003 18:43:32 -0000      1.8
+++ ac97_patch.h        30 Jul 2003 10:54:03 -0000      1.9
@@ -42,6 +42,7 @@
 int patch_ad1885(ac97_t * ac97);
 int patch_ad1886(ac97_t * ac97);
 int patch_ad1980(ac97_t * ac97);
+int patch_ad1985(ac97_t * ac97);
 int patch_alc650(ac97_t * ac97);
 int patch_cm9738(ac97_t * ac97);
 int patch_cm9739(ac97_t * ac97);



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to