• Home
  • Raw
  • Download

Lines Matching refs:txd

373 	struct s3c24xx_txd *txd = s3cchan->at;  in s3c24xx_dma_getbytes_chan()  local
376 return tc * txd->width; in s3c24xx_dma_getbytes_chan()
417 struct s3c24xx_txd *txd = kzalloc(sizeof(*txd), GFP_NOWAIT); in s3c24xx_dma_get_txd() local
419 if (txd) { in s3c24xx_dma_get_txd()
420 INIT_LIST_HEAD(&txd->dsg_list); in s3c24xx_dma_get_txd()
421 txd->dcon = S3C24XX_DCON_INT | S3C24XX_DCON_NORELOAD; in s3c24xx_dma_get_txd()
424 return txd; in s3c24xx_dma_get_txd()
427 static void s3c24xx_dma_free_txd(struct s3c24xx_txd *txd) in s3c24xx_dma_free_txd() argument
431 list_for_each_entry_safe(dsg, _dsg, &txd->dsg_list, node) { in s3c24xx_dma_free_txd()
436 kfree(txd); in s3c24xx_dma_free_txd()
440 struct s3c24xx_txd *txd) in s3c24xx_dma_start_next_sg() argument
445 struct s3c24xx_sg *dsg = list_entry(txd->at, struct s3c24xx_sg, node); in s3c24xx_dma_start_next_sg()
446 u32 dcon = txd->dcon; in s3c24xx_dma_start_next_sg()
450 switch (txd->width) { in s3c24xx_dma_start_next_sg()
484 writel_relaxed(txd->disrcc, phy->base + S3C24XX_DISRCC); in s3c24xx_dma_start_next_sg()
486 writel_relaxed(txd->didstc, phy->base + S3C24XX_DIDSTC); in s3c24xx_dma_start_next_sg()
507 struct s3c24xx_txd *txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_start_next_txd() local
509 list_del(&txd->vd.node); in s3c24xx_dma_start_next_txd()
511 s3cchan->at = txd; in s3c24xx_dma_start_next_txd()
518 txd->at = txd->dsg_list.next; in s3c24xx_dma_start_next_txd()
519 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_start_next_txd()
628 struct s3c24xx_txd *txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_desc_free() local
634 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_desc_free()
641 struct s3c24xx_txd *txd; in s3c24xx_dma_irq() local
662 txd = s3cchan->at; in s3c24xx_dma_irq()
663 if (txd) { in s3c24xx_dma_irq()
665 if (!list_is_last(txd->at, &txd->dsg_list)) { in s3c24xx_dma_irq()
666 txd->at = txd->at->next; in s3c24xx_dma_irq()
667 if (txd->cyclic) in s3c24xx_dma_irq()
668 vchan_cyclic_callback(&txd->vd); in s3c24xx_dma_irq()
669 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_irq()
670 } else if (!txd->cyclic) { in s3c24xx_dma_irq()
672 vchan_cookie_complete(&txd->vd); in s3c24xx_dma_irq()
683 vchan_cyclic_callback(&txd->vd); in s3c24xx_dma_irq()
686 txd->at = txd->dsg_list.next; in s3c24xx_dma_irq()
687 s3c24xx_dma_start_next_sg(s3cchan, txd); in s3c24xx_dma_irq()
761 struct s3c24xx_txd *txd; in s3c24xx_dma_tx_status() local
783 txd = to_s3c24xx_txd(&vd->tx); in s3c24xx_dma_tx_status()
785 list_for_each_entry(dsg, &txd->dsg_list, node) in s3c24xx_dma_tx_status()
792 txd = s3cchan->at; in s3c24xx_dma_tx_status()
794 dsg = list_entry(txd->at, struct s3c24xx_sg, node); in s3c24xx_dma_tx_status()
795 list_for_each_entry_from(dsg, &txd->dsg_list, node) in s3c24xx_dma_tx_status()
821 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_memcpy() local
833 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_memcpy()
834 if (!txd) in s3c24xx_dma_prep_memcpy()
839 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_memcpy()
842 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_memcpy()
858 txd->width = (src_mod == 0 && dest_mod == 0) ? 4 : 1; in s3c24xx_dma_prep_memcpy()
861 txd->width = ((src_mod == 2 || src_mod == 0) && in s3c24xx_dma_prep_memcpy()
865 txd->width = 1; in s3c24xx_dma_prep_memcpy()
869 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | S3C24XX_DISRCC_INC_INCREMENT; in s3c24xx_dma_prep_memcpy()
870 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | S3C24XX_DIDSTC_INC_INCREMENT; in s3c24xx_dma_prep_memcpy()
871 txd->dcon |= S3C24XX_DCON_DEMAND | S3C24XX_DCON_SYNC_HCLK | in s3c24xx_dma_prep_memcpy()
874 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_memcpy()
885 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_dma_cyclic() local
902 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_dma_cyclic()
903 if (!txd) in s3c24xx_dma_prep_dma_cyclic()
906 txd->cyclic = 1; in s3c24xx_dma_prep_dma_cyclic()
909 txd->dcon |= S3C24XX_DCON_HANDSHAKE; in s3c24xx_dma_prep_dma_cyclic()
913 txd->dcon |= S3C24XX_DCON_SYNC_PCLK; in s3c24xx_dma_prep_dma_cyclic()
917 txd->dcon |= S3C24XX_DCON_SYNC_HCLK; in s3c24xx_dma_prep_dma_cyclic()
932 txd->dcon |= S3C24XX_DCON_SERV_SINGLE; in s3c24xx_dma_prep_dma_cyclic()
935 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | in s3c24xx_dma_prep_dma_cyclic()
937 txd->didstc = hwcfg; in s3c24xx_dma_prep_dma_cyclic()
939 txd->width = s3cchan->cfg.dst_addr_width; in s3c24xx_dma_prep_dma_cyclic()
941 txd->disrcc = hwcfg; in s3c24xx_dma_prep_dma_cyclic()
942 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | in s3c24xx_dma_prep_dma_cyclic()
945 txd->width = s3cchan->cfg.src_addr_width; in s3c24xx_dma_prep_dma_cyclic()
953 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_dma_cyclic()
956 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_dma_cyclic()
971 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_dma_cyclic()
983 struct s3c24xx_txd *txd; in s3c24xx_dma_prep_slave_sg() local
993 txd = s3c24xx_dma_get_txd(); in s3c24xx_dma_prep_slave_sg()
994 if (!txd) in s3c24xx_dma_prep_slave_sg()
998 txd->dcon |= S3C24XX_DCON_HANDSHAKE; in s3c24xx_dma_prep_slave_sg()
1002 txd->dcon |= S3C24XX_DCON_SYNC_PCLK; in s3c24xx_dma_prep_slave_sg()
1006 txd->dcon |= S3C24XX_DCON_SYNC_HCLK; in s3c24xx_dma_prep_slave_sg()
1021 txd->dcon |= S3C24XX_DCON_SERV_SINGLE; in s3c24xx_dma_prep_slave_sg()
1024 txd->disrcc = S3C24XX_DISRCC_LOC_AHB | in s3c24xx_dma_prep_slave_sg()
1026 txd->didstc = hwcfg; in s3c24xx_dma_prep_slave_sg()
1028 txd->width = s3cchan->cfg.dst_addr_width; in s3c24xx_dma_prep_slave_sg()
1030 txd->disrcc = hwcfg; in s3c24xx_dma_prep_slave_sg()
1031 txd->didstc = S3C24XX_DIDSTC_LOC_AHB | in s3c24xx_dma_prep_slave_sg()
1034 txd->width = s3cchan->cfg.src_addr_width; in s3c24xx_dma_prep_slave_sg()
1036 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_slave_sg()
1045 s3c24xx_dma_free_txd(txd); in s3c24xx_dma_prep_slave_sg()
1048 list_add_tail(&dsg->node, &txd->dsg_list); in s3c24xx_dma_prep_slave_sg()
1060 return vchan_tx_prep(&s3cchan->vc, &txd->vd, flags); in s3c24xx_dma_prep_slave_sg()