• Home
  • Raw
  • Download

Lines Matching refs:chip

53 static void snd_sb16_csp_playback_prepare(struct snd_sb *chip, struct snd_pcm_runtime *runtime)  in snd_sb16_csp_playback_prepare()  argument
55 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_playback_prepare()
56 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_prepare()
86 if (csp->ops.csp_start(csp, (chip->mode & SB_MODE_PLAYBACK_16) ? in snd_sb16_csp_playback_prepare()
94 chip->open = SNDRV_SB_CSP_MODE_DSP_WRITE; in snd_sb16_csp_playback_prepare()
101 static void snd_sb16_csp_capture_prepare(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_capture_prepare() argument
103 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_capture_prepare()
104 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_prepare()
124 if (csp->ops.csp_start(csp, (chip->mode & SB_MODE_CAPTURE_16) ? in snd_sb16_csp_capture_prepare()
132 chip->open = SNDRV_SB_CSP_MODE_DSP_READ; in snd_sb16_csp_capture_prepare()
139 static void snd_sb16_csp_update(struct snd_sb *chip) in snd_sb16_csp_update() argument
141 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_update()
142 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_update()
145 spin_lock(&chip->reg_lock); in snd_sb16_csp_update()
147 spin_unlock(&chip->reg_lock); in snd_sb16_csp_update()
152 static void snd_sb16_csp_playback_open(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_playback_open() argument
155 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_playback_open()
156 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_open()
171 static void snd_sb16_csp_playback_close(struct snd_sb *chip) in snd_sb16_csp_playback_close() argument
173 if ((chip->hardware == SB_HW_16CSP) && (chip->open == SNDRV_SB_CSP_MODE_DSP_WRITE)) { in snd_sb16_csp_playback_close()
174 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_close()
178 chip->open = 0; in snd_sb16_csp_playback_close()
183 static void snd_sb16_csp_capture_open(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_capture_open() argument
186 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_capture_open()
187 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_open()
202 static void snd_sb16_csp_capture_close(struct snd_sb *chip) in snd_sb16_csp_capture_close() argument
204 if ((chip->hardware == SB_HW_16CSP) && (chip->open == SNDRV_SB_CSP_MODE_DSP_READ)) { in snd_sb16_csp_capture_close()
205 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_close()
209 chip->open = 0; in snd_sb16_csp_capture_close()
214 #define snd_sb16_csp_playback_prepare(chip, runtime) /*nop*/ argument
215 #define snd_sb16_csp_capture_prepare(chip, runtime) /*nop*/ argument
216 #define snd_sb16_csp_update(chip) /*nop*/ argument
217 #define snd_sb16_csp_playback_open(chip, runtime) /*nop*/ argument
218 #define snd_sb16_csp_playback_close(chip) /*nop*/ argument
219 #define snd_sb16_csp_capture_open(chip, runtime) /*nop*/ argument
220 #define snd_sb16_csp_capture_close(chip) /*nop*/ argument
224 static void snd_sb16_setup_rate(struct snd_sb *chip, in snd_sb16_setup_rate() argument
230 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_setup_rate()
231 if (chip->mode & (channel == SNDRV_PCM_STREAM_PLAYBACK ? SB_MODE_PLAYBACK_16 : SB_MODE_CAPTURE_16)) in snd_sb16_setup_rate()
232 snd_sb_ack_16bit(chip); in snd_sb16_setup_rate()
234 snd_sb_ack_8bit(chip); in snd_sb16_setup_rate()
235 if (!(chip->mode & SB_RATE_LOCK)) { in snd_sb16_setup_rate()
236 chip->locked_rate = rate; in snd_sb16_setup_rate()
237 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE_IN); in snd_sb16_setup_rate()
238 snd_sbdsp_command(chip, rate >> 8); in snd_sb16_setup_rate()
239 snd_sbdsp_command(chip, rate & 0xff); in snd_sb16_setup_rate()
240 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE_OUT); in snd_sb16_setup_rate()
241 snd_sbdsp_command(chip, rate >> 8); in snd_sb16_setup_rate()
242 snd_sbdsp_command(chip, rate & 0xff); in snd_sb16_setup_rate()
244 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_setup_rate()
262 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_prepare() local
267 snd_sb16_csp_playback_prepare(chip, runtime); in snd_sb16_playback_prepare()
274 snd_sb16_setup_rate(chip, runtime->rate, SNDRV_PCM_STREAM_PLAYBACK); in snd_sb16_playback_prepare()
275 size = chip->p_dma_size = snd_pcm_lib_buffer_bytes(substream); in snd_sb16_playback_prepare()
276 dma = (chip->mode & SB_MODE_PLAYBACK_8) ? chip->dma8 : chip->dma16; in snd_sb16_playback_prepare()
280 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_playback_prepare()
281 if (chip->mode & SB_MODE_PLAYBACK_16) { in snd_sb16_playback_prepare()
284 snd_sbdsp_command(chip, SB_DSP4_OUT16_AI); in snd_sb16_playback_prepare()
285 snd_sbdsp_command(chip, format); in snd_sb16_playback_prepare()
286 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_playback_prepare()
287 snd_sbdsp_command(chip, count >> 8); in snd_sb16_playback_prepare()
288 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16_playback_prepare()
291 snd_sbdsp_command(chip, SB_DSP4_OUT8_AI); in snd_sb16_playback_prepare()
292 snd_sbdsp_command(chip, format); in snd_sb16_playback_prepare()
293 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_playback_prepare()
294 snd_sbdsp_command(chip, count >> 8); in snd_sb16_playback_prepare()
295 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16_playback_prepare()
297 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_playback_prepare()
304 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_trigger() local
307 spin_lock(&chip->reg_lock); in snd_sb16_playback_trigger()
311 chip->mode |= SB_RATE_LOCK_PLAYBACK; in snd_sb16_playback_trigger()
312 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_playback_trigger()
316 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_OFF : SB_DSP_DMA8_OFF); in snd_sb16_playback_trigger()
318 if (chip->mode & SB_RATE_LOCK_CAPTURE) in snd_sb16_playback_trigger()
319 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_playback_trigger()
320 chip->mode &= ~SB_RATE_LOCK_PLAYBACK; in snd_sb16_playback_trigger()
325 spin_unlock(&chip->reg_lock); in snd_sb16_playback_trigger()
332 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_prepare() local
337 snd_sb16_csp_capture_prepare(chip, runtime); in snd_sb16_capture_prepare()
343 snd_sb16_setup_rate(chip, runtime->rate, SNDRV_PCM_STREAM_CAPTURE); in snd_sb16_capture_prepare()
344 size = chip->c_dma_size = snd_pcm_lib_buffer_bytes(substream); in snd_sb16_capture_prepare()
345 dma = (chip->mode & SB_MODE_CAPTURE_8) ? chip->dma8 : chip->dma16; in snd_sb16_capture_prepare()
349 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_capture_prepare()
350 if (chip->mode & SB_MODE_CAPTURE_16) { in snd_sb16_capture_prepare()
353 snd_sbdsp_command(chip, SB_DSP4_IN16_AI); in snd_sb16_capture_prepare()
354 snd_sbdsp_command(chip, format); in snd_sb16_capture_prepare()
355 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_capture_prepare()
356 snd_sbdsp_command(chip, count >> 8); in snd_sb16_capture_prepare()
357 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16_capture_prepare()
360 snd_sbdsp_command(chip, SB_DSP4_IN8_AI); in snd_sb16_capture_prepare()
361 snd_sbdsp_command(chip, format); in snd_sb16_capture_prepare()
362 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_capture_prepare()
363 snd_sbdsp_command(chip, count >> 8); in snd_sb16_capture_prepare()
364 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16_capture_prepare()
366 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_capture_prepare()
373 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_trigger() local
376 spin_lock(&chip->reg_lock); in snd_sb16_capture_trigger()
380 chip->mode |= SB_RATE_LOCK_CAPTURE; in snd_sb16_capture_trigger()
381 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_capture_trigger()
385 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_OFF : SB_DSP_DMA8_OFF); in snd_sb16_capture_trigger()
387 if (chip->mode & SB_RATE_LOCK_PLAYBACK) in snd_sb16_capture_trigger()
388 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_capture_trigger()
389 chip->mode &= ~SB_RATE_LOCK_CAPTURE; in snd_sb16_capture_trigger()
394 spin_unlock(&chip->reg_lock); in snd_sb16_capture_trigger()
400 struct snd_sb *chip = dev_id; in snd_sb16dsp_interrupt() local
404 spin_lock(&chip->mixer_lock); in snd_sb16dsp_interrupt()
405 status = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS); in snd_sb16dsp_interrupt()
406 spin_unlock(&chip->mixer_lock); in snd_sb16dsp_interrupt()
407 if ((status & SB_IRQTYPE_MPUIN) && chip->rmidi_callback) in snd_sb16dsp_interrupt()
408 chip->rmidi_callback(irq, chip->rmidi->private_data); in snd_sb16dsp_interrupt()
411 if (chip->mode & SB_MODE_PLAYBACK_8) { in snd_sb16dsp_interrupt()
412 snd_pcm_period_elapsed(chip->playback_substream); in snd_sb16dsp_interrupt()
413 snd_sb16_csp_update(chip); in snd_sb16dsp_interrupt()
416 if (chip->mode & SB_MODE_CAPTURE_8) { in snd_sb16dsp_interrupt()
417 snd_pcm_period_elapsed(chip->capture_substream); in snd_sb16dsp_interrupt()
420 spin_lock(&chip->reg_lock); in snd_sb16dsp_interrupt()
422 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16dsp_interrupt()
423 snd_sb_ack_8bit(chip); in snd_sb16dsp_interrupt()
424 spin_unlock(&chip->reg_lock); in snd_sb16dsp_interrupt()
428 if (chip->mode & SB_MODE_PLAYBACK_16) { in snd_sb16dsp_interrupt()
429 snd_pcm_period_elapsed(chip->playback_substream); in snd_sb16dsp_interrupt()
430 snd_sb16_csp_update(chip); in snd_sb16dsp_interrupt()
433 if (chip->mode & SB_MODE_CAPTURE_16) { in snd_sb16dsp_interrupt()
434 snd_pcm_period_elapsed(chip->capture_substream); in snd_sb16dsp_interrupt()
437 spin_lock(&chip->reg_lock); in snd_sb16dsp_interrupt()
439 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16dsp_interrupt()
440 snd_sb_ack_16bit(chip); in snd_sb16dsp_interrupt()
441 spin_unlock(&chip->reg_lock); in snd_sb16dsp_interrupt()
452 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_pointer() local
456 dma = (chip->mode & SB_MODE_PLAYBACK_8) ? chip->dma8 : chip->dma16; in snd_sb16_playback_pointer()
457 ptr = snd_dma_pointer(dma, chip->p_dma_size); in snd_sb16_playback_pointer()
463 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_pointer() local
467 dma = (chip->mode & SB_MODE_CAPTURE_8) ? chip->dma8 : chip->dma16; in snd_sb16_capture_pointer()
468 ptr = snd_dma_pointer(dma, chip->c_dma_size); in snd_sb16_capture_pointer()
519 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_open() local
522 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_playback_open()
523 if (chip->mode & SB_MODE_PLAYBACK) { in snd_sb16_playback_open()
524 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
530 if (chip->force_mode16 & SB_MODE_CAPTURE_16) in snd_sb16_playback_open()
533 if (chip->dma16 >= 0 && !(chip->mode & SB_MODE_CAPTURE_16)) { in snd_sb16_playback_open()
534 chip->mode |= SB_MODE_PLAYBACK_16; in snd_sb16_playback_open()
537 if (chip->dma16 <= 3) { in snd_sb16_playback_open()
541 snd_sb16_csp_playback_open(chip, runtime); in snd_sb16_playback_open()
547 if (chip->dma8 >= 0 && !(chip->mode & SB_MODE_CAPTURE_8)) { in snd_sb16_playback_open()
548 chip->mode |= SB_MODE_PLAYBACK_8; in snd_sb16_playback_open()
550 if (chip->dma16 < 0) { in snd_sb16_playback_open()
552 chip->mode |= SB_MODE_PLAYBACK_16; in snd_sb16_playback_open()
560 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
564 if (chip->hardware == SB_HW_ALS100) in snd_sb16_playback_open()
566 if (chip->hardware == SB_HW_CS5530) { in snd_sb16_playback_open()
571 if (chip->mode & SB_RATE_LOCK) in snd_sb16_playback_open()
572 runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; in snd_sb16_playback_open()
573 chip->playback_substream = substream; in snd_sb16_playback_open()
574 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
581 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_close() local
583 snd_sb16_csp_playback_close(chip); in snd_sb16_playback_close()
584 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_playback_close()
585 chip->playback_substream = NULL; in snd_sb16_playback_close()
586 chip->mode &= ~SB_MODE_PLAYBACK; in snd_sb16_playback_close()
587 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_close()
594 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_open() local
597 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_capture_open()
598 if (chip->mode & SB_MODE_CAPTURE) { in snd_sb16_capture_open()
599 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
605 if (chip->force_mode16 & SB_MODE_PLAYBACK_16) in snd_sb16_capture_open()
608 if (chip->dma16 >= 0 && !(chip->mode & SB_MODE_PLAYBACK_16)) { in snd_sb16_capture_open()
609 chip->mode |= SB_MODE_CAPTURE_16; in snd_sb16_capture_open()
612 if (chip->dma16 <= 3) { in snd_sb16_capture_open()
616 snd_sb16_csp_capture_open(chip, runtime); in snd_sb16_capture_open()
622 if (chip->dma8 >= 0 && !(chip->mode & SB_MODE_PLAYBACK_8)) { in snd_sb16_capture_open()
623 chip->mode |= SB_MODE_CAPTURE_8; in snd_sb16_capture_open()
625 if (chip->dma16 < 0) { in snd_sb16_capture_open()
627 chip->mode |= SB_MODE_CAPTURE_16; in snd_sb16_capture_open()
635 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
639 if (chip->hardware == SB_HW_ALS100) in snd_sb16_capture_open()
641 if (chip->hardware == SB_HW_CS5530) { in snd_sb16_capture_open()
646 if (chip->mode & SB_RATE_LOCK) in snd_sb16_capture_open()
647 runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; in snd_sb16_capture_open()
648 chip->capture_substream = substream; in snd_sb16_capture_open()
649 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
656 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_close() local
658 snd_sb16_csp_capture_close(chip); in snd_sb16_capture_close()
659 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_capture_close()
660 chip->capture_substream = NULL; in snd_sb16_capture_close()
661 chip->mode &= ~SB_MODE_CAPTURE; in snd_sb16_capture_close()
662 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_close()
670 static int snd_sb16_set_dma_mode(struct snd_sb *chip, int what) in snd_sb16_set_dma_mode() argument
672 if (chip->dma8 < 0 || chip->dma16 < 0) { in snd_sb16_set_dma_mode()
678 chip->force_mode16 = 0; in snd_sb16_set_dma_mode()
680 chip->force_mode16 = SB_MODE_PLAYBACK_16; in snd_sb16_set_dma_mode()
682 chip->force_mode16 = SB_MODE_CAPTURE_16; in snd_sb16_set_dma_mode()
689 static int snd_sb16_get_dma_mode(struct snd_sb *chip) in snd_sb16_get_dma_mode() argument
691 if (chip->dma8 < 0 || chip->dma16 < 0) in snd_sb16_get_dma_mode()
693 switch (chip->force_mode16) { in snd_sb16_get_dma_mode()
720 struct snd_sb *chip = snd_kcontrol_chip(kcontrol); in snd_sb16_dma_control_get() local
723 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_dma_control_get()
724 ucontrol->value.enumerated.item[0] = snd_sb16_get_dma_mode(chip); in snd_sb16_dma_control_get()
725 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_dma_control_get()
731 struct snd_sb *chip = snd_kcontrol_chip(kcontrol); in snd_sb16_dma_control_put() local
738 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_dma_control_put()
739 oval = snd_sb16_get_dma_mode(chip); in snd_sb16_dma_control_put()
741 snd_sb16_set_dma_mode(chip, nval); in snd_sb16_dma_control_put()
742 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_dma_control_put()
758 int snd_sb16dsp_configure(struct snd_sb * chip) in snd_sb16dsp_configure() argument
766 spin_lock_irqsave(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
767 mpureg = snd_sbmixer_read(chip, SB_DSP4_MPUSETUP) & ~0x06; in snd_sb16dsp_configure()
768 spin_unlock_irqrestore(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
769 switch (chip->irq) { in snd_sb16dsp_configure()
786 if (chip->dma8 >= 0) { in snd_sb16dsp_configure()
787 switch (chip->dma8) { in snd_sb16dsp_configure()
801 if (chip->dma16 >= 0 && chip->dma16 != chip->dma8) { in snd_sb16dsp_configure()
802 switch (chip->dma16) { in snd_sb16dsp_configure()
816 switch (chip->mpu_port) { in snd_sb16dsp_configure()
826 spin_lock_irqsave(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
828 snd_sbmixer_write(chip, SB_DSP4_IRQSETUP, irqreg); in snd_sb16dsp_configure()
829 realirq = snd_sbmixer_read(chip, SB_DSP4_IRQSETUP); in snd_sb16dsp_configure()
831 snd_sbmixer_write(chip, SB_DSP4_DMASETUP, dmareg); in snd_sb16dsp_configure()
832 realdma = snd_sbmixer_read(chip, SB_DSP4_DMASETUP); in snd_sb16dsp_configure()
834 snd_sbmixer_write(chip, SB_DSP4_MPUSETUP, mpureg); in snd_sb16dsp_configure()
835 realmpureg = snd_sbmixer_read(chip, SB_DSP4_MPUSETUP); in snd_sb16dsp_configure()
837 spin_unlock_irqrestore(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
839 snd_printk(KERN_ERR "SB16 [0x%lx]: unable to set DMA & IRQ (PnP device?)\n", chip->port); in snd_sb16dsp_configure()
840 …snd_printk(KERN_ERR "SB16 [0x%lx]: wanted: irqreg=0x%x, dmareg=0x%x, mpureg = 0x%x\n", chip->port,… in snd_sb16dsp_configure()
841 …snd_printk(KERN_ERR "SB16 [0x%lx]: got: irqreg=0x%x, dmareg=0x%x, mpureg = 0x%x\n", chip->port,… in snd_sb16dsp_configure()
869 int snd_sb16dsp_pcm(struct snd_sb * chip, int device, struct snd_pcm ** rpcm) in snd_sb16dsp_pcm() argument
871 struct snd_card *card = chip->card; in snd_sb16dsp_pcm()
879 sprintf(pcm->name, "DSP v%i.%i", chip->version >> 8, chip->version & 0xff); in snd_sb16dsp_pcm()
881 pcm->private_data = chip; in snd_sb16dsp_pcm()
886 if (chip->dma16 >= 0 && chip->dma8 != chip->dma16) in snd_sb16dsp_pcm()
887 snd_ctl_add(card, snd_ctl_new1(&snd_sb16_dma_control, chip)); in snd_sb16dsp_pcm()