struct usbhs_pipe *pipe = pkt->pipe;
struct usbhs_fifo *fifo = usbhs_pipe_to_fifo(pipe);
struct usbhs_priv *priv = usbhs_pipe_to_priv(pipe);
- struct scatterlist sg;
struct dma_async_tx_descriptor *desc;
struct dma_chan *chan = usbhsf_dma_chan_get(fifo, pkt);
struct device *dev = usbhs_priv_to_dev(priv);
enum dma_transfer_direction dir;
- dma_cookie_t cookie;
dir = usbhs_pipe_is_dir_in(pipe) ? DMA_DEV_TO_MEM : DMA_MEM_TO_DEV;
- sg_init_table(&sg, 1);
- sg_set_page(&sg, virt_to_page(pkt->dma),
- pkt->length, offset_in_page(pkt->dma));
- sg_dma_address(&sg) = pkt->dma + pkt->actual;
- sg_dma_len(&sg) = pkt->trans;
-
- desc = dmaengine_prep_slave_sg(chan, &sg, 1, dir,
+ desc = dmaengine_prep_slave_single(chan, pkt->dma + pkt->actual,
+ pkt->trans, dir,
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
if (!desc)
return;
desc->callback = usbhsf_dma_complete;
desc->callback_param = pipe;
- cookie = desc->tx_submit(desc);
- if (cookie < 0) {
+ if (dmaengine_submit(desc) < 0) {
dev_err(dev, "Failed to submit dma descriptor\n");
return;
}