Lines Matching refs:io
32 void (*start)(struct rsnd_dai_stream *io, struct rsnd_dma *dma);
33 void (*stop)(struct rsnd_dai_stream *io, struct rsnd_dma *dma);
34 int (*init)(struct rsnd_dai_stream *io, struct rsnd_dma *dma, int id,
36 void (*quit)(struct rsnd_dai_stream *io, struct rsnd_dma *dma);
45 struct rsnd_dai_stream *io) in __rsnd_dmaen_complete() argument
64 if (rsnd_io_is_working(io)) in __rsnd_dmaen_complete()
65 elapsed = rsnd_dai_pointer_update(io, io->byte_per_period); in __rsnd_dmaen_complete()
70 rsnd_dai_period_elapsed(io); in __rsnd_dmaen_complete()
80 static void rsnd_dmaen_stop(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmaen_stop() argument
87 static void rsnd_dmaen_start(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmaen_start() argument
92 struct snd_pcm_substream *substream = io->substream; in rsnd_dmaen_start()
95 int is_play = rsnd_io_is_play(io); in rsnd_dmaen_start()
141 static struct dma_chan *rsnd_dmaen_request_channel(struct rsnd_dai_stream *io, in rsnd_dmaen_request_channel() argument
150 return rsnd_mod_dma_req(io, mod_from); in rsnd_dmaen_request_channel()
152 return rsnd_mod_dma_req(io, mod_to); in rsnd_dmaen_request_channel()
155 static int rsnd_dmaen_init(struct rsnd_dai_stream *io, in rsnd_dmaen_init() argument
160 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_dmaen_init()
163 int is_play = rsnd_io_is_play(io); in rsnd_dmaen_init()
172 dmaen->chan = rsnd_dmaen_request_channel(io, mod_from, mod_to); in rsnd_dmaen_init()
205 rsnd_dma_quit(io, dma); in rsnd_dmaen_init()
217 static void rsnd_dmaen_quit(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmaen_quit() argument
267 static u32 rsnd_dmapp_get_id(struct rsnd_dai_stream *io, in rsnd_dmapp_get_id() argument
270 struct rsnd_mod *ssi = rsnd_io_to_mod_ssi(io); in rsnd_dmapp_get_id()
271 struct rsnd_mod *src = rsnd_io_to_mod_src(io); in rsnd_dmapp_get_id()
272 struct rsnd_mod *dvc = rsnd_io_to_mod_dvc(io); in rsnd_dmapp_get_id()
297 static u32 rsnd_dmapp_get_chcr(struct rsnd_dai_stream *io, in rsnd_dmapp_get_chcr() argument
301 return (rsnd_dmapp_get_id(io, mod_from) << 24) + in rsnd_dmapp_get_chcr()
302 (rsnd_dmapp_get_id(io, mod_to) << 16); in rsnd_dmapp_get_chcr()
329 static void rsnd_dmapp_stop(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmapp_stop() argument
342 static void rsnd_dmapp_start(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmapp_start() argument
351 static int rsnd_dmapp_init(struct rsnd_dai_stream *io, in rsnd_dmapp_init() argument
356 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_dmapp_init()
361 dmapp->chcr = rsnd_dmapp_get_chcr(io, mod_from, mod_to) | PDMACHCR_DE; in rsnd_dmapp_init()
365 rsnd_dmapp_stop(io, dma); in rsnd_dmapp_init()
419 rsnd_gen2_dma_addr(struct rsnd_dai_stream *io, in rsnd_gen2_dma_addr() argument
423 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_gen2_dma_addr()
427 int is_ssi = !!(rsnd_io_to_mod_ssi(io) == mod); in rsnd_gen2_dma_addr()
428 int use_src = !!rsnd_io_to_mod_src(io); in rsnd_gen2_dma_addr()
429 int use_cmd = !!rsnd_io_to_mod_dvc(io) || in rsnd_gen2_dma_addr()
430 !!rsnd_io_to_mod_mix(io) || in rsnd_gen2_dma_addr()
431 !!rsnd_io_to_mod_ctu(io); in rsnd_gen2_dma_addr()
473 if (is_ssi && rsnd_ssi_use_busif(io)) in rsnd_gen2_dma_addr()
481 static dma_addr_t rsnd_dma_addr(struct rsnd_dai_stream *io, in rsnd_dma_addr() argument
485 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_dma_addr()
496 return rsnd_gen2_dma_addr(io, mod, is_play, is_from); in rsnd_dma_addr()
501 struct rsnd_dai_stream *io, in rsnd_dma_of_path() argument
507 struct rsnd_mod *ssi = rsnd_io_to_mod_ssi(io); in rsnd_dma_of_path()
508 struct rsnd_mod *src = rsnd_io_to_mod_src(io); in rsnd_dma_of_path()
509 struct rsnd_mod *ctu = rsnd_io_to_mod_ctu(io); in rsnd_dma_of_path()
510 struct rsnd_mod *mix = rsnd_io_to_mod_mix(io); in rsnd_dma_of_path()
511 struct rsnd_mod *dvc = rsnd_io_to_mod_dvc(io); in rsnd_dma_of_path()
524 nr += !!rsnd_io_to_mod(io, i); in rsnd_dma_of_path()
587 void rsnd_dma_stop(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dma_stop() argument
589 dma->ops->stop(io, dma); in rsnd_dma_stop()
592 void rsnd_dma_start(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dma_start() argument
594 dma->ops->start(io, dma); in rsnd_dma_start()
597 void rsnd_dma_quit(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dma_quit() argument
606 dma->ops->quit(io, dma); in rsnd_dma_quit()
609 int rsnd_dma_init(struct rsnd_dai_stream *io, struct rsnd_dma *dma, int id) in rsnd_dma_init() argument
613 struct rsnd_priv *priv = rsnd_io_to_priv(io); in rsnd_dma_init()
616 int is_play = rsnd_io_is_play(io); in rsnd_dma_init()
627 rsnd_dma_of_path(dma, io, is_play, &mod_from, &mod_to); in rsnd_dma_init()
629 dma->src_addr = rsnd_dma_addr(io, mod_from, is_play, 1); in rsnd_dma_init()
630 dma->dst_addr = rsnd_dma_addr(io, mod_to, is_play, 0); in rsnd_dma_init()
647 return dma->ops->init(io, dma, id, mod_from, mod_to); in rsnd_dma_init()