Lines Matching refs:dma_private
163 static void fsl_dma_update_pointers(struct fsl_dma_private *dma_private) in fsl_dma_update_pointers() argument
166 &dma_private->link[dma_private->current_link]; in fsl_dma_update_pointers()
172 if (dma_private->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in fsl_dma_update_pointers()
173 link->source_addr = cpu_to_be32(dma_private->dma_buf_next); in fsl_dma_update_pointers()
176 upper_32_bits(dma_private->dma_buf_next)); in fsl_dma_update_pointers()
179 link->dest_addr = cpu_to_be32(dma_private->dma_buf_next); in fsl_dma_update_pointers()
182 upper_32_bits(dma_private->dma_buf_next)); in fsl_dma_update_pointers()
187 dma_private->dma_buf_next += dma_private->period_size; in fsl_dma_update_pointers()
189 if (dma_private->dma_buf_next >= dma_private->dma_buf_end) in fsl_dma_update_pointers()
190 dma_private->dma_buf_next = dma_private->dma_buf_phys; in fsl_dma_update_pointers()
192 if (++dma_private->current_link >= NUM_DMA_LINKS) in fsl_dma_update_pointers()
193 dma_private->current_link = 0; in fsl_dma_update_pointers()
204 struct fsl_dma_private *dma_private = dev_id; in fsl_dma_isr() local
205 struct snd_pcm_substream *substream = dma_private->substream; in fsl_dma_isr()
208 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel; in fsl_dma_isr()
251 if (dma_private->num_periods != NUM_DMA_LINKS) in fsl_dma_isr()
252 fsl_dma_update_pointers(dma_private); in fsl_dma_isr()
392 struct fsl_dma_private *dma_private; in fsl_dma_open() local
420 dma_private = dma_alloc_coherent(dev, sizeof(struct fsl_dma_private), in fsl_dma_open()
422 if (!dma_private) { in fsl_dma_open()
427 dma_private->ssi_sxx_phys = dma->ssi_stx_phys; in fsl_dma_open()
429 dma_private->ssi_sxx_phys = dma->ssi_srx_phys; in fsl_dma_open()
431 dma_private->ssi_fifo_depth = dma->ssi_fifo_depth; in fsl_dma_open()
432 dma_private->dma_channel = dma->channel; in fsl_dma_open()
433 dma_private->irq = dma->irq; in fsl_dma_open()
434 dma_private->substream = substream; in fsl_dma_open()
435 dma_private->ld_buf_phys = ld_buf_phys; in fsl_dma_open()
436 dma_private->dma_buf_phys = substream->dma_buffer.addr; in fsl_dma_open()
438 ret = request_irq(dma_private->irq, fsl_dma_isr, 0, "fsldma-audio", in fsl_dma_open()
439 dma_private); in fsl_dma_open()
442 dma_private->irq, ret); in fsl_dma_open()
444 dma_private, dma_private->ld_buf_phys); in fsl_dma_open()
452 runtime->private_data = dma_private; in fsl_dma_open()
456 dma_channel = dma_private->dma_channel; in fsl_dma_open()
458 temp_link = dma_private->ld_buf_phys + in fsl_dma_open()
462 dma_private->link[i].next = cpu_to_be64(temp_link); in fsl_dma_open()
467 dma_private->link[i - 1].next = cpu_to_be64(dma_private->ld_buf_phys); in fsl_dma_open()
471 CCSR_DMA_CLNDAR_ADDR(dma_private->ld_buf_phys)); in fsl_dma_open()
473 CCSR_DMA_ECLNDAR_ADDR(dma_private->ld_buf_phys)); in fsl_dma_open()
541 struct fsl_dma_private *dma_private = runtime->private_data; in fsl_dma_hw_params() local
553 dma_addr_t ssi_sxx_phys = dma_private->ssi_sxx_phys; in fsl_dma_hw_params()
565 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel; in fsl_dma_hw_params()
572 dma_private->period_size = period_size; in fsl_dma_hw_params()
573 dma_private->num_periods = params_periods(hw_params); in fsl_dma_hw_params()
574 dma_private->dma_buf_end = dma_private->dma_buf_phys + buffer_size; in fsl_dma_hw_params()
575 dma_private->dma_buf_next = dma_private->dma_buf_phys + in fsl_dma_hw_params()
578 if (dma_private->dma_buf_next >= dma_private->dma_buf_end) in fsl_dma_hw_params()
580 dma_private->dma_buf_next = dma_private->dma_buf_phys; in fsl_dma_hw_params()
639 mr |= CCSR_DMA_MR_BWC((dma_private->ssi_fifo_depth - 2) * sample_bytes); in fsl_dma_hw_params()
644 struct fsl_dma_link_descriptor *link = &dma_private->link[i]; in fsl_dma_hw_params()
704 struct fsl_dma_private *dma_private = runtime->private_data; in fsl_dma_pointer() local
707 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel; in fsl_dma_pointer()
739 if ((position < dma_private->dma_buf_phys) || in fsl_dma_pointer()
740 (position > dma_private->dma_buf_end)) { in fsl_dma_pointer()
745 frames = bytes_to_frames(runtime, position - dma_private->dma_buf_phys); in fsl_dma_pointer()
768 struct fsl_dma_private *dma_private = runtime->private_data; in fsl_dma_hw_free() local
770 if (dma_private) { in fsl_dma_hw_free()
773 dma_channel = dma_private->dma_channel; in fsl_dma_hw_free()
801 struct fsl_dma_private *dma_private = runtime->private_data; in fsl_dma_close() local
807 if (dma_private) { in fsl_dma_close()
808 if (dma_private->irq) in fsl_dma_close()
809 free_irq(dma_private->irq, dma_private); in fsl_dma_close()
813 dma_private, dma_private->ld_buf_phys); in fsl_dma_close()