Lines Matching full:lli
174 * @lli_list: link list of lli nodes
217 * @lli_pool: a pool for the LLI descriptors
337 static u32 llc_hw_flen(struct owl_dma_lli *lli) in llc_hw_flen() argument
339 return lli->hw[OWL_DMADESC_FLEN] & GENMASK(19, 0); in llc_hw_flen()
343 struct owl_dma_lli *lli) in owl_dma_free_lli() argument
345 list_del(&lli->node); in owl_dma_free_lli()
346 dma_pool_free(od->lli_pool, lli, lli->phys); in owl_dma_free_lli()
351 struct owl_dma_lli *lli; in owl_dma_alloc_lli() local
354 lli = dma_pool_alloc(od->lli_pool, GFP_NOWAIT, &phys); in owl_dma_alloc_lli()
355 if (!lli) in owl_dma_alloc_lli()
358 INIT_LIST_HEAD(&lli->node); in owl_dma_alloc_lli()
359 lli->phys = phys; in owl_dma_alloc_lli()
361 return lli; in owl_dma_alloc_lli()
382 struct owl_dma_lli *lli, in owl_dma_cfg_lli() argument
430 lli->hw[OWL_DMADESC_CTRLA] = llc_hw_ctrla(mode, in owl_dma_cfg_lli()
439 lli->hw[OWL_DMADESC_NEXT_LLI] = 0; /* One link list by default */ in owl_dma_cfg_lli()
440 lli->hw[OWL_DMADESC_SADDR] = src; in owl_dma_cfg_lli()
441 lli->hw[OWL_DMADESC_DADDR] = dst; in owl_dma_cfg_lli()
442 lli->hw[OWL_DMADESC_SRC_STRIDE] = 0; in owl_dma_cfg_lli()
443 lli->hw[OWL_DMADESC_DST_STRIDE] = 0; in owl_dma_cfg_lli()
447 lli->hw[OWL_DMADESC_FLEN] = len; in owl_dma_cfg_lli()
453 lli->hw[OWL_DMADESC_CTRLB] = FCNT_VAL | ctrlb; in owl_dma_cfg_lli()
461 lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; in owl_dma_cfg_lli()
462 lli->hw[OWL_DMADESC_CTRLB] = ctrlb; in owl_dma_cfg_lli()
541 struct owl_dma_lli *lli; in owl_dma_start_next_txd() local
553 lli = list_first_entry(&txd->lli_list, in owl_dma_start_next_txd()
564 pchan_writel(pchan, OWL_DMAX_NEXT_DESCRIPTOR, lli->phys); in owl_dma_start_next_txd()
678 struct owl_dma_lli *lli, *_lli; in owl_dma_free_txd() local
683 list_for_each_entry_safe(lli, _lli, &txd->lli_list, node) in owl_dma_free_txd()
684 owl_dma_free_lli(od, lli); in owl_dma_free_txd()
775 struct owl_dma_lli *lli; in owl_dma_getbytes_chan() local
791 list_for_each_entry(lli, &txd->lli_list, node) { in owl_dma_getbytes_chan()
793 if (lli->phys == next_lli_phy) { in owl_dma_getbytes_chan()
794 list_for_each_entry(lli, &txd->lli_list, node) in owl_dma_getbytes_chan()
795 bytes += llc_hw_flen(lli); in owl_dma_getbytes_chan()
809 struct owl_dma_lli *lli; in owl_dma_tx_status() local
825 list_for_each_entry(lli, &txd->lli_list, node) in owl_dma_tx_status()
826 bytes += llc_hw_flen(lli); in owl_dma_tx_status()
874 struct owl_dma_lli *lli, *prev = NULL; in owl_dma_prep_memcpy() local
889 lli = owl_dma_alloc_lli(od); in owl_dma_prep_memcpy()
890 if (!lli) { in owl_dma_prep_memcpy()
891 dev_warn(chan2dev(chan), "failed to allocate lli\n"); in owl_dma_prep_memcpy()
897 ret = owl_dma_cfg_lli(vchan, lli, src + offset, dst + offset, in owl_dma_prep_memcpy()
901 dev_warn(chan2dev(chan), "failed to config lli\n"); in owl_dma_prep_memcpy()
905 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_dma_prep_memcpy()
926 struct owl_dma_lli *lli, *prev = NULL; in owl_dma_prep_slave_sg() local
948 lli = owl_dma_alloc_lli(od); in owl_dma_prep_slave_sg()
949 if (!lli) { in owl_dma_prep_slave_sg()
950 dev_err(chan2dev(chan), "failed to allocate lli"); in owl_dma_prep_slave_sg()
962 ret = owl_dma_cfg_lli(vchan, lli, src, dst, len, dir, sconfig, in owl_dma_prep_slave_sg()
965 dev_warn(chan2dev(chan), "failed to config lli"); in owl_dma_prep_slave_sg()
969 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_dma_prep_slave_sg()
991 struct owl_dma_lli *lli, *prev = NULL, *first = NULL; in owl_prep_dma_cyclic() local
1004 lli = owl_dma_alloc_lli(od); in owl_prep_dma_cyclic()
1005 if (!lli) { in owl_prep_dma_cyclic()
1006 dev_warn(chan2dev(chan), "failed to allocate lli"); in owl_prep_dma_cyclic()
1018 ret = owl_dma_cfg_lli(vchan, lli, src, dst, period_len, in owl_prep_dma_cyclic()
1021 dev_warn(chan2dev(chan), "failed to config lli"); in owl_prep_dma_cyclic()
1026 first = lli; in owl_prep_dma_cyclic()
1028 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_prep_dma_cyclic()