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

Modified Files:
        cs46xx_lib.c 
Log Message:
- AC97 code
  - introduced ac97_bus_t structure
  - moved attached codecs to /proc/asound/card?/codec97#? directory
  - merged snd_ac97_modem() to snd_ac97_mixer()
- proc cleanups - removed already initialized variables
- enhanced snd_info_set_text_ops() syntax


Index: cs46xx_lib.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/cs46xx/cs46xx_lib.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -r1.65 -r1.66
--- cs46xx_lib.c        14 Oct 2003 14:08:49 -0000      1.65
+++ cs46xx_lib.c        23 Oct 2003 14:34:53 -0000      1.66
@@ -1804,6 +1804,13 @@
 /*
  *  Mixer routines
  */
+static void snd_cs46xx_mixer_free_ac97_bus(ac97_bus_t *bus)
+{
+       cs46xx_t *chip = snd_magic_cast(cs46xx_t, bus->private_data, return);
+
+       chip->ac97_bus = NULL;
+}
+
 static void snd_cs46xx_mixer_free_ac97(ac97_t *ac97)
 {
        cs46xx_t *chip = snd_magic_cast(cs46xx_t, ac97->private_data, return);
@@ -2445,6 +2452,7 @@
 int __devinit snd_cs46xx_mixer(cs46xx_t *chip)
 {
        snd_card_t *card = chip->card;
+       ac97_bus_t bus;
        ac97_t ac97;
        snd_ctl_elem_id_t id;
        int err;
@@ -2453,14 +2461,20 @@
        /* detect primary codec */
        chip->nr_ac97_codecs = 0;
        snd_printdd("snd_cs46xx: detecting primary codec\n");
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_cs46xx_ac97_write;
+       bus.read = snd_cs46xx_ac97_read;
+#ifdef CONFIG_SND_CS46XX_NEW_DSP
+       bus.reset = snd_cs46xx_codec_reset;
+#endif
+       bus.private_data = chip;
+       bus.private_free = snd_cs46xx_mixer_free_ac97_bus;
+       if ((err = snd_ac97_bus(card, &bus, &chip->ac97_bus)) < 0)
+               return err;
+
        memset(&ac97, 0, sizeof(ac97));
-       ac97.write = snd_cs46xx_ac97_write;
-       ac97.read = snd_cs46xx_ac97_read;
        ac97.private_data = chip;
        ac97.private_free = snd_cs46xx_mixer_free_ac97;
-#ifdef CONFIG_SND_CS46XX_NEW_DSP
-       ac97.reset = snd_cs46xx_codec_reset;
-#endif
        chip->ac97[CS46XX_PRIMARY_CODEC_INDEX] = &ac97;
 
        snd_cs46xx_ac97_write(&ac97, AC97_MASTER, 0x8000);
@@ -2474,7 +2488,7 @@
        return -ENXIO;
 
  _ok:
-       if ((err = snd_ac97_mixer(card, &ac97, 
&chip->ac97[CS46XX_PRIMARY_CODEC_INDEX])) < 0)
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, 
&chip->ac97[CS46XX_PRIMARY_CODEC_INDEX])) < 0)
                return err;
        snd_printdd("snd_cs46xx: primary codec phase one\n");
        chip->nr_ac97_codecs = 1;
@@ -2483,8 +2497,6 @@
        snd_printdd("snd_cs46xx: detecting seconadry codec\n");
        /* try detect a secondary codec */
        memset(&ac97, 0, sizeof(ac97));    
-       ac97.write = snd_cs46xx_ac97_write;
-       ac97.read = snd_cs46xx_ac97_read;
        ac97.private_data = chip;
        ac97.private_free = snd_cs46xx_mixer_free_ac97;
        ac97.num = CS46XX_SECONDARY_CODEC_INDEX;
@@ -2516,13 +2528,7 @@
        /* well, one codec only ... */
        goto _end;
  _ok2:
-       /* set secondary codec in extended mode */
-
-       /* use custom reset to set secondary codec in
-          extended mode */
-       ac97.reset = snd_cs46xx_codec_reset;
-
-       if ((err = snd_ac97_mixer(card, &ac97, 
&chip->ac97[CS46XX_SECONDARY_CODEC_INDEX])) < 0)
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, 
&chip->ac97[CS46XX_SECONDARY_CODEC_INDEX])) < 0)
                return err;
        chip->nr_ac97_codecs = 2;
 



-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to