Lines Matching refs:au1000
107 au1000_set_ac97_xmit_slots(struct snd_au1000 *au1000, long xmit_slots) in au1000_set_ac97_xmit_slots() argument
111 spin_lock(&au1000->ac97_lock); in au1000_set_ac97_xmit_slots()
112 ac97_config = au1000->ac97_ioport->config; in au1000_set_ac97_xmit_slots()
115 au1000->ac97_ioport->config = ac97_config; in au1000_set_ac97_xmit_slots()
116 spin_unlock(&au1000->ac97_lock); in au1000_set_ac97_xmit_slots()
120 au1000_set_ac97_recv_slots(struct snd_au1000 *au1000, long recv_slots) in au1000_set_ac97_recv_slots() argument
124 spin_lock(&au1000->ac97_lock); in au1000_set_ac97_recv_slots()
125 ac97_config = au1000->ac97_ioport->config; in au1000_set_ac97_recv_slots()
128 au1000->ac97_ioport->config = ac97_config; in au1000_set_ac97_recv_slots()
129 spin_unlock(&au1000->ac97_lock); in au1000_set_ac97_recv_slots()
291 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_playback_open() local
293 au1000->stream[PLAYBACK]->substream = substream; in snd_au1000_playback_open()
294 au1000->stream[PLAYBACK]->buffer = NULL; in snd_au1000_playback_open()
295 substream->private_data = au1000->stream[PLAYBACK]; in snd_au1000_playback_open()
304 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_capture_open() local
306 au1000->stream[CAPTURE]->substream = substream; in snd_au1000_capture_open()
307 au1000->stream[CAPTURE]->buffer = NULL; in snd_au1000_capture_open()
308 substream->private_data = au1000->stream[CAPTURE]; in snd_au1000_capture_open()
317 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_playback_close() local
319 au1000->stream[PLAYBACK]->substream = NULL; in snd_au1000_playback_close()
326 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_capture_close() local
328 au1000->stream[CAPTURE]->substream = NULL; in snd_au1000_capture_close()
359 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_playback_prepare() local
363 au1000_set_ac97_xmit_slots(au1000, AC97_SLOT_4); in snd_au1000_playback_prepare()
365 au1000_set_ac97_xmit_slots(au1000, AC97_SLOT_3 | AC97_SLOT_4); in snd_au1000_playback_prepare()
366 snd_ac97_set_rate(au1000->ac97, AC97_PCM_FRONT_DAC_RATE, runtime->rate); in snd_au1000_playback_prepare()
373 struct snd_au1000 *au1000 = substream->pcm->private_data; in snd_au1000_capture_prepare() local
377 au1000_set_ac97_recv_slots(au1000, AC97_SLOT_4); in snd_au1000_capture_prepare()
379 au1000_set_ac97_recv_slots(au1000, AC97_SLOT_3 | AC97_SLOT_4); in snd_au1000_capture_prepare()
380 snd_ac97_set_rate(au1000->ac97, AC97_PCM_LR_ADC_RATE, runtime->rate); in snd_au1000_capture_prepare()
445 snd_au1000_pcm_new(struct snd_au1000 *au1000) in snd_au1000_pcm_new() argument
451 if ((err = snd_pcm_new(au1000->card, "AU1000 AC97 PCM", 0, 1, 1, &pcm)) < 0) in snd_au1000_pcm_new()
462 pcm->private_data = au1000; in snd_au1000_pcm_new()
466 spin_lock_init(&au1000->stream[PLAYBACK]->dma_lock); in snd_au1000_pcm_new()
467 spin_lock_init(&au1000->stream[CAPTURE]->dma_lock); in snd_au1000_pcm_new()
470 au1000->stream[PLAYBACK]->dma = request_au1000_dma(au1000->dmaid[0], in snd_au1000_pcm_new()
472 au1000->stream[PLAYBACK]); in snd_au1000_pcm_new()
473 if (au1000->stream[PLAYBACK]->dma < 0) { in snd_au1000_pcm_new()
477 au1000->stream[CAPTURE]->dma = request_au1000_dma(au1000->dmaid[1], in snd_au1000_pcm_new()
479 au1000->stream[CAPTURE]); in snd_au1000_pcm_new()
480 if (au1000->stream[CAPTURE]->dma < 0){ in snd_au1000_pcm_new()
485 set_dma_mode(au1000->stream[PLAYBACK]->dma, in snd_au1000_pcm_new()
486 get_dma_mode(au1000->stream[PLAYBACK]->dma) & ~DMA_NC); in snd_au1000_pcm_new()
487 set_dma_mode(au1000->stream[CAPTURE]->dma, in snd_au1000_pcm_new()
488 get_dma_mode(au1000->stream[CAPTURE]->dma) & ~DMA_NC); in snd_au1000_pcm_new()
490 au1000->pcm = pcm; in snd_au1000_pcm_new()
500 struct snd_au1000 *au1000 = ac97->private_data; in snd_au1000_ac97_read() local
505 spin_lock(&au1000->ac97_lock); in snd_au1000_ac97_read()
509 if (!(au1000->ac97_ioport->status & AC97C_CP)) in snd_au1000_ac97_read()
516 au1000->ac97_ioport->cmd = cmd; in snd_au1000_ac97_read()
520 if (!(au1000->ac97_ioport->status & AC97C_CP)) in snd_au1000_ac97_read()
524 spin_unlock(&au1000->ac97_lock); in snd_au1000_ac97_read()
528 data = au1000->ac97_ioport->cmd & 0xffff; in snd_au1000_ac97_read()
529 spin_unlock(&au1000->ac97_lock); in snd_au1000_ac97_read()
539 struct snd_au1000 *au1000 = ac97->private_data; in snd_au1000_ac97_write() local
543 spin_lock(&au1000->ac97_lock); in snd_au1000_ac97_write()
547 if (!(au1000->ac97_ioport->status & AC97C_CP)) in snd_au1000_ac97_write()
555 au1000->ac97_ioport->cmd = cmd; in snd_au1000_ac97_write()
556 spin_unlock(&au1000->ac97_lock); in snd_au1000_ac97_write()
563 struct snd_au1000 *au1000 = card->private_data; in snd_au1000_free() local
565 if (au1000->stream[PLAYBACK]) { in snd_au1000_free()
566 if (au1000->stream[PLAYBACK]->dma >= 0) in snd_au1000_free()
567 free_au1000_dma(au1000->stream[PLAYBACK]->dma); in snd_au1000_free()
568 kfree(au1000->stream[PLAYBACK]); in snd_au1000_free()
571 if (au1000->stream[CAPTURE]) { in snd_au1000_free()
572 if (au1000->stream[CAPTURE]->dma >= 0) in snd_au1000_free()
573 free_au1000_dma(au1000->stream[CAPTURE]->dma); in snd_au1000_free()
574 kfree(au1000->stream[CAPTURE]); in snd_au1000_free()
577 if (au1000->ac97_res_port) { in snd_au1000_free()
579 if (au1000->ac97_ioport) { in snd_au1000_free()
580 au1000->ac97_ioport->cntrl = AC97C_RS; in snd_au1000_free()
581 iounmap(au1000->ac97_ioport); in snd_au1000_free()
582 au1000->ac97_ioport = NULL; in snd_au1000_free()
584 release_and_free_resource(au1000->ac97_res_port); in snd_au1000_free()
585 au1000->ac97_res_port = NULL; in snd_au1000_free()
600 struct snd_au1000 *au1000; in au1000_ac97_probe() local
609 au1000 = card->private_data; in au1000_ac97_probe()
610 au1000->card = card; in au1000_ac97_probe()
611 spin_lock_init(&au1000->ac97_lock); in au1000_ac97_probe()
623 au1000->dmaid[0] = r->start; in au1000_ac97_probe()
632 au1000->dmaid[1] = r->start; in au1000_ac97_probe()
634 au1000->stream[PLAYBACK] = kmalloc(sizeof(struct audio_stream), in au1000_ac97_probe()
636 if (!au1000->stream[PLAYBACK]) { in au1000_ac97_probe()
640 au1000->stream[PLAYBACK]->dma = -1; in au1000_ac97_probe()
642 au1000->stream[CAPTURE] = kmalloc(sizeof(struct audio_stream), in au1000_ac97_probe()
644 if (!au1000->stream[CAPTURE]) { in au1000_ac97_probe()
648 au1000->stream[CAPTURE]->dma = -1; in au1000_ac97_probe()
657 au1000->ac97_res_port = request_mem_region(r->start, resource_size(r), in au1000_ac97_probe()
659 if (!au1000->ac97_res_port) { in au1000_ac97_probe()
668 au1000->ac97_ioport = (struct au1000_ac97_reg *)io; in au1000_ac97_probe()
675 au1000->ac97_ioport->cntrl = AC97C_RS | AC97C_CE; in au1000_ac97_probe()
677 au1000->ac97_ioport->cntrl = AC97C_CE; in au1000_ac97_probe()
681 au1000->ac97_ioport->config = AC97C_RESET; in au1000_ac97_probe()
683 au1000->ac97_ioport->config = 0x0; in au1000_ac97_probe()
687 err = snd_ac97_bus(au1000->card, 0, &ops, au1000, &pbus); in au1000_ac97_probe()
692 ac97.private_data = au1000; in au1000_ac97_probe()
693 err = snd_ac97_mixer(pbus, &ac97, &au1000->ac97); in au1000_ac97_probe()
697 err = snd_au1000_pcm_new(au1000); in au1000_ac97_probe()