Lines Matching refs:dma
30 #define rsnd_priv_to_dmac(p) ((struct rsnd_dma_ctrl *)(p)->dma)
37 struct rsnd_dma *dma = (struct rsnd_dma *)data; in rsnd_dmaen_complete() local
38 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmaen_complete()
56 static void rsnd_dmaen_stop(struct rsnd_dma *dma) in rsnd_dmaen_stop() argument
58 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_stop()
63 static void rsnd_dmaen_start(struct rsnd_dma *dma) in rsnd_dmaen_start() argument
65 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_start()
66 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmaen_start()
87 desc->callback_param = dma; in rsnd_dmaen_start()
131 static int rsnd_dmaen_init(struct rsnd_priv *priv, struct rsnd_dma *dma, int id, in rsnd_dmaen_init() argument
134 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_init()
137 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmaen_init()
165 cfg.src_addr = dma->src_addr; in rsnd_dmaen_init()
166 cfg.dst_addr = dma->dst_addr; in rsnd_dmaen_init()
180 rsnd_dma_quit(dma); in rsnd_dmaen_init()
192 static void rsnd_dmaen_quit(struct rsnd_dma *dma) in rsnd_dmaen_quit() argument
194 struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma); in rsnd_dmaen_quit()
278 #define rsnd_dmapp_addr(dmac, dma, reg) \ argument
280 (0x10 * rsnd_dma_to_dmapp(dma)->dmapp_id))
281 static void rsnd_dmapp_write(struct rsnd_dma *dma, u32 data, u32 reg) in rsnd_dmapp_write() argument
283 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmapp_write()
288 dev_dbg(dev, "w %p : %08x\n", rsnd_dmapp_addr(dmac, dma, reg), data); in rsnd_dmapp_write()
290 iowrite32(data, rsnd_dmapp_addr(dmac, dma, reg)); in rsnd_dmapp_write()
293 static u32 rsnd_dmapp_read(struct rsnd_dma *dma, u32 reg) in rsnd_dmapp_read() argument
295 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dmapp_read()
299 return ioread32(rsnd_dmapp_addr(dmac, dma, reg)); in rsnd_dmapp_read()
302 static void rsnd_dmapp_stop(struct rsnd_dma *dma) in rsnd_dmapp_stop() argument
306 rsnd_dmapp_write(dma, 0, PDMACHCR); in rsnd_dmapp_stop()
309 if (0 == rsnd_dmapp_read(dma, PDMACHCR)) in rsnd_dmapp_stop()
315 static void rsnd_dmapp_start(struct rsnd_dma *dma) in rsnd_dmapp_start() argument
317 struct rsnd_dmapp *dmapp = rsnd_dma_to_dmapp(dma); in rsnd_dmapp_start()
319 rsnd_dmapp_write(dma, dma->src_addr, PDMASAR); in rsnd_dmapp_start()
320 rsnd_dmapp_write(dma, dma->dst_addr, PDMADAR); in rsnd_dmapp_start()
321 rsnd_dmapp_write(dma, dmapp->chcr, PDMACHCR); in rsnd_dmapp_start()
324 static int rsnd_dmapp_init(struct rsnd_priv *priv, struct rsnd_dma *dma, int id, in rsnd_dmapp_init() argument
327 struct rsnd_dmapp *dmapp = rsnd_dma_to_dmapp(dma); in rsnd_dmapp_init()
336 rsnd_dmapp_stop(dma); in rsnd_dmapp_init()
339 dmapp->dmapp_id, &dma->src_addr, &dma->dst_addr, dmapp->chcr); in rsnd_dmapp_init()
466 static void rsnd_dma_of_path(struct rsnd_dma *dma, in rsnd_dma_of_path() argument
471 struct rsnd_mod *this = rsnd_dma_to_mod(dma); in rsnd_dma_of_path()
527 void rsnd_dma_stop(struct rsnd_dma *dma) in rsnd_dma_stop() argument
529 dma->ops->stop(dma); in rsnd_dma_stop()
532 void rsnd_dma_start(struct rsnd_dma *dma) in rsnd_dma_start() argument
534 dma->ops->start(dma); in rsnd_dma_start()
537 void rsnd_dma_quit(struct rsnd_dma *dma) in rsnd_dma_quit() argument
539 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dma_quit()
546 dma->ops->quit(dma); in rsnd_dma_quit()
549 int rsnd_dma_init(struct rsnd_priv *priv, struct rsnd_dma *dma, int id) in rsnd_dma_init() argument
551 struct rsnd_mod *mod = rsnd_dma_to_mod(dma); in rsnd_dma_init()
567 rsnd_dma_of_path(dma, is_play, &mod_from, &mod_to); in rsnd_dma_init()
569 dma->src_addr = rsnd_dma_addr(priv, mod_from, is_play, 1); in rsnd_dma_init()
570 dma->dst_addr = rsnd_dma_addr(priv, mod_to, is_play, 0); in rsnd_dma_init()
574 dma->ops = &rsnd_dmapp_ops; in rsnd_dma_init()
576 dma->ops = &rsnd_dmaen_ops; in rsnd_dma_init()
580 dma->ops = &rsnd_dmaen_ops; in rsnd_dma_init()
582 return dma->ops->init(priv, dma, id, mod_from, mod_to); in rsnd_dma_init()
614 priv->dma = dmac; in rsnd_dma_probe()