Skip to content

Commit a9eb124

Browse files
Alexandre BounineRohan Somvanshi
authored andcommitted
dmaengine/dma_slave: introduce inline wrappers
Add inline wrappers for device_prep_slave_sg() and device_prep_dma_cyclic() interfaces to hide new parameter from current users of affected interfaces. Convert current users to use new wrappers instead of direct calls. Suggested by Russell King [https://lkml.org/lkml/2012/2/3/269]. Signed-off-by: Alexandre Bounine <[email protected]> Signed-off-by: Vinod Koul <[email protected]> cherry-picked from mainline commit 1605282 Change-Id: I929a49556539621a0546829e88b3caa498c94be2 Signed-off-by: Laxman Dewangan <[email protected]> Reviewed-on: http://git-master/r/94463
1 parent 49c0369 commit a9eb124

File tree

24 files changed

+126
-42
lines changed

24 files changed

+126
-42
lines changed

arch/arm/plat-nomadik/include/plat/ste_dma40.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,7 @@ dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
195195
sg.dma_address = addr;
196196
sg.length = size;
197197

198-
return chan->device->device_prep_slave_sg(chan, &sg, 1,
199-
direction, flags);
198+
return dmaengine_prep_slave_sg(chan, &sg, 1, direction, flags);
200199
}
201200

202201
#else

drivers/media/video/mx3_camera.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,38 @@ static void mx3_videobuf_queue(struct vb2_buffer *vb)
292292
dma_cookie_t cookie;
293293
u32 fourcc = icd->current_fmt->host_fmt->fourcc;
294294
unsigned long flags;
295+
size_t new_size;
296+
297+
BUG_ON(bytes_per_line <= 0);
298+
299+
new_size = bytes_per_line * icd->user_height;
300+
301+
if (vb2_plane_size(vb, 0) < new_size) {
302+
dev_err(icd->parent, "Buffer #%d too small (%lu < %zu)\n",
303+
vb->v4l2_buf.index, vb2_plane_size(vb, 0), new_size);
304+
goto error;
305+
}
306+
307+
if (buf->state == CSI_BUF_NEEDS_INIT) {
308+
sg_dma_address(sg) = vb2_dma_contig_plane_dma_addr(vb, 0);
309+
sg_dma_len(sg) = new_size;
310+
311+
txd = dmaengine_prep_slave_sg(
312+
&ichan->dma_chan, sg, 1, DMA_DEV_TO_MEM,
313+
DMA_PREP_INTERRUPT);
314+
if (!txd)
315+
goto error;
316+
317+
txd->callback_param = txd;
318+
txd->callback = mx3_cam_dma_done;
319+
320+
buf->state = CSI_BUF_PREPARED;
321+
buf->txd = txd;
322+
} else {
323+
txd = buf->txd;
324+
}
325+
326+
vb2_set_plane_payload(vb, 0, new_size);
295327

296328
/* This is the configuration of one sg-element */
297329
video->out_pixel_fmt = fourcc_to_ipu_pix(fourcc);

drivers/media/video/timblogiw.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,8 @@ static void buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)
563563

564564
spin_unlock_irq(&fh->queue_lock);
565565

566-
desc = fh->chan->device->device_prep_slave_sg(fh->chan,
567-
buf->sg, sg_elems, DMA_FROM_DEVICE,
566+
desc = dmaengine_prep_slave_sg(fh->chan,
567+
buf->sg, sg_elems, DMA_DEV_TO_MEM,
568568
DMA_PREP_INTERRUPT | DMA_COMPL_SKIP_SRC_UNMAP);
569569
if (!desc) {
570570
spin_lock_irq(&fh->queue_lock);

drivers/mmc/host/atmel-mci.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,9 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
689689
sglen = dma_map_sg(chan->device->dev, data->sg,
690690
data->sg_len, direction);
691691

692-
desc = chan->device->device_prep_slave_sg(chan,
693-
data->sg, sglen, direction,
692+
dmaengine_slave_config(chan, &host->dma_conf);
693+
desc = dmaengine_prep_slave_sg(chan,
694+
data->sg, sglen, slave_dirn,
694695
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
695696
if (!desc)
696697
goto unmap_exit;

drivers/mmc/host/mmci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ static int mmci_dma_prep_data(struct mmci_host *host, struct mmc_data *data,
406406
return -EINVAL;
407407

408408
dmaengine_slave_config(chan, &conf);
409-
desc = device->device_prep_slave_sg(chan, data->sg, nr_sg,
409+
desc = dmaengine_prep_slave_sg(chan, data->sg, nr_sg,
410410
conf.direction, DMA_CTRL_ACK);
411411
if (!desc)
412412
goto unmap_exit;

drivers/mmc/host/mxcmmc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ static int mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
249249
if (nents != data->sg_len)
250250
return -EINVAL;
251251

252-
host->desc = host->dma->device->device_prep_slave_sg(host->dma,
253-
data->sg, data->sg_len, host->dma_dir,
252+
host->desc = dmaengine_prep_slave_sg(host->dma,
253+
data->sg, data->sg_len, slave_dirn,
254254
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
255255

256256
if (!host->desc) {

drivers/mmc/host/mxs-mmc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,8 @@ static struct dma_async_tx_descriptor *mxs_mmc_prep_dma(
322322
sg_len = SSP_PIO_NUM;
323323
}
324324

325-
desc = host->dmach->device->device_prep_slave_sg(host->dmach,
326-
sgl, sg_len, host->dma_dir, append);
325+
desc = dmaengine_prep_slave_sg(host->dmach,
326+
sgl, sg_len, host->slave_dirn, append);
327327
if (desc) {
328328
desc->callback = mxs_mmc_dma_irq_callback;
329329
desc->callback_param = host;

drivers/mmc/host/sh_mmcif.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,8 @@ static void sh_mmcif_start_dma_rx(struct sh_mmcif_host *host)
229229
DMA_FROM_DEVICE);
230230
if (ret > 0) {
231231
host->dma_active = true;
232-
desc = chan->device->device_prep_slave_sg(chan, sg, ret,
233-
DMA_FROM_DEVICE, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
232+
desc = dmaengine_prep_slave_sg(chan, sg, ret,
233+
DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
234234
}
235235

236236
if (desc) {
@@ -277,8 +277,13 @@ static void sh_mmcif_start_dma_tx(struct sh_mmcif_host *host)
277277
DMA_TO_DEVICE);
278278
if (ret > 0) {
279279
host->dma_active = true;
280+
<<<<<<< HEAD
280281
desc = chan->device->device_prep_slave_sg(chan, sg, ret,
281282
DMA_TO_DEVICE, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
283+
=======
284+
desc = dmaengine_prep_slave_sg(chan, sg, ret,
285+
DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
286+
>>>>>>> 1605282... dmaengine/dma_slave: introduce inline wrappers
282287
}
283288

284289
if (desc) {

drivers/mmc/host/tmio_mmc_dma.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ static void tmio_mmc_start_dma_rx(struct tmio_mmc_host *host)
7676

7777
ret = dma_map_sg(chan->device->dev, sg, host->sg_len, DMA_FROM_DEVICE);
7878
if (ret > 0)
79-
desc = chan->device->device_prep_slave_sg(chan, sg, ret,
80-
DMA_FROM_DEVICE, DMA_CTRL_ACK);
79+
desc = dmaengine_prep_slave_sg(chan, sg, ret,
80+
DMA_DEV_TO_MEM, DMA_CTRL_ACK);
8181

8282
if (desc) {
8383
cookie = dmaengine_submit(desc);
@@ -157,8 +157,13 @@ static void tmio_mmc_start_dma_tx(struct tmio_mmc_host *host)
157157

158158
ret = dma_map_sg(chan->device->dev, sg, host->sg_len, DMA_TO_DEVICE);
159159
if (ret > 0)
160+
<<<<<<< HEAD
160161
desc = chan->device->device_prep_slave_sg(chan, sg, ret,
161162
DMA_TO_DEVICE, DMA_CTRL_ACK);
163+
=======
164+
desc = dmaengine_prep_slave_sg(chan, sg, ret,
165+
DMA_MEM_TO_DEV, DMA_CTRL_ACK);
166+
>>>>>>> 1605282... dmaengine/dma_slave: introduce inline wrappers
162167

163168
if (desc) {
164169
cookie = dmaengine_submit(desc);

drivers/spi/spi-dw-mid.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
144144
dws->tx_sgl.dma_address = dws->tx_dma;
145145
dws->tx_sgl.length = dws->len;
146146

147-
txdesc = txchan->device->device_prep_slave_sg(txchan,
147+
txdesc = dmaengine_prep_slave_sg(txchan,
148148
&dws->tx_sgl,
149149
1,
150150
DMA_TO_DEVICE,
@@ -166,7 +166,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
166166
dws->rx_sgl.dma_address = dws->rx_dma;
167167
dws->rx_sgl.length = dws->len;
168168

169-
rxdesc = rxchan->device->device_prep_slave_sg(rxchan,
169+
rxdesc = dmaengine_prep_slave_sg(rxchan,
170170
&dws->rx_sgl,
171171
1,
172172
DMA_FROM_DEVICE,

0 commit comments

Comments
 (0)