Lines Matching refs:dma

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);
39 #define rsnd_priv_to_dmac(p) ((struct rsnd_dma_ctrl *)(p)->dma)
80 static void rsnd_dmaen_stop(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmaen_stop() argument
82 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_stop()
87 static void rsnd_dmaen_start(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmaen_start() argument
89 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_start()
90 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmaen_start()
156 struct rsnd_dma *dma, int id, in rsnd_dmaen_init() argument
159 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_init()
189 cfg.src_addr = dma->src_addr; in rsnd_dmaen_init()
190 cfg.dst_addr = dma->dst_addr; in rsnd_dmaen_init()
195 dma->ops->name, 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
219 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_quit()
305 #define rsnd_dmapp_addr(dmac, dma, reg) \ argument
307 (0x10 * rsnd_dma_to_dmapp(dma)->dmapp_id))
308 static void rsnd_dmapp_write(struct rsnd_dma *dma, u32 data, u32 reg) in rsnd_dmapp_write() argument
310 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmapp_write()
315 dev_dbg(dev, "w %p : %08x\n", rsnd_dmapp_addr(dmac, dma, reg), data); in rsnd_dmapp_write()
317 iowrite32(data, rsnd_dmapp_addr(dmac, dma, reg)); in rsnd_dmapp_write()
320 static u32 rsnd_dmapp_read(struct rsnd_dma *dma, u32 reg) in rsnd_dmapp_read() argument
322 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmapp_read()
326 return ioread32(rsnd_dmapp_addr(dmac, dma, reg)); in rsnd_dmapp_read()
329 static void rsnd_dmapp_stop(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmapp_stop() argument
333 rsnd_dmapp_write(dma, 0, PDMACHCR); in rsnd_dmapp_stop()
336 if (0 == rsnd_dmapp_read(dma, PDMACHCR)) in rsnd_dmapp_stop()
342 static void rsnd_dmapp_start(struct rsnd_dai_stream *io, struct rsnd_dma *dma) in rsnd_dmapp_start() argument
344 struct rsnd_dmapp *dmapp = rsnd_dma_to_dmapp(dma); in rsnd_dmapp_start()
346 rsnd_dmapp_write(dma, dma->src_addr, PDMASAR); in rsnd_dmapp_start()
347 rsnd_dmapp_write(dma, dma->dst_addr, PDMADAR); in rsnd_dmapp_start()
348 rsnd_dmapp_write(dma, dmapp->chcr, PDMACHCR); in rsnd_dmapp_start()
352 struct rsnd_dma *dma, int id, in rsnd_dmapp_init() argument
355 struct rsnd_dmapp *dmapp = rsnd_dma_to_dmapp(dma); in rsnd_dmapp_init()
365 rsnd_dmapp_stop(io, dma); in rsnd_dmapp_init()
368 dmapp->dmapp_id, &dma->src_addr, &dma->dst_addr, dmapp->chcr); in rsnd_dmapp_init()
500 static void rsnd_dma_of_path(struct rsnd_dma *dma, in rsnd_dma_of_path() argument
506 struct rsnd_mod *this = rsnd_dma_to_mod(dma); 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
599 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dma_quit()
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
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()
634 dma->ops = &rsnd_dmapp_ops; in rsnd_dma_init()
636 dma->ops = &rsnd_dmaen_ops; in rsnd_dma_init()
640 dma->ops = &rsnd_dmaen_ops; in rsnd_dma_init()
643 dma->ops->name, in rsnd_dma_init()
647 return dma->ops->init(io, dma, id, mod_from, mod_to); in rsnd_dma_init()
679 priv->dma = dmac; in rsnd_dma_probe()