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

Modified Files:
        ac97_patch.c ac97_proc.c 
Log Message:
James Courtier-Dutton <[EMAIL PROTECTED]>:
- enabled SPDIF input of ALC650.



Index: ac97_patch.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_patch.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ac97_patch.c        28 Aug 2003 15:36:44 -0000      1.21
+++ ac97_patch.c        1 Sep 2003 09:53:26 -0000       1.22
@@ -915,6 +915,9 @@
        }
 
        if (spdif) {
+               /* enable AC97_ALC650_GPIO_SETUP, AC97_ALC650_CLOCK for R/W */
+               snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_STATUS, 
+                       snd_ac97_read(ac97, AC97_ALC650_GPIO_STATUS) | 0x8000);
                /* enable spdif in */
                snd_ac97_write_cache(ac97, AC97_ALC650_CLOCK,
                                     snd_ac97_read(ac97, AC97_ALC650_CLOCK) | 0x03);
@@ -930,18 +933,18 @@
                int mic_off;
                mic_off = snd_ac97_read(ac97, AC97_ALC650_MULTICH) & (1 << 10);
                /* GPIO0 direction */
-               val = snd_ac97_read(ac97, 0x76);
+               val = snd_ac97_read(ac97, AC97_ALC650_GPIO_SETUP);
                if (mic_off)
                        val &= ~0x01;
                else
                        val |= 0x01;
-               snd_ac97_write_cache(ac97, 0x76, val);
-               val = snd_ac97_read(ac97, 0x78);
+               snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_SETUP, val);
+               val = snd_ac97_read(ac97, AC97_ALC650_GPIO_STATUS);
                if (mic_off)
                        val &= ~0x100;
                else
                        val = val | 0x100;
-               snd_ac97_write_cache(ac97, 0x78, val);
+               snd_ac97_write_cache(ac97, AC97_ALC650_GPIO_STATUS, val);
        }
 
        /* full DAC volume */

Index: ac97_proc.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ac97/ac97_proc.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ac97_proc.c 17 Jun 2003 18:43:32 -0000      1.1
+++ ac97_proc.c 1 Sep 2003 09:53:26 -0000       1.2
@@ -151,7 +151,7 @@
                snd_iprintf(buffer, "SPDIF Control    :%s%s%s%s Category=0x%x 
Generation=%i%s%s%s\n",
                        val & AC97_SC_PRO ? " PRO" : " Consumer",
                        val & AC97_SC_NAUDIO ? " Non-audio" : " PCM",
-                       val & AC97_SC_COPY ? " Copyright" : "",
+                       val & AC97_SC_COPY ? "" : " Copyright",
                        val & AC97_SC_PRE ? " Preemph50/15" : "",
                        (val & AC97_SC_CC_MASK) >> AC97_SC_CC_SHIFT,
                        (val & AC97_SC_L) >> 11,
@@ -164,7 +164,31 @@
                        (ac97->flags & AC97_CS_SPDIF) ?
                            (val & AC97_SC_V ? " Enabled" : "") :
                            (val & AC97_SC_V ? " Validity" : ""));
+               /* ALC650 specific*/
+               if ((ac97->id & 0xfffffff0) == 0x414c4720 &&
+                   (snd_ac97_read(ac97, AC97_ALC650_CLOCK) & 0x01)) {
+                       val = snd_ac97_read(ac97, AC97_ALC650_SPDIF_INPUT_STATUS2);
+                       if (val & AC97_ALC650_CLOCK_LOCK) {
+                               val = snd_ac97_read(ac97, 
AC97_ALC650_SPDIF_INPUT_STATUS1);
+                               snd_iprintf(buffer, "SPDIF In Status  :%s%s%s%s 
Category=0x%x Generation=%i",
+                                           val & AC97_ALC650_PRO ? " PRO" : " 
Consumer",
+                                           val & AC97_ALC650_NAUDIO ? " Non-audio" : 
" PCM",
+                                           val & AC97_ALC650_COPY ? "" : " Copyright",
+                                           val & AC97_ALC650_PRE ? " Preemph50/15" : 
"",
+                                           (val & AC97_ALC650_CC_MASK) >> 
AC97_ALC650_CC_SHIFT,
+                                           (val & AC97_ALC650_L) >> 15);
+                               val = snd_ac97_read(ac97, 
AC97_ALC650_SPDIF_INPUT_STATUS2);
+                               snd_iprintf(buffer, "%s Accuracy=%i%s%s\n",
+                                           spdif_rates[(val & AC97_ALC650_SPSR_MASK) 
>> AC97_ALC650_SPSR_SHIFT],
+                                           (val & AC97_ALC650_CLOCK_ACCURACY) >> 
AC97_ALC650_CLOCK_SHIFT,
+                                           (val & AC97_ALC650_CLOCK_LOCK ? " Locked" 
: " Unlocked"),
+                                           (val & AC97_ALC650_V ? " Validity?" : ""));
+                       } else {
+                               snd_iprintf(buffer, "SPDIF In Status  : Not Locked\n");
+                       }
+               }
        }
+
 
       __modem:
        mext = snd_ac97_read(ac97, AC97_EXTENDED_MID);



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to