patch-2.4.22 linux-2.4.22/drivers/sound/ite8172.c
Next file: linux-2.4.22/drivers/sound/maestro3.c
Previous file: linux-2.4.22/drivers/sound/i810_audio.c
Back to the patch index
Back to the overall index
- Lines: 202
- Date:
2003-08-25 04:44:42.000000000 -0700
- Orig file:
linux-2.4.21/drivers/sound/ite8172.c
- Orig date:
2002-08-02 17:39:44.000000000 -0700
diff -urN linux-2.4.21/drivers/sound/ite8172.c linux-2.4.22/drivers/sound/ite8172.c
@@ -285,7 +285,7 @@
struct proc_dir_entry *ac97_ps;
#endif /* IT8172_DEBUG */
- struct ac97_codec codec;
+ struct ac97_codec *codec;
unsigned short pcc, capcc;
unsigned dacrate, adcrate;
@@ -873,7 +873,7 @@
if (list == &devs)
return -ENODEV;
s = list_entry(list, struct it8172_state, devs);
- if (s->codec.dev_mixer == minor)
+ if (s->codec->dev_mixer == minor)
break;
}
file->private_data = s;
@@ -997,17 +997,17 @@
unsigned int cmd, unsigned long arg)
{
struct it8172_state *s = (struct it8172_state *)file->private_data;
- struct ac97_codec *codec = &s->codec;
+ struct ac97_codec *codec = s->codec;
return mixdev_ioctl(codec, cmd, arg);
}
static /*const*/ struct file_operations it8172_mixer_fops = {
- owner: THIS_MODULE,
- llseek: it8172_llseek,
- ioctl: it8172_ioctl_mixdev,
- open: it8172_open_mixdev,
- release: it8172_release_mixdev,
+ .owner = THIS_MODULE,
+ .llseek = it8172_llseek,
+ .ioctl = it8172_ioctl_mixdev,
+ .open = it8172_open_mixdev,
+ .release = it8172_release_mixdev,
};
/* --------------------------------------------------------------------- */
@@ -1763,7 +1763,7 @@
return -EINVAL;
}
- return mixdev_ioctl(&s->codec, cmd, arg);
+ return mixdev_ioctl(s->codec, cmd, arg);
}
@@ -1872,15 +1872,15 @@
}
static /*const*/ struct file_operations it8172_audio_fops = {
- owner: THIS_MODULE,
- llseek: it8172_llseek,
- read: it8172_read,
- write: it8172_write,
- poll: it8172_poll,
- ioctl: it8172_ioctl,
- mmap: it8172_mmap,
- open: it8172_open,
- release: it8172_release,
+ .owner = THIS_MODULE,
+ .llseek = it8172_llseek,
+ .read = it8172_read,
+ .write = it8172_write,
+ .poll = it8172_poll,
+ .ioctl = it8172_ioctl,
+ .mmap = it8172_mmap,
+ .open = it8172_open,
+ .release = it8172_release,
};
@@ -1931,7 +1931,7 @@
len += sprintf (buf + len, "----------------------\n");
for (cnt=0; cnt <= 0x7e; cnt = cnt +2)
len+= sprintf (buf + len, "reg %02x = %04x\n",
- cnt, rdcodec(&s->codec, cnt));
+ cnt, rdcodec(s->codec, cnt));
if (fpos >=len){
*start = buf;
@@ -1996,11 +1996,16 @@
s->vendor = pcidev->vendor;
s->device = pcidev->device;
pci_read_config_byte(pcidev, PCI_REVISION_ID, &s->rev);
- s->codec.private_data = s;
- s->codec.id = 0;
- s->codec.codec_read = rdcodec;
- s->codec.codec_write = wrcodec;
- s->codec.codec_wait = waitcodec;
+
+ s->codec = ac97_alloc_codec();
+ if(s->codec == NULL)
+ goto err_codec;
+
+ s->codec->private_data = s;
+ s->codec->id = 0;
+ s->codec->codec_read = rdcodec;
+ s->codec->codec_write = wrcodec;
+ s->codec->codec_wait = waitcodec;
if (!request_region(s->io, pci_resource_len(pcidev,0),
IT8172_MODULE_NAME)) {
@@ -2019,7 +2024,7 @@
/* register devices */
if ((s->dev_audio = register_sound_dsp(&it8172_audio_fops, -1)) < 0)
goto err_dev1;
- if ((s->codec.dev_mixer =
+ if ((s->codec->dev_mixer =
register_sound_mixer(&it8172_mixer_fops, -1)) < 0)
goto err_dev2;
@@ -2090,11 +2095,11 @@
outw(0, s->io+IT_AC_CODECC);
/* codec init */
- if (!ac97_probe_codec(&s->codec))
+ if (!ac97_probe_codec(s->codec))
goto err_dev3;
/* add I2S as allowable recording source */
- s->codec.record_sources |= SOUND_MASK_I2S;
+ s->codec->record_sources |= SOUND_MASK_I2S;
/* Enable Volume button interrupts */
imc = inb(s->io+IT_AC_IMC);
@@ -2114,23 +2119,23 @@
/* set mic to be the recording source */
val = SOUND_MASK_MIC;
- mixdev_ioctl(&s->codec, SOUND_MIXER_WRITE_RECSRC,
+ mixdev_ioctl(s->codec, SOUND_MIXER_WRITE_RECSRC,
(unsigned long)&val);
/* mute AC'97 master and PCM when in S/PDIF mode */
if (s->spdif_volume != -1) {
val = 0x0000;
- s->codec.mixer_ioctl(&s->codec, SOUND_MIXER_WRITE_VOLUME,
+ s->codec->mixer_ioctl(s->codec, SOUND_MIXER_WRITE_VOLUME,
(unsigned long)&val);
- s->codec.mixer_ioctl(&s->codec, SOUND_MIXER_WRITE_PCM,
+ s->codec->mixer_ioctl(s->codec, SOUND_MIXER_WRITE_PCM,
(unsigned long)&val);
}
#ifdef IT8172_DEBUG
sprintf(proc_str, "driver/%s/%d/ac97", IT8172_MODULE_NAME,
- s->codec.id);
+ s->codec->id);
s->ac97_ps = create_proc_read_entry (proc_str, 0, NULL,
- ac97_read_proc, &s->codec);
+ ac97_read_proc, s->codec);
#endif
/* store it in the driver field */
@@ -2144,7 +2149,7 @@
return 0;
err_dev3:
- unregister_sound_mixer(s->codec.dev_mixer);
+ unregister_sound_mixer(s->codec->dev_mixer);
err_dev2:
unregister_sound_dsp(s->dev_audio);
err_dev1:
@@ -2153,6 +2158,8 @@
err_irq:
release_region(s->io, pci_resource_len(pcidev,0));
err_region:
+ ac97_release_codec(s->codec);
+ err_codec:
kfree(s);
return -1;
}
@@ -2172,7 +2179,8 @@
free_irq(s->irq, s);
release_region(s->io, pci_resource_len(dev,0));
unregister_sound_dsp(s->dev_audio);
- unregister_sound_mixer(s->codec.dev_mixer);
+ unregister_sound_mixer(s->codec->dev_mixer);
+ ac97_codec_release(s->codec);
kfree(s);
pci_set_drvdata(dev, NULL);
}
@@ -2188,10 +2196,10 @@
MODULE_DEVICE_TABLE(pci, id_table);
static struct pci_driver it8172_driver = {
- name: IT8172_MODULE_NAME,
- id_table: id_table,
- probe: it8172_probe,
- remove: it8172_remove
+ .name = IT8172_MODULE_NAME,
+ .id_table = id_table,
+ .probe = it8172_probe,
+ .remove = it8172_remove
};
static int __init init_it8172(void)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)