Lines Matching refs:sg
120 struct axi_dmac_sg sg[];
212 struct axi_dmac_sg *sg;
229 sg = &desc->sg[desc->num_submitted];
232 if (sg->id != AXI_DMAC_SG_UNUSED) {
233 sg->schedule_when_free = true;
249 sg->id = axi_dmac_read(dmac, AXI_DMAC_REG_TRANSFER_ID);
252 axi_dmac_write(dmac, AXI_DMAC_REG_DEST_ADDRESS, sg->dest_addr);
253 axi_dmac_write(dmac, AXI_DMAC_REG_DEST_STRIDE, sg->dest_stride);
257 axi_dmac_write(dmac, AXI_DMAC_REG_SRC_ADDRESS, sg->src_addr);
258 axi_dmac_write(dmac, AXI_DMAC_REG_SRC_STRIDE, sg->src_stride);
273 axi_dmac_write(dmac, AXI_DMAC_REG_X_LENGTH, sg->x_len - 1);
274 axi_dmac_write(dmac, AXI_DMAC_REG_Y_LENGTH, sg->y_len - 1);
286 struct axi_dmac_sg *sg)
289 return sg->x_len * sg->y_len;
291 return sg->x_len;
298 struct axi_dmac_sg *sg;
309 sg = &desc->sg[i];
310 if (sg->id == AXI_DMAC_SG_UNUSED)
312 if (sg->id == id) {
314 sg->partial_len = len;
345 struct axi_dmac_sg *sg;
356 sg = &active->sg[i];
357 total = axi_dmac_total_sg_bytes(chan, sg);
358 rslt->residue += (total - sg->partial_len);
366 struct axi_dmac_sg *sg;
378 sg = &active->sg[active->num_completed];
379 if (sg->id == AXI_DMAC_SG_UNUSED) /* Not yet submitted */
381 if (!(BIT(sg->id) & completed_transfers))
384 sg->id = AXI_DMAC_SG_UNUSED;
385 if (sg->schedule_when_free) {
386 sg->schedule_when_free = false;
390 if (sg->partial_len)
397 sg->partial_len) {
484 desc = kzalloc(struct_size(desc, sg, num_sgs), GFP_NOWAIT);
489 desc->sg[i].id = AXI_DMAC_SG_UNUSED;
499 struct axi_dmac_sg *sg)
516 sg->dest_addr = addr;
518 sg->src_addr = addr;
519 sg->x_len = segment_size;
520 sg->y_len = 1;
521 sg++;
527 sg->dest_addr = addr;
529 sg->src_addr = addr;
530 sg->x_len = len;
531 sg->y_len = 1;
532 sg++;
536 return sg;
547 struct scatterlist *sg;
555 for_each_sg(sgl, sg, sg_len, i)
556 num_sgs += DIV_ROUND_UP(sg_dma_len(sg), chan->max_length);
562 dsg = desc->sg;
564 for_each_sg(sgl, sg, sg_len, i) {
565 if (!axi_dmac_check_addr(chan, sg_dma_address(sg)) ||
566 !axi_dmac_check_len(chan, sg_dma_len(sg))) {
571 dsg = axi_dmac_fill_linear_sg(chan, direction, sg_dma_address(sg), 1,
572 sg_dma_len(sg), dsg);
607 period_len, desc->sg);
662 desc->sg[0].src_addr = xt->src_start;
663 desc->sg[0].src_stride = xt->sgl[0].size + src_icg;
667 desc->sg[0].dest_addr = xt->dst_start;
668 desc->sg[0].dest_stride = xt->sgl[0].size + dst_icg;
672 desc->sg[0].x_len = xt->sgl[0].size;
673 desc->sg[0].y_len = xt->numf;
675 desc->sg[0].x_len = xt->sgl[0].size * xt->numf;
676 desc->sg[0].y_len = 1;