Lines Matching refs:dma_private

160 static void fsl_dma_update_pointers(struct fsl_dma_private *dma_private)
163 &dma_private->link[dma_private->current_link];
169 if (dma_private->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
170 link->source_addr = cpu_to_be32(dma_private->dma_buf_next);
173 upper_32_bits(dma_private->dma_buf_next));
176 link->dest_addr = cpu_to_be32(dma_private->dma_buf_next);
179 upper_32_bits(dma_private->dma_buf_next));
184 dma_private->dma_buf_next += dma_private->period_size;
186 if (dma_private->dma_buf_next >= dma_private->dma_buf_end)
187 dma_private->dma_buf_next = dma_private->dma_buf_phys;
189 if (++dma_private->current_link >= NUM_DMA_LINKS)
190 dma_private->current_link = 0;
197 * @dev_id: pointer to the dma_private structure for this DMA channel
201 struct fsl_dma_private *dma_private = dev_id;
202 struct snd_pcm_substream *substream = dma_private->substream;
205 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
248 if (dma_private->num_periods != NUM_DMA_LINKS)
249 fsl_dma_update_pointers(dma_private);
390 struct fsl_dma_private *dma_private;
418 dma_private = dma_alloc_coherent(dev, sizeof(struct fsl_dma_private),
420 if (!dma_private) {
425 dma_private->ssi_sxx_phys = dma->ssi_stx_phys;
427 dma_private->ssi_sxx_phys = dma->ssi_srx_phys;
429 dma_private->ssi_fifo_depth = dma->ssi_fifo_depth;
430 dma_private->dma_channel = dma->channel;
431 dma_private->irq = dma->irq;
432 dma_private->substream = substream;
433 dma_private->ld_buf_phys = ld_buf_phys;
434 dma_private->dma_buf_phys = substream->dma_buffer.addr;
436 ret = request_irq(dma_private->irq, fsl_dma_isr, 0, "fsldma-audio",
437 dma_private);
440 dma_private->irq, ret);
442 dma_private, dma_private->ld_buf_phys);
450 runtime->private_data = dma_private;
454 dma_channel = dma_private->dma_channel;
456 temp_link = dma_private->ld_buf_phys +
460 dma_private->link[i].next = cpu_to_be64(temp_link);
465 dma_private->link[i - 1].next = cpu_to_be64(dma_private->ld_buf_phys);
469 CCSR_DMA_CLNDAR_ADDR(dma_private->ld_buf_phys));
471 CCSR_DMA_ECLNDAR_ADDR(dma_private->ld_buf_phys));
540 struct fsl_dma_private *dma_private = runtime->private_data;
551 dma_addr_t ssi_sxx_phys = dma_private->ssi_sxx_phys;
563 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
570 dma_private->period_size = period_size;
571 dma_private->num_periods = params_periods(hw_params);
572 dma_private->dma_buf_end = dma_private->dma_buf_phys + buffer_size;
573 dma_private->dma_buf_next = dma_private->dma_buf_phys +
576 if (dma_private->dma_buf_next >= dma_private->dma_buf_end)
578 dma_private->dma_buf_next = dma_private->dma_buf_phys;
635 * (dma_private->ssi_fifo_depth - 2) * sample_bytes.
637 mr |= CCSR_DMA_MR_BWC((dma_private->ssi_fifo_depth - 2) * sample_bytes);
642 struct fsl_dma_link_descriptor *link = &dma_private->link[i];
703 struct fsl_dma_private *dma_private = runtime->private_data;
705 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
737 if ((position < dma_private->dma_buf_phys) ||
738 (position > dma_private->dma_buf_end)) {
743 frames = bytes_to_frames(runtime, position - dma_private->dma_buf_phys);
767 struct fsl_dma_private *dma_private = runtime->private_data;
769 if (dma_private) {
772 dma_channel = dma_private->dma_channel;
801 struct fsl_dma_private *dma_private = runtime->private_data;
806 if (dma_private) {
807 if (dma_private->irq)
808 free_irq(dma_private->irq, dma_private);
812 dma_private, dma_private->ld_buf_phys);