Lines Matching full:lli
196 /* LLI == Linked List Item; aka DMA buffer descriptor */
205 u32 dscr; /* chain to next lli */
211 * @lli: linked list item that is passed to the DMA controller
212 * @lli_phys: physical address of the LLI.
216 struct at_lli *lli; member
343 * @lli_pool: hw lli table
413 static void atc_dump_lli(struct at_dma_chan *atchan, struct at_lli *lli) in atc_dump_lli() argument
417 &lli->saddr, &lli->daddr, in atc_dump_lli()
418 lli->ctrla, lli->ctrlb, &lli->dscr); in atc_dump_lli()
482 u32 ctrlb = desc->sg[i].lli->ctrlb; in set_lli_eol()
487 desc->sg[i].lli->ctrlb = ctrlb; in set_lli_eol()
488 desc->sg[i].lli->dscr = 0; in set_lli_eol()
551 desc->sg[i - 1].lli->dscr = atdma_sg->lli_phys; in atdma_lli_chain()
599 if (desc->sg[i].lli) in atdma_desc_free()
600 dma_pool_free(atdma->lli_pool, desc->sg[i].lli, in atdma_desc_free()
641 * Calculate the residue by removing the length of the Linked List Item (LLI)
642 * already transferred from the total length. To get the current LLI we can use
644 * value of each LLI.
647 * source for the LLI. So we can compute a more accurate residue by also
651 * race condition may occur: the first read register may refer to one LLI
652 * whereas the second read may refer to a later LLI in the list because of the
670 * to the very same LLI as well as the CTRLA value read inbetween does. For
716 if (desc->sg[0].lli->dscr == dscr) { in atc_get_llis_residue()
723 if (desc->sg[i].lli && desc->sg[i].lli->dscr == dscr) in atc_get_llis_residue()
729 * For the current LLI in the chain we can calculate the remaining bytes in atc_get_llis_residue()
763 if (desc->sg[0].lli->dscr) in atc_get_residue()
797 atc_dump_lli(atchan, desc->sg[i].lli); in atc_handle_error()
876 struct at_lli *lli; in atc_prep_dma_interleaved() local
938 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, GFP_NOWAIT, in atc_prep_dma_interleaved()
940 if (!atdma_sg->lli) { in atc_prep_dma_interleaved()
944 lli = atdma_sg->lli; in atc_prep_dma_interleaved()
946 lli->saddr = xt->src_start; in atc_prep_dma_interleaved()
947 lli->daddr = xt->dst_start; in atc_prep_dma_interleaved()
948 lli->ctrla = ctrla | xfer_count; in atc_prep_dma_interleaved()
949 lli->ctrlb = ctrlb; in atc_prep_dma_interleaved()
1017 struct at_lli *lli; in atc_prep_dma_memcpy() local
1019 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, GFP_NOWAIT, in atc_prep_dma_memcpy()
1021 if (!atdma_sg->lli) in atc_prep_dma_memcpy()
1023 lli = atdma_sg->lli; in atc_prep_dma_memcpy()
1028 lli->saddr = src + offset; in atc_prep_dma_memcpy()
1029 lli->daddr = dest + offset; in atc_prep_dma_memcpy()
1030 lli->ctrla = ctrla | xfer_count; in atc_prep_dma_memcpy()
1031 lli->ctrlb = ctrlb; in atc_prep_dma_memcpy()
1055 struct at_lli *lli; in atdma_create_memset_lli() local
1069 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, GFP_NOWAIT, in atdma_create_memset_lli()
1071 if (!atdma_sg->lli) in atdma_create_memset_lli()
1073 lli = atdma_sg->lli; in atdma_create_memset_lli()
1075 lli->saddr = psrc; in atdma_create_memset_lli()
1076 lli->daddr = pdst; in atdma_create_memset_lli()
1077 lli->ctrla = ctrla | xfer_count; in atdma_create_memset_lli()
1078 lli->ctrlb = ctrlb; in atdma_create_memset_lli()
1299 struct at_lli *lli; in atc_prep_slave_sg() local
1303 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, in atc_prep_slave_sg()
1306 if (!atdma_sg->lli) in atc_prep_slave_sg()
1308 lli = atdma_sg->lli; in atc_prep_slave_sg()
1321 lli->saddr = mem; in atc_prep_slave_sg()
1322 lli->daddr = reg; in atc_prep_slave_sg()
1323 lli->ctrla = ctrla | in atc_prep_slave_sg()
1326 lli->ctrlb = ctrlb; in atc_prep_slave_sg()
1348 struct at_lli *lli; in atc_prep_slave_sg() local
1352 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, in atc_prep_slave_sg()
1355 if (!atdma_sg->lli) in atc_prep_slave_sg()
1357 lli = atdma_sg->lli; in atc_prep_slave_sg()
1370 lli->saddr = reg; in atc_prep_slave_sg()
1371 lli->daddr = mem; in atc_prep_slave_sg()
1372 lli->ctrla = ctrla | in atc_prep_slave_sg()
1375 lli->ctrlb = ctrlb; in atc_prep_slave_sg()
1435 struct at_lli *lli; in atc_dma_cyclic_fill_desc() local
1437 atdma_sg->lli = dma_pool_alloc(atdma->lli_pool, GFP_ATOMIC, in atc_dma_cyclic_fill_desc()
1439 if (!atdma_sg->lli) in atc_dma_cyclic_fill_desc()
1441 lli = atdma_sg->lli; in atc_dma_cyclic_fill_desc()
1445 lli->saddr = buf_addr + (period_len * i); in atc_dma_cyclic_fill_desc()
1446 lli->daddr = sconfig->dst_addr; in atc_dma_cyclic_fill_desc()
1447 lli->ctrlb = FIELD_PREP(ATC_DST_ADDR_MODE, in atc_dma_cyclic_fill_desc()
1458 lli->saddr = sconfig->src_addr; in atc_dma_cyclic_fill_desc()
1459 lli->daddr = buf_addr + (period_len * i); in atc_dma_cyclic_fill_desc()
1460 lli->ctrlb = FIELD_PREP(ATC_DST_ADDR_MODE, in atc_dma_cyclic_fill_desc()
1473 lli->ctrla = FIELD_PREP(ATC_SCSIZE, sconfig->src_maxburst) | in atc_dma_cyclic_fill_desc()
1548 desc->sg[i - 1].lli->dscr = desc->sg[0].lli_phys; in atc_prep_dma_cyclic()
2000 dev_err(&pdev->dev, "Unable to allocate DMA LLI descriptor pool\n"); in at_dma_probe()