Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: tw68: switch from 'pci_' to 'dma_' API

The wrappers in include/linux/pci-dma-compat.h should go away.

The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.

When memory is allocated in 'tw68_risc_buffer()' (tw68-risc.c) GFP_KERNEL
can be used because this function is only called from a vb2_ops buf_prepare
function.
The call chain is:
tw68_video_qops.buf_prepare (tw68-video.c)
--> tw68_buf_prepare (tw68-video.c)
--> tw68_risc_buffer

@@
@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL

@@
@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE

@@
@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE

@@
@@
- PCI_DMA_NONE
+ DMA_NONE

@@
expression e1, e2, e3;
@@
- pci_alloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3;
@@
- pci_zalloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3, e4;
@@
- pci_free_consistent(e1, e2, e3, e4)
+ dma_free_coherent(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_map_single(e1, e2, e3, e4)
+ dma_map_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_single(e1, e2, e3, e4)
+ dma_unmap_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4, e5;
@@
- pci_map_page(e1, e2, e3, e4, e5)
+ dma_map_page(&e1->dev, e2, e3, e4, e5)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_page(e1, e2, e3, e4)
+ dma_unmap_page(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_map_sg(e1, e2, e3, e4)
+ dma_map_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_sg(e1, e2, e3, e4)
+ dma_unmap_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+ dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_device(e1, e2, e3, e4)
+ dma_sync_single_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+ dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+ dma_sync_sg_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2;
@@
- pci_dma_mapping_error(e1, e2)
+ dma_mapping_error(&e1->dev, e2)

@@
expression e1, e2;
@@
- pci_set_dma_mask(e1, e2)
+ dma_set_mask(&e1->dev, e2)

@@
expression e1, e2;
@@
- pci_set_consistent_dma_mask(e1, e2)
+ dma_set_coherent_mask(&e1->dev, e2)

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

authored by

Christophe JAILLET and committed by
Mauro Carvalho Chehab
e999db58 c1dbcf62

+4 -3
+1 -1
drivers/media/pci/tw68/tw68-core.c
··· 248 248 dev->name, pci_name(pci_dev), dev->pci_rev, pci_dev->irq, 249 249 dev->pci_lat, (u64)pci_resource_start(pci_dev, 0)); 250 250 pci_set_master(pci_dev); 251 - err = pci_set_dma_mask(pci_dev, DMA_BIT_MASK(32)); 251 + err = dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32)); 252 252 if (err) { 253 253 pr_info("%s: Oops: no 32bit PCI DMA ???\n", dev->name); 254 254 goto fail1;
+2 -1
drivers/media/pci/tw68/tw68-risc.c
··· 151 151 instructions = fields * (1 + (((bpl + padding) * lines) / 152 152 PAGE_SIZE) + lines) + 4; 153 153 buf->size = instructions * 8; 154 - buf->cpu = pci_alloc_consistent(pci, buf->size, &buf->dma); 154 + buf->cpu = dma_alloc_coherent(&pci->dev, buf->size, &buf->dma, 155 + GFP_KERNEL); 155 156 if (buf->cpu == NULL) 156 157 return -ENOMEM; 157 158
+1 -1
drivers/media/pci/tw68/tw68-video.c
··· 485 485 struct tw68_dev *dev = vb2_get_drv_priv(vq); 486 486 struct tw68_buf *buf = container_of(vbuf, struct tw68_buf, vb); 487 487 488 - pci_free_consistent(dev->pci, buf->size, buf->cpu, buf->dma); 488 + dma_free_coherent(&dev->pci->dev, buf->size, buf->cpu, buf->dma); 489 489 } 490 490 491 491 static int tw68_start_streaming(struct vb2_queue *q, unsigned int count)