• Home
  • Raw
  • Download

Lines Matching refs:dma

325 				    struct atiixp_dma *dma,  in atiixp_build_dma_packets()  argument
337 if (dma->desc_buf.area == NULL) { in atiixp_build_dma_packets()
339 ATI_DESC_LIST_SIZE, &dma->desc_buf) < 0) in atiixp_build_dma_packets()
341 dma->period_bytes = dma->periods = 0; /* clear */ in atiixp_build_dma_packets()
344 if (dma->periods == periods && dma->period_bytes == period_bytes) in atiixp_build_dma_packets()
349 writel(0, chip->remap_addr + dma->ops->llp_offset); in atiixp_build_dma_packets()
350 dma->ops->enable_dma(chip, 0); in atiixp_build_dma_packets()
351 dma->ops->enable_dma(chip, 1); in atiixp_build_dma_packets()
356 desc_addr = (u32)dma->desc_buf.addr; in atiixp_build_dma_packets()
359 desc = &((struct atiixp_dma_desc *)dma->desc_buf.area)[i]; in atiixp_build_dma_packets()
365 desc->next = cpu_to_le32((u32)dma->desc_buf.addr); in atiixp_build_dma_packets()
371 writel((u32)dma->desc_buf.addr | ATI_REG_LINKPTR_EN, in atiixp_build_dma_packets()
372 chip->remap_addr + dma->ops->llp_offset); in atiixp_build_dma_packets()
374 dma->period_bytes = period_bytes; in atiixp_build_dma_packets()
375 dma->periods = periods; in atiixp_build_dma_packets()
384 struct atiixp_dma *dma, in atiixp_clear_dma_packets() argument
387 if (dma->desc_buf.area) { in atiixp_clear_dma_packets()
388 writel(0, chip->remap_addr + dma->ops->llp_offset); in atiixp_clear_dma_packets()
389 snd_dma_free_pages(&dma->desc_buf); in atiixp_clear_dma_packets()
390 dma->desc_buf.area = NULL; in atiixp_clear_dma_packets()
614 struct atiixp_dma *dma = runtime->private_data; in snd_atiixp_pcm_pointer() local
619 curptr = readl(chip->remap_addr + dma->ops->dt_cur); in snd_atiixp_pcm_pointer()
620 if (curptr < dma->buf_addr) in snd_atiixp_pcm_pointer()
622 curptr -= dma->buf_addr; in snd_atiixp_pcm_pointer()
623 if (curptr >= dma->buf_bytes) in snd_atiixp_pcm_pointer()
628 readl(chip->remap_addr + dma->ops->dt_cur), dma->buf_addr); in snd_atiixp_pcm_pointer()
636 struct atiixp_dma *dma) in snd_atiixp_xrun_dma() argument
638 if (! dma->substream || ! dma->running) in snd_atiixp_xrun_dma()
640 dev_dbg(chip->card->dev, "XRUN detected (DMA %d)\n", dma->ops->type); in snd_atiixp_xrun_dma()
641 snd_pcm_stop_xrun(dma->substream); in snd_atiixp_xrun_dma()
648 struct atiixp_dma *dma) in snd_atiixp_update_dma() argument
650 if (! dma->substream || ! dma->running) in snd_atiixp_update_dma()
652 snd_pcm_period_elapsed(dma->substream); in snd_atiixp_update_dma()
674 struct atiixp_dma *dma = substream->runtime->private_data; in snd_atiixp_pcm_trigger() local
677 if (snd_BUG_ON(!dma->ops->enable_transfer || in snd_atiixp_pcm_trigger()
678 !dma->ops->flush_dma)) in snd_atiixp_pcm_trigger()
684 dma->ops->enable_transfer(chip, 1); in snd_atiixp_pcm_trigger()
685 dma->running = 1; in snd_atiixp_pcm_trigger()
688 dma->ops->enable_transfer(chip, 0); in snd_atiixp_pcm_trigger()
689 dma->running = 0; in snd_atiixp_pcm_trigger()
698 dma->ops->flush_dma(chip); in snd_atiixp_pcm_trigger()
796 struct atiixp_dma *dma = substream->runtime->private_data; in snd_atiixp_pcm_hw_params() local
803 dma->buf_addr = substream->runtime->dma_addr; in snd_atiixp_pcm_hw_params()
804 dma->buf_bytes = params_buffer_bytes(hw_params); in snd_atiixp_pcm_hw_params()
806 err = atiixp_build_dma_packets(chip, dma, substream, in snd_atiixp_pcm_hw_params()
826 struct atiixp_dma *dma = substream->runtime->private_data; in snd_atiixp_pcm_hw_free() local
828 atiixp_clear_dma_packets(chip, dma, substream); in snd_atiixp_pcm_hw_free()
858 struct atiixp_dma *dma, int pcm_type) in snd_atiixp_pcm_open() argument
870 if (snd_BUG_ON(!dma->ops || !dma->ops->enable_dma)) in snd_atiixp_pcm_open()
873 if (dma->opened) in snd_atiixp_pcm_open()
875 dma->substream = substream; in snd_atiixp_pcm_open()
877 dma->ac97_pcm_type = pcm_type; in snd_atiixp_pcm_open()
885 runtime->private_data = dma; in snd_atiixp_pcm_open()
889 dma->ops->enable_dma(chip, 1); in snd_atiixp_pcm_open()
891 dma->opened = 1; in snd_atiixp_pcm_open()
897 struct atiixp_dma *dma) in snd_atiixp_pcm_close() argument
901 if (snd_BUG_ON(!dma->ops || !dma->ops->enable_dma)) in snd_atiixp_pcm_close()
904 dma->ops->enable_dma(chip, 0); in snd_atiixp_pcm_close()
906 dma->substream = NULL; in snd_atiixp_pcm_close()
907 dma->opened = 0; in snd_atiixp_pcm_close()