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