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