X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=sound%2Fpci%2Fad1889.c;h=98970d401be9872be2eb61d3b4f1148da97d80e7;hb=d29240ce57d96db7300360d1e6f18357810a5c2b;hp=8ce9cb4c79703ea1a851838753e7b5a957d5f945;hpb=e560d8d8368ad8b6161839984b253de622863265;p=safe%2Fjmp%2Flinux-2.6 diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c index 8ce9cb4..98970d4 100644 --- a/sound/pci/ad1889.c +++ b/sound/pci/ad1889.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -50,7 +51,7 @@ #include "ad1889.h" #include "ac97/ac97_id.h" -#define AD1889_DRVVER "$Revision: 1.2 $" +#define AD1889_DRVVER "Version: 1.7" MODULE_AUTHOR("Kyle McMartin , Thibaut Varene "); MODULE_DESCRIPTION("Analog Devices AD1889 ALSA sound driver"); @@ -87,20 +88,20 @@ struct ad1889_register_state { }; struct snd_ad1889 { - snd_card_t *card; + struct snd_card *card; struct pci_dev *pci; int irq; unsigned long bar; void __iomem *iobase; - ac97_t *ac97; - ac97_bus_t *ac97_bus; - snd_pcm_t *pcm; - snd_info_entry_t *proc; + struct snd_ac97 *ac97; + struct snd_ac97_bus *ac97_bus; + struct snd_pcm *pcm; + struct snd_info_entry *proc; - snd_pcm_substream_t *psubs; - snd_pcm_substream_t *csubs; + struct snd_pcm_substream *psubs; + struct snd_pcm_substream *csubs; /* playback register state */ struct ad1889_register_state wave; @@ -240,15 +241,15 @@ ad1889_channel_reset(struct snd_ad1889 *chip, unsigned int channel) } } -static inline u16 -snd_ad1889_ac97_read(ac97_t *ac97, unsigned short reg) +static u16 +snd_ad1889_ac97_read(struct snd_ac97 *ac97, unsigned short reg) { struct snd_ad1889 *chip = ac97->private_data; return ad1889_readw(chip, AD_AC97_BASE + reg); } -static inline void -snd_ad1889_ac97_write(ac97_t *ac97, unsigned short reg, unsigned short val) +static void +snd_ad1889_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val) { struct snd_ad1889 *chip = ac97->private_data; ad1889_writew(chip, AD_AC97_BASE + reg, val); @@ -273,20 +274,20 @@ snd_ad1889_ac97_ready(struct snd_ad1889 *chip) } static int -snd_ad1889_hw_params(snd_pcm_substream_t *substream, - snd_pcm_hw_params_t *hw_params) +snd_ad1889_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *hw_params) { return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); } static int -snd_ad1889_hw_free(snd_pcm_substream_t *substream) +snd_ad1889_hw_free(struct snd_pcm_substream *substream) { return snd_pcm_lib_free_pages(substream); } -static snd_pcm_hardware_t snd_ad1889_playback_hw = { +static struct snd_pcm_hardware snd_ad1889_playback_hw = { .info = SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_BLOCK_TRANSFER, .formats = SNDRV_PCM_FMTBIT_S16_LE, @@ -303,7 +304,7 @@ static snd_pcm_hardware_t snd_ad1889_playback_hw = { /*.fifo_size = 0,*/ }; -static snd_pcm_hardware_t snd_ad1889_capture_hw = { +static struct snd_pcm_hardware snd_ad1889_capture_hw = { .info = SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_BLOCK_TRANSFER, .formats = SNDRV_PCM_FMTBIT_S16_LE, @@ -321,10 +322,10 @@ static snd_pcm_hardware_t snd_ad1889_capture_hw = { }; static int -snd_ad1889_playback_open(snd_pcm_substream_t *ss) +snd_ad1889_playback_open(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); - snd_pcm_runtime_t *rt = ss->runtime; + struct snd_pcm_runtime *rt = ss->runtime; chip->psubs = ss; rt->hw = snd_ad1889_playback_hw; @@ -333,10 +334,10 @@ snd_ad1889_playback_open(snd_pcm_substream_t *ss) } static int -snd_ad1889_capture_open(snd_pcm_substream_t *ss) +snd_ad1889_capture_open(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); - snd_pcm_runtime_t *rt = ss->runtime; + struct snd_pcm_runtime *rt = ss->runtime; chip->csubs = ss; rt->hw = snd_ad1889_capture_hw; @@ -345,7 +346,7 @@ snd_ad1889_capture_open(snd_pcm_substream_t *ss) } static int -snd_ad1889_playback_close(snd_pcm_substream_t *ss) +snd_ad1889_playback_close(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); chip->psubs = NULL; @@ -353,7 +354,7 @@ snd_ad1889_playback_close(snd_pcm_substream_t *ss) } static int -snd_ad1889_capture_close(snd_pcm_substream_t *ss) +snd_ad1889_capture_close(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); chip->csubs = NULL; @@ -361,10 +362,10 @@ snd_ad1889_capture_close(snd_pcm_substream_t *ss) } static int -snd_ad1889_playback_prepare(snd_pcm_substream_t *ss) +snd_ad1889_playback_prepare(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); - snd_pcm_runtime_t *rt = ss->runtime; + struct snd_pcm_runtime *rt = ss->runtime; unsigned int size = snd_pcm_lib_buffer_bytes(ss); unsigned int count = snd_pcm_lib_period_bytes(ss); u16 reg; @@ -411,10 +412,10 @@ snd_ad1889_playback_prepare(snd_pcm_substream_t *ss) } static int -snd_ad1889_capture_prepare(snd_pcm_substream_t *ss) +snd_ad1889_capture_prepare(struct snd_pcm_substream *ss) { struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); - snd_pcm_runtime_t *rt = ss->runtime; + struct snd_pcm_runtime *rt = ss->runtime; unsigned int size = snd_pcm_lib_buffer_bytes(ss); unsigned int count = snd_pcm_lib_period_bytes(ss); u16 reg; @@ -462,7 +463,7 @@ snd_ad1889_capture_prepare(snd_pcm_substream_t *ss) DMA should be *triggered* by this call. The WSMC "WAEN" bit triggers DMA Wave On/Off */ static int -snd_ad1889_playback_trigger(snd_pcm_substream_t *ss, int cmd) +snd_ad1889_playback_trigger(struct snd_pcm_substream *ss, int cmd) { u16 wsmc; struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); @@ -503,7 +504,7 @@ snd_ad1889_playback_trigger(snd_pcm_substream_t *ss, int cmd) DMA should be *triggered* by this call. The RAMC "ADEN" bit triggers DMA ADC On/Off */ static int -snd_ad1889_capture_trigger(snd_pcm_substream_t *ss, int cmd) +snd_ad1889_capture_trigger(struct snd_pcm_substream *ss, int cmd) { u16 ramc; struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); @@ -538,7 +539,7 @@ snd_ad1889_capture_trigger(snd_pcm_substream_t *ss, int cmd) /* Called in atomic context with IRQ disabled */ static snd_pcm_uframes_t -snd_ad1889_playback_pointer(snd_pcm_substream_t *ss) +snd_ad1889_playback_pointer(struct snd_pcm_substream *ss) { size_t ptr = 0; struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); @@ -556,7 +557,7 @@ snd_ad1889_playback_pointer(snd_pcm_substream_t *ss) /* Called in atomic context with IRQ disabled */ static snd_pcm_uframes_t -snd_ad1889_capture_pointer(snd_pcm_substream_t *ss) +snd_ad1889_capture_pointer(struct snd_pcm_substream *ss) { size_t ptr = 0; struct snd_ad1889 *chip = snd_pcm_substream_chip(ss); @@ -572,7 +573,7 @@ snd_ad1889_capture_pointer(snd_pcm_substream_t *ss) return bytes_to_frames(ss->runtime, ptr); } -static snd_pcm_ops_t snd_ad1889_playback_ops = { +static struct snd_pcm_ops snd_ad1889_playback_ops = { .open = snd_ad1889_playback_open, .close = snd_ad1889_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -583,7 +584,7 @@ static snd_pcm_ops_t snd_ad1889_playback_ops = { .pointer = snd_ad1889_playback_pointer, }; -static snd_pcm_ops_t snd_ad1889_capture_ops = { +static struct snd_pcm_ops snd_ad1889_capture_ops = { .open = snd_ad1889_capture_open, .close = snd_ad1889_capture_close, .ioctl = snd_pcm_lib_ioctl, @@ -595,9 +596,7 @@ static snd_pcm_ops_t snd_ad1889_capture_ops = { }; static irqreturn_t -snd_ad1889_interrupt(int irq, - void *dev_id, - struct pt_regs *regs) +snd_ad1889_interrupt(int irq, void *dev_id) { unsigned long st; struct snd_ad1889 *chip = dev_id; @@ -623,19 +622,11 @@ snd_ad1889_interrupt(int irq, return IRQ_HANDLED; } -static void -snd_ad1889_pcm_free(snd_pcm_t *pcm) -{ - struct snd_ad1889 *chip = pcm->private_data; - chip->pcm = NULL; - snd_pcm_lib_preallocate_free_for_all(pcm); -} - static int __devinit -snd_ad1889_pcm_init(struct snd_ad1889 *chip, int device, snd_pcm_t **rpcm) +snd_ad1889_pcm_init(struct snd_ad1889 *chip, int device, struct snd_pcm **rpcm) { int err; - snd_pcm_t *pcm; + struct snd_pcm *pcm; if (rpcm) *rpcm = NULL; @@ -650,7 +641,6 @@ snd_ad1889_pcm_init(struct snd_ad1889 *chip, int device, snd_pcm_t **rpcm) &snd_ad1889_capture_ops); pcm->private_data = chip; - pcm->private_free = snd_ad1889_pcm_free; pcm->info_flags = 0; strcpy(pcm->name, chip->card->shortname); @@ -675,7 +665,7 @@ snd_ad1889_pcm_init(struct snd_ad1889 *chip, int device, snd_pcm_t **rpcm) } static void -snd_ad1889_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer) +snd_ad1889_proc_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) { struct snd_ad1889 *chip = entry->private_data; u16 reg; @@ -758,10 +748,10 @@ snd_ad1889_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer) static void __devinit snd_ad1889_proc_init(struct snd_ad1889 *chip) { - snd_info_entry_t *entry; + struct snd_info_entry *entry; if (!snd_card_proc_new(chip->card, chip->card->driver, &entry)) - snd_info_set_text_ops(entry, chip, 1024, snd_ad1889_proc_read); + snd_info_set_text_ops(entry, chip, snd_ad1889_proc_read); } static struct ac97_quirk ac97_quirks[] = { @@ -800,14 +790,14 @@ snd_ad1889_ac97_xinit(struct snd_ad1889 *chip) } static void -snd_ad1889_ac97_bus_free(ac97_bus_t *bus) +snd_ad1889_ac97_bus_free(struct snd_ac97_bus *bus) { struct snd_ad1889 *chip = bus->private_data; chip->ac97_bus = NULL; } static void -snd_ad1889_ac97_free(ac97_t *ac97) +snd_ad1889_ac97_free(struct snd_ac97 *ac97) { struct snd_ad1889 *chip = ac97->private_data; chip->ac97 = NULL; @@ -817,8 +807,8 @@ static int __devinit snd_ad1889_ac97_init(struct snd_ad1889 *chip, const char *quirk_override) { int err; - ac97_template_t ac97; - static ac97_bus_ops_t ops = { + struct snd_ac97_template ac97; + static struct snd_ac97_bus_ops ops = { .write = snd_ad1889_ac97_write, .read = snd_ad1889_ac97_read, }; @@ -868,7 +858,7 @@ snd_ad1889_free(struct snd_ad1889 *chip) synchronize_irq(chip->irq); if (chip->irq >= 0) - free_irq(chip->irq, (void*)chip); + free_irq(chip->irq, chip); skip_hw: if (chip->iobase) @@ -881,8 +871,8 @@ skip_hw: return 0; } -static inline int -snd_ad1889_dev_free(snd_device_t *device) +static int +snd_ad1889_dev_free(struct snd_device *device) { struct snd_ad1889 *chip = device->device_data; return snd_ad1889_free(chip); @@ -903,14 +893,14 @@ snd_ad1889_init(struct snd_ad1889 *chip) } static int __devinit -snd_ad1889_create(snd_card_t *card, +snd_ad1889_create(struct snd_card *card, struct pci_dev *pci, struct snd_ad1889 **rchip) { int err; struct snd_ad1889 *chip; - static snd_device_ops_t ops = { + static struct snd_device_ops ops = { .dev_free = snd_ad1889_dev_free, }; @@ -918,10 +908,10 @@ snd_ad1889_create(snd_card_t *card, if ((err = pci_enable_device(pci)) < 0) return err; - + /* check PCI availability (32bit DMA) */ - if (pci_set_dma_mask(pci, 0xffffffff) < 0 || - pci_set_consistent_dma_mask(pci, 0xffffffff) < 0) { + if (pci_set_dma_mask(pci, DMA_32BIT_MASK) < 0 || + pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK) < 0) { printk(KERN_ERR PFX "error setting 32-bit DMA mask.\n"); pci_disable_device(pci); return -ENXIO; @@ -955,7 +945,7 @@ snd_ad1889_create(snd_card_t *card, spin_lock_init(&chip->lock); /* only now can we call ad1889_free */ if (request_irq(pci->irq, snd_ad1889_interrupt, - SA_INTERRUPT|SA_SHIRQ, card->driver, (void*)chip)) { + IRQF_SHARED, card->driver, chip)) { printk(KERN_ERR PFX "cannot obtain IRQ %d\n", pci->irq); snd_ad1889_free(chip); return -EBUSY; @@ -982,8 +972,7 @@ snd_ad1889_create(snd_card_t *card, return 0; free_and_ret: - if (chip) - kfree(chip); + kfree(chip); pci_disable_device(pci); return err; @@ -995,7 +984,7 @@ snd_ad1889_probe(struct pci_dev *pci, { int err; static int devno; - snd_card_t *card; + struct snd_card *card; struct snd_ad1889 *chip; /* (1) */