]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/media/video/video-buf.c
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6-omap-h63xx.git] / drivers / media / video / video-buf.c
index d2ca0f08d0df635e4d2ae73669dfbec1f98e07d0..f429f49901b9a0394980f1aea61f2715eb9ddc63 100644 (file)
@@ -365,7 +365,12 @@ videobuf_iolock(struct videobuf_queue* q, struct videobuf_buffer *vb,
                if (NULL == fbuf)
                        return -EINVAL;
                /* FIXME: need sanity checks for vb->boff */
-               bus   = (dma_addr_t)fbuf->base + vb->boff;
+               /*
+                * Using a double cast to avoid compiler warnings when
+                * building for PAE. Compiler doesn't like direct casting
+                * of a 32 bit ptr to 64 bit integer.
+                */
+               bus   = (dma_addr_t)(unsigned long)fbuf->base + vb->boff;
                pages = PAGE_ALIGN(vb->size) >> PAGE_SHIFT;
                err = videobuf_dma_init_overlay(&vb->dma,PCI_DMA_FROMDEVICE,
                                                bus, pages);
@@ -399,19 +404,25 @@ void videobuf_queue_pci(struct videobuf_queue* q)
 int videobuf_pci_dma_map(struct pci_dev *pci,struct videobuf_dmabuf *dma)
 {
        struct videobuf_queue q;
+       struct videobuf_queue_ops qops;
 
        q.dev=pci;
-       q.ops->vb_map_sg=(vb_map_sg_t *)pci_unmap_sg;
+       qops.vb_map_sg=(vb_map_sg_t *)pci_map_sg;
+       qops.vb_unmap_sg=(vb_map_sg_t *)pci_unmap_sg;
+       q.ops = &qops;
 
-       return (videobuf_dma_unmap(&q,dma));
+       return (videobuf_dma_map(&q,dma));
 }
 
 int videobuf_pci_dma_unmap(struct pci_dev *pci,struct videobuf_dmabuf *dma)
 {
        struct videobuf_queue q;
+       struct videobuf_queue_ops qops;
 
        q.dev=pci;
-       q.ops->vb_map_sg=(vb_map_sg_t *)pci_unmap_sg;
+       qops.vb_map_sg=(vb_map_sg_t *)pci_map_sg;
+       qops.vb_unmap_sg=(vb_map_sg_t *)pci_unmap_sg;
+       q.ops = &qops;
 
        return (videobuf_dma_unmap(&q,dma));
 }
@@ -923,7 +934,7 @@ ssize_t videobuf_read_one(struct videobuf_queue *q,
                /* need to capture a new frame */
                retval = -ENOMEM;
                q->read_buf = videobuf_alloc(q->msize);
-               dprintk(1,"video alloc=0x%08x\n",(unsigned int) q->read_buf);
+               dprintk(1,"video alloc=0x%p\n", q->read_buf);
                if (NULL == q->read_buf)
                        goto done;
                q->read_buf->memory = V4L2_MEMORY_USERPTR;