aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/videobuf-dma-sg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/videobuf-dma-sg.c')
-rw-r--r--drivers/media/video/videobuf-dma-sg.c156
1 files changed, 88 insertions, 68 deletions
diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c
index 53fed4b74ce9..03a7b946bd54 100644
--- a/drivers/media/video/videobuf-dma-sg.c
+++ b/drivers/media/video/videobuf-dma-sg.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * helper functions for PCI DMA video4linux capture buffers 2 * helper functions for SG DMA video4linux capture buffers
3 * 3 *
4 * The functions expect the hardware being able to scatter gatter 4 * The functions expect the hardware being able to scatter gatter
5 * (i.e. the buffers are not linear in physical memory, but fragmented 5 * (i.e. the buffers are not linear in physical memory, but fragmented
@@ -24,7 +24,7 @@
24#include <linux/slab.h> 24#include <linux/slab.h>
25#include <linux/interrupt.h> 25#include <linux/interrupt.h>
26 26
27#include <linux/pci.h> 27#include <linux/dma-mapping.h>
28#include <linux/vmalloc.h> 28#include <linux/vmalloc.h>
29#include <linux/pagemap.h> 29#include <linux/pagemap.h>
30#include <linux/scatterlist.h> 30#include <linux/scatterlist.h>
@@ -39,10 +39,10 @@
39#define MAGIC_CHECK(is,should) if (unlikely((is) != (should))) \ 39#define MAGIC_CHECK(is,should) if (unlikely((is) != (should))) \
40 { printk(KERN_ERR "magic mismatch: %x (expected %x)\n",is,should); BUG(); } 40 { printk(KERN_ERR "magic mismatch: %x (expected %x)\n",is,should); BUG(); }
41 41
42static int debug = 0; 42static int debug;
43module_param(debug, int, 0644); 43module_param(debug, int, 0644);
44 44
45MODULE_DESCRIPTION("helper module to manage video4linux pci dma sg buffers"); 45MODULE_DESCRIPTION("helper module to manage video4linux dma sg buffers");
46MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); 46MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
47MODULE_LICENSE("GPL"); 47MODULE_LICENSE("GPL");
48 48
@@ -119,10 +119,10 @@ videobuf_pages_to_sg(struct page **pages, int nr_pages, int offset)
119 119
120struct videobuf_dmabuf *videobuf_to_dma (struct videobuf_buffer *buf) 120struct videobuf_dmabuf *videobuf_to_dma (struct videobuf_buffer *buf)
121{ 121{
122 struct videbuf_pci_sg_memory *mem=buf->priv; 122 struct videobuf_dma_sg_memory *mem = buf->priv;
123 BUG_ON (!mem); 123 BUG_ON(!mem);
124 124
125 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 125 MAGIC_CHECK(mem->magic, MAGIC_SG_MEM);
126 126
127 return &mem->dma; 127 return &mem->dma;
128} 128}
@@ -141,9 +141,14 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
141 141
142 dma->direction = direction; 142 dma->direction = direction;
143 switch (dma->direction) { 143 switch (dma->direction) {
144 case PCI_DMA_FROMDEVICE: rw = READ; break; 144 case DMA_FROM_DEVICE:
145 case PCI_DMA_TODEVICE: rw = WRITE; break; 145 rw = READ;
146 default: BUG(); 146 break;
147 case DMA_TO_DEVICE:
148 rw = WRITE;
149 break;
150 default:
151 BUG();
147 } 152 }
148 153
149 first = (data & PAGE_MASK) >> PAGE_SHIFT; 154 first = (data & PAGE_MASK) >> PAGE_SHIFT;
@@ -157,9 +162,6 @@ static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma,
157 dprintk(1,"init user [0x%lx+0x%lx => %d pages]\n", 162 dprintk(1,"init user [0x%lx+0x%lx => %d pages]\n",
158 data,size,dma->nr_pages); 163 data,size,dma->nr_pages);
159 164
160 dma->varea = (void *) data;
161
162
163 err = get_user_pages(current,current->mm, 165 err = get_user_pages(current,current->mm,
164 data & PAGE_MASK, dma->nr_pages, 166 data & PAGE_MASK, dma->nr_pages,
165 rw == READ, 1, /* force */ 167 rw == READ, 1, /* force */
@@ -216,10 +218,8 @@ int videobuf_dma_init_overlay(struct videobuf_dmabuf *dma, int direction,
216 return 0; 218 return 0;
217} 219}
218 220
219int videobuf_dma_map(struct videobuf_queue* q,struct videobuf_dmabuf *dma) 221int videobuf_dma_map(struct videobuf_queue* q, struct videobuf_dmabuf *dma)
220{ 222{
221 void *dev=q->dev;
222
223 MAGIC_CHECK(dma->magic,MAGIC_DMABUF); 223 MAGIC_CHECK(dma->magic,MAGIC_DMABUF);
224 BUG_ON(0 == dma->nr_pages); 224 BUG_ON(0 == dma->nr_pages);
225 225
@@ -245,11 +245,11 @@ int videobuf_dma_map(struct videobuf_queue* q,struct videobuf_dmabuf *dma)
245 return -ENOMEM; 245 return -ENOMEM;
246 } 246 }
247 if (!dma->bus_addr) { 247 if (!dma->bus_addr) {
248 dma->sglen = pci_map_sg(dev,dma->sglist, 248 dma->sglen = dma_map_sg(q->dev, dma->sglist,
249 dma->nr_pages, dma->direction); 249 dma->nr_pages, dma->direction);
250 if (0 == dma->sglen) { 250 if (0 == dma->sglen) {
251 printk(KERN_WARNING 251 printk(KERN_WARNING
252 "%s: videobuf_map_sg failed\n",__FUNCTION__); 252 "%s: videobuf_map_sg failed\n",__func__);
253 kfree(dma->sglist); 253 kfree(dma->sglist);
254 dma->sglist = NULL; 254 dma->sglist = NULL;
255 dma->sglen = 0; 255 dma->sglen = 0;
@@ -259,26 +259,22 @@ int videobuf_dma_map(struct videobuf_queue* q,struct videobuf_dmabuf *dma)
259 return 0; 259 return 0;
260} 260}
261 261
262int videobuf_dma_sync(struct videobuf_queue *q,struct videobuf_dmabuf *dma) 262int videobuf_dma_sync(struct videobuf_queue *q, struct videobuf_dmabuf *dma)
263{ 263{
264 void *dev=q->dev; 264 MAGIC_CHECK(dma->magic, MAGIC_DMABUF);
265
266 MAGIC_CHECK(dma->magic,MAGIC_DMABUF);
267 BUG_ON(!dma->sglen); 265 BUG_ON(!dma->sglen);
268 266
269 pci_dma_sync_sg_for_cpu (dev,dma->sglist,dma->nr_pages,dma->direction); 267 dma_sync_sg_for_cpu(q->dev, dma->sglist, dma->nr_pages, dma->direction);
270 return 0; 268 return 0;
271} 269}
272 270
273int videobuf_dma_unmap(struct videobuf_queue* q,struct videobuf_dmabuf *dma) 271int videobuf_dma_unmap(struct videobuf_queue* q,struct videobuf_dmabuf *dma)
274{ 272{
275 void *dev=q->dev; 273 MAGIC_CHECK(dma->magic, MAGIC_DMABUF);
276
277 MAGIC_CHECK(dma->magic,MAGIC_DMABUF);
278 if (!dma->sglen) 274 if (!dma->sglen)
279 return 0; 275 return 0;
280 276
281 pci_unmap_sg (dev,dma->sglist,dma->nr_pages,dma->direction); 277 dma_unmap_sg(q->dev, dma->sglist, dma->nr_pages, dma->direction);
282 278
283 kfree(dma->sglist); 279 kfree(dma->sglist);
284 dma->sglist = NULL; 280 dma->sglist = NULL;
@@ -301,33 +297,32 @@ int videobuf_dma_free(struct videobuf_dmabuf *dma)
301 297
302 vfree(dma->vmalloc); 298 vfree(dma->vmalloc);
303 dma->vmalloc = NULL; 299 dma->vmalloc = NULL;
304 dma->varea = NULL;
305 300
306 if (dma->bus_addr) { 301 if (dma->bus_addr) {
307 dma->bus_addr = 0; 302 dma->bus_addr = 0;
308 } 303 }
309 dma->direction = PCI_DMA_NONE; 304 dma->direction = DMA_NONE;
310 return 0; 305 return 0;
311} 306}
312 307
313/* --------------------------------------------------------------------- */ 308/* --------------------------------------------------------------------- */
314 309
315int videobuf_pci_dma_map(struct pci_dev *pci,struct videobuf_dmabuf *dma) 310int videobuf_sg_dma_map(struct device *dev, struct videobuf_dmabuf *dma)
316{ 311{
317 struct videobuf_queue q; 312 struct videobuf_queue q;
318 313
319 q.dev=pci; 314 q.dev = dev;
320 315
321 return (videobuf_dma_map(&q,dma)); 316 return videobuf_dma_map(&q, dma);
322} 317}
323 318
324int videobuf_pci_dma_unmap(struct pci_dev *pci,struct videobuf_dmabuf *dma) 319int videobuf_sg_dma_unmap(struct device *dev, struct videobuf_dmabuf *dma)
325{ 320{
326 struct videobuf_queue q; 321 struct videobuf_queue q;
327 322
328 q.dev=pci; 323 q.dev = dev;
329 324
330 return (videobuf_dma_unmap(&q,dma)); 325 return videobuf_dma_unmap(&q, dma);
331} 326}
332 327
333/* --------------------------------------------------------------------- */ 328/* --------------------------------------------------------------------- */
@@ -347,7 +342,7 @@ videobuf_vm_close(struct vm_area_struct *vma)
347{ 342{
348 struct videobuf_mapping *map = vma->vm_private_data; 343 struct videobuf_mapping *map = vma->vm_private_data;
349 struct videobuf_queue *q = map->q; 344 struct videobuf_queue *q = map->q;
350 struct videbuf_pci_sg_memory *mem; 345 struct videobuf_dma_sg_memory *mem;
351 int i; 346 int i;
352 347
353 dprintk(2,"vm_close %p [count=%d,vma=%08lx-%08lx]\n",map, 348 dprintk(2,"vm_close %p [count=%d,vma=%08lx-%08lx]\n",map,
@@ -409,18 +404,18 @@ static struct vm_operations_struct videobuf_vm_ops =
409}; 404};
410 405
411/* --------------------------------------------------------------------- 406/* ---------------------------------------------------------------------
412 * PCI handlers for the generic methods 407 * SG handlers for the generic methods
413 */ 408 */
414 409
415/* Allocated area consists on 3 parts: 410/* Allocated area consists on 3 parts:
416 struct video_buffer 411 struct video_buffer
417 struct <driver>_buffer (cx88_buffer, saa7134_buf, ...) 412 struct <driver>_buffer (cx88_buffer, saa7134_buf, ...)
418 struct videobuf_pci_sg_memory 413 struct videobuf_dma_sg_memory
419 */ 414 */
420 415
421static void *__videobuf_alloc(size_t size) 416static void *__videobuf_alloc(size_t size)
422{ 417{
423 struct videbuf_pci_sg_memory *mem; 418 struct videobuf_dma_sg_memory *mem;
424 struct videobuf_buffer *vb; 419 struct videobuf_buffer *vb;
425 420
426 vb = kzalloc(size+sizeof(*mem),GFP_KERNEL); 421 vb = kzalloc(size+sizeof(*mem),GFP_KERNEL);
@@ -431,22 +426,32 @@ static void *__videobuf_alloc(size_t size)
431 videobuf_dma_init(&mem->dma); 426 videobuf_dma_init(&mem->dma);
432 427
433 dprintk(1,"%s: allocated at %p(%ld+%ld) & %p(%ld)\n", 428 dprintk(1,"%s: allocated at %p(%ld+%ld) & %p(%ld)\n",
434 __FUNCTION__,vb,(long)sizeof(*vb),(long)size-sizeof(*vb), 429 __func__,vb,(long)sizeof(*vb),(long)size-sizeof(*vb),
435 mem,(long)sizeof(*mem)); 430 mem,(long)sizeof(*mem));
436 431
437 return vb; 432 return vb;
438} 433}
439 434
435static void *__videobuf_to_vmalloc (struct videobuf_buffer *buf)
436{
437 struct videobuf_dma_sg_memory *mem = buf->priv;
438 BUG_ON(!mem);
439
440 MAGIC_CHECK(mem->magic, MAGIC_SG_MEM);
441
442 return mem->dma.vmalloc;
443}
444
440static int __videobuf_iolock (struct videobuf_queue* q, 445static int __videobuf_iolock (struct videobuf_queue* q,
441 struct videobuf_buffer *vb, 446 struct videobuf_buffer *vb,
442 struct v4l2_framebuffer *fbuf) 447 struct v4l2_framebuffer *fbuf)
443{ 448{
444 int err,pages; 449 int err,pages;
445 dma_addr_t bus; 450 dma_addr_t bus;
446 struct videbuf_pci_sg_memory *mem=vb->priv; 451 struct videobuf_dma_sg_memory *mem = vb->priv;
447 BUG_ON(!mem); 452 BUG_ON(!mem);
448 453
449 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 454 MAGIC_CHECK(mem->magic, MAGIC_SG_MEM);
450 455
451 switch (vb->memory) { 456 switch (vb->memory) {
452 case V4L2_MEMORY_MMAP: 457 case V4L2_MEMORY_MMAP:
@@ -455,14 +460,14 @@ static int __videobuf_iolock (struct videobuf_queue* q,
455 /* no userspace addr -- kernel bounce buffer */ 460 /* no userspace addr -- kernel bounce buffer */
456 pages = PAGE_ALIGN(vb->size) >> PAGE_SHIFT; 461 pages = PAGE_ALIGN(vb->size) >> PAGE_SHIFT;
457 err = videobuf_dma_init_kernel( &mem->dma, 462 err = videobuf_dma_init_kernel( &mem->dma,
458 PCI_DMA_FROMDEVICE, 463 DMA_FROM_DEVICE,
459 pages ); 464 pages );
460 if (0 != err) 465 if (0 != err)
461 return err; 466 return err;
462 } else if (vb->memory == V4L2_MEMORY_USERPTR) { 467 } else if (vb->memory == V4L2_MEMORY_USERPTR) {
463 /* dma directly to userspace */ 468 /* dma directly to userspace */
464 err = videobuf_dma_init_user( &mem->dma, 469 err = videobuf_dma_init_user( &mem->dma,
465 PCI_DMA_FROMDEVICE, 470 DMA_FROM_DEVICE,
466 vb->baddr,vb->bsize ); 471 vb->baddr,vb->bsize );
467 if (0 != err) 472 if (0 != err)
468 return err; 473 return err;
@@ -473,7 +478,7 @@ static int __videobuf_iolock (struct videobuf_queue* q,
473 locking inversion, so don't take it here */ 478 locking inversion, so don't take it here */
474 479
475 err = videobuf_dma_init_user_locked(&mem->dma, 480 err = videobuf_dma_init_user_locked(&mem->dma,
476 PCI_DMA_FROMDEVICE, 481 DMA_FROM_DEVICE,
477 vb->baddr, vb->bsize); 482 vb->baddr, vb->bsize);
478 if (0 != err) 483 if (0 != err)
479 return err; 484 return err;
@@ -490,7 +495,7 @@ static int __videobuf_iolock (struct videobuf_queue* q,
490 */ 495 */
491 bus = (dma_addr_t)(unsigned long)fbuf->base + vb->boff; 496 bus = (dma_addr_t)(unsigned long)fbuf->base + vb->boff;
492 pages = PAGE_ALIGN(vb->size) >> PAGE_SHIFT; 497 pages = PAGE_ALIGN(vb->size) >> PAGE_SHIFT;
493 err = videobuf_dma_init_overlay(&mem->dma,PCI_DMA_FROMDEVICE, 498 err = videobuf_dma_init_overlay(&mem->dma, DMA_FROM_DEVICE,
494 bus, pages); 499 bus, pages);
495 if (0 != err) 500 if (0 != err)
496 return err; 501 return err;
@@ -498,7 +503,7 @@ static int __videobuf_iolock (struct videobuf_queue* q,
498 default: 503 default:
499 BUG(); 504 BUG();
500 } 505 }
501 err = videobuf_dma_map(q,&mem->dma); 506 err = videobuf_dma_map(q, &mem->dma);
502 if (0 != err) 507 if (0 != err)
503 return err; 508 return err;
504 509
@@ -508,8 +513,8 @@ static int __videobuf_iolock (struct videobuf_queue* q,
508static int __videobuf_sync(struct videobuf_queue *q, 513static int __videobuf_sync(struct videobuf_queue *q,
509 struct videobuf_buffer *buf) 514 struct videobuf_buffer *buf)
510{ 515{
511 struct videbuf_pci_sg_memory *mem=buf->priv; 516 struct videobuf_dma_sg_memory *mem = buf->priv;
512 BUG_ON (!mem); 517 BUG_ON(!mem);
513 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 518 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM);
514 519
515 return videobuf_dma_sync(q,&mem->dma); 520 return videobuf_dma_sync(q,&mem->dma);
@@ -532,7 +537,7 @@ static int __videobuf_mmap_free(struct videobuf_queue *q)
532static int __videobuf_mmap_mapper(struct videobuf_queue *q, 537static int __videobuf_mmap_mapper(struct videobuf_queue *q,
533 struct vm_area_struct *vma) 538 struct vm_area_struct *vma)
534{ 539{
535 struct videbuf_pci_sg_memory *mem; 540 struct videobuf_dma_sg_memory *mem;
536 struct videobuf_mapping *map; 541 struct videobuf_mapping *map;
537 unsigned int first,last,size,i; 542 unsigned int first,last,size,i;
538 int retval; 543 int retval;
@@ -547,12 +552,20 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
547 goto done; 552 goto done;
548 } 553 }
549 554
555 /* This function maintains backwards compatibility with V4L1 and will
556 * map more than one buffer if the vma length is equal to the combined
557 * size of multiple buffers than it will map them together. See
558 * VIDIOCGMBUF in the v4l spec
559 *
560 * TODO: Allow drivers to specify if they support this mode
561 */
562
550 /* look for first buffer to map */ 563 /* look for first buffer to map */
551 for (first = 0; first < VIDEO_MAX_FRAME; first++) { 564 for (first = 0; first < VIDEO_MAX_FRAME; first++) {
552 if (NULL == q->bufs[first]) 565 if (NULL == q->bufs[first])
553 continue; 566 continue;
554 mem=q->bufs[first]->priv; 567 mem=q->bufs[first]->priv;
555 BUG_ON (!mem); 568 BUG_ON(!mem);
556 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 569 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM);
557 570
558 if (V4L2_MEMORY_MMAP != q->bufs[first]->memory) 571 if (V4L2_MEMORY_MMAP != q->bufs[first]->memory)
@@ -591,10 +604,16 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
591 map = kmalloc(sizeof(struct videobuf_mapping),GFP_KERNEL); 604 map = kmalloc(sizeof(struct videobuf_mapping),GFP_KERNEL);
592 if (NULL == map) 605 if (NULL == map)
593 goto done; 606 goto done;
594 for (size = 0, i = first; i <= last; size += q->bufs[i++]->bsize) { 607
608 size = 0;
609 for (i = first; i <= last; i++) {
610 if (NULL == q->bufs[i])
611 continue;
595 q->bufs[i]->map = map; 612 q->bufs[i]->map = map;
596 q->bufs[i]->baddr = vma->vm_start + size; 613 q->bufs[i]->baddr = vma->vm_start + size;
614 size += q->bufs[i]->bsize;
597 } 615 }
616
598 map->count = 1; 617 map->count = 1;
599 map->start = vma->vm_start; 618 map->start = vma->vm_start;
600 map->end = vma->vm_end; 619 map->end = vma->vm_end;
@@ -615,8 +634,8 @@ static int __videobuf_copy_to_user ( struct videobuf_queue *q,
615 char __user *data, size_t count, 634 char __user *data, size_t count,
616 int nonblocking ) 635 int nonblocking )
617{ 636{
618 struct videbuf_pci_sg_memory *mem=q->read_buf->priv; 637 struct videobuf_dma_sg_memory *mem = q->read_buf->priv;
619 BUG_ON (!mem); 638 BUG_ON(!mem);
620 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 639 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM);
621 640
622 /* copy to userspace */ 641 /* copy to userspace */
@@ -634,8 +653,8 @@ static int __videobuf_copy_stream ( struct videobuf_queue *q,
634 int vbihack, int nonblocking ) 653 int vbihack, int nonblocking )
635{ 654{
636 unsigned int *fc; 655 unsigned int *fc;
637 struct videbuf_pci_sg_memory *mem=q->read_buf->priv; 656 struct videobuf_dma_sg_memory *mem = q->read_buf->priv;
638 BUG_ON (!mem); 657 BUG_ON(!mem);
639 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM); 658 MAGIC_CHECK(mem->magic,MAGIC_SG_MEM);
640 659
641 if (vbihack) { 660 if (vbihack) {
@@ -658,7 +677,7 @@ static int __videobuf_copy_stream ( struct videobuf_queue *q,
658 return count; 677 return count;
659} 678}
660 679
661static struct videobuf_qtype_ops pci_ops = { 680static struct videobuf_qtype_ops sg_ops = {
662 .magic = MAGIC_QTYPE_OPS, 681 .magic = MAGIC_QTYPE_OPS,
663 682
664 .alloc = __videobuf_alloc, 683 .alloc = __videobuf_alloc,
@@ -668,23 +687,24 @@ static struct videobuf_qtype_ops pci_ops = {
668 .mmap_mapper = __videobuf_mmap_mapper, 687 .mmap_mapper = __videobuf_mmap_mapper,
669 .video_copy_to_user = __videobuf_copy_to_user, 688 .video_copy_to_user = __videobuf_copy_to_user,
670 .copy_stream = __videobuf_copy_stream, 689 .copy_stream = __videobuf_copy_stream,
690 .vmalloc = __videobuf_to_vmalloc,
671}; 691};
672 692
673void *videobuf_pci_alloc (size_t size) 693void *videobuf_sg_alloc(size_t size)
674{ 694{
675 struct videobuf_queue q; 695 struct videobuf_queue q;
676 696
677 /* Required to make generic handler to call __videobuf_alloc */ 697 /* Required to make generic handler to call __videobuf_alloc */
678 q.int_ops=&pci_ops; 698 q.int_ops = &sg_ops;
679 699
680 q.msize=size; 700 q.msize = size;
681 701
682 return videobuf_alloc (&q); 702 return videobuf_alloc(&q);
683} 703}
684 704
685void videobuf_queue_pci_init(struct videobuf_queue* q, 705void videobuf_queue_sg_init(struct videobuf_queue* q,
686 struct videobuf_queue_ops *ops, 706 struct videobuf_queue_ops *ops,
687 void *dev, 707 struct device *dev,
688 spinlock_t *irqlock, 708 spinlock_t *irqlock,
689 enum v4l2_buf_type type, 709 enum v4l2_buf_type type,
690 enum v4l2_field field, 710 enum v4l2_field field,
@@ -692,7 +712,7 @@ void videobuf_queue_pci_init(struct videobuf_queue* q,
692 void *priv) 712 void *priv)
693{ 713{
694 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize, 714 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
695 priv, &pci_ops); 715 priv, &sg_ops);
696} 716}
697 717
698/* --------------------------------------------------------------------- */ 718/* --------------------------------------------------------------------- */
@@ -709,11 +729,11 @@ EXPORT_SYMBOL_GPL(videobuf_dma_sync);
709EXPORT_SYMBOL_GPL(videobuf_dma_unmap); 729EXPORT_SYMBOL_GPL(videobuf_dma_unmap);
710EXPORT_SYMBOL_GPL(videobuf_dma_free); 730EXPORT_SYMBOL_GPL(videobuf_dma_free);
711 731
712EXPORT_SYMBOL_GPL(videobuf_pci_dma_map); 732EXPORT_SYMBOL_GPL(videobuf_sg_dma_map);
713EXPORT_SYMBOL_GPL(videobuf_pci_dma_unmap); 733EXPORT_SYMBOL_GPL(videobuf_sg_dma_unmap);
714EXPORT_SYMBOL_GPL(videobuf_pci_alloc); 734EXPORT_SYMBOL_GPL(videobuf_sg_alloc);
715 735
716EXPORT_SYMBOL_GPL(videobuf_queue_pci_init); 736EXPORT_SYMBOL_GPL(videobuf_queue_sg_init);
717 737
718/* 738/*
719 * Local variables: 739 * Local variables: