Lines Matching refs:dma
107 struct cs5535audio_dma *dma, in cs5535audio_build_dma_packets() argument
119 if (dma->desc_buf.area == NULL) { in cs5535audio_build_dma_packets()
123 &dma->desc_buf) < 0) in cs5535audio_build_dma_packets()
125 dma->period_bytes = dma->periods = 0; in cs5535audio_build_dma_packets()
128 if (dma->periods == periods && dma->period_bytes == period_bytes) in cs5535audio_build_dma_packets()
136 &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[i]; in cs5535audio_build_dma_packets()
143 lastdesc = &((struct cs5535audio_dma_desc *) dma->desc_buf.area)[periods]; in cs5535audio_build_dma_packets()
144 lastdesc->addr = cpu_to_le32((u32) dma->desc_buf.addr); in cs5535audio_build_dma_packets()
147 jmpprd_addr = (u32)dma->desc_buf.addr + in cs5535audio_build_dma_packets()
150 dma->substream = substream; in cs5535audio_build_dma_packets()
151 dma->period_bytes = period_bytes; in cs5535audio_build_dma_packets()
152 dma->periods = periods; in cs5535audio_build_dma_packets()
154 dma->ops->disable_dma(cs5535au); in cs5535audio_build_dma_packets()
155 dma->ops->setup_prd(cs5535au, jmpprd_addr); in cs5535audio_build_dma_packets()
223 struct cs5535audio_dma *dma, in cs5535audio_clear_dma_packets() argument
226 snd_dma_free_pages(&dma->desc_buf); in cs5535audio_clear_dma_packets()
227 dma->desc_buf.area = NULL; in cs5535audio_clear_dma_packets()
228 dma->substream = NULL; in cs5535audio_clear_dma_packets()
235 struct cs5535audio_dma *dma = substream->runtime->private_data; in snd_cs5535audio_hw_params() local
238 dma->buf_addr = substream->runtime->dma_addr; in snd_cs5535audio_hw_params()
239 dma->buf_bytes = params_buffer_bytes(hw_params); in snd_cs5535audio_hw_params()
241 err = cs5535audio_build_dma_packets(cs5535au, dma, substream, in snd_cs5535audio_hw_params()
245 dma->pcm_open_flag = 1; in snd_cs5535audio_hw_params()
253 struct cs5535audio_dma *dma = substream->runtime->private_data; in snd_cs5535audio_hw_free() local
255 if (dma->pcm_open_flag) { in snd_cs5535audio_hw_free()
262 dma->pcm_open_flag = 0; in snd_cs5535audio_hw_free()
264 cs5535audio_clear_dma_packets(cs5535au, dma, substream); in snd_cs5535audio_hw_free()
278 struct cs5535audio_dma *dma = substream->runtime->private_data; in snd_cs5535audio_trigger() local
284 dma->ops->pause_dma(cs5535au); in snd_cs5535audio_trigger()
287 dma->ops->enable_dma(cs5535au); in snd_cs5535audio_trigger()
290 dma->ops->enable_dma(cs5535au); in snd_cs5535audio_trigger()
293 dma->ops->enable_dma(cs5535au); in snd_cs5535audio_trigger()
296 dma->ops->disable_dma(cs5535au); in snd_cs5535audio_trigger()
299 dma->ops->disable_dma(cs5535au); in snd_cs5535audio_trigger()
315 struct cs5535audio_dma *dma; in snd_cs5535audio_pcm_pointer() local
317 dma = substream->runtime->private_data; in snd_cs5535audio_pcm_pointer()
318 curdma = dma->ops->read_dma_pntr(cs5535au); in snd_cs5535audio_pcm_pointer()
319 if (curdma < dma->buf_addr) { in snd_cs5535audio_pcm_pointer()
321 curdma, dma->buf_addr); in snd_cs5535audio_pcm_pointer()
324 curdma -= dma->buf_addr; in snd_cs5535audio_pcm_pointer()
325 if (curdma >= dma->buf_bytes) { in snd_cs5535audio_pcm_pointer()
327 curdma, dma->buf_bytes); in snd_cs5535audio_pcm_pointer()