Lines Matching refs:chip

41 static void snd_sb16_csp_playback_prepare(struct snd_sb *chip, struct snd_pcm_runtime *runtime)  in snd_sb16_csp_playback_prepare()  argument
43 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_playback_prepare()
44 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_prepare()
74 if (csp->ops.csp_start(csp, (chip->mode & SB_MODE_PLAYBACK_16) ? in snd_sb16_csp_playback_prepare()
82 chip->open = SNDRV_SB_CSP_MODE_DSP_WRITE; in snd_sb16_csp_playback_prepare()
89 static void snd_sb16_csp_capture_prepare(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_capture_prepare() argument
91 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_capture_prepare()
92 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_prepare()
112 if (csp->ops.csp_start(csp, (chip->mode & SB_MODE_CAPTURE_16) ? in snd_sb16_csp_capture_prepare()
120 chip->open = SNDRV_SB_CSP_MODE_DSP_READ; in snd_sb16_csp_capture_prepare()
127 static void snd_sb16_csp_update(struct snd_sb *chip) in snd_sb16_csp_update() argument
129 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_update()
130 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_update()
133 spin_lock(&chip->reg_lock); in snd_sb16_csp_update()
135 spin_unlock(&chip->reg_lock); in snd_sb16_csp_update()
140 static void snd_sb16_csp_playback_open(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_playback_open() argument
143 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_playback_open()
144 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_open()
159 static void snd_sb16_csp_playback_close(struct snd_sb *chip) in snd_sb16_csp_playback_close() argument
161 if ((chip->hardware == SB_HW_16CSP) && (chip->open == SNDRV_SB_CSP_MODE_DSP_WRITE)) { in snd_sb16_csp_playback_close()
162 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_playback_close()
166 chip->open = 0; in snd_sb16_csp_playback_close()
171 static void snd_sb16_csp_capture_open(struct snd_sb *chip, struct snd_pcm_runtime *runtime) in snd_sb16_csp_capture_open() argument
174 if (chip->hardware == SB_HW_16CSP) { in snd_sb16_csp_capture_open()
175 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_open()
190 static void snd_sb16_csp_capture_close(struct snd_sb *chip) in snd_sb16_csp_capture_close() argument
192 if ((chip->hardware == SB_HW_16CSP) && (chip->open == SNDRV_SB_CSP_MODE_DSP_READ)) { in snd_sb16_csp_capture_close()
193 struct snd_sb_csp *csp = chip->csp; in snd_sb16_csp_capture_close()
197 chip->open = 0; in snd_sb16_csp_capture_close()
202 #define snd_sb16_csp_playback_prepare(chip, runtime) /*nop*/ argument
203 #define snd_sb16_csp_capture_prepare(chip, runtime) /*nop*/ argument
204 #define snd_sb16_csp_update(chip) /*nop*/ argument
205 #define snd_sb16_csp_playback_open(chip, runtime) /*nop*/ argument
206 #define snd_sb16_csp_playback_close(chip) /*nop*/ argument
207 #define snd_sb16_csp_capture_open(chip, runtime) /*nop*/ argument
208 #define snd_sb16_csp_capture_close(chip) /*nop*/ argument
212 static void snd_sb16_setup_rate(struct snd_sb *chip, in snd_sb16_setup_rate() argument
218 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_setup_rate()
219 if (chip->mode & (channel == SNDRV_PCM_STREAM_PLAYBACK ? SB_MODE_PLAYBACK_16 : SB_MODE_CAPTURE_16)) in snd_sb16_setup_rate()
220 snd_sb_ack_16bit(chip); in snd_sb16_setup_rate()
222 snd_sb_ack_8bit(chip); in snd_sb16_setup_rate()
223 if (!(chip->mode & SB_RATE_LOCK)) { in snd_sb16_setup_rate()
224 chip->locked_rate = rate; in snd_sb16_setup_rate()
225 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE_IN); in snd_sb16_setup_rate()
226 snd_sbdsp_command(chip, rate >> 8); in snd_sb16_setup_rate()
227 snd_sbdsp_command(chip, rate & 0xff); in snd_sb16_setup_rate()
228 snd_sbdsp_command(chip, SB_DSP_SAMPLE_RATE_OUT); in snd_sb16_setup_rate()
229 snd_sbdsp_command(chip, rate >> 8); in snd_sb16_setup_rate()
230 snd_sbdsp_command(chip, rate & 0xff); in snd_sb16_setup_rate()
232 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_setup_rate()
238 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_prepare() local
243 snd_sb16_csp_playback_prepare(chip, runtime); in snd_sb16_playback_prepare()
250 snd_sb16_setup_rate(chip, runtime->rate, SNDRV_PCM_STREAM_PLAYBACK); in snd_sb16_playback_prepare()
251 size = chip->p_dma_size = snd_pcm_lib_buffer_bytes(substream); in snd_sb16_playback_prepare()
252 dma = (chip->mode & SB_MODE_PLAYBACK_8) ? chip->dma8 : chip->dma16; in snd_sb16_playback_prepare()
256 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_playback_prepare()
257 if (chip->mode & SB_MODE_PLAYBACK_16) { in snd_sb16_playback_prepare()
260 snd_sbdsp_command(chip, SB_DSP4_OUT16_AI); in snd_sb16_playback_prepare()
261 snd_sbdsp_command(chip, format); in snd_sb16_playback_prepare()
262 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_playback_prepare()
263 snd_sbdsp_command(chip, count >> 8); in snd_sb16_playback_prepare()
264 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16_playback_prepare()
267 snd_sbdsp_command(chip, SB_DSP4_OUT8_AI); in snd_sb16_playback_prepare()
268 snd_sbdsp_command(chip, format); in snd_sb16_playback_prepare()
269 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_playback_prepare()
270 snd_sbdsp_command(chip, count >> 8); in snd_sb16_playback_prepare()
271 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16_playback_prepare()
273 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_playback_prepare()
280 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_trigger() local
283 spin_lock(&chip->reg_lock); in snd_sb16_playback_trigger()
287 chip->mode |= SB_RATE_LOCK_PLAYBACK; in snd_sb16_playback_trigger()
288 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_playback_trigger()
292 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_OFF : SB_DSP_DMA8_OFF); in snd_sb16_playback_trigger()
294 if (chip->mode & SB_RATE_LOCK_CAPTURE) in snd_sb16_playback_trigger()
295 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_playback_trigger()
296 chip->mode &= ~SB_RATE_LOCK_PLAYBACK; in snd_sb16_playback_trigger()
301 spin_unlock(&chip->reg_lock); in snd_sb16_playback_trigger()
308 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_prepare() local
313 snd_sb16_csp_capture_prepare(chip, runtime); in snd_sb16_capture_prepare()
319 snd_sb16_setup_rate(chip, runtime->rate, SNDRV_PCM_STREAM_CAPTURE); in snd_sb16_capture_prepare()
320 size = chip->c_dma_size = snd_pcm_lib_buffer_bytes(substream); in snd_sb16_capture_prepare()
321 dma = (chip->mode & SB_MODE_CAPTURE_8) ? chip->dma8 : chip->dma16; in snd_sb16_capture_prepare()
325 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_capture_prepare()
326 if (chip->mode & SB_MODE_CAPTURE_16) { in snd_sb16_capture_prepare()
329 snd_sbdsp_command(chip, SB_DSP4_IN16_AI); in snd_sb16_capture_prepare()
330 snd_sbdsp_command(chip, format); in snd_sb16_capture_prepare()
331 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_capture_prepare()
332 snd_sbdsp_command(chip, count >> 8); in snd_sb16_capture_prepare()
333 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16_capture_prepare()
336 snd_sbdsp_command(chip, SB_DSP4_IN8_AI); in snd_sb16_capture_prepare()
337 snd_sbdsp_command(chip, format); in snd_sb16_capture_prepare()
338 snd_sbdsp_command(chip, count & 0xff); in snd_sb16_capture_prepare()
339 snd_sbdsp_command(chip, count >> 8); in snd_sb16_capture_prepare()
340 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16_capture_prepare()
342 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_capture_prepare()
349 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_trigger() local
352 spin_lock(&chip->reg_lock); in snd_sb16_capture_trigger()
356 chip->mode |= SB_RATE_LOCK_CAPTURE; in snd_sb16_capture_trigger()
357 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_capture_trigger()
361 snd_sbdsp_command(chip, chip->mode & SB_MODE_CAPTURE_16 ? SB_DSP_DMA16_OFF : SB_DSP_DMA8_OFF); in snd_sb16_capture_trigger()
363 if (chip->mode & SB_RATE_LOCK_PLAYBACK) in snd_sb16_capture_trigger()
364 snd_sbdsp_command(chip, chip->mode & SB_MODE_PLAYBACK_16 ? SB_DSP_DMA16_ON : SB_DSP_DMA8_ON); in snd_sb16_capture_trigger()
365 chip->mode &= ~SB_RATE_LOCK_CAPTURE; in snd_sb16_capture_trigger()
370 spin_unlock(&chip->reg_lock); in snd_sb16_capture_trigger()
376 struct snd_sb *chip = dev_id; in snd_sb16dsp_interrupt() local
380 spin_lock(&chip->mixer_lock); in snd_sb16dsp_interrupt()
381 status = snd_sbmixer_read(chip, SB_DSP4_IRQSTATUS); in snd_sb16dsp_interrupt()
382 spin_unlock(&chip->mixer_lock); in snd_sb16dsp_interrupt()
383 if ((status & SB_IRQTYPE_MPUIN) && chip->rmidi_callback) in snd_sb16dsp_interrupt()
384 chip->rmidi_callback(irq, chip->rmidi->private_data); in snd_sb16dsp_interrupt()
387 if (chip->mode & SB_MODE_PLAYBACK_8) { in snd_sb16dsp_interrupt()
388 snd_pcm_period_elapsed(chip->playback_substream); in snd_sb16dsp_interrupt()
389 snd_sb16_csp_update(chip); in snd_sb16dsp_interrupt()
392 if (chip->mode & SB_MODE_CAPTURE_8) { in snd_sb16dsp_interrupt()
393 snd_pcm_period_elapsed(chip->capture_substream); in snd_sb16dsp_interrupt()
396 spin_lock(&chip->reg_lock); in snd_sb16dsp_interrupt()
398 snd_sbdsp_command(chip, SB_DSP_DMA8_OFF); in snd_sb16dsp_interrupt()
399 snd_sb_ack_8bit(chip); in snd_sb16dsp_interrupt()
400 spin_unlock(&chip->reg_lock); in snd_sb16dsp_interrupt()
404 if (chip->mode & SB_MODE_PLAYBACK_16) { in snd_sb16dsp_interrupt()
405 snd_pcm_period_elapsed(chip->playback_substream); in snd_sb16dsp_interrupt()
406 snd_sb16_csp_update(chip); in snd_sb16dsp_interrupt()
409 if (chip->mode & SB_MODE_CAPTURE_16) { in snd_sb16dsp_interrupt()
410 snd_pcm_period_elapsed(chip->capture_substream); in snd_sb16dsp_interrupt()
413 spin_lock(&chip->reg_lock); in snd_sb16dsp_interrupt()
415 snd_sbdsp_command(chip, SB_DSP_DMA16_OFF); in snd_sb16dsp_interrupt()
416 snd_sb_ack_16bit(chip); in snd_sb16dsp_interrupt()
417 spin_unlock(&chip->reg_lock); in snd_sb16dsp_interrupt()
428 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_pointer() local
432 dma = (chip->mode & SB_MODE_PLAYBACK_8) ? chip->dma8 : chip->dma16; in snd_sb16_playback_pointer()
433 ptr = snd_dma_pointer(dma, chip->p_dma_size); in snd_sb16_playback_pointer()
439 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_pointer() local
443 dma = (chip->mode & SB_MODE_CAPTURE_8) ? chip->dma8 : chip->dma16; in snd_sb16_capture_pointer()
444 ptr = snd_dma_pointer(dma, chip->c_dma_size); in snd_sb16_capture_pointer()
495 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_open() local
498 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_playback_open()
499 if (chip->mode & SB_MODE_PLAYBACK) { in snd_sb16_playback_open()
500 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
506 if (chip->force_mode16 & SB_MODE_CAPTURE_16) in snd_sb16_playback_open()
509 if (chip->dma16 >= 0 && !(chip->mode & SB_MODE_CAPTURE_16)) { in snd_sb16_playback_open()
510 chip->mode |= SB_MODE_PLAYBACK_16; in snd_sb16_playback_open()
513 if (chip->dma16 <= 3) { in snd_sb16_playback_open()
517 snd_sb16_csp_playback_open(chip, runtime); in snd_sb16_playback_open()
523 if (chip->dma8 >= 0 && !(chip->mode & SB_MODE_CAPTURE_8)) { in snd_sb16_playback_open()
524 chip->mode |= SB_MODE_PLAYBACK_8; in snd_sb16_playback_open()
526 if (chip->dma16 < 0) { in snd_sb16_playback_open()
528 chip->mode |= SB_MODE_PLAYBACK_16; in snd_sb16_playback_open()
536 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
540 if (chip->hardware == SB_HW_ALS100) in snd_sb16_playback_open()
542 if (chip->hardware == SB_HW_CS5530) { in snd_sb16_playback_open()
547 if (chip->mode & SB_RATE_LOCK) in snd_sb16_playback_open()
548 runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; in snd_sb16_playback_open()
549 chip->playback_substream = substream; in snd_sb16_playback_open()
550 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_open()
557 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_playback_close() local
559 snd_sb16_csp_playback_close(chip); in snd_sb16_playback_close()
560 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_playback_close()
561 chip->playback_substream = NULL; in snd_sb16_playback_close()
562 chip->mode &= ~SB_MODE_PLAYBACK; in snd_sb16_playback_close()
563 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_playback_close()
570 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_open() local
573 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_capture_open()
574 if (chip->mode & SB_MODE_CAPTURE) { in snd_sb16_capture_open()
575 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
581 if (chip->force_mode16 & SB_MODE_PLAYBACK_16) in snd_sb16_capture_open()
584 if (chip->dma16 >= 0 && !(chip->mode & SB_MODE_PLAYBACK_16)) { in snd_sb16_capture_open()
585 chip->mode |= SB_MODE_CAPTURE_16; in snd_sb16_capture_open()
588 if (chip->dma16 <= 3) { in snd_sb16_capture_open()
592 snd_sb16_csp_capture_open(chip, runtime); in snd_sb16_capture_open()
598 if (chip->dma8 >= 0 && !(chip->mode & SB_MODE_PLAYBACK_8)) { in snd_sb16_capture_open()
599 chip->mode |= SB_MODE_CAPTURE_8; in snd_sb16_capture_open()
601 if (chip->dma16 < 0) { in snd_sb16_capture_open()
603 chip->mode |= SB_MODE_CAPTURE_16; in snd_sb16_capture_open()
611 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
615 if (chip->hardware == SB_HW_ALS100) in snd_sb16_capture_open()
617 if (chip->hardware == SB_HW_CS5530) { in snd_sb16_capture_open()
622 if (chip->mode & SB_RATE_LOCK) in snd_sb16_capture_open()
623 runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; in snd_sb16_capture_open()
624 chip->capture_substream = substream; in snd_sb16_capture_open()
625 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_open()
632 struct snd_sb *chip = snd_pcm_substream_chip(substream); in snd_sb16_capture_close() local
634 snd_sb16_csp_capture_close(chip); in snd_sb16_capture_close()
635 spin_lock_irqsave(&chip->open_lock, flags); in snd_sb16_capture_close()
636 chip->capture_substream = NULL; in snd_sb16_capture_close()
637 chip->mode &= ~SB_MODE_CAPTURE; in snd_sb16_capture_close()
638 spin_unlock_irqrestore(&chip->open_lock, flags); in snd_sb16_capture_close()
646 static int snd_sb16_set_dma_mode(struct snd_sb *chip, int what) in snd_sb16_set_dma_mode() argument
648 if (chip->dma8 < 0 || chip->dma16 < 0) { in snd_sb16_set_dma_mode()
654 chip->force_mode16 = 0; in snd_sb16_set_dma_mode()
656 chip->force_mode16 = SB_MODE_PLAYBACK_16; in snd_sb16_set_dma_mode()
658 chip->force_mode16 = SB_MODE_CAPTURE_16; in snd_sb16_set_dma_mode()
665 static int snd_sb16_get_dma_mode(struct snd_sb *chip) in snd_sb16_get_dma_mode() argument
667 if (chip->dma8 < 0 || chip->dma16 < 0) in snd_sb16_get_dma_mode()
669 switch (chip->force_mode16) { in snd_sb16_get_dma_mode()
690 struct snd_sb *chip = snd_kcontrol_chip(kcontrol); in snd_sb16_dma_control_get() local
693 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_dma_control_get()
694 ucontrol->value.enumerated.item[0] = snd_sb16_get_dma_mode(chip); in snd_sb16_dma_control_get()
695 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_dma_control_get()
701 struct snd_sb *chip = snd_kcontrol_chip(kcontrol); in snd_sb16_dma_control_put() local
709 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sb16_dma_control_put()
710 oval = snd_sb16_get_dma_mode(chip); in snd_sb16_dma_control_put()
712 snd_sb16_set_dma_mode(chip, nval); in snd_sb16_dma_control_put()
713 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sb16_dma_control_put()
729 int snd_sb16dsp_configure(struct snd_sb * chip) in snd_sb16dsp_configure() argument
737 spin_lock_irqsave(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
738 mpureg = snd_sbmixer_read(chip, SB_DSP4_MPUSETUP) & ~0x06; in snd_sb16dsp_configure()
739 spin_unlock_irqrestore(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
740 switch (chip->irq) { in snd_sb16dsp_configure()
757 if (chip->dma8 >= 0) { in snd_sb16dsp_configure()
758 switch (chip->dma8) { in snd_sb16dsp_configure()
772 if (chip->dma16 >= 0 && chip->dma16 != chip->dma8) { in snd_sb16dsp_configure()
773 switch (chip->dma16) { in snd_sb16dsp_configure()
787 switch (chip->mpu_port) { in snd_sb16dsp_configure()
797 spin_lock_irqsave(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
799 snd_sbmixer_write(chip, SB_DSP4_IRQSETUP, irqreg); in snd_sb16dsp_configure()
800 realirq = snd_sbmixer_read(chip, SB_DSP4_IRQSETUP); in snd_sb16dsp_configure()
802 snd_sbmixer_write(chip, SB_DSP4_DMASETUP, dmareg); in snd_sb16dsp_configure()
803 realdma = snd_sbmixer_read(chip, SB_DSP4_DMASETUP); in snd_sb16dsp_configure()
805 snd_sbmixer_write(chip, SB_DSP4_MPUSETUP, mpureg); in snd_sb16dsp_configure()
806 realmpureg = snd_sbmixer_read(chip, SB_DSP4_MPUSETUP); in snd_sb16dsp_configure()
808 spin_unlock_irqrestore(&chip->mixer_lock, flags); in snd_sb16dsp_configure()
810 snd_printk(KERN_ERR "SB16 [0x%lx]: unable to set DMA & IRQ (PnP device?)\n", chip->port); in snd_sb16dsp_configure()
811 …snd_printk(KERN_ERR "SB16 [0x%lx]: wanted: irqreg=0x%x, dmareg=0x%x, mpureg = 0x%x\n", chip->port,… in snd_sb16dsp_configure()
812 …snd_printk(KERN_ERR "SB16 [0x%lx]: got: irqreg=0x%x, dmareg=0x%x, mpureg = 0x%x\n", chip->port,… in snd_sb16dsp_configure()
834 int snd_sb16dsp_pcm(struct snd_sb *chip, int device) in snd_sb16dsp_pcm() argument
836 struct snd_card *card = chip->card; in snd_sb16dsp_pcm()
843 sprintf(pcm->name, "DSP v%i.%i", chip->version >> 8, chip->version & 0xff); in snd_sb16dsp_pcm()
845 pcm->private_data = chip; in snd_sb16dsp_pcm()
846 chip->pcm = pcm; in snd_sb16dsp_pcm()
851 if (chip->dma16 >= 0 && chip->dma8 != chip->dma16) in snd_sb16dsp_pcm()
852 snd_ctl_add(card, snd_ctl_new1(&snd_sb16_dma_control, chip)); in snd_sb16dsp_pcm()