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