diff options
Diffstat (limited to 'sound/pci/ymfpci')
-rw-r--r-- | sound/pci/ymfpci/ymfpci.c | 49 | ||||
-rw-r--r-- | sound/pci/ymfpci/ymfpci_main.c | 517 |
2 files changed, 274 insertions, 292 deletions
diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c index d013237..dab9b83 100644 --- a/sound/pci/ymfpci/ymfpci.c +++ b/sound/pci/ymfpci/ymfpci.c @@ -31,7 +31,7 @@ #include <sound/initval.h> MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>"); -MODULE_DESCRIPTION("Yamaha DS-XG PCI"); +MODULE_DESCRIPTION("Yamaha DS-1 PCI"); MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("{{Yamaha,YMF724}," "{Yamaha,YMF724F}," @@ -51,11 +51,11 @@ static long joystick_port[SNDRV_CARDS]; static int rear_switch[SNDRV_CARDS]; module_param_array(index, int, NULL, 0444); -MODULE_PARM_DESC(index, "Index value for the Yamaha DS-XG PCI soundcard."); +MODULE_PARM_DESC(index, "Index value for the Yamaha DS-1 PCI soundcard."); module_param_array(id, charp, NULL, 0444); -MODULE_PARM_DESC(id, "ID string for the Yamaha DS-XG PCI soundcard."); +MODULE_PARM_DESC(id, "ID string for the Yamaha DS-1 PCI soundcard."); module_param_array(enable, bool, NULL, 0444); -MODULE_PARM_DESC(enable, "Enable Yamaha DS-XG soundcard."); +MODULE_PARM_DESC(enable, "Enable Yamaha DS-1 soundcard."); module_param_array(mpu_port, long, NULL, 0444); MODULE_PARM_DESC(mpu_port, "MPU-401 Port."); module_param_array(fm_port, long, NULL, 0444); @@ -80,7 +80,7 @@ static struct pci_device_id snd_ymfpci_ids[] = { MODULE_DEVICE_TABLE(pci, snd_ymfpci_ids); #ifdef SUPPORT_JOYSTICK -static int __devinit snd_ymfpci_create_gameport(ymfpci_t *chip, int dev, +static int __devinit snd_ymfpci_create_gameport(struct snd_ymfpci *chip, int dev, int legacy_ctrl, int legacy_ctrl2) { struct gameport *gp; @@ -152,7 +152,7 @@ static int __devinit snd_ymfpci_create_gameport(ymfpci_t *chip, int dev, return 0; } -void snd_ymfpci_free_gameport(ymfpci_t *chip) +void snd_ymfpci_free_gameport(struct snd_ymfpci *chip) { if (chip->gameport) { struct resource *r = gameport_get_port_data(chip->gameport); @@ -164,20 +164,20 @@ void snd_ymfpci_free_gameport(ymfpci_t *chip) } } #else -static inline int snd_ymfpci_create_gameport(ymfpci_t *chip, int dev, int l, int l2) { return -ENOSYS; } -void snd_ymfpci_free_gameport(ymfpci_t *chip) { } +static inline int snd_ymfpci_create_gameport(struct snd_ymfpci *chip, int dev, int l, int l2) { return -ENOSYS; } +void snd_ymfpci_free_gameport(struct snd_ymfpci *chip) { } #endif /* SUPPORT_JOYSTICK */ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { static int dev; - snd_card_t *card; + struct snd_card *card; struct resource *fm_res = NULL; struct resource *mpu_res = NULL; - ymfpci_t *chip; - opl3_t *opl3; - char *str; + struct snd_ymfpci *chip; + struct snd_opl3 *opl3; + const char *str, *model; int err; u16 legacy_ctrl, legacy_ctrl2, old_legacy_ctrl; @@ -193,13 +193,13 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci, return -ENOMEM; switch (pci_id->device) { - case 0x0004: str = "YMF724"; break; - case 0x000d: str = "YMF724F"; break; - case 0x000a: str = "YMF740"; break; - case 0x000c: str = "YMF740C"; break; - case 0x0010: str = "YMF744"; break; - case 0x0012: str = "YMF754"; break; - default: str = "???"; break; + case 0x0004: str = "YMF724"; model = "DS-1"; break; + case 0x000d: str = "YMF724F"; model = "DS-1"; break; + case 0x000a: str = "YMF740"; model = "DS-1L"; break; + case 0x000c: str = "YMF740C"; model = "DS-1L"; break; + case 0x0010: str = "YMF744"; model = "DS-1S"; break; + case 0x0012: str = "YMF754"; model = "DS-1E"; break; + default: model = str = "???"; break; } legacy_ctrl = 0; @@ -271,8 +271,10 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci, } chip->fm_res = fm_res; chip->mpu_res = mpu_res; + card->private_data = chip; + strcpy(card->driver, str); - sprintf(card->shortname, "Yamaha DS-XG (%s)", str); + sprintf(card->shortname, "Yamaha %s (%s)", model, str); sprintf(card->longname, "%s at 0x%lx, irq %i", card->shortname, chip->reg_area_phys, @@ -343,11 +345,14 @@ static void __devexit snd_card_ymfpci_remove(struct pci_dev *pci) } static struct pci_driver driver = { - .name = "Yamaha DS-XG PCI", + .name = "Yamaha DS-1 PCI", .id_table = snd_ymfpci_ids, .probe = snd_card_ymfpci_probe, .remove = __devexit_p(snd_card_ymfpci_remove), - SND_PCI_PM_CALLBACKS +#ifdef CONFIG_PM + .suspend = snd_ymfpci_suspend, + .resume = snd_ymfpci_resume, +#endif }; static int __init alsa_card_ymfpci_init(void) diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c index 88a43e0..1dfc723 100644 --- a/sound/pci/ymfpci/ymfpci_main.c +++ b/sound/pci/ymfpci/ymfpci_main.c @@ -50,39 +50,39 @@ * common I/O routines */ -static void snd_ymfpci_irq_wait(ymfpci_t *chip); +static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip); -static inline u8 snd_ymfpci_readb(ymfpci_t *chip, u32 offset) +static inline u8 snd_ymfpci_readb(struct snd_ymfpci *chip, u32 offset) { return readb(chip->reg_area_virt + offset); } -static inline void snd_ymfpci_writeb(ymfpci_t *chip, u32 offset, u8 val) +static inline void snd_ymfpci_writeb(struct snd_ymfpci *chip, u32 offset, u8 val) { writeb(val, chip->reg_area_virt + offset); } -static inline u16 snd_ymfpci_readw(ymfpci_t *chip, u32 offset) +static inline u16 snd_ymfpci_readw(struct snd_ymfpci *chip, u32 offset) { return readw(chip->reg_area_virt + offset); } -static inline void snd_ymfpci_writew(ymfpci_t *chip, u32 offset, u16 val) +static inline void snd_ymfpci_writew(struct snd_ymfpci *chip, u32 offset, u16 val) { writew(val, chip->reg_area_virt + offset); } -static inline u32 snd_ymfpci_readl(ymfpci_t *chip, u32 offset) +static inline u32 snd_ymfpci_readl(struct snd_ymfpci *chip, u32 offset) { return readl(chip->reg_area_virt + offset); } -static inline void snd_ymfpci_writel(ymfpci_t *chip, u32 offset, u32 val) +static inline void snd_ymfpci_writel(struct snd_ymfpci *chip, u32 offset, u32 val) { writel(val, chip->reg_area_virt + offset); } -static int snd_ymfpci_codec_ready(ymfpci_t *chip, int secondary) +static int snd_ymfpci_codec_ready(struct snd_ymfpci *chip, int secondary) { unsigned long end_time; u32 reg = secondary ? YDSXGR_SECSTATUSADR : YDSXGR_PRISTATUSADR; @@ -98,9 +98,9 @@ static int snd_ymfpci_codec_ready(ymfpci_t *chip, int secondary) return -EBUSY; } -static void snd_ymfpci_codec_write(ac97_t *ac97, u16 reg, u16 val) +static void snd_ymfpci_codec_write(struct snd_ac97 *ac97, u16 reg, u16 val) { - ymfpci_t *chip = ac97->private_data; + struct snd_ymfpci *chip = ac97->private_data; u32 cmd; snd_ymfpci_codec_ready(chip, 0); @@ -108,9 +108,9 @@ static void snd_ymfpci_codec_write(ac97_t *ac97, u16 reg, u16 val) snd_ymfpci_writel(chip, YDSXGR_AC97CMDDATA, cmd); } -static u16 snd_ymfpci_codec_read(ac97_t *ac97, u16 reg) +static u16 snd_ymfpci_codec_read(struct snd_ac97 *ac97, u16 reg) { - ymfpci_t *chip = ac97->private_data; + struct snd_ymfpci *chip = ac97->private_data; if (snd_ymfpci_codec_ready(chip, 0)) return ~0; @@ -182,7 +182,7 @@ static u32 snd_ymfpci_calc_lpfQ(u32 rate) * Hardware start management */ -static void snd_ymfpci_hw_start(ymfpci_t *chip) +static void snd_ymfpci_hw_start(struct snd_ymfpci *chip) { unsigned long flags; @@ -196,7 +196,7 @@ static void snd_ymfpci_hw_start(ymfpci_t *chip) spin_unlock_irqrestore(&chip->reg_lock, flags); } -static void snd_ymfpci_hw_stop(ymfpci_t *chip) +static void snd_ymfpci_hw_stop(struct snd_ymfpci *chip) { unsigned long flags; long timeout = 1000; @@ -222,9 +222,11 @@ static void snd_ymfpci_hw_stop(ymfpci_t *chip) * Playback voice management */ -static int voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpci_voice_t **rvoice) +static int voice_alloc(struct snd_ymfpci *chip, + enum snd_ymfpci_voice_type type, int pair, + struct snd_ymfpci_voice **rvoice) { - ymfpci_voice_t *voice, *voice2; + struct snd_ymfpci_voice *voice, *voice2; int idx; *rvoice = NULL; @@ -258,7 +260,9 @@ static int voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpc return -ENOMEM; } -static int snd_ymfpci_voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpci_voice_t **rvoice) +static int snd_ymfpci_voice_alloc(struct snd_ymfpci *chip, + enum snd_ymfpci_voice_type type, int pair, + struct snd_ymfpci_voice **rvoice) { unsigned long flags; int result; @@ -278,7 +282,7 @@ static int snd_ymfpci_voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int return result; } -static int snd_ymfpci_voice_free(ymfpci_t *chip, ymfpci_voice_t *pvoice) +static int snd_ymfpci_voice_free(struct snd_ymfpci *chip, struct snd_ymfpci_voice *pvoice) { unsigned long flags; @@ -296,9 +300,9 @@ static int snd_ymfpci_voice_free(ymfpci_t *chip, ymfpci_voice_t *pvoice) * PCM part */ -static void snd_ymfpci_pcm_interrupt(ymfpci_t *chip, ymfpci_voice_t *voice) +static void snd_ymfpci_pcm_interrupt(struct snd_ymfpci *chip, struct snd_ymfpci_voice *voice) { - ymfpci_pcm_t *ypcm; + struct snd_ymfpci_pcm *ypcm; u32 pos, delta; if ((ypcm = voice->ypcm) == NULL) @@ -325,7 +329,7 @@ static void snd_ymfpci_pcm_interrupt(ymfpci_t *chip, ymfpci_voice_t *voice) if (unlikely(ypcm->update_pcm_vol)) { unsigned int subs = ypcm->substream->number; unsigned int next_bank = 1 - chip->active_bank; - snd_ymfpci_playback_bank_t *bank; + struct snd_ymfpci_playback_bank *bank; u32 volume; bank = &voice->bank[next_bank]; @@ -345,11 +349,11 @@ static void snd_ymfpci_pcm_interrupt(ymfpci_t *chip, ymfpci_voice_t *voice) spin_unlock(&chip->reg_lock); } -static void snd_ymfpci_pcm_capture_interrupt(snd_pcm_substream_t *substream) +static void snd_ymfpci_pcm_capture_interrupt(struct snd_pcm_substream *substream) { - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; - ymfpci_t *chip = ypcm->chip; + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; + struct snd_ymfpci *chip = ypcm->chip; u32 pos, delta; spin_lock(&chip->reg_lock); @@ -372,11 +376,11 @@ static void snd_ymfpci_pcm_capture_interrupt(snd_pcm_substream_t *substream) spin_unlock(&chip->reg_lock); } -static int snd_ymfpci_playback_trigger(snd_pcm_substream_t * substream, +static int snd_ymfpci_playback_trigger(struct snd_pcm_substream *substream, int cmd) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - ymfpci_pcm_t *ypcm = substream->runtime->private_data; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci_pcm *ypcm = substream->runtime->private_data; int result = 0; spin_lock(&chip->reg_lock); @@ -409,11 +413,11 @@ static int snd_ymfpci_playback_trigger(snd_pcm_substream_t * substream, spin_unlock(&chip->reg_lock); return result; } -static int snd_ymfpci_capture_trigger(snd_pcm_substream_t * substream, +static int snd_ymfpci_capture_trigger(struct snd_pcm_substream *substream, int cmd) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - ymfpci_pcm_t *ypcm = substream->runtime->private_data; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci_pcm *ypcm = substream->runtime->private_data; int result = 0; u32 tmp; @@ -441,7 +445,7 @@ static int snd_ymfpci_capture_trigger(snd_pcm_substream_t * substream, return result; } -static int snd_ymfpci_pcm_voice_alloc(ymfpci_pcm_t *ypcm, int voices) +static int snd_ymfpci_pcm_voice_alloc(struct snd_ymfpci_pcm *ypcm, int voices) { int err; @@ -471,16 +475,16 @@ static int snd_ymfpci_pcm_voice_alloc(ymfpci_pcm_t *ypcm, int voices) return 0; } -static void snd_ymfpci_pcm_init_voice(ymfpci_pcm_t *ypcm, unsigned int voiceidx, - snd_pcm_runtime_t *runtime, +static void snd_ymfpci_pcm_init_voice(struct snd_ymfpci_pcm *ypcm, unsigned int voiceidx, + struct snd_pcm_runtime *runtime, int has_pcm_volume) { - ymfpci_voice_t *voice = ypcm->voices[voiceidx]; + struct snd_ymfpci_voice *voice = ypcm->voices[voiceidx]; u32 format; u32 delta = snd_ymfpci_calc_delta(runtime->rate); u32 lpfQ = snd_ymfpci_calc_lpfQ(runtime->rate); u32 lpfK = snd_ymfpci_calc_lpfK(runtime->rate); - snd_ymfpci_playback_bank_t *bank; + struct snd_ymfpci_playback_bank *bank; unsigned int nbank; u32 vol_left, vol_right; u8 use_left, use_right; @@ -544,7 +548,7 @@ static void snd_ymfpci_pcm_init_voice(ymfpci_pcm_t *ypcm, unsigned int voiceidx, } } -static int __devinit snd_ymfpci_ac3_init(ymfpci_t *chip) +static int __devinit snd_ymfpci_ac3_init(struct snd_ymfpci *chip) { if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(chip->pci), 4096, &chip->ac3_tmp_base) < 0) @@ -566,7 +570,7 @@ static int __devinit snd_ymfpci_ac3_init(ymfpci_t *chip) return 0; } -static int snd_ymfpci_ac3_done(ymfpci_t *chip) +static int snd_ymfpci_ac3_done(struct snd_ymfpci *chip) { spin_lock_irq(&chip->reg_lock); snd_ymfpci_writel(chip, YDSXGR_MAPOFEFFECT, @@ -580,11 +584,11 @@ static int snd_ymfpci_ac3_done(ymfpci_t *chip) return 0; } -static int snd_ymfpci_playback_hw_params(snd_pcm_substream_t * substream, - snd_pcm_hw_params_t * hw_params) +static int snd_ymfpci_playback_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *hw_params) { - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; int err; if ((err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0) @@ -594,11 +598,11 @@ static int snd_ymfpci_playback_hw_params(snd_pcm_substream_t * substream, return 0; } -static int snd_ymfpci_playback_hw_free(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_hw_free(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; if (runtime->private_data == NULL) return 0; @@ -618,11 +622,11 @@ static int snd_ymfpci_playback_hw_free(snd_pcm_substream_t * substream) return 0; } -static int snd_ymfpci_playback_prepare(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_prepare(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; unsigned int nvoice; ypcm->period_size = runtime->period_size; @@ -635,27 +639,27 @@ static int snd_ymfpci_playback_prepare(snd_pcm_substream_t * substream) return 0; } -static int snd_ymfpci_capture_hw_params(snd_pcm_substream_t * substream, - snd_pcm_hw_params_t * hw_params) +static int snd_ymfpci_capture_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_ymfpci_capture_hw_free(snd_pcm_substream_t * substream) +static int snd_ymfpci_capture_hw_free(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); /* wait, until the PCI operations are not finished */ snd_ymfpci_irq_wait(chip); return snd_pcm_lib_free_pages(substream); } -static int snd_ymfpci_capture_prepare(snd_pcm_substream_t * substream) +static int snd_ymfpci_capture_prepare(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; - snd_ymfpci_capture_bank_t * bank; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; + struct snd_ymfpci_capture_bank * bank; int nbank; u32 rate, format; @@ -694,30 +698,30 @@ static int snd_ymfpci_capture_prepare(snd_pcm_substream_t * substream) return 0; } -static snd_pcm_uframes_t snd_ymfpci_playback_pointer(snd_pcm_substream_t * substream) +static snd_pcm_uframes_t snd_ymfpci_playback_pointer(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; - ymfpci_voice_t *voice = ypcm->voices[0]; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; + struct snd_ymfpci_voice *voice = ypcm->voices[0]; if (!(ypcm->running && voice)) return 0; return le32_to_cpu(voice->bank[chip->active_bank].start); } -static snd_pcm_uframes_t snd_ymfpci_capture_pointer(snd_pcm_substream_t * substream) +static snd_pcm_uframes_t snd_ymfpci_capture_pointer(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; if (!ypcm->running) return 0; return le32_to_cpu(chip->bank_capture[ypcm->capture_bank_number][chip->active_bank]->start) >> ypcm->shift; } -static void snd_ymfpci_irq_wait(ymfpci_t *chip) +static void snd_ymfpci_irq_wait(struct snd_ymfpci *chip) { wait_queue_t wait; int loops = 4; @@ -735,9 +739,9 @@ static void snd_ymfpci_irq_wait(ymfpci_t *chip) static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *regs) { - ymfpci_t *chip = dev_id; + struct snd_ymfpci *chip = dev_id; u32 status, nvoice, mode; - ymfpci_voice_t *voice; + struct snd_ymfpci_voice *voice; status = snd_ymfpci_readl(chip, YDSXGR_STATUS); if (status & 0x80000000) { @@ -783,7 +787,7 @@ static irqreturn_t snd_ymfpci_interrupt(int irq, void *dev_id, struct pt_regs *r return IRQ_HANDLED; } -static snd_pcm_hardware_t snd_ymfpci_playback = +static struct snd_pcm_hardware snd_ymfpci_playback = { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID | @@ -805,7 +809,7 @@ static snd_pcm_hardware_t snd_ymfpci_playback = .fifo_size = 0, }; -static snd_pcm_hardware_t snd_ymfpci_capture = +static struct snd_pcm_hardware snd_ymfpci_capture = { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID | @@ -827,16 +831,16 @@ static snd_pcm_hardware_t snd_ymfpci_capture = .fifo_size = 0, }; -static void snd_ymfpci_pcm_free_substream(snd_pcm_runtime_t *runtime) +static void snd_ymfpci_pcm_free_substream(struct snd_pcm_runtime *runtime) { kfree(runtime->private_data); } -static int snd_ymfpci_playback_open_1(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_open_1(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; ypcm = kzalloc(sizeof(*ypcm), GFP_KERNEL); if (ypcm == NULL) @@ -853,7 +857,7 @@ static int snd_ymfpci_playback_open_1(snd_pcm_substream_t * substream) } /* call with spinlock held */ -static void ymfpci_open_extension(ymfpci_t *chip) +static void ymfpci_open_extension(struct snd_ymfpci *chip) { if (! chip->rear_opened) { if (! chip->spdif_opened) /* set AC3 */ @@ -866,7 +870,7 @@ static void ymfpci_open_extension(ymfpci_t *chip) } /* call with spinlock held */ -static void ymfpci_close_extension(ymfpci_t *chip) +static void ymfpci_close_extension(struct snd_ymfpci *chip) { if (! chip->rear_opened) { if (! chip->spdif_opened) @@ -877,12 +881,12 @@ static void ymfpci_close_extension(ymfpci_t *chip) } } -static int snd_ymfpci_playback_open(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_open(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; - snd_kcontrol_t *kctl; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; + struct snd_kcontrol *kctl; int err; if ((err = snd_ymfpci_playback_open_1(substream)) < 0) @@ -903,11 +907,11 @@ static int snd_ymfpci_playback_open(snd_pcm_substream_t * substream) return 0; } -static int snd_ymfpci_playback_spdif_open(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_spdif_open(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; int err; if ((err = snd_ymfpci_playback_open_1(substream)) < 0) @@ -930,11 +934,11 @@ static int snd_ymfpci_playback_spdif_open(snd_pcm_substream_t * substream) return 0; } -static int snd_ymfpci_playback_4ch_open(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_4ch_open(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; int err; if ((err = snd_ymfpci_playback_open_1(substream)) < 0) @@ -949,12 +953,12 @@ static int snd_ymfpci_playback_4ch_open(snd_pcm_substream_t * substream) return 0; } -static int snd_ymfpci_capture_open(snd_pcm_substream_t * substream, +static int snd_ymfpci_capture_open(struct snd_pcm_substream *substream, u32 capture_bank_number) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm; ypcm = kzalloc(sizeof(*ypcm), GFP_KERNEL); if (ypcm == NULL) @@ -973,26 +977,26 @@ static int snd_ymfpci_capture_open(snd_pcm_substream_t * substream, return 0; } -static int snd_ymfpci_capture_rec_open(snd_pcm_substream_t * substream) +static int snd_ymfpci_capture_rec_open(struct snd_pcm_substream *substream) { return snd_ymfpci_capture_open(substream, 0); } -static int snd_ymfpci_capture_ac97_open(snd_pcm_substream_t * substream) +static int snd_ymfpci_capture_ac97_open(struct snd_pcm_substream *substream) { return snd_ymfpci_capture_open(substream, 1); } -static int snd_ymfpci_playback_close_1(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_close_1(struct snd_pcm_substream *substream) { return 0; } -static int snd_ymfpci_playback_close(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_close(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - ymfpci_pcm_t *ypcm = substream->runtime->private_data; - snd_kcontrol_t *kctl; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci_pcm *ypcm = substream->runtime->private_data; + struct snd_kcontrol *kctl; spin_lock_irq(&chip->reg_lock); if (ypcm->output_rear && chip->rear_opened > 0) { @@ -1006,9 +1010,9 @@ static int snd_ymfpci_playback_close(snd_pcm_substream_t * substream) return snd_ymfpci_playback_close_1(substream); } -static int snd_ymfpci_playback_spdif_close(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_spdif_close(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); spin_lock_irq(&chip->reg_lock); chip->spdif_opened = 0; @@ -1023,9 +1027,9 @@ static int snd_ymfpci_playback_spdif_close(snd_pcm_substream_t * substream) return snd_ymfpci_playback_close_1(substream); } -static int snd_ymfpci_playback_4ch_close(snd_pcm_substream_t * substream) +static int snd_ymfpci_playback_4ch_close(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); spin_lock_irq(&chip->reg_lock); if (chip->rear_opened > 0) { @@ -1036,11 +1040,11 @@ static int snd_ymfpci_playback_4ch_close(snd_pcm_substream_t * substream) return snd_ymfpci_playback_close_1(substream); } -static int snd_ymfpci_capture_close(snd_pcm_substream_t * substream) +static int snd_ymfpci_capture_close(struct snd_pcm_substream *substream) { - ymfpci_t *chip = snd_pcm_substream_chip(substream); - snd_pcm_runtime_t *runtime = substream->runtime; - ymfpci_pcm_t *ypcm = runtime->private_data; + struct snd_ymfpci *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + struct snd_ymfpci_pcm *ypcm = runtime->private_data; if (ypcm != NULL) { chip->capture_substream[ypcm->capture_bank_number] = NULL; @@ -1049,7 +1053,7 @@ static int snd_ymfpci_capture_close(snd_pcm_substream_t * substream) return 0; } -static snd_pcm_ops_t snd_ymfpci_playback_ops = { +static struct snd_pcm_ops snd_ymfpci_playback_ops = { .open = snd_ymfpci_playback_open, .close = snd_ymfpci_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1060,7 +1064,7 @@ static snd_pcm_ops_t snd_ymfpci_playback_ops = { .pointer = snd_ymfpci_playback_pointer, }; -static snd_pcm_ops_t snd_ymfpci_capture_rec_ops = { +static struct snd_pcm_ops snd_ymfpci_capture_rec_ops = { .open = snd_ymfpci_capture_rec_open, .close = snd_ymfpci_capture_close, .ioctl = snd_pcm_lib_ioctl, @@ -1071,16 +1075,9 @@ static snd_pcm_ops_t snd_ymfpci_capture_rec_ops = { .pointer = snd_ymfpci_capture_pointer, }; -static void snd_ymfpci_pcm_free(snd_pcm_t *pcm) +int __devinit snd_ymfpci_pcm(struct snd_ymfpci *chip, int device, struct snd_pcm ** rpcm) { - ymfpci_t *chip = pcm->private_data; - chip->pcm = NULL; - snd_pcm_lib_preallocate_free_for_all(pcm); -} - -int __devinit snd_ymfpci_pcm(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) -{ - snd_pcm_t *pcm; + struct snd_pcm *pcm; int err; if (rpcm) @@ -1088,7 +1085,6 @@ int __devinit snd_ymfpci_pcm(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) if ((err = snd_pcm_new(chip->card, "YMFPCI", device, 32, 1, &pcm)) < 0) return err; pcm->private_data = chip; - pcm->private_free = snd_ymfpci_pcm_free; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ymfpci_capture_rec_ops); @@ -1106,7 +1102,7 @@ int __devinit snd_ymfpci_pcm(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) return 0; } -static snd_pcm_ops_t snd_ymfpci_capture_ac97_ops = { +static struct snd_pcm_ops snd_ymfpci_capture_ac97_ops = { .open = snd_ymfpci_capture_ac97_open, .close = snd_ymfpci_capture_close, .ioctl = snd_pcm_lib_ioctl, @@ -1117,16 +1113,9 @@ static snd_pcm_ops_t snd_ymfpci_capture_ac97_ops = { .pointer = snd_ymfpci_capture_pointer, }; -static void snd_ymfpci_pcm2_free(snd_pcm_t *pcm) -{ - ymfpci_t *chip = pcm->private_data; - chip->pcm2 = NULL; - snd_pcm_lib_preallocate_free_for_all(pcm); -} - -int __devinit snd_ymfpci_pcm2(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) +int __devinit snd_ymfpci_pcm2(struct snd_ymfpci *chip, int device, struct snd_pcm ** rpcm) { - snd_pcm_t *pcm; + struct snd_pcm *pcm; int err; if (rpcm) @@ -1134,7 +1123,6 @@ int __devinit snd_ymfpci_pcm2(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) if ((err = snd_pcm_new(chip->card, "YMFPCI - PCM2", device, 0, 1, &pcm)) < 0) return err; pcm->private_data = chip; - pcm->private_free = snd_ymfpci_pcm2_free; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ymfpci_capture_ac97_ops); @@ -1152,7 +1140,7 @@ int __devinit snd_ymfpci_pcm2(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) return 0; } -static snd_pcm_ops_t snd_ymfpci_playback_spdif_ops = { +static struct snd_pcm_ops snd_ymfpci_playback_spdif_ops = { .open = snd_ymfpci_playback_spdif_open, .close = snd_ymfpci_playback_spdif_close, .ioctl = snd_pcm_lib_ioctl, @@ -1163,16 +1151,9 @@ static snd_pcm_ops_t snd_ymfpci_playback_spdif_ops = { .pointer = snd_ymfpci_playback_pointer, }; -static void snd_ymfpci_pcm_spdif_free(snd_pcm_t *pcm) +int __devinit snd_ymfpci_pcm_spdif(struct snd_ymfpci *chip, int device, struct snd_pcm ** rpcm) { - ymfpci_t *chip = pcm->private_data; - chip->pcm_spdif = NULL; - snd_pcm_lib_preallocate_free_for_all(pcm); -} - -int __devinit snd_ymfpci_pcm_spdif(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) -{ - snd_pcm_t *pcm; + struct snd_pcm *pcm; int err; if (rpcm) @@ -1180,7 +1161,6 @@ int __devinit snd_ymfpci_pcm_spdif(ymfpci_t *chip, int device, snd_pcm_t ** rpcm if ((err = snd_pcm_new(chip->card, "YMFPCI - IEC958", device, 1, 0, &pcm)) < 0) return err; pcm->private_data = chip; - pcm->private_free = snd_ymfpci_pcm_spdif_free; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_spdif_ops); @@ -1197,7 +1177,7 @@ int __devinit snd_ymfpci_pcm_spdif(ymfpci_t *chip, int device, snd_pcm_t ** rpcm return 0; } -static snd_pcm_ops_t snd_ymfpci_playback_4ch_ops = { +static struct snd_pcm_ops snd_ymfpci_playback_4ch_ops = { .open = snd_ymfpci_playback_4ch_open, .close = snd_ymfpci_playback_4ch_close, .ioctl = snd_pcm_lib_ioctl, @@ -1208,16 +1188,9 @@ static snd_pcm_ops_t snd_ymfpci_playback_4ch_ops = { .pointer = snd_ymfpci_playback_pointer, }; -static void snd_ymfpci_pcm_4ch_free(snd_pcm_t *pcm) -{ - ymfpci_t *chip = pcm->private_data; - chip->pcm_4ch = NULL; - snd_pcm_lib_preallocate_free_for_all(pcm); -} - -int __devinit snd_ymfpci_pcm_4ch(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) +int __devinit snd_ymfpci_pcm_4ch(struct snd_ymfpci *chip, int device, struct snd_pcm ** rpcm) { - snd_pcm_t *pcm; + struct snd_pcm *pcm; int err; if (rpcm) @@ -1225,7 +1198,6 @@ int __devinit snd_ymfpci_pcm_4ch(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) if ((err = snd_pcm_new(chip->card, "YMFPCI - Rear", device, 1, 0, &pcm)) < 0) return err; pcm->private_data = chip; - pcm->private_free = snd_ymfpci_pcm_4ch_free; snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_4ch_ops); @@ -1242,17 +1214,17 @@ int __devinit snd_ymfpci_pcm_4ch(ymfpci_t *chip, int device, snd_pcm_t ** rpcm) return 0; } -static int snd_ymfpci_spdif_default_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_ymfpci_spdif_default_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; uinfo->count = 1; return 0; } -static int snd_ymfpci_spdif_default_get(snd_kcontrol_t * kcontrol, - snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_spdif_default_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); spin_lock_irq(&chip->reg_lock); ucontrol->value.iec958.status[0] = (chip->spdif_bits >> 0) & 0xff; @@ -1261,10 +1233,10 @@ static int snd_ymfpci_spdif_default_get(snd_kcontrol_t * kcontrol, return 0; } -static int snd_ymfpci_spdif_default_put(snd_kcontrol_t * kcontrol, - snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_spdif_default_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int val; int change; @@ -1279,7 +1251,7 @@ static int snd_ymfpci_spdif_default_put(snd_kcontrol_t * kcontrol, return change; } -static snd_kcontrol_new_t snd_ymfpci_spdif_default __devinitdata = +static struct snd_kcontrol_new snd_ymfpci_spdif_default __devinitdata = { .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT), @@ -1288,17 +1260,17 @@ static snd_kcontrol_new_t snd_ymfpci_spdif_default __devinitdata = .put = snd_ymfpci_spdif_default_put }; -static int snd_ymfpci_spdif_mask_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_ymfpci_spdif_mask_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; uinfo->count = 1; return 0; } -static int snd_ymfpci_spdif_mask_get(snd_kcontrol_t * kcontrol, - snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_spdif_mask_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); spin_lock_irq(&chip->reg_lock); ucontrol->value.iec958.status[0] = 0x3e; @@ -1307,7 +1279,7 @@ static int snd_ymfpci_spdif_mask_get(snd_kcontrol_t * kcontrol, return 0; } -static snd_kcontrol_new_t snd_ymfpci_spdif_mask __devinitdata = +static struct snd_kcontrol_new snd_ymfpci_spdif_mask __devinitdata = { .access = SNDRV_CTL_ELEM_ACCESS_READ, .iface = SNDRV_CTL_ELEM_IFACE_PCM, @@ -1316,17 +1288,17 @@ static snd_kcontrol_new_t snd_ymfpci_spdif_mask __devinitdata = .get = snd_ymfpci_spdif_mask_get, }; -static int snd_ymfpci_spdif_stream_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_ymfpci_spdif_stream_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; uinfo->count = 1; return 0; } -static int snd_ymfpci_spdif_stream_get(snd_kcontrol_t * kcontrol, - snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_spdif_stream_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); spin_lock_irq(&chip->reg_lock); ucontrol->value.iec958.status[0] = (chip->spdif_pcm_bits >> 0) & 0xff; @@ -1335,10 +1307,10 @@ static int snd_ymfpci_spdif_stream_get(snd_kcontrol_t * kcontrol, return 0; } -static int snd_ymfpci_spdif_stream_put(snd_kcontrol_t * kcontrol, - snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_spdif_stream_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int val; int change; @@ -1353,7 +1325,7 @@ static int snd_ymfpci_spdif_stream_put(snd_kcontrol_t * kcontrol, return change; } -static snd_kcontrol_new_t snd_ymfpci_spdif_stream __devinitdata = +static struct snd_kcontrol_new snd_ymfpci_spdif_stream __devinitdata = { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE, .iface = SNDRV_CTL_ELEM_IFACE_PCM, @@ -1363,7 +1335,7 @@ static snd_kcontrol_new_t snd_ymfpci_spdif_stream __devinitdata = .put = snd_ymfpci_spdif_stream_put }; -static int snd_ymfpci_drec_source_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *info) +static int snd_ymfpci_drec_source_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *info) { static char *texts[3] = {"AC'97", "IEC958", "ZV Port"}; @@ -1376,9 +1348,9 @@ static int snd_ymfpci_drec_source_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_in return 0; } -static int snd_ymfpci_drec_source_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *value) +static int snd_ymfpci_drec_source_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *value) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); u16 reg; spin_lock_irq(&chip->reg_lock); @@ -1391,9 +1363,9 @@ static int snd_ymfpci_drec_source_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_val return 0; } -static int snd_ymfpci_drec_source_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *value) +static int snd_ymfpci_drec_source_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *value) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); u16 reg, old_reg; spin_lock_irq(&chip->reg_lock); @@ -1407,7 +1379,7 @@ static int snd_ymfpci_drec_source_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_val return reg != old_reg; } -static snd_kcontrol_new_t snd_ymfpci_drec_source __devinitdata = { +static struct snd_kcontrol_new snd_ymfpci_drec_source __devinitdata = { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = "Direct Recording Source", @@ -1426,8 +1398,8 @@ static snd_kcontrol_new_t snd_ymfpci_drec_source __devinitdata = { .get = snd_ymfpci_get_single, .put = snd_ymfpci_put_single, \ .private_value = ((reg) | ((shift) << 16)) } -static int snd_ymfpci_info_single(snd_kcontrol_t *kcontrol, - snd_ctl_elem_info_t *uinfo) +static int snd_ymfpci_info_single(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) { int reg = kcontrol->private_value & 0xffff; @@ -1443,10 +1415,10 @@ static int snd_ymfpci_info_single(snd_kcontrol_t *kcontrol, return 0; } -static int snd_ymfpci_get_single(snd_kcontrol_t *kcontrol, - snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_get_single(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); int reg = kcontrol->private_value & 0xffff; unsigned int shift = (kcontrol->private_value >> 16) & 0xff; unsigned int mask = 1; @@ -1461,10 +1433,10 @@ static int snd_ymfpci_get_single(snd_kcontrol_t *kcontrol, return 0; } -static int snd_ymfpci_put_single(snd_kcontrol_t *kcontrol, - snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_put_single(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); int reg = kcontrol->private_value & 0xffff; unsigned int shift = (kcontrol->private_value >> 16) & 0xff; unsigned int mask = 1; @@ -1493,7 +1465,7 @@ static int snd_ymfpci_put_single(snd_kcontrol_t *kcontrol, .get = snd_ymfpci_get_double, .put = snd_ymfpci_put_double, \ .private_value = reg } -static int snd_ymfpci_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_ymfpci_info_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { unsigned int reg = kcontrol->private_value; @@ -1506,9 +1478,9 @@ static int snd_ymfpci_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t return 0; } -static int snd_ymfpci_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_get_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int reg = kcontrol->private_value; unsigned int shift_left = 0, shift_right = 16, mask = 16383; unsigned int val; @@ -1523,9 +1495,9 @@ static int snd_ymfpci_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t return 0; } -static int snd_ymfpci_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_put_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int reg = kcontrol->private_value; unsigned int shift_left = 0, shift_right = 16, mask = 16383; int change; @@ -1549,7 +1521,7 @@ static int snd_ymfpci_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t /* * 4ch duplication */ -static int snd_ymfpci_info_dup4ch(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_ymfpci_info_dup4ch(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; uinfo->count = 1; @@ -1558,16 +1530,16 @@ static int snd_ymfpci_info_dup4ch(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t return 0; } -static int snd_ymfpci_get_dup4ch(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_get_dup4ch(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); ucontrol->value.integer.value[0] = chip->mode_dup4ch; return 0; } -static int snd_ymfpci_put_dup4ch(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_ymfpci_put_dup4ch(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); int change; change = (ucontrol->value.integer.value[0] != chip->mode_dup4ch); if (change) @@ -1576,7 +1548,7 @@ static int snd_ymfpci_put_dup4ch(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t } -static snd_kcontrol_new_t snd_ymfpci_controls[] __devinitdata = { +static struct snd_kcontrol_new snd_ymfpci_controls[] __devinitdata = { YMFPCI_DOUBLE("Wave Playback Volume", 0, YDSXGR_NATIVEDACOUTVOL), YMFPCI_DOUBLE("Wave Capture Volume", 0, YDSXGR_NATIVEDACLOOPVOL), YMFPCI_DOUBLE("Digital Capture Volume", 0, YDSXGR_NATIVEDACINVOL), @@ -1607,7 +1579,7 @@ YMFPCI_SINGLE(SNDRV_CTL_NAME_IEC958("Loop",NONE,NONE), 0, YDSXGR_SPDIFINCTRL, 4) * GPIO */ -static int snd_ymfpci_get_gpio_out(ymfpci_t *chip, int pin) +static int snd_ymfpci_get_gpio_out(struct snd_ymfpci *chip, int pin) { u16 reg, mode; unsigned long flags; @@ -1627,7 +1599,7 @@ static int snd_ymfpci_get_gpio_out(ymfpci_t *chip, int pin) return (mode >> pin) & 1; } -static int snd_ymfpci_set_gpio_out(ymfpci_t *chip, int pin, int enable) +static int snd_ymfpci_set_gpio_out(struct snd_ymfpci *chip, int pin, int enable) { u16 reg; unsigned long flags; @@ -1644,7 +1616,7 @@ static int snd_ymfpci_set_gpio_out(ymfpci_t *chip, int pin, int enable) return 0; } -static int snd_ymfpci_gpio_sw_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) +static int snd_ymfpci_gpio_sw_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; uinfo->count = 1; @@ -1653,17 +1625,17 @@ static int snd_ymfpci_gpio_sw_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t return 0; } -static int snd_ymfpci_gpio_sw_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_gpio_sw_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); int pin = (int)kcontrol->private_value; ucontrol->value.integer.value[0] = snd_ymfpci_get_gpio_out(chip, pin); return 0; } -static int snd_ymfpci_gpio_sw_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_gpio_sw_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); int pin = (int)kcontrol->private_value; if (snd_ymfpci_get_gpio_out(chip, pin) != ucontrol->value.integer.value[0]) { @@ -1674,7 +1646,7 @@ static int snd_ymfpci_gpio_sw_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t return 0; } -static snd_kcontrol_new_t snd_ymfpci_rear_shared __devinitdata = { +static struct snd_kcontrol_new snd_ymfpci_rear_shared __devinitdata = { .name = "Shared Rear/Line-In Switch", .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .info = snd_ymfpci_gpio_sw_info, @@ -1687,8 +1659,8 @@ static snd_kcontrol_new_t snd_ymfpci_rear_shared __devinitdata = { * PCM voice volume */ -static int snd_ymfpci_pcm_vol_info(snd_kcontrol_t *kcontrol, - snd_ctl_elem_info_t *uinfo) +static int snd_ymfpci_pcm_vol_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) { uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->count = 2; @@ -1697,10 +1669,10 @@ static int snd_ymfpci_pcm_vol_info(snd_kcontrol_t *kcontrol, return 0; } -static int snd_ymfpci_pcm_vol_get(snd_kcontrol_t *kcontrol, - snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_pcm_vol_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int subs = kcontrol->id.subdevice; ucontrol->value.integer.value[0] = chip->pcm_mixer[subs].left; @@ -1708,12 +1680,12 @@ static int snd_ymfpci_pcm_vol_get(snd_kcontrol_t *kcontrol, return 0; } -static int snd_ymfpci_pcm_vol_put(snd_kcontrol_t *kcontrol, - snd_ctl_elem_value_t *ucontrol) +static int snd_ymfpci_pcm_vol_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) { - ymfpci_t *chip = snd_kcontrol_chip(kcontrol); + struct snd_ymfpci *chip = snd_kcontrol_chip(kcontrol); unsigned int subs = kcontrol->id.subdevice; - snd_pcm_substream_t *substream; + struct snd_pcm_substream *substream; unsigned long flags; if (ucontrol->value.integer.value[0] != chip->pcm_mixer[subs].left || @@ -1721,10 +1693,10 @@ static int snd_ymfpci_pcm_vol_put(snd_kcontrol_t *kcontrol, chip->pcm_mixer[subs].left = ucontrol->value.integer.value[0]; chip->pcm_mixer[subs].right = ucontrol->value.integer.value[1]; - substream = (snd_pcm_substream_t *)kcontrol->private_value; + substream = (struct snd_pcm_substream *)kcontrol->private_value; spin_lock_irqsave(&chip->voice_lock, flags); if (substream->runtime && substream->runtime->private_data) { - ymfpci_pcm_t *ypcm = substream->runtime->private_data; + struct snd_ymfpci_pcm *ypcm = substream->runtime->private_data; ypcm->update_pcm_vol = 2; } spin_unlock_irqrestore(&chip->voice_lock, flags); @@ -1733,7 +1705,7 @@ static int snd_ymfpci_pcm_vol_put(snd_kcontrol_t *kcontrol, return 0; } -static snd_kcontrol_new_t snd_ymfpci_pcm_volume __devinitdata = { +static struct snd_kcontrol_new snd_ymfpci_pcm_volume __devinitdata = { .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = "PCM Playback Volume", .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | @@ -1748,26 +1720,26 @@ static snd_kcontrol_new_t snd_ymfpci_pcm_volume __devinitdata = { * Mixer routines */ -static void snd_ymfpci_mixer_free_ac97_bus(ac97_bus_t *bus) +static void snd_ymfpci_mixer_free_ac97_bus(struct snd_ac97_bus *bus) { - ymfpci_t *chip = bus->private_data; + struct snd_ymfpci *chip = bus->private_data; chip->ac97_bus = NULL; } -static void snd_ymfpci_mixer_free_ac97(ac97_t *ac97) +static void snd_ymfpci_mixer_free_ac97(struct snd_ac97 *ac97) { - ymfpci_t *chip = ac97->private_data; + struct snd_ymfpci *chip = ac97->private_data; chip->ac97 = NULL; } -int __devinit snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch) +int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch) { - ac97_template_t ac97; - snd_kcontrol_t *kctl; - snd_pcm_substream_t *substream; + struct snd_ac97_template ac97; + struct snd_kcontrol *kctl; + struct snd_pcm_substream *substream; unsigned int idx; int err; - static ac97_bus_ops_t ops = { + static struct snd_ac97_bus_ops ops = { .write = snd_ymfpci_codec_write, .read = snd_ymfpci_codec_read, }; @@ -1843,9 +1815,9 @@ int __devinit snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch) * timer */ -static int snd_ymfpci_timer_start(snd_timer_t *timer) +static int snd_ymfpci_timer_start(struct snd_timer *timer) { - ymfpci_t *chip; + struct snd_ymfpci *chip; unsigned long flags; unsigned int count; @@ -1858,9 +1830,9 @@ static int snd_ymfpci_timer_start(snd_timer_t *timer) return 0; } -static int snd_ymfpci_timer_stop(snd_timer_t *timer) +static int snd_ymfpci_timer_stop(struct snd_timer *timer) { - ymfpci_t *chip; + struct snd_ymfpci *chip; unsigned long flags; chip = snd_timer_chip(timer); @@ -1870,7 +1842,7 @@ static int snd_ymfpci_timer_stop(snd_timer_t *timer) return 0; } -static int snd_ymfpci_timer_precise_resolution(snd_timer_t *timer, +static int snd_ymfpci_timer_precise_resolution(struct snd_timer *timer, unsigned long *num, unsigned long *den) { *num = 1; @@ -1878,7 +1850,7 @@ static int snd_ymfpci_timer_precise_resolution(snd_timer_t *timer, return 0; } -static struct _snd_timer_hardware snd_ymfpci_timer_hw = { +static struct snd_timer_hardware snd_ymfpci_timer_hw = { .flags = SNDRV_TIMER_HW_AUTO, .resolution = 20833, /* 1/fs = 20.8333...us */ .ticks = 0x8000, @@ -1887,10 +1859,10 @@ static struct _snd_timer_hardware snd_ymfpci_timer_hw = { .precise_resolution = snd_ymfpci_timer_precise_resolution, }; -int __devinit snd_ymfpci_timer(ymfpci_t *chip, int device) +int __devinit snd_ymfpci_timer(struct snd_ymfpci *chip, int device) { - snd_timer_t *timer = NULL; - snd_timer_id_t tid; + struct snd_timer *timer = NULL; + struct snd_timer_id tid; int err; tid.dev_class = SNDRV_TIMER_CLASS_CARD; @@ -1912,10 +1884,10 @@ int __devinit snd_ymfpci_timer(ymfpci_t *chip, int device) * proc interface */ -static void snd_ymfpci_proc_read(snd_info_entry_t *entry, - snd_info_buffer_t * buffer) +static void snd_ymfpci_proc_read(struct snd_info_entry *entry, + struct snd_info_buffer *buffer) { - ymfpci_t *chip = entry->private_data; + struct snd_ymfpci *chip = entry->private_data; int i; snd_iprintf(buffer, "YMFPCI\n\n"); @@ -1923,9 +1895,9 @@ static void snd_ymfpci_proc_read(snd_info_entry_t *entry, snd_iprintf(buffer, "%04x: %04x\n", i, snd_ymfpci_readl(chip, i)); } -static int __devinit snd_ymfpci_proc_init(snd_card_t * card, ymfpci_t *chip) +static int __devinit snd_ymfpci_proc_init(struct snd_card *card, struct snd_ymfpci *chip) { - snd_info_entry_t *entry; + struct snd_info_entry *entry; if (! snd_card_proc_new(card, "ymfpci", &entry)) snd_info_set_text_ops(entry, chip, 1024, snd_ymfpci_proc_read); @@ -1954,12 +1926,12 @@ static void snd_ymfpci_aclink_reset(struct pci_dev * pci) #endif } -static void snd_ymfpci_enable_dsp(ymfpci_t *chip) +static void snd_ymfpci_enable_dsp(struct snd_ymfpci *chip) { snd_ymfpci_writel(chip, YDSXGR_CONFIG, 0x00000001); } -static void snd_ymfpci_disable_dsp(ymfpci_t *chip) +static void snd_ymfpci_disable_dsp(struct snd_ymfpci *chip) { u32 val; int timeout = 1000; @@ -1976,7 +1948,7 @@ static void snd_ymfpci_disable_dsp(ymfpci_t *chip) #include "ymfpci_image.h" -static void snd_ymfpci_download_image(ymfpci_t *chip) +static void snd_ymfpci_download_image(struct snd_ymfpci *chip) { int i; u16 ctrl; @@ -2016,7 +1988,7 @@ static void snd_ymfpci_download_image(ymfpci_t *chip) snd_ymfpci_enable_dsp(chip); } -static int __devinit snd_ymfpci_memalloc(ymfpci_t *chip) +static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) { long size, playback_ctrl_size; int voice, bank, reg; @@ -2051,10 +2023,10 @@ static int __devinit snd_ymfpci_memalloc(ymfpci_t *chip) ptr_addr += (playback_ctrl_size + 0x00ff) & ~0x00ff; for (voice = 0; voice < YDSXG_PLAYBACK_VOICES; voice++) { chip->voices[voice].number = voice; - chip->voices[voice].bank = (snd_ymfpci_playback_bank_t *)ptr; + chip->voices[voice].bank = (struct snd_ymfpci_playback_bank *)ptr; chip->voices[voice].bank_addr = ptr_addr; for (bank = 0; bank < 2; bank++) { - chip->bank_playback[voice][bank] = (snd_ymfpci_playback_bank_t *)ptr; + chip->bank_playback[voice][bank] = (struct snd_ymfpci_playback_bank *)ptr; ptr += chip->bank_size_playback; ptr_addr += chip->bank_size_playback; } @@ -2065,7 +2037,7 @@ static int __devinit snd_ymfpci_memalloc(ymfpci_t *chip) chip->bank_base_capture_addr = ptr_addr; for (voice = 0; voice < YDSXG_CAPTURE_VOICES; voice++) for (bank = 0; bank < 2; bank++) { - chip->bank_capture[voice][bank] = (snd_ymfpci_capture_bank_t *)ptr; + chip->bank_capture[voice][bank] = (struct snd_ymfpci_capture_bank *)ptr; ptr += chip->bank_size_capture; ptr_addr += chip->bank_size_capture; } @@ -2075,7 +2047,7 @@ static int __devinit snd_ymfpci_memalloc(ymfpci_t *chip) chip->bank_base_effect_addr = ptr_addr; for (voice = 0; voice < YDSXG_EFFECT_VOICES; voice++) for (bank = 0; bank < 2; bank++) { - chip->bank_effect[voice][bank] = (snd_ymfpci_effect_bank_t *)ptr; + chip->bank_effect[voice][bank] = (struct snd_ymfpci_effect_bank *)ptr; ptr += chip->bank_size_effect; ptr_addr += chip->bank_size_effect; } @@ -2114,7 +2086,7 @@ static int __devinit snd_ymfpci_memalloc(ymfpci_t *chip) return 0; } -static int snd_ymfpci_free(ymfpci_t *chip) +static int snd_ymfpci_free(struct snd_ymfpci *chip) { u16 ctrl; @@ -2167,9 +2139,9 @@ static int snd_ymfpci_free(ymfpci_t *chip) return 0; } -static int snd_ymfpci_dev_free(snd_device_t *device) +static int snd_ymfpci_dev_free(struct snd_device *device) { - ymfpci_t *chip = device->device_data; + struct snd_ymfpci *chip = device->device_data; return snd_ymfpci_free(chip); } @@ -2203,11 +2175,13 @@ static int saved_regs_index[] = { }; #define YDSXGR_NUM_SAVED_REGS ARRAY_SIZE(saved_regs_index) -static int snd_ymfpci_suspend(snd_card_t *card, pm_message_t state) +int snd_ymfpci_suspend(struct pci_dev *pci, pm_message_t state) { - ymfpci_t *chip = card->pm_private_data; + struct snd_card *card = pci_get_drvdata(pci); + struct snd_ymfpci *chip = card->private_data; unsigned int i; + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); snd_pcm_suspend_all(chip->pcm2); snd_pcm_suspend_all(chip->pcm_spdif); @@ -2218,18 +2192,21 @@ static int snd_ymfpci_suspend(snd_card_t *card, pm_message_t state) chip->saved_ydsxgr_mode = snd_ymfpci_readl(chip, YDSXGR_MODE); snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0); snd_ymfpci_disable_dsp(chip); - pci_disable_device(chip->pci); + pci_disable_device(pci); + pci_save_state(pci); return 0; } -static int snd_ymfpci_resume(snd_card_t *card) +int snd_ymfpci_resume(struct pci_dev *pci) { - ymfpci_t *chip = card->pm_private_data; + struct snd_card *card = pci_get_drvdata(pci); + struct snd_ymfpci *chip = card->private_data; unsigned int i; - pci_enable_device(chip->pci); - pci_set_master(chip->pci); - snd_ymfpci_aclink_reset(chip->pci); + pci_restore_state(pci); + pci_enable_device(pci); + pci_set_master(pci); + snd_ymfpci_aclink_reset(pci); snd_ymfpci_codec_ready(chip, 0); snd_ymfpci_download_image(chip); udelay(100); @@ -2246,18 +2223,19 @@ static int snd_ymfpci_resume(snd_card_t *card) chip->active_bank = snd_ymfpci_readl(chip, YDSXGR_CTRLSELECT); spin_unlock_irq(&chip->reg_lock); } + snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; } #endif /* CONFIG_PM */ -int __devinit snd_ymfpci_create(snd_card_t * card, +int __devinit snd_ymfpci_create(struct snd_card *card, struct pci_dev * pci, unsigned short old_legacy_ctrl, - ymfpci_t ** rchip) + struct snd_ymfpci ** rchip) { - ymfpci_t *chip; + struct snd_ymfpci *chip; int err; - static snd_device_ops_t ops = { + static struct snd_device_ops ops = { .dev_free = snd_ymfpci_dev_free, }; @@ -2324,7 +2302,6 @@ int __devinit snd_ymfpci_create(snd_card_t * card, snd_ymfpci_free(chip); return -ENOMEM; } - snd_card_set_pm_callback(card, snd_ymfpci_suspend, snd_ymfpci_resume, chip); #endif if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { |