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);
367 struct fsl_dma_private *dma_private;
392 dma_private = dma_alloc_coherent(dev, sizeof(struct fsl_dma_private),
394 if (!dma_private) {
399 dma_private->ssi_sxx_phys = dma->ssi_stx_phys;
401 dma_private->ssi_sxx_phys = dma->ssi_srx_phys;
403 dma_private->ssi_fifo_depth = dma->ssi_fifo_depth;
404 dma_private->dma_channel = dma->channel;
405 dma_private->irq = dma->irq;
406 dma_private->substream = substream;
407 dma_private->ld_buf_phys = ld_buf_phys;
408 dma_private->dma_buf_phys = substream->dma_buffer.addr;
410 ret = request_irq(dma_private->irq, fsl_dma_isr, 0, "fsldma-audio",
411 dma_private);
414 dma_private->irq, ret);
416 dma_private, dma_private->ld_buf_phys);
423 runtime->private_data = dma_private;
427 dma_channel = dma_private->dma_channel;
429 temp_link = dma_private->ld_buf_phys +
433 dma_private->link[i].next = cpu_to_be64(temp_link);
438 dma_private->link[i - 1].next = cpu_to_be64(dma_private->ld_buf_phys);
442 CCSR_DMA_CLNDAR_ADDR(dma_private->ld_buf_phys));
444 CCSR_DMA_ECLNDAR_ADDR(dma_private->ld_buf_phys));
513 struct fsl_dma_private *dma_private = runtime->private_data;
524 dma_addr_t ssi_sxx_phys = dma_private->ssi_sxx_phys;
536 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
543 dma_private->period_size = period_size;
544 dma_private->num_periods = params_periods(hw_params);
545 dma_private->dma_buf_end = dma_private->dma_buf_phys + buffer_size;
546 dma_private->dma_buf_next = dma_private->dma_buf_phys +
549 if (dma_private->dma_buf_next >= dma_private->dma_buf_end)
551 dma_private->dma_buf_next = dma_private->dma_buf_phys;
608 * (dma_private->ssi_fifo_depth - 2) * sample_bytes.
610 mr |= CCSR_DMA_MR_BWC((dma_private->ssi_fifo_depth - 2) * sample_bytes);
615 struct fsl_dma_link_descriptor *link = &dma_private->link[i];
676 struct fsl_dma_private *dma_private = runtime->private_data;
678 struct ccsr_dma_channel __iomem *dma_channel = dma_private->dma_channel;
710 if ((position < dma_private->dma_buf_phys) ||
711 (position > dma_private->dma_buf_end)) {
716 frames = bytes_to_frames(runtime, position - dma_private->dma_buf_phys);
740 struct fsl_dma_private *dma_private = runtime->private_data;
742 if (dma_private) {
745 dma_channel = dma_private->dma_channel;
774 struct fsl_dma_private *dma_private = runtime->private_data;
779 if (dma_private) {
780 if (dma_private->irq)
781 free_irq(dma_private->irq, dma_private);
785 dma_private, dma_private->ld_buf_phys);