Lines Matching refs:ds
202 struct zx_dma_desc_sw *ds = in zx_dma_start_txd() local
208 list_del(&ds->vd.node); in zx_dma_start_txd()
209 c->phy->ds_run = ds; in zx_dma_start_txd()
212 zx_dma_set_desc(c->phy, ds->desc_hw); in zx_dma_start_txd()
363 struct zx_dma_desc_sw *ds = p->ds_run; in zx_dma_tx_status() local
368 index = (clli - ds->desc_hw_lli) / sizeof(struct zx_desc_hw); in zx_dma_tx_status()
369 for (; index < ds->desc_num; index++) { in zx_dma_tx_status()
370 bytes += ds->desc_hw[index].src_x; in zx_dma_tx_status()
372 if (!ds->desc_hw[index].lli) in zx_dma_tx_status()
408 static void zx_dma_fill_desc(struct zx_dma_desc_sw *ds, dma_addr_t dst, in zx_dma_fill_desc() argument
411 if ((num + 1) < ds->desc_num) in zx_dma_fill_desc()
412 ds->desc_hw[num].lli = ds->desc_hw_lli + (num + 1) * in zx_dma_fill_desc()
414 ds->desc_hw[num].saddr = src; in zx_dma_fill_desc()
415 ds->desc_hw[num].daddr = dst; in zx_dma_fill_desc()
416 ds->desc_hw[num].src_x = len; in zx_dma_fill_desc()
417 ds->desc_hw[num].ctr = ccfg; in zx_dma_fill_desc()
424 struct zx_dma_desc_sw *ds; in zx_alloc_desc_resource() local
434 ds = kzalloc(sizeof(*ds), GFP_ATOMIC); in zx_alloc_desc_resource()
435 if (!ds) in zx_alloc_desc_resource()
438 ds->desc_hw = dma_pool_alloc(d->pool, GFP_NOWAIT, &ds->desc_hw_lli); in zx_alloc_desc_resource()
439 if (!ds->desc_hw) { in zx_alloc_desc_resource()
441 kfree(ds); in zx_alloc_desc_resource()
444 memset(ds->desc_hw, 0, sizeof(struct zx_desc_hw) * num); in zx_alloc_desc_resource()
445 ds->desc_num = num; in zx_alloc_desc_resource()
446 return ds; in zx_alloc_desc_resource()
514 struct zx_dma_desc_sw *ds; in zx_dma_prep_memcpy() local
526 ds = zx_alloc_desc_resource(num, chan); in zx_dma_prep_memcpy()
527 if (!ds) in zx_dma_prep_memcpy()
530 ds->size = len; in zx_dma_prep_memcpy()
535 zx_dma_fill_desc(ds, dst, src, copy, num++, c->ccfg); in zx_dma_prep_memcpy()
543 ds->desc_hw[num - 1].lli = 0; /* end of link */ in zx_dma_prep_memcpy()
544 ds->desc_hw[num - 1].ctr |= ZX_IRQ_ENABLE_ALL; in zx_dma_prep_memcpy()
545 return vchan_tx_prep(&c->vc, &ds->vd, flags); in zx_dma_prep_memcpy()
553 struct zx_dma_desc_sw *ds; in zx_dma_prep_slave_sg() local
571 ds = zx_alloc_desc_resource(num, chan); in zx_dma_prep_slave_sg()
572 if (!ds) in zx_dma_prep_slave_sg()
593 zx_dma_fill_desc(ds, dst, src, len, num++, c->ccfg); in zx_dma_prep_slave_sg()
600 ds->desc_hw[num - 1].lli = 0; /* end of link */ in zx_dma_prep_slave_sg()
601 ds->desc_hw[num - 1].ctr |= ZX_IRQ_ENABLE_ALL; in zx_dma_prep_slave_sg()
602 ds->size = total; in zx_dma_prep_slave_sg()
603 return vchan_tx_prep(&c->vc, &ds->vd, flags); in zx_dma_prep_slave_sg()
612 struct zx_dma_desc_sw *ds; in zx_dma_prep_dma_cyclic() local
625 ds = zx_alloc_desc_resource(num_periods, chan); in zx_dma_prep_dma_cyclic()
626 if (!ds) in zx_dma_prep_dma_cyclic()
638 zx_dma_fill_desc(ds, dst, src, period_len, num++, in zx_dma_prep_dma_cyclic()
644 ds->desc_hw[num - 1].lli = ds->desc_hw_lli; in zx_dma_prep_dma_cyclic()
645 ds->size = buf_len; in zx_dma_prep_dma_cyclic()
646 return vchan_tx_prep(&c->vc, &ds->vd, flags); in zx_dma_prep_dma_cyclic()
720 struct zx_dma_desc_sw *ds = in zx_dma_free_desc() local
724 dma_pool_free(d->pool, ds->desc_hw, ds->desc_hw_lli); in zx_dma_free_desc()
725 kfree(ds); in zx_dma_free_desc()