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

Modified Files:
        cmipci.c cs4281.c ens1370.c fm801.c intel8x0.c maestro3.c 
        rme32.c rme96.c sonicvibes.c via82xx.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: cmipci.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/cmipci.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- cmipci.c    14 Oct 2003 13:59:20 -0000      1.50
+++ cmipci.c    23 Oct 2003 14:34:52 -0000      1.51
@@ -2837,7 +2837,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(cm->card, "cmipci", &entry))
-               snd_info_set_text_ops(entry, cm, snd_cmipci_proc_read);
+               snd_info_set_text_ops(entry, cm, 1024, snd_cmipci_proc_read);
 }
 
 

Index: cs4281.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/cs4281.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- cs4281.c    14 Oct 2003 14:08:48 -0000      1.45
+++ cs4281.c    23 Oct 2003 14:34:52 -0000      1.46
@@ -479,6 +479,7 @@
 
        int dual_codec;
 
+       ac97_bus_t *ac97_bus;
        ac97_t *ac97;
        ac97_t *ac97_secondary;
 
@@ -564,7 +565,7 @@
 }
 
 static void snd_cs4281_ac97_write(ac97_t *ac97,
-                                  unsigned short reg, unsigned short val)
+                                 unsigned short reg, unsigned short val)
 {
        /*
         *  1. Write ACCAD = Command Address Register = 46Ch for AC97 register address
@@ -609,7 +610,7 @@
 }
 
 static unsigned short snd_cs4281_ac97_read(ac97_t *ac97,
-                                           unsigned short reg)
+                                          unsigned short reg)
 {
        cs4281_t *chip = snd_magic_cast(cs4281_t, ac97->private_data, return -ENXIO);
        int count;
@@ -1119,6 +1120,12 @@
        .private_value = ((BA0_PPLVC << 16) | BA0_PPRVC),
 };
 
+static void snd_cs4281_mixer_free_ac97_bus(ac97_bus_t *bus)
+{
+       cs4281_t *chip = snd_magic_cast(cs4281_t, bus->private_data, return);
+       chip->ac97_bus = NULL;
+}
+
 static void snd_cs4281_mixer_free_ac97(ac97_t *ac97)
 {
        cs4281_t *chip = snd_magic_cast(cs4281_t, ac97->private_data, return);
@@ -1131,19 +1138,26 @@
 static int __devinit snd_cs4281_mixer(cs4281_t * chip)
 {
        snd_card_t *card = chip->card;
+       ac97_bus_t bus;
        ac97_t ac97;
        int err;
 
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_cs4281_ac97_write;
+       bus.read = snd_cs4281_ac97_read;
+       bus.private_data = chip;
+       bus.private_free = snd_cs4281_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_cs4281_ac97_write;
-       ac97.read = snd_cs4281_ac97_read;
        ac97.private_data = chip;
        ac97.private_free = snd_cs4281_mixer_free_ac97;
-       if ((err = snd_ac97_mixer(card, &ac97, &chip->ac97)) < 0)
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97)) < 0)
                return err;
        if (chip->dual_codec) {
                ac97.num = 1;
-               if ((err = snd_ac97_mixer(card, &ac97, &chip->ac97_secondary)) < 0)
+               if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, 
&chip->ac97_secondary)) < 0)
                        return err;
        }
        if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_cs4281_fm_vol, chip))) < 0)
@@ -1215,7 +1229,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(chip->card, "cs4281", &entry))
-               snd_info_set_text_ops(entry, chip, snd_cs4281_proc_read);
+               snd_info_set_text_ops(entry, chip, 1024, snd_cs4281_proc_read);
        if (! snd_card_proc_new(chip->card, "cs4281_BA0", &entry)) {
                entry->content = SNDRV_INFO_CONTENT_DATA;
                entry->private_data = chip;

Index: ens1370.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/ens1370.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- ens1370.c   14 Oct 2003 13:59:20 -0000      1.51
+++ ens1370.c   23 Oct 2003 14:34:52 -0000      1.52
@@ -1534,16 +1534,21 @@
 static int snd_ensoniq_1371_mixer(ensoniq_t * ensoniq)
 {
        snd_card_t *card = ensoniq->card;
+       ac97_bus_t bus, *pbus;
        ac97_t ac97;
        int err, idx;
 
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_es1371_codec_write;
+       bus.read = snd_es1371_codec_read;
+       if ((err = snd_ac97_bus(card, &bus, &pbus)) < 0)
+               return err;
+
        memset(&ac97, 0, sizeof(ac97));
-       ac97.write = snd_es1371_codec_write;
-       ac97.read = snd_es1371_codec_read;
        ac97.private_data = ensoniq;
        ac97.private_free = snd_ensoniq_mixer_free_ac97;
        ac97.scaps = AC97_SCAP_AUDIO;
-       if ((err = snd_ac97_mixer(card, &ac97, &ensoniq->u.es1371.ac97)) < 0)
+       if ((err = snd_ac97_mixer(pbus, &ac97, &ensoniq->u.es1371.ac97)) < 0)
                return err;
        for (idx = 0; es1371_spdif_present[idx].vid != (unsigned short)PCI_ANY_ID; 
idx++)
                if (ensoniq->pci->vendor == es1371_spdif_present[idx].vid &&
@@ -1732,7 +1737,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(ensoniq->card, "audiopci", &entry))
-               snd_info_set_text_ops(entry, ensoniq, snd_ensoniq_proc_read);
+               snd_info_set_text_ops(entry, ensoniq, 1024, snd_ensoniq_proc_read);
 }
 
 /*

Index: fm801.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/fm801.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- fm801.c     12 Aug 2003 14:10:12 -0000      1.35
+++ fm801.c     23 Oct 2003 14:34:52 -0000      1.36
@@ -147,6 +147,7 @@
        unsigned int cap_size;
        unsigned int cap_pos;
 
+       ac97_bus_t *ac97_bus;
        ac97_t *ac97;
        ac97_t *ac97_sec;
 
@@ -844,6 +845,12 @@
 FM801_SINGLE("IEC958 Playback Switch", FM801_GEN_CTRL, 2, 1, 0),
 };
 
+static void snd_fm801_mixer_free_ac97_bus(ac97_bus_t *bus)
+{
+       fm801_t *chip = snd_magic_cast(fm801_t, bus->private_data, return);
+       chip->ac97_bus = NULL;
+}
+
 static void snd_fm801_mixer_free_ac97(ac97_t *ac97)
 {
        fm801_t *chip = snd_magic_cast(fm801_t, ac97->private_data, return);
@@ -856,21 +863,28 @@
 
 static int __devinit snd_fm801_mixer(fm801_t *chip)
 {
+       ac97_bus_t bus;
        ac97_t ac97;
        unsigned int i;
        int err;
 
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_fm801_codec_write;
+       bus.read = snd_fm801_codec_read;
+       bus.private_data = chip;
+       bus.private_free = snd_fm801_mixer_free_ac97_bus;
+       if ((err = snd_ac97_bus(chip->card, &bus, &chip->ac97_bus)) < 0)
+               return err;
+
        memset(&ac97, 0, sizeof(ac97));
-       ac97.write = snd_fm801_codec_write;
-       ac97.read = snd_fm801_codec_read;
        ac97.private_data = chip;
        ac97.private_free = snd_fm801_mixer_free_ac97;
-       if ((err = snd_ac97_mixer(chip->card, &ac97, &chip->ac97)) < 0)
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97)) < 0)
                return err;
        if (chip->secondary) {
                ac97.num = 1;
                ac97.addr = chip->secondary_addr;
-               if ((err = snd_ac97_mixer(chip->card, &ac97, &chip->ac97_sec)) < 0)
+               if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97_sec)) < 0)
                        return err;
        }
        for (i = 0; i < FM801_CONTROLS; i++)

Index: intel8x0.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/intel8x0.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -r1.95 -r1.96
--- intel8x0.c  16 Oct 2003 15:13:53 -0000      1.95
+++ intel8x0.c  23 Oct 2003 14:34:52 -0000      1.96
@@ -403,6 +403,7 @@
        int in_ac97_init: 1,
            in_sdin_init: 1;
 
+       ac97_bus_t *ac97_bus;
        ac97_t *ac97[3];
        unsigned int ac97_sdin[3];
 
@@ -1529,6 +1530,12 @@
  *  Mixer part
  */
 
+static void snd_intel8x0_mixer_free_ac97_bus(ac97_bus_t *bus)
+{
+       intel8x0_t *chip = snd_magic_cast(intel8x0_t, bus->private_data, return);
+       chip->ac97_bus = NULL;
+}
+
 static void snd_intel8x0_mixer_free_ac97(ac97_t *ac97)
 {
        intel8x0_t *chip = snd_magic_cast(intel8x0_t, ac97->private_data, return);
@@ -1650,6 +1657,7 @@
 
 static int __devinit snd_intel8x0_mixer(intel8x0_t *chip, int ac97_clock)
 {
+       ac97_bus_t bus;
        ac97_t ac97, *x97;
        ichdev_t *ichdev;
        int err;
@@ -1683,17 +1691,21 @@
        }
 
        chip->in_ac97_init = 1;
+       memset(&bus, 0, sizeof(bus));
+       bus.private_data = chip;
+       bus.private_free = snd_intel8x0_mixer_free_ac97_bus;
+       if (ac97_clock >= 8000 && ac97_clock <= 48000)
+               bus.clock = ac97_clock;
+       else
+               bus.clock = 48000;
+       
        memset(&ac97, 0, sizeof(ac97));
        ac97.private_data = chip;
        ac97.private_free = snd_intel8x0_mixer_free_ac97;
-       if (ac97_clock >= 8000 && ac97_clock <= 48000)
-               ac97.clock = ac97_clock;
-       else
-               ac97.clock = 48000;
        if (chip->device_type != DEVICE_ALI) {
                glob_sta = igetdword(chip, ICHREG(GLOB_STA));
-               ac97.write = snd_intel8x0_codec_write;
-               ac97.read = snd_intel8x0_codec_read;
+               bus.write = snd_intel8x0_codec_write;
+               bus.read = snd_intel8x0_codec_read;
                if (chip->device_type == DEVICE_INTEL_ICH4) {
                        codecs = 0;
                        if (glob_sta & ICH_PCR)
@@ -1714,8 +1726,8 @@
                        codecs = glob_sta & ICH_SCR ? 2 : 1;
                }
        } else {
-               ac97.write = snd_intel8x0_ali_codec_write;
-               ac97.read = snd_intel8x0_ali_codec_read;
+               bus.write = snd_intel8x0_ali_codec_write;
+               bus.read = snd_intel8x0_ali_codec_read;
                codecs = 1;
                /* detect the secondary codec */
                for (i = 0; i < 100; i++) {
@@ -1728,8 +1740,11 @@
                        udelay(1);
                }
        }
+       if ((err = snd_ac97_bus(chip->card, &bus, &chip->ac97_bus)) < 0)
+               goto __err;
        ac97.pci = chip->pci;
-       if ((err = snd_ac97_mixer(chip->card, &ac97, &x97)) < 0) {
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &x97)) < 0) {
+             __err:
                /* clear the cold-reset bit for the next chance */
                if (chip->device_type != DEVICE_ALI)
                        iputdword(chip, ICHREG(GLOB_CNT), igetdword(chip, 
ICHREG(GLOB_CNT)) & ~ICH_AC97COLD);
@@ -1757,7 +1772,7 @@
                goto __skip_secondary;
        for (i = 1, num = 1, _codecs = codecs; num < _codecs; num++) {
                ac97.num = num;
-               if ((err = snd_ac97_mixer(chip->card, &ac97, &x97)) < 0) {
+               if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &x97)) < 0) {
                        snd_printk("Unable to initialize codec #%i [device = %i, 
GLOB_STA = 0x%x]\n", i, chip->device_type, glob_sta);
                        codecs--;
                        continue;
@@ -2169,7 +2184,7 @@
        unsigned long flags;
        struct timeval start_time, stop_time;
 
-       if (chip->ac97[0]->clock != 48000)
+       if (chip->ac97_bus->clock != 48000)
                return; /* specified in module option */
 
        subs = chip->pcm[0]->streams[0].substream;
@@ -2184,7 +2199,7 @@
 
        /* set rate */
        if (snd_ac97_set_rate(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 48000) < 0) {
-               snd_printk(KERN_ERR "cannot set ac97 rate: clock = %d\n", 
chip->ac97[0]->clock);
+               snd_printk(KERN_ERR "cannot set ac97 rate: clock = %d\n", 
chip->ac97_bus->clock);
                return;
        }
        snd_intel8x0_setup_periods(chip, ichdev);
@@ -2243,8 +2258,8 @@
                printk(KERN_INFO "intel8x0: measured clock %ld rejected\n", pos);
        else if (pos < 47500 || pos > 48500)
                /* not 48000Hz, tuning the clock.. */
-               chip->ac97[0]->clock = (chip->ac97[0]->clock * 48000) / pos;
-       printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97[0]->clock);
+               chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos;
+       printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock);
 }
 
 static void snd_intel8x0_proc_read(snd_info_entry_t * entry,
@@ -2278,7 +2293,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(chip->card, "intel8x0", &entry))
-               snd_info_set_text_ops(entry, chip, snd_intel8x0_proc_read);
+               snd_info_set_text_ops(entry, chip, 1024, snd_intel8x0_proc_read);
 }
 
 static int snd_intel8x0_dev_free(snd_device_t *device)

Index: maestro3.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/maestro3.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- maestro3.c  14 Oct 2003 16:47:53 -0000      1.42
+++ maestro3.c  23 Oct 2003 14:34:52 -0000      1.43
@@ -1981,14 +1981,19 @@
 
 static int __devinit snd_m3_mixer(m3_t *chip)
 {
+       ac97_bus_t bus, *pbus;
        ac97_t ac97;
        int err;
 
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_m3_ac97_write;
+       bus.read = snd_m3_ac97_read;
+       if ((err = snd_ac97_bus(chip->card, &bus, &pbus)) < 0)
+               return err;
+       
        memset(&ac97, 0, sizeof(ac97));
-       ac97.write = snd_m3_ac97_write;
-       ac97.read = snd_m3_ac97_read;
        ac97.private_data = chip;
-       if ((err = snd_ac97_mixer(chip->card, &ac97, &chip->ac97)) < 0)
+       if ((err = snd_ac97_mixer(pbus, &ac97, &chip->ac97)) < 0)
                return err;
 
        /* seems ac97 PCM needs initialization.. hack hack.. */

Index: rme32.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/rme32.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- rme32.c     14 Oct 2003 14:08:48 -0000      1.27
+++ rme32.c     23 Oct 2003 14:34:52 -0000      1.28
@@ -1545,7 +1545,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(rme32->card, "rme32", &entry))
-               snd_info_set_text_ops(entry, rme32, snd_rme32_proc_read);
+               snd_info_set_text_ops(entry, rme32, 1024, snd_rme32_proc_read);
 }
 
 /*

Index: rme96.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/rme96.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- rme96.c     14 Oct 2003 14:08:49 -0000      1.29
+++ rme96.c     23 Oct 2003 14:34:52 -0000      1.30
@@ -1930,7 +1930,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(rme96->card, "rme96", &entry))
-               snd_info_set_text_ops(entry, rme96, snd_rme96_proc_read);
+               snd_info_set_text_ops(entry, rme96, 1024, snd_rme96_proc_read);
 }
 
 /*

Index: sonicvibes.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/sonicvibes.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- sonicvibes.c        14 Aug 2003 11:05:38 -0000      1.26
+++ sonicvibes.c        23 Oct 2003 14:34:52 -0000      1.27
@@ -1177,7 +1177,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(sonic->card, "sonicvibes", &entry))
-               snd_info_set_text_ops(entry, sonic, snd_sonicvibes_proc_read);
+               snd_info_set_text_ops(entry, sonic, 1024, snd_sonicvibes_proc_read);
 }
 
 /*

Index: via82xx.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/via82xx.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -r1.62 -r1.63
--- via82xx.c   17 Oct 2003 10:28:33 -0000      1.62
+++ via82xx.c   23 Oct 2003 14:34:52 -0000      1.63
@@ -467,6 +467,7 @@
 
        snd_rawmidi_t *rmidi;
 
+       ac97_bus_t *ac97_bus;
        ac97_t *ac97;
        unsigned int ac97_clock;
        unsigned int ac97_secondary;    /* secondary AC'97 codec is present */
@@ -1528,6 +1529,12 @@
 /*
  */
 
+static void snd_via82xx_mixer_free_ac97_bus(ac97_bus_t *bus)
+{
+       via82xx_t *chip = snd_magic_cast(via82xx_t, bus->private_data, return);
+       chip->ac97_bus = NULL;
+}
+
 static void snd_via82xx_mixer_free_ac97(ac97_t *ac97)
 {
        via82xx_t *chip = snd_magic_cast(via82xx_t, ac97->private_data, return);
@@ -1546,18 +1553,25 @@
 
 static int __devinit snd_via82xx_mixer_new(via82xx_t *chip)
 {
+       ac97_bus_t bus;
        ac97_t ac97;
        int err;
 
+       memset(&bus, 0, sizeof(bus));
+       bus.write = snd_via82xx_codec_write;
+       bus.read = snd_via82xx_codec_read;
+       bus.wait = snd_via82xx_codec_wait;
+       bus.private_data = chip;
+       bus.private_free = snd_via82xx_mixer_free_ac97_bus;
+       bus.clock = chip->ac97_clock;
+       if ((err = snd_ac97_bus(chip->card, &bus, &chip->ac97_bus)) < 0)
+               return err;
+
        memset(&ac97, 0, sizeof(ac97));
-       ac97.write = snd_via82xx_codec_write;
-       ac97.read = snd_via82xx_codec_read;
-       ac97.wait = snd_via82xx_codec_wait;
        ac97.private_data = chip;
        ac97.private_free = snd_via82xx_mixer_free_ac97;
-       ac97.clock = chip->ac97_clock;
        ac97.pci = chip->pci;
-       if ((err = snd_ac97_mixer(chip->card, &ac97, &chip->ac97)) < 0)
+       if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97)) < 0)
                return err;
 
        snd_ac97_tune_hardware(chip->ac97, ac97_quirks);
@@ -1706,7 +1720,7 @@
        snd_info_entry_t *entry;
 
        if (! snd_card_proc_new(chip->card, "via82xx", &entry))
-               snd_info_set_text_ops(entry, chip, snd_via82xx_proc_read);
+               snd_info_set_text_ops(entry, chip, 1024, snd_via82xx_proc_read);
 }
 
 /*



-------------------------------------------------------
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