- spin_lock_irqsave(&d40c->lock, flags);
-
- d40d = d40_prep_desc(d40c, sgl, sg_len, dma_flags);
- if (d40d == NULL)
- goto err;
-
- dev_addr = d40_get_dev_addr(d40c, direction);
-
- if (chan_is_logical(d40c))
- err = d40_prep_sg_log(d40c, d40d, sgl, NULL,
- sg_len, direction, dev_addr);
- else
- err = d40_prep_sg_phy(d40c, d40d, sgl, NULL,
- sg_len, direction, dev_addr);
-
- if (err) {
- chan_err(d40c, "Failed to prepare %s slave sg job: %d\n",
- chan_is_logical(d40c) ? "log" : "phy", err);
- goto err;
- }
-
- spin_unlock_irqrestore(&d40c->lock, flags);
- return &d40d->txd;
-
-err:
- if (d40d)
- d40_desc_free(d40c, d40d);
- spin_unlock_irqrestore(&d40c->lock, flags);
- return NULL;
+ return d40_prep_sg(chan, sgl, sgl, sg_len, direction, dma_flags);