vserver 1.9.5.x5
[linux-2.6.git] / sound / pci / ac97 / ac97_proc.c
index 007a4b8..a040b26 100644 (file)
@@ -72,9 +72,10 @@ static void snd_ac97_proc_read_main(ac97_t *ac97, snd_info_buffer_t * buffer, in
 {
        char name[64];
        unsigned short val, tmp, ext, mext;
-       static const char *spdif_slots[4] = { " SPDIF=3/4", " SPDIF=7/8", " SPDIF=6/9", " SPDIF=res" };
+       static const char *spdif_slots[4] = { " SPDIF=3/4", " SPDIF=7/8", " SPDIF=6/9", " SPDIF=10/11" };
        static const char *spdif_rates[4] = { " Rate=44.1kHz", " Rate=res", " Rate=48kHz", " Rate=32kHz" };
        static const char *spdif_rates_cs4205[4] = { " Rate=48kHz", " Rate=44.1kHz", " Rate=res", " Rate=res" };
+       static const char *double_rate_slots[4] = { "10/11", "7/8", "reserved", "reserved" };
 
        snd_ac97_get_name(NULL, ac97->id, name, 0);
        snd_iprintf(buffer, "%d-%d/%d: %s\n\n", ac97->addr, ac97->num, subidx, name);
@@ -137,6 +138,9 @@ static void snd_ac97_proc_read_main(ac97_t *ac97, snd_info_buffer_t * buffer, in
                    val & 0x0200 ? "Mic" : "MIX",
                    val & 0x0100 ? "Mic2" : "Mic1",
                    val & 0x0080 ? "on" : "off");
+       if (ac97->ext_id & AC97_EI_DRA)
+               snd_iprintf(buffer, "Double rate slots: %s\n",
+                           double_rate_slots[(val >> 10) & 3]);
 
        ext = snd_ac97_read(ac97, AC97_EXTENDED_ID);
        if (ext == 0)
@@ -292,7 +296,7 @@ static void snd_ac97_proc_read(snd_info_entry_t *entry, snd_info_buffer_t * buff
 {
        ac97_t *ac97 = entry->private_data;
        
-       down(&ac97->mutex);
+       down(&ac97->page_mutex);
        if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) {        // Analog Devices AD1881/85/86
                int idx;
                for (idx = 0; idx < 3; idx++)
@@ -318,7 +322,7 @@ static void snd_ac97_proc_read(snd_info_entry_t *entry, snd_info_buffer_t * buff
        } else {
                snd_ac97_proc_read_main(ac97, buffer, 0);
        }
-       up(&ac97->mutex);
+       up(&ac97->page_mutex);
 }
 
 #ifdef CONFIG_SND_DEBUG
@@ -328,7 +332,7 @@ static void snd_ac97_proc_regs_write(snd_info_entry_t *entry, snd_info_buffer_t
        ac97_t *ac97 = entry->private_data;
        char line[64];
        unsigned int reg, val;
-       down(&ac97->mutex);
+       down(&ac97->page_mutex);
        while (!snd_info_get_line(buffer, line, sizeof(line))) {
                if (sscanf(line, "%x %x", &reg, &val) != 2)
                        continue;
@@ -336,7 +340,7 @@ static void snd_ac97_proc_regs_write(snd_info_entry_t *entry, snd_info_buffer_t
                if (reg < 0x80 && (reg & 1) == 0 && val <= 0xffff)
                        snd_ac97_write_cache(ac97, reg, val);
        }
-       up(&ac97->mutex);
+       up(&ac97->page_mutex);
 }
 #endif
 
@@ -355,7 +359,7 @@ static void snd_ac97_proc_regs_read(snd_info_entry_t *entry,
 {
        ac97_t *ac97 = entry->private_data;
 
-       down(&ac97->mutex);
+       down(&ac97->page_mutex);
        if ((ac97->id & 0xffffff40) == AC97_ID_AD1881) {        // Analog Devices AD1881/85/86
 
                int idx;
@@ -371,7 +375,7 @@ static void snd_ac97_proc_regs_read(snd_info_entry_t *entry,
        } else {
                snd_ac97_proc_regs_read_main(ac97, buffer, 0);
        }       
-       up(&ac97->mutex);
+       up(&ac97->page_mutex);
 }
 
 void snd_ac97_proc_init(ac97_t * ac97)