Lines Matching refs:lli

336 static u32 llc_hw_flen(struct owl_dma_lli *lli)  in llc_hw_flen()  argument
338 return lli->hw[OWL_DMADESC_FLEN] & GENMASK(19, 0); in llc_hw_flen()
342 struct owl_dma_lli *lli) in owl_dma_free_lli() argument
344 list_del(&lli->node); in owl_dma_free_lli()
345 dma_pool_free(od->lli_pool, lli, lli->phys); in owl_dma_free_lli()
350 struct owl_dma_lli *lli; in owl_dma_alloc_lli() local
353 lli = dma_pool_alloc(od->lli_pool, GFP_NOWAIT, &phys); in owl_dma_alloc_lli()
354 if (!lli) in owl_dma_alloc_lli()
357 INIT_LIST_HEAD(&lli->node); in owl_dma_alloc_lli()
358 lli->phys = phys; in owl_dma_alloc_lli()
360 return lli; in owl_dma_alloc_lli()
381 struct owl_dma_lli *lli, in owl_dma_cfg_lli() argument
429 lli->hw[OWL_DMADESC_CTRLA] = llc_hw_ctrla(mode, in owl_dma_cfg_lli()
438 lli->hw[OWL_DMADESC_NEXT_LLI] = 0; /* One link list by default */ in owl_dma_cfg_lli()
439 lli->hw[OWL_DMADESC_SADDR] = src; in owl_dma_cfg_lli()
440 lli->hw[OWL_DMADESC_DADDR] = dst; in owl_dma_cfg_lli()
441 lli->hw[OWL_DMADESC_SRC_STRIDE] = 0; in owl_dma_cfg_lli()
442 lli->hw[OWL_DMADESC_DST_STRIDE] = 0; in owl_dma_cfg_lli()
446 lli->hw[OWL_DMADESC_FLEN] = len; in owl_dma_cfg_lli()
452 lli->hw[OWL_DMADESC_CTRLB] = FCNT_VAL | ctrlb; in owl_dma_cfg_lli()
460 lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; in owl_dma_cfg_lli()
461 lli->hw[OWL_DMADESC_CTRLB] = ctrlb; in owl_dma_cfg_lli()
540 struct owl_dma_lli *lli; in owl_dma_start_next_txd() local
552 lli = list_first_entry(&txd->lli_list, in owl_dma_start_next_txd()
563 pchan_writel(pchan, OWL_DMAX_NEXT_DESCRIPTOR, lli->phys); in owl_dma_start_next_txd()
677 struct owl_dma_lli *lli, *_lli; in owl_dma_free_txd() local
682 list_for_each_entry_safe(lli, _lli, &txd->lli_list, node) in owl_dma_free_txd()
683 owl_dma_free_lli(od, lli); in owl_dma_free_txd()
774 struct owl_dma_lli *lli; in owl_dma_getbytes_chan() local
790 list_for_each_entry(lli, &txd->lli_list, node) { in owl_dma_getbytes_chan()
792 if (lli->phys == next_lli_phy) { in owl_dma_getbytes_chan()
793 list_for_each_entry(lli, &txd->lli_list, node) in owl_dma_getbytes_chan()
794 bytes += llc_hw_flen(lli); in owl_dma_getbytes_chan()
808 struct owl_dma_lli *lli; in owl_dma_tx_status() local
824 list_for_each_entry(lli, &txd->lli_list, node) in owl_dma_tx_status()
825 bytes += llc_hw_flen(lli); in owl_dma_tx_status()
873 struct owl_dma_lli *lli, *prev = NULL; in owl_dma_prep_memcpy() local
888 lli = owl_dma_alloc_lli(od); in owl_dma_prep_memcpy()
889 if (!lli) { in owl_dma_prep_memcpy()
896 ret = owl_dma_cfg_lli(vchan, lli, src + offset, dst + offset, in owl_dma_prep_memcpy()
904 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_dma_prep_memcpy()
925 struct owl_dma_lli *lli, *prev = NULL; in owl_dma_prep_slave_sg() local
947 lli = owl_dma_alloc_lli(od); in owl_dma_prep_slave_sg()
948 if (!lli) { in owl_dma_prep_slave_sg()
961 ret = owl_dma_cfg_lli(vchan, lli, src, dst, len, dir, sconfig, in owl_dma_prep_slave_sg()
968 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_dma_prep_slave_sg()
990 struct owl_dma_lli *lli, *prev = NULL, *first = NULL; in owl_prep_dma_cyclic() local
1003 lli = owl_dma_alloc_lli(od); in owl_prep_dma_cyclic()
1004 if (!lli) { in owl_prep_dma_cyclic()
1017 ret = owl_dma_cfg_lli(vchan, lli, src, dst, period_len, in owl_prep_dma_cyclic()
1025 first = lli; in owl_prep_dma_cyclic()
1027 prev = owl_dma_add_lli(txd, prev, lli, false); in owl_prep_dma_cyclic()