Lines Matching refs:txd
381 struct s3c24xx_txd *txd = s3cchan->at; in s3c24xx_dma_getbytes_chan() local
384 return tc * txd->width; in s3c24xx_dma_getbytes_chan()
425 struct s3c24xx_txd *txd = kzalloc(sizeof(*txd), GFP_NOWAIT); in s3c24xx_dma_get_txd() local
427 if (txd) { in s3c24xx_dma_get_txd()
428 INIT_LIST_HEAD(&txd->dsg_list); in s3c24xx_dma_get_txd()
429 txd->dcon = S3C24XX_DCON_INT | S3C24XX_DCON_NORELOAD; in s3c24xx_dma_get_txd()
432 return txd; in s3c24xx_dma_get_txd()
435 static void s3c24xx_dma_free_txd(struct s3c24xx_txd *txd) in s3c24xx_dma_free_txd() argument
439 list_for_each_entry_safe(dsg, _dsg, &txd->dsg_list, node) { in s3c24xx_dma_free_txd()
444 kfree(txd); in s3c24xx_dma_free_txd()
448 struct s3c24xx_txd *txd) in s3c24xx_dma_start_next_sg() argument
453 struct s3c24xx_sg *dsg = list_entry(txd->at, struct s3c24xx_sg, node); in s3c24xx_dma_start_next_sg()
454 u32 dcon = txd->dcon; in s3c24xx_dma_start_next_sg()
458 switch (txd->width) { in s3c24xx_dma_start_next_sg()
492 writel_relaxed(txd->disrcc, phy->base + S3C24XX_DISRCC); in s3c24xx_dma_start_next_sg()
494 writel_relaxed(txd->didstc, phy->base + S3C24XX_DIDSTC); in s3c24xx_dma_start_next_sg()
515 struct s3c24xx_txd *txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_start_next_txd() local
517 list_del(&txd->vd.node); in s3c24xx_dma_start_next_txd()
519 s3cchan->at = txd; in s3c24xx_dma_start_next_txd()
526 txd->at = txd->dsg_list.next; in s3c24xx_dma_start_next_txd()
527 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_start_next_txd()
645 struct s3c24xx_txd *txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_desc_free() local
651 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_desc_free()
658 struct s3c24xx_txd *txd; in s3c24xx_dma_irq() local
679 txd = s3cchan->at; in s3c24xx_dma_irq()
680 if (txd) { in s3c24xx_dma_irq()
682 if (!list_is_last(txd->at, &txd->dsg_list)) { in s3c24xx_dma_irq()
683 txd->at = txd->at->next; in s3c24xx_dma_irq()
684 if (txd->cyclic) in s3c24xx_dma_irq()
685 vchan_cyclic_callback(&txd->vd); in s3c24xx_dma_irq()
686 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_irq()
687 } else if (!txd->cyclic) { in s3c24xx_dma_irq()
689 vchan_cookie_complete(&txd->vd); in s3c24xx_dma_irq()
700 vchan_cyclic_callback(&txd->vd); in s3c24xx_dma_irq()
703 txd->at = txd->dsg_list.next; in s3c24xx_dma_irq()
704 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_irq()
762 struct s3c24xx_txd *txd; in s3c24xx_dma_tx_status() local
788 txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_tx_status()
790 list_for_each_entry(dsg, &txd->dsg_list, node) in s3c24xx_dma_tx_status()
797 txd = s3cchan->at; in s3c24xx_dma_tx_status()
799 dsg = list_entry(txd->at, struct s3c24xx_sg, node); in s3c24xx_dma_tx_status()
800 list_for_each_entry_from(dsg, &txd->dsg_list, node) in s3c24xx_dma_tx_status()
826 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_memcpy() local
838 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_memcpy()
839 if (!txd) in s3c24xx_dma_prep_memcpy()
844 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_memcpy()
847 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_memcpy()
863 txd->width = (src_mod == 0 && dest_mod == 0) ? 4 : 1; in s3c24xx_dma_prep_memcpy()
866 txd->width = ((src_mod == 2 || src_mod == 0) && in s3c24xx_dma_prep_memcpy()
870 txd->width = 1; in s3c24xx_dma_prep_memcpy()
874 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | S3C24XX_DISRCC_INC_INCREMENT; in s3c24xx_dma_prep_memcpy()
875 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | S3C24XX_DIDSTC_INC_INCREMENT; in s3c24xx_dma_prep_memcpy()
876 txd->dcon |= S3C24XX_DCON_DEMAND | S3C24XX_DCON_SYNC_HCLK | in s3c24xx_dma_prep_memcpy()
879 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_memcpy()
890 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_dma_cyclic() local
907 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_dma_cyclic()
908 if (!txd) in s3c24xx_dma_prep_dma_cyclic()
911 txd->cyclic = 1; in s3c24xx_dma_prep_dma_cyclic()
914 txd->dcon |= S3C24XX_DCON_HANDSHAKE; in s3c24xx_dma_prep_dma_cyclic()
918 txd->dcon |= S3C24XX_DCON_SYNC_PCLK; in s3c24xx_dma_prep_dma_cyclic()
922 txd->dcon |= S3C24XX_DCON_SYNC_HCLK; in s3c24xx_dma_prep_dma_cyclic()
937 txd->dcon |= S3C24XX_DCON_SERV_SINGLE; in s3c24xx_dma_prep_dma_cyclic()
940 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | in s3c24xx_dma_prep_dma_cyclic()
942 txd->didstc = hwcfg; in s3c24xx_dma_prep_dma_cyclic()
944 txd->width = s3cchan->cfg.dst_addr_width; in s3c24xx_dma_prep_dma_cyclic()
946 txd->disrcc = hwcfg; in s3c24xx_dma_prep_dma_cyclic()
947 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | in s3c24xx_dma_prep_dma_cyclic()
950 txd->width = s3cchan->cfg.src_addr_width; in s3c24xx_dma_prep_dma_cyclic()
958 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_dma_cyclic()
961 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_dma_cyclic()
976 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_dma_cyclic()
988 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_slave_sg() local
998 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_slave_sg()
999 if (!txd) in s3c24xx_dma_prep_slave_sg()
1003 txd->dcon |= S3C24XX_DCON_HANDSHAKE; in s3c24xx_dma_prep_slave_sg()
1007 txd->dcon |= S3C24XX_DCON_SYNC_PCLK; in s3c24xx_dma_prep_slave_sg()
1011 txd->dcon |= S3C24XX_DCON_SYNC_HCLK; in s3c24xx_dma_prep_slave_sg()
1026 txd->dcon |= S3C24XX_DCON_SERV_SINGLE; in s3c24xx_dma_prep_slave_sg()
1029 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | in s3c24xx_dma_prep_slave_sg()
1031 txd->didstc = hwcfg; in s3c24xx_dma_prep_slave_sg()
1033 txd->width = s3cchan->cfg.dst_addr_width; in s3c24xx_dma_prep_slave_sg()
1035 txd->disrcc = hwcfg; in s3c24xx_dma_prep_slave_sg()
1036 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | in s3c24xx_dma_prep_slave_sg()
1039 txd->width = s3cchan->cfg.src_addr_width; in s3c24xx_dma_prep_slave_sg()
1041 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_slave_sg()
1050 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_slave_sg()
1053 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_slave_sg()
1065 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_slave_sg()