Lines Matching refs:d

165 static inline struct omap_dmadev *to_omap_dma_dev(struct dma_device *d)  in to_omap_dma_dev()  argument
167 return container_of(d, struct omap_dmadev, ddev); in to_omap_dma_dev()
284 static void omap_dma_start(struct omap_chan *c, struct omap_desc *d) in omap_dma_start() argument
296 omap_dma_chan_write(c, CICR, d->cicr); in omap_dma_start()
299 omap_dma_chan_write(c, CCR, d->ccr | CCR_ENABLE); in omap_dma_start()
363 static void omap_dma_start_sg(struct omap_chan *c, struct omap_desc *d, in omap_dma_start_sg() argument
366 struct omap_sg *sg = d->sg + idx; in omap_dma_start_sg()
369 if (d->dir == DMA_DEV_TO_MEM || d->dir == DMA_MEM_TO_MEM) { in omap_dma_start_sg()
385 omap_dma_start(c, d); in omap_dma_start_sg()
391 struct omap_desc *d; in omap_dma_start_desc() local
401 c->desc = d = to_omap_dma_desc(&vd->tx); in omap_dma_start_desc()
411 omap_dma_chan_write(c, CCR, d->ccr); in omap_dma_start_desc()
413 omap_dma_chan_write(c, CCR2, d->ccr >> 16); in omap_dma_start_desc()
415 if (d->dir == DMA_DEV_TO_MEM || d->dir == DMA_MEM_TO_MEM) { in omap_dma_start_desc()
425 omap_dma_chan_write(c, cxsa, d->dev_addr); in omap_dma_start_desc()
427 omap_dma_chan_write(c, cxfi, d->fi); in omap_dma_start_desc()
428 omap_dma_chan_write(c, CSDP, d->csdp); in omap_dma_start_desc()
429 omap_dma_chan_write(c, CLNK_CTRL, d->clnk_ctrl); in omap_dma_start_desc()
431 omap_dma_start_sg(c, d, 0); in omap_dma_start_desc()
437 struct omap_desc *d; in omap_dma_callback() local
441 d = c->desc; in omap_dma_callback()
442 if (d) { in omap_dma_callback()
444 if (++c->sgidx < d->sglen) { in omap_dma_callback()
445 omap_dma_start_sg(c, d, c->sgidx); in omap_dma_callback()
448 vchan_cookie_complete(&d->vd); in omap_dma_callback()
451 vchan_cyclic_callback(&d->vd); in omap_dma_callback()
466 struct omap_dmadev *d = (struct omap_dmadev *)data; in omap_dma_sched() local
469 spin_lock_irq(&d->lock); in omap_dma_sched()
470 list_splice_tail_init(&d->pending, &head); in omap_dma_sched()
471 spin_unlock_irq(&d->lock); in omap_dma_sched()
604 static size_t omap_dma_desc_size(struct omap_desc *d) in omap_dma_desc_size() argument
609 for (size = i = 0; i < d->sglen; i++) in omap_dma_desc_size()
610 size += omap_dma_sg_size(&d->sg[i]); in omap_dma_desc_size()
612 return size * es_bytes[d->es]; in omap_dma_desc_size()
615 static size_t omap_dma_desc_size_pos(struct omap_desc *d, dma_addr_t addr) in omap_dma_desc_size_pos() argument
618 size_t size, es_size = es_bytes[d->es]; in omap_dma_desc_size_pos()
620 for (size = i = 0; i < d->sglen; i++) { in omap_dma_desc_size_pos()
621 size_t this_size = omap_dma_sg_size(&d->sg[i]) * es_size; in omap_dma_desc_size_pos()
625 else if (addr >= d->sg[i].addr && in omap_dma_desc_size_pos()
626 addr < d->sg[i].addr + this_size) in omap_dma_desc_size_pos()
627 size += d->sg[i].addr + this_size - addr; in omap_dma_desc_size_pos()
717 struct omap_desc *d = c->desc; in omap_dma_tx_status() local
720 if (d->dir == DMA_MEM_TO_DEV) in omap_dma_tx_status()
722 else if (d->dir == DMA_DEV_TO_MEM) in omap_dma_tx_status()
727 txstate->residue = omap_dma_desc_size_pos(d, pos); in omap_dma_tx_status()
748 struct omap_dmadev *d = to_omap_dma_dev(chan->device); in omap_dma_issue_pending() local
749 spin_lock(&d->lock); in omap_dma_issue_pending()
751 list_add_tail(&c->node, &d->pending); in omap_dma_issue_pending()
752 spin_unlock(&d->lock); in omap_dma_issue_pending()
753 tasklet_schedule(&d->task); in omap_dma_issue_pending()
769 struct omap_desc *d; in omap_dma_prep_slave_sg() local
803 d = kzalloc(sizeof(*d) + sglen * sizeof(d->sg[0]), GFP_ATOMIC); in omap_dma_prep_slave_sg()
804 if (!d) in omap_dma_prep_slave_sg()
807 d->dir = dir; in omap_dma_prep_slave_sg()
808 d->dev_addr = dev_addr; in omap_dma_prep_slave_sg()
809 d->es = es; in omap_dma_prep_slave_sg()
811 d->ccr = c->ccr | CCR_SYNC_FRAME; in omap_dma_prep_slave_sg()
813 d->ccr |= CCR_DST_AMODE_POSTINC | CCR_SRC_AMODE_CONSTANT; in omap_dma_prep_slave_sg()
815 d->ccr |= CCR_DST_AMODE_CONSTANT | CCR_SRC_AMODE_POSTINC; in omap_dma_prep_slave_sg()
817 d->cicr = CICR_DROP_IE | CICR_BLOCK_IE; in omap_dma_prep_slave_sg()
818 d->csdp = es; in omap_dma_prep_slave_sg()
821 d->cicr |= CICR_TOUT_IE; in omap_dma_prep_slave_sg()
824 d->csdp |= CSDP_DST_PORT_EMIFF | CSDP_SRC_PORT_TIPB; in omap_dma_prep_slave_sg()
826 d->csdp |= CSDP_DST_PORT_TIPB | CSDP_SRC_PORT_EMIFF; in omap_dma_prep_slave_sg()
829 d->ccr |= CCR_TRIGGER_SRC; in omap_dma_prep_slave_sg()
831 d->cicr |= CICR_MISALIGNED_ERR_IE | CICR_TRANS_ERR_IE; in omap_dma_prep_slave_sg()
834 d->clnk_ctrl = c->dma_ch; in omap_dma_prep_slave_sg()
848 d->sg[j].addr = sg_dma_address(sgent); in omap_dma_prep_slave_sg()
849 d->sg[j].en = en; in omap_dma_prep_slave_sg()
850 d->sg[j].fn = sg_dma_len(sgent) / frame_bytes; in omap_dma_prep_slave_sg()
854 d->sglen = j; in omap_dma_prep_slave_sg()
856 return vchan_tx_prep(&c->vc, &d->vd, tx_flags); in omap_dma_prep_slave_sg()
866 struct omap_desc *d; in omap_dma_prep_dma_cyclic() local
900 d = kzalloc(sizeof(*d) + sizeof(d->sg[0]), GFP_ATOMIC); in omap_dma_prep_dma_cyclic()
901 if (!d) in omap_dma_prep_dma_cyclic()
904 d->dir = dir; in omap_dma_prep_dma_cyclic()
905 d->dev_addr = dev_addr; in omap_dma_prep_dma_cyclic()
906 d->fi = burst; in omap_dma_prep_dma_cyclic()
907 d->es = es; in omap_dma_prep_dma_cyclic()
908 d->sg[0].addr = buf_addr; in omap_dma_prep_dma_cyclic()
909 d->sg[0].en = period_len / es_bytes[es]; in omap_dma_prep_dma_cyclic()
910 d->sg[0].fn = buf_len / period_len; in omap_dma_prep_dma_cyclic()
911 d->sglen = 1; in omap_dma_prep_dma_cyclic()
913 d->ccr = c->ccr; in omap_dma_prep_dma_cyclic()
915 d->ccr |= CCR_DST_AMODE_POSTINC | CCR_SRC_AMODE_CONSTANT; in omap_dma_prep_dma_cyclic()
917 d->ccr |= CCR_DST_AMODE_CONSTANT | CCR_SRC_AMODE_POSTINC; in omap_dma_prep_dma_cyclic()
919 d->cicr = CICR_DROP_IE; in omap_dma_prep_dma_cyclic()
921 d->cicr |= CICR_FRAME_IE; in omap_dma_prep_dma_cyclic()
923 d->csdp = es; in omap_dma_prep_dma_cyclic()
926 d->cicr |= CICR_TOUT_IE; in omap_dma_prep_dma_cyclic()
929 d->csdp |= CSDP_DST_PORT_EMIFF | CSDP_SRC_PORT_MPUI; in omap_dma_prep_dma_cyclic()
931 d->csdp |= CSDP_DST_PORT_MPUI | CSDP_SRC_PORT_EMIFF; in omap_dma_prep_dma_cyclic()
934 d->ccr |= CCR_SYNC_PACKET; in omap_dma_prep_dma_cyclic()
936 d->ccr |= CCR_SYNC_ELEMENT; in omap_dma_prep_dma_cyclic()
939 d->ccr |= CCR_TRIGGER_SRC; in omap_dma_prep_dma_cyclic()
940 d->csdp |= CSDP_DST_PACKED; in omap_dma_prep_dma_cyclic()
942 d->csdp |= CSDP_SRC_PACKED; in omap_dma_prep_dma_cyclic()
945 d->cicr |= CICR_MISALIGNED_ERR_IE | CICR_TRANS_ERR_IE; in omap_dma_prep_dma_cyclic()
947 d->csdp |= CSDP_DST_BURST_64 | CSDP_SRC_BURST_64; in omap_dma_prep_dma_cyclic()
951 d->ccr |= CCR_AUTO_INIT | CCR_REPEAT; in omap_dma_prep_dma_cyclic()
953 d->clnk_ctrl = c->dma_ch | CLNK_CTRL_ENABLE_LNK; in omap_dma_prep_dma_cyclic()
957 return vchan_tx_prep(&c->vc, &d->vd, flags); in omap_dma_prep_dma_cyclic()
965 struct omap_desc *d; in omap_dma_prep_dma_memcpy() local
968 d = kzalloc(sizeof(*d) + sizeof(d->sg[0]), GFP_ATOMIC); in omap_dma_prep_dma_memcpy()
969 if (!d) in omap_dma_prep_dma_memcpy()
976 d->dir = DMA_MEM_TO_MEM; in omap_dma_prep_dma_memcpy()
977 d->dev_addr = src; in omap_dma_prep_dma_memcpy()
978 d->fi = 0; in omap_dma_prep_dma_memcpy()
979 d->es = data_type; in omap_dma_prep_dma_memcpy()
980 d->sg[0].en = len / BIT(data_type); in omap_dma_prep_dma_memcpy()
981 d->sg[0].fn = 1; in omap_dma_prep_dma_memcpy()
982 d->sg[0].addr = dest; in omap_dma_prep_dma_memcpy()
983 d->sglen = 1; in omap_dma_prep_dma_memcpy()
984 d->ccr = c->ccr; in omap_dma_prep_dma_memcpy()
985 d->ccr |= CCR_DST_AMODE_POSTINC | CCR_SRC_AMODE_POSTINC; in omap_dma_prep_dma_memcpy()
987 d->cicr = CICR_DROP_IE; in omap_dma_prep_dma_memcpy()
989 d->cicr |= CICR_FRAME_IE; in omap_dma_prep_dma_memcpy()
991 d->csdp = data_type; in omap_dma_prep_dma_memcpy()
994 d->cicr |= CICR_TOUT_IE; in omap_dma_prep_dma_memcpy()
995 d->csdp |= CSDP_DST_PORT_EMIFF | CSDP_SRC_PORT_EMIFF; in omap_dma_prep_dma_memcpy()
997 d->csdp |= CSDP_DST_PACKED | CSDP_SRC_PACKED; in omap_dma_prep_dma_memcpy()
998 d->cicr |= CICR_MISALIGNED_ERR_IE | CICR_TRANS_ERR_IE; in omap_dma_prep_dma_memcpy()
999 d->csdp |= CSDP_DST_BURST_64 | CSDP_SRC_BURST_64; in omap_dma_prep_dma_memcpy()
1002 return vchan_tx_prep(&c->vc, &d->vd, tx_flags); in omap_dma_prep_dma_memcpy()
1021 struct omap_dmadev *d = to_omap_dma_dev(c->vc.chan.device); in omap_dma_terminate_all() local
1028 spin_lock(&d->lock); in omap_dma_terminate_all()
1030 spin_unlock(&d->lock); in omap_dma_terminate_all()