diff options
34 files changed, 125 insertions, 130 deletions
diff --git a/Documentation/dvb/faq.txt b/Documentation/dvb/faq.txt index dbcedf5833ee..2511a335abd6 100644 --- a/Documentation/dvb/faq.txt +++ b/Documentation/dvb/faq.txt | |||
@@ -150,7 +150,7 @@ Some very frequently asked questions about linuxtv-dvb | |||
150 | - saa7146_vv: SAA7146 video and vbi functions. These are only needed | 150 | - saa7146_vv: SAA7146 video and vbi functions. These are only needed |
151 | for full-featured cards. | 151 | for full-featured cards. |
152 | 152 | ||
153 | - video-buf: capture helper module for the saa7146_vv driver. This | 153 | - videobuf-dma-sg: capture helper module for the saa7146_vv driver. This |
154 | one is responsible to handle capture buffers. | 154 | one is responsible to handle capture buffers. |
155 | 155 | ||
156 | - dvb-ttpci: The main driver for AV7110 based, full-featured | 156 | - dvb-ttpci: The main driver for AV7110 based, full-featured |
diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig index 3f8cfa873de5..28ee65c53917 100644 --- a/drivers/media/Kconfig +++ b/drivers/media/Kconfig | |||
@@ -126,8 +126,12 @@ config TUNER_SIMPLE | |||
126 | 126 | ||
127 | endif # VIDEO_TUNER_CUSTOMIZE | 127 | endif # VIDEO_TUNER_CUSTOMIZE |
128 | 128 | ||
129 | config VIDEO_BUF | 129 | config VIDEOBUF_GEN |
130 | tristate | ||
131 | |||
132 | config VIDEOBUF_DMA_SG | ||
130 | depends on PCI | 133 | depends on PCI |
134 | select VIDEOBUF_GEN | ||
131 | tristate | 135 | tristate |
132 | 136 | ||
133 | config VIDEO_BUF_DVB | 137 | config VIDEO_BUF_DVB |
diff --git a/drivers/media/common/Kconfig b/drivers/media/common/Kconfig index 5c63c8e24ee7..c5092ef1082f 100644 --- a/drivers/media/common/Kconfig +++ b/drivers/media/common/Kconfig | |||
@@ -5,5 +5,5 @@ config VIDEO_SAA7146 | |||
5 | config VIDEO_SAA7146_VV | 5 | config VIDEO_SAA7146_VV |
6 | tristate | 6 | tristate |
7 | depends on VIDEO_DEV | 7 | depends on VIDEO_DEV |
8 | select VIDEO_BUF | 8 | select VIDEOBUF_DMA_SG |
9 | select VIDEO_SAA7146 | 9 | select VIDEO_SAA7146 |
diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c index 1c962a2b44df..365a22118a09 100644 --- a/drivers/media/common/saa7146_core.c +++ b/drivers/media/common/saa7146_core.c | |||
@@ -100,7 +100,7 @@ int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop) | |||
100 | * general helper functions | 100 | * general helper functions |
101 | ****************************************************************************/ | 101 | ****************************************************************************/ |
102 | 102 | ||
103 | /* this is videobuf_vmalloc_to_sg() from video-buf.c | 103 | /* this is videobuf_vmalloc_to_sg() from videobuf-dma-sg.c |
104 | make sure virt has been allocated with vmalloc_32(), otherwise the BUG() | 104 | make sure virt has been allocated with vmalloc_32(), otherwise the BUG() |
105 | may be triggered on highmem machines */ | 105 | may be triggered on highmem machines */ |
106 | static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages) | 106 | static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages) |
diff --git a/drivers/media/common/saa7146_fops.c b/drivers/media/common/saa7146_fops.c index b4770aecc01d..67d1b1b1b254 100644 --- a/drivers/media/common/saa7146_fops.c +++ b/drivers/media/common/saa7146_fops.c | |||
@@ -53,13 +53,14 @@ void saa7146_res_free(struct saa7146_fh *fh, unsigned int bits) | |||
53 | void saa7146_dma_free(struct saa7146_dev *dev,struct videobuf_queue *q, | 53 | void saa7146_dma_free(struct saa7146_dev *dev,struct videobuf_queue *q, |
54 | struct saa7146_buf *buf) | 54 | struct saa7146_buf *buf) |
55 | { | 55 | { |
56 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
56 | DEB_EE(("dev:%p, buf:%p\n",dev,buf)); | 57 | DEB_EE(("dev:%p, buf:%p\n",dev,buf)); |
57 | 58 | ||
58 | BUG_ON(in_interrupt()); | 59 | BUG_ON(in_interrupt()); |
59 | 60 | ||
60 | videobuf_waiton(&buf->vb,0,0); | 61 | videobuf_waiton(&buf->vb,0,0); |
61 | videobuf_dma_unmap(q, &buf->vb.dma); | 62 | videobuf_dma_unmap(q, dma); |
62 | videobuf_dma_free(&buf->vb.dma); | 63 | videobuf_dma_free(dma); |
63 | buf->vb.state = STATE_NEEDS_INIT; | 64 | buf->vb.state = STATE_NEEDS_INIT; |
64 | } | 65 | } |
65 | 66 | ||
diff --git a/drivers/media/common/saa7146_vbi.c b/drivers/media/common/saa7146_vbi.c index 063608462ebe..6103484e4442 100644 --- a/drivers/media/common/saa7146_vbi.c +++ b/drivers/media/common/saa7146_vbi.c | |||
@@ -165,7 +165,7 @@ static void saa7146_set_vbi_capture(struct saa7146_dev *dev, struct saa7146_buf | |||
165 | /* we don't wait here for the first field anymore. this is different from the video | 165 | /* we don't wait here for the first field anymore. this is different from the video |
166 | capture and might cause that the first buffer is only half filled (with only | 166 | capture and might cause that the first buffer is only half filled (with only |
167 | one field). but since this is some sort of streaming data, this is not that negative. | 167 | one field). but since this is some sort of streaming data, this is not that negative. |
168 | but by doing this, we can use the whole engine from video-buf.c... */ | 168 | but by doing this, we can use the whole engine from videobuf-dma-sg.c... */ |
169 | 169 | ||
170 | /* | 170 | /* |
171 | WRITE_RPS1(CMD_PAUSE | CMD_OAN | CMD_SIG1 | e_wait); | 171 | WRITE_RPS1(CMD_PAUSE | CMD_OAN | CMD_SIG1 | e_wait); |
@@ -239,6 +239,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb,e | |||
239 | saa7146_dma_free(dev,q,buf); | 239 | saa7146_dma_free(dev,q,buf); |
240 | 240 | ||
241 | if (STATE_NEEDS_INIT == buf->vb.state) { | 241 | if (STATE_NEEDS_INIT == buf->vb.state) { |
242 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
243 | |||
242 | buf->vb.width = llength; | 244 | buf->vb.width = llength; |
243 | buf->vb.height = lines; | 245 | buf->vb.height = lines; |
244 | buf->vb.size = size; | 246 | buf->vb.size = size; |
@@ -250,7 +252,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb,e | |||
250 | err = videobuf_iolock(q,&buf->vb, NULL); | 252 | err = videobuf_iolock(q,&buf->vb, NULL); |
251 | if (err) | 253 | if (err) |
252 | goto oops; | 254 | goto oops; |
253 | err = saa7146_pgtable_build_single(dev->pci, &buf->pt[2], buf->vb.dma.sglist, buf->vb.dma.sglen); | 255 | err = saa7146_pgtable_build_single(dev->pci, &buf->pt[2], |
256 | dma->sglist, dma->sglen); | ||
254 | if (0 != err) | 257 | if (0 != err) |
255 | return err; | 258 | return err; |
256 | } | 259 | } |
@@ -404,7 +407,7 @@ static int vbi_open(struct saa7146_dev *dev, struct file *file) | |||
404 | fh->vbi_fmt.start[1] = 312; | 407 | fh->vbi_fmt.start[1] = 312; |
405 | fh->vbi_fmt.count[1] = 16; | 408 | fh->vbi_fmt.count[1] = 16; |
406 | 409 | ||
407 | videobuf_queue_init(&fh->vbi_q, &vbi_qops, | 410 | videobuf_queue_pci_init(&fh->vbi_q, &vbi_qops, |
408 | dev->pci, &dev->slock, | 411 | dev->pci, &dev->slock, |
409 | V4L2_BUF_TYPE_VBI_CAPTURE, | 412 | V4L2_BUF_TYPE_VBI_CAPTURE, |
410 | V4L2_FIELD_SEQ_TB, // FIXME: does this really work? | 413 | V4L2_FIELD_SEQ_TB, // FIXME: does this really work? |
diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c index 664280c78ff2..29dbc602a484 100644 --- a/drivers/media/common/saa7146_video.c +++ b/drivers/media/common/saa7146_video.c | |||
@@ -594,8 +594,9 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c) | |||
594 | static int saa7146_pgtable_build(struct saa7146_dev *dev, struct saa7146_buf *buf) | 594 | static int saa7146_pgtable_build(struct saa7146_dev *dev, struct saa7146_buf *buf) |
595 | { | 595 | { |
596 | struct pci_dev *pci = dev->pci; | 596 | struct pci_dev *pci = dev->pci; |
597 | struct scatterlist *list = buf->vb.dma.sglist; | 597 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); |
598 | int length = buf->vb.dma.sglen; | 598 | struct scatterlist *list = dma->sglist; |
599 | int length = dma->sglen; | ||
599 | struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); | 600 | struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); |
600 | 601 | ||
601 | DEB_EE(("dev:%p, buf:%p, sg_len:%d\n",dev,buf,length)); | 602 | DEB_EE(("dev:%p, buf:%p, sg_len:%d\n",dev,buf,length)); |
@@ -655,7 +656,7 @@ static int saa7146_pgtable_build(struct saa7146_dev *dev, struct saa7146_buf *bu | |||
655 | 656 | ||
656 | /* if we have a user buffer, the first page may not be | 657 | /* if we have a user buffer, the first page may not be |
657 | aligned to a page boundary. */ | 658 | aligned to a page boundary. */ |
658 | pt1->offset = buf->vb.dma.sglist->offset; | 659 | pt1->offset = list->offset; |
659 | pt2->offset = pt1->offset+o1; | 660 | pt2->offset = pt1->offset+o1; |
660 | pt3->offset = pt1->offset+o2; | 661 | pt3->offset = pt1->offset+o2; |
661 | 662 | ||
@@ -1411,7 +1412,7 @@ static int video_open(struct saa7146_dev *dev, struct file *file) | |||
1411 | sfmt = format_by_fourcc(dev,fh->video_fmt.pixelformat); | 1412 | sfmt = format_by_fourcc(dev,fh->video_fmt.pixelformat); |
1412 | fh->video_fmt.sizeimage = (fh->video_fmt.width * fh->video_fmt.height * sfmt->depth)/8; | 1413 | fh->video_fmt.sizeimage = (fh->video_fmt.width * fh->video_fmt.height * sfmt->depth)/8; |
1413 | 1414 | ||
1414 | videobuf_queue_init(&fh->video_q, &video_qops, | 1415 | videobuf_queue_pci_init(&fh->video_q, &video_qops, |
1415 | dev->pci, &dev->slock, | 1416 | dev->pci, &dev->slock, |
1416 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 1417 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
1417 | V4L2_FIELD_INTERLACED, | 1418 | V4L2_FIELD_INTERLACED, |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 5d74925748c0..c4f424422f70 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
@@ -364,7 +364,7 @@ endmenu # encoder / decoder chips | |||
364 | config VIDEO_VIVI | 364 | config VIDEO_VIVI |
365 | tristate "Virtual Video Driver" | 365 | tristate "Virtual Video Driver" |
366 | depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 && PCI | 366 | depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 && PCI |
367 | select VIDEO_BUF | 367 | select VIDEOBUF_DMA_SG |
368 | default n | 368 | default n |
369 | ---help--- | 369 | ---help--- |
370 | Enables a virtual video driver. This device shows a color bar | 370 | Enables a virtual video driver. This device shows a color bar |
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile index 9e99d2e1c1bd..cb300241eb89 100644 --- a/drivers/media/video/Makefile +++ b/drivers/media/video/Makefile | |||
@@ -87,7 +87,8 @@ obj-$(CONFIG_TUNER_TDA8290) += tda8290.o | |||
87 | obj-$(CONFIG_TUNER_TEA5767) += tea5767.o | 87 | obj-$(CONFIG_TUNER_TEA5767) += tea5767.o |
88 | obj-$(CONFIG_TUNER_TEA5761) += tea5761.o | 88 | obj-$(CONFIG_TUNER_TEA5761) += tea5761.o |
89 | 89 | ||
90 | obj-$(CONFIG_VIDEO_BUF) += video-buf.o | 90 | obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o |
91 | obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o | ||
91 | obj-$(CONFIG_VIDEO_BUF_DVB) += video-buf-dvb.o | 92 | obj-$(CONFIG_VIDEO_BUF_DVB) += video-buf-dvb.o |
92 | obj-$(CONFIG_VIDEO_BTCX) += btcx-risc.o | 93 | obj-$(CONFIG_VIDEO_BTCX) += btcx-risc.o |
93 | obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o | 94 | obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o |
diff --git a/drivers/media/video/bt8xx/Kconfig b/drivers/media/video/bt8xx/Kconfig index 58eae887a629..2ca162b390a2 100644 --- a/drivers/media/video/bt8xx/Kconfig +++ b/drivers/media/video/bt8xx/Kconfig | |||
@@ -4,7 +4,7 @@ config VIDEO_BT848 | |||
4 | select I2C_ALGOBIT | 4 | select I2C_ALGOBIT |
5 | select FW_LOADER | 5 | select FW_LOADER |
6 | select VIDEO_BTCX | 6 | select VIDEO_BTCX |
7 | select VIDEO_BUF | 7 | select VIDEOBUF_DMA_SG |
8 | select VIDEO_IR | 8 | select VIDEO_IR |
9 | select VIDEO_TUNER | 9 | select VIDEO_TUNER |
10 | select VIDEO_TVEEPROM | 10 | select VIDEO_TVEEPROM |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index 0711c9507843..4ab4e14b5c64 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -2582,7 +2582,7 @@ static int setup_window(struct bttv_fh *fh, struct bttv *btv, | |||
2582 | if (check_btres(fh, RESOURCE_OVERLAY)) { | 2582 | if (check_btres(fh, RESOURCE_OVERLAY)) { |
2583 | struct bttv_buffer *new; | 2583 | struct bttv_buffer *new; |
2584 | 2584 | ||
2585 | new = videobuf_alloc(sizeof(*new)); | 2585 | new = videobuf_pci_alloc(sizeof(*new)); |
2586 | new->crop = btv->crop[!!fh->do_crop].rect; | 2586 | new->crop = btv->crop[!!fh->do_crop].rect; |
2587 | bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new); | 2587 | bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new); |
2588 | retval = bttv_switch_overlay(btv,fh,new); | 2588 | retval = bttv_switch_overlay(btv,fh,new); |
@@ -3048,7 +3048,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file, | |||
3048 | mutex_lock(&fh->cap.lock); | 3048 | mutex_lock(&fh->cap.lock); |
3049 | if (*on) { | 3049 | if (*on) { |
3050 | fh->ov.tvnorm = btv->tvnorm; | 3050 | fh->ov.tvnorm = btv->tvnorm; |
3051 | new = videobuf_alloc(sizeof(*new)); | 3051 | new = videobuf_pci_alloc(sizeof(*new)); |
3052 | new->crop = btv->crop[!!fh->do_crop].rect; | 3052 | new->crop = btv->crop[!!fh->do_crop].rect; |
3053 | bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new); | 3053 | bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new); |
3054 | } else { | 3054 | } else { |
@@ -3141,9 +3141,12 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file, | |||
3141 | retval = -EIO; | 3141 | retval = -EIO; |
3142 | /* fall through */ | 3142 | /* fall through */ |
3143 | case STATE_DONE: | 3143 | case STATE_DONE: |
3144 | videobuf_dma_sync(&fh->cap,&buf->vb.dma); | 3144 | { |
3145 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
3146 | videobuf_dma_sync(&fh->cap,dma); | ||
3145 | bttv_dma_free(&fh->cap,btv,buf); | 3147 | bttv_dma_free(&fh->cap,btv,buf); |
3146 | break; | 3148 | break; |
3149 | } | ||
3147 | default: | 3150 | default: |
3148 | retval = -EINVAL; | 3151 | retval = -EINVAL; |
3149 | break; | 3152 | break; |
@@ -3337,7 +3340,7 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file, | |||
3337 | if (check_btres(fh, RESOURCE_OVERLAY)) { | 3340 | if (check_btres(fh, RESOURCE_OVERLAY)) { |
3338 | struct bttv_buffer *new; | 3341 | struct bttv_buffer *new; |
3339 | 3342 | ||
3340 | new = videobuf_alloc(sizeof(*new)); | 3343 | new = videobuf_pci_alloc(sizeof(*new)); |
3341 | new->crop = btv->crop[!!fh->do_crop].rect; | 3344 | new->crop = btv->crop[!!fh->do_crop].rect; |
3342 | bttv_overlay_risc(btv,&fh->ov,fh->ovfmt,new); | 3345 | bttv_overlay_risc(btv,&fh->ov,fh->ovfmt,new); |
3343 | retval = bttv_switch_overlay(btv,fh,new); | 3346 | retval = bttv_switch_overlay(btv,fh,new); |
@@ -3696,7 +3699,7 @@ static unsigned int bttv_poll(struct file *file, poll_table *wait) | |||
3696 | mutex_unlock(&fh->cap.lock); | 3699 | mutex_unlock(&fh->cap.lock); |
3697 | return POLLERR; | 3700 | return POLLERR; |
3698 | } | 3701 | } |
3699 | fh->cap.read_buf = videobuf_alloc(fh->cap.msize); | 3702 | fh->cap.read_buf = videobuf_pci_alloc(fh->cap.msize); |
3700 | if (NULL == fh->cap.read_buf) { | 3703 | if (NULL == fh->cap.read_buf) { |
3701 | mutex_unlock(&fh->cap.lock); | 3704 | mutex_unlock(&fh->cap.lock); |
3702 | return POLLERR; | 3705 | return POLLERR; |
@@ -3763,13 +3766,13 @@ static int bttv_open(struct inode *inode, struct file *file) | |||
3763 | fh->ov.setup_ok = 0; | 3766 | fh->ov.setup_ok = 0; |
3764 | v4l2_prio_open(&btv->prio,&fh->prio); | 3767 | v4l2_prio_open(&btv->prio,&fh->prio); |
3765 | 3768 | ||
3766 | videobuf_queue_init(&fh->cap, &bttv_video_qops, | 3769 | videobuf_queue_pci_init(&fh->cap, &bttv_video_qops, |
3767 | btv->c.pci, &btv->s_lock, | 3770 | btv->c.pci, &btv->s_lock, |
3768 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 3771 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
3769 | V4L2_FIELD_INTERLACED, | 3772 | V4L2_FIELD_INTERLACED, |
3770 | sizeof(struct bttv_buffer), | 3773 | sizeof(struct bttv_buffer), |
3771 | fh); | 3774 | fh); |
3772 | videobuf_queue_init(&fh->vbi, &bttv_vbi_qops, | 3775 | videobuf_queue_pci_init(&fh->vbi, &bttv_vbi_qops, |
3773 | btv->c.pci, &btv->s_lock, | 3776 | btv->c.pci, &btv->s_lock, |
3774 | V4L2_BUF_TYPE_VBI_CAPTURE, | 3777 | V4L2_BUF_TYPE_VBI_CAPTURE, |
3775 | V4L2_FIELD_SEQ_TB, | 3778 | V4L2_FIELD_SEQ_TB, |
diff --git a/drivers/media/video/bt8xx/bttv-risc.c b/drivers/media/video/bt8xx/bttv-risc.c index e7104d9cb4bd..58986f1a5f1a 100644 --- a/drivers/media/video/bt8xx/bttv-risc.c +++ b/drivers/media/video/bt8xx/bttv-risc.c | |||
@@ -574,10 +574,12 @@ bttv_risc_hook(struct bttv *btv, int slot, struct btcx_riscmem *risc, | |||
574 | void | 574 | void |
575 | bttv_dma_free(struct videobuf_queue *q,struct bttv *btv, struct bttv_buffer *buf) | 575 | bttv_dma_free(struct videobuf_queue *q,struct bttv *btv, struct bttv_buffer *buf) |
576 | { | 576 | { |
577 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
578 | |||
577 | BUG_ON(in_interrupt()); | 579 | BUG_ON(in_interrupt()); |
578 | videobuf_waiton(&buf->vb,0,0); | 580 | videobuf_waiton(&buf->vb,0,0); |
579 | videobuf_dma_unmap(q, &buf->vb.dma); | 581 | videobuf_dma_unmap(q, dma); |
580 | videobuf_dma_free(&buf->vb.dma); | 582 | videobuf_dma_free(dma); |
581 | btcx_riscmem_free(btv->c.pci,&buf->bottom); | 583 | btcx_riscmem_free(btv->c.pci,&buf->bottom); |
582 | btcx_riscmem_free(btv->c.pci,&buf->top); | 584 | btcx_riscmem_free(btv->c.pci,&buf->top); |
583 | buf->vb.state = STATE_NEEDS_INIT; | 585 | buf->vb.state = STATE_NEEDS_INIT; |
@@ -699,6 +701,7 @@ int | |||
699 | bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | 701 | bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) |
700 | { | 702 | { |
701 | const struct bttv_tvnorm *tvnorm = bttv_tvnorms + buf->tvnorm; | 703 | const struct bttv_tvnorm *tvnorm = bttv_tvnorms + buf->tvnorm; |
704 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
702 | 705 | ||
703 | dprintk(KERN_DEBUG | 706 | dprintk(KERN_DEBUG |
704 | "bttv%d: buffer field: %s format: %s size: %dx%d\n", | 707 | "bttv%d: buffer field: %s format: %s size: %dx%d\n", |
@@ -716,25 +719,25 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
716 | 719 | ||
717 | switch (buf->vb.field) { | 720 | switch (buf->vb.field) { |
718 | case V4L2_FIELD_TOP: | 721 | case V4L2_FIELD_TOP: |
719 | bttv_risc_packed(btv,&buf->top,buf->vb.dma.sglist, | 722 | bttv_risc_packed(btv,&buf->top,dma->sglist, |
720 | /* offset */ 0,bpl, | 723 | /* offset */ 0,bpl, |
721 | /* padding */ 0,/* skip_lines */ 0, | 724 | /* padding */ 0,/* skip_lines */ 0, |
722 | buf->vb.height); | 725 | buf->vb.height); |
723 | break; | 726 | break; |
724 | case V4L2_FIELD_BOTTOM: | 727 | case V4L2_FIELD_BOTTOM: |
725 | bttv_risc_packed(btv,&buf->bottom,buf->vb.dma.sglist, | 728 | bttv_risc_packed(btv,&buf->bottom,dma->sglist, |
726 | 0,bpl,0,0,buf->vb.height); | 729 | 0,bpl,0,0,buf->vb.height); |
727 | break; | 730 | break; |
728 | case V4L2_FIELD_INTERLACED: | 731 | case V4L2_FIELD_INTERLACED: |
729 | bttv_risc_packed(btv,&buf->top,buf->vb.dma.sglist, | 732 | bttv_risc_packed(btv,&buf->top,dma->sglist, |
730 | 0,bpl,bpl,0,buf->vb.height >> 1); | 733 | 0,bpl,bpl,0,buf->vb.height >> 1); |
731 | bttv_risc_packed(btv,&buf->bottom,buf->vb.dma.sglist, | 734 | bttv_risc_packed(btv,&buf->bottom,dma->sglist, |
732 | bpl,bpl,bpl,0,buf->vb.height >> 1); | 735 | bpl,bpl,bpl,0,buf->vb.height >> 1); |
733 | break; | 736 | break; |
734 | case V4L2_FIELD_SEQ_TB: | 737 | case V4L2_FIELD_SEQ_TB: |
735 | bttv_risc_packed(btv,&buf->top,buf->vb.dma.sglist, | 738 | bttv_risc_packed(btv,&buf->top,dma->sglist, |
736 | 0,bpl,0,0,buf->vb.height >> 1); | 739 | 0,bpl,0,0,buf->vb.height >> 1); |
737 | bttv_risc_packed(btv,&buf->bottom,buf->vb.dma.sglist, | 740 | bttv_risc_packed(btv,&buf->bottom,dma->sglist, |
738 | bpf,bpl,0,0,buf->vb.height >> 1); | 741 | bpf,bpl,0,0,buf->vb.height >> 1); |
739 | break; | 742 | break; |
740 | default: | 743 | default: |
@@ -767,7 +770,7 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
767 | bttv_calc_geo(btv,&buf->geo,buf->vb.width, | 770 | bttv_calc_geo(btv,&buf->geo,buf->vb.width, |
768 | buf->vb.height,/* both_fields */ 0, | 771 | buf->vb.height,/* both_fields */ 0, |
769 | tvnorm,&buf->crop); | 772 | tvnorm,&buf->crop); |
770 | bttv_risc_planar(btv, &buf->top, buf->vb.dma.sglist, | 773 | bttv_risc_planar(btv, &buf->top, dma->sglist, |
771 | 0,buf->vb.width,0,buf->vb.height, | 774 | 0,buf->vb.width,0,buf->vb.height, |
772 | uoffset,voffset,buf->fmt->hshift, | 775 | uoffset,voffset,buf->fmt->hshift, |
773 | buf->fmt->vshift,0); | 776 | buf->fmt->vshift,0); |
@@ -776,7 +779,7 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
776 | bttv_calc_geo(btv,&buf->geo,buf->vb.width, | 779 | bttv_calc_geo(btv,&buf->geo,buf->vb.width, |
777 | buf->vb.height,0, | 780 | buf->vb.height,0, |
778 | tvnorm,&buf->crop); | 781 | tvnorm,&buf->crop); |
779 | bttv_risc_planar(btv, &buf->bottom, buf->vb.dma.sglist, | 782 | bttv_risc_planar(btv, &buf->bottom, dma->sglist, |
780 | 0,buf->vb.width,0,buf->vb.height, | 783 | 0,buf->vb.width,0,buf->vb.height, |
781 | uoffset,voffset,buf->fmt->hshift, | 784 | uoffset,voffset,buf->fmt->hshift, |
782 | buf->fmt->vshift,0); | 785 | buf->fmt->vshift,0); |
@@ -789,14 +792,14 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
789 | ypadding = buf->vb.width; | 792 | ypadding = buf->vb.width; |
790 | cpadding = buf->vb.width >> buf->fmt->hshift; | 793 | cpadding = buf->vb.width >> buf->fmt->hshift; |
791 | bttv_risc_planar(btv,&buf->top, | 794 | bttv_risc_planar(btv,&buf->top, |
792 | buf->vb.dma.sglist, | 795 | dma->sglist, |
793 | 0,buf->vb.width,ypadding,lines, | 796 | 0,buf->vb.width,ypadding,lines, |
794 | uoffset,voffset, | 797 | uoffset,voffset, |
795 | buf->fmt->hshift, | 798 | buf->fmt->hshift, |
796 | buf->fmt->vshift, | 799 | buf->fmt->vshift, |
797 | cpadding); | 800 | cpadding); |
798 | bttv_risc_planar(btv,&buf->bottom, | 801 | bttv_risc_planar(btv,&buf->bottom, |
799 | buf->vb.dma.sglist, | 802 | dma->sglist, |
800 | ypadding,buf->vb.width,ypadding,lines, | 803 | ypadding,buf->vb.width,ypadding,lines, |
801 | uoffset+cpadding, | 804 | uoffset+cpadding, |
802 | voffset+cpadding, | 805 | voffset+cpadding, |
@@ -812,7 +815,7 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
812 | ypadding = buf->vb.width; | 815 | ypadding = buf->vb.width; |
813 | cpadding = buf->vb.width >> buf->fmt->hshift; | 816 | cpadding = buf->vb.width >> buf->fmt->hshift; |
814 | bttv_risc_planar(btv,&buf->top, | 817 | bttv_risc_planar(btv,&buf->top, |
815 | buf->vb.dma.sglist, | 818 | dma->sglist, |
816 | 0,buf->vb.width,0,lines, | 819 | 0,buf->vb.width,0,lines, |
817 | uoffset >> 1, | 820 | uoffset >> 1, |
818 | voffset >> 1, | 821 | voffset >> 1, |
@@ -820,7 +823,7 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
820 | buf->fmt->vshift, | 823 | buf->fmt->vshift, |
821 | 0); | 824 | 0); |
822 | bttv_risc_planar(btv,&buf->bottom, | 825 | bttv_risc_planar(btv,&buf->bottom, |
823 | buf->vb.dma.sglist, | 826 | dma->sglist, |
824 | lines * ypadding,buf->vb.width,0,lines, | 827 | lines * ypadding,buf->vb.width,0,lines, |
825 | lines * ypadding + (uoffset >> 1), | 828 | lines * ypadding + (uoffset >> 1), |
826 | lines * ypadding + (voffset >> 1), | 829 | lines * ypadding + (voffset >> 1), |
@@ -839,10 +842,10 @@ bttv_buffer_risc(struct bttv *btv, struct bttv_buffer *buf) | |||
839 | buf->vb.field = V4L2_FIELD_SEQ_TB; | 842 | buf->vb.field = V4L2_FIELD_SEQ_TB; |
840 | bttv_calc_geo(btv,&buf->geo,tvnorm->swidth,tvnorm->sheight, | 843 | bttv_calc_geo(btv,&buf->geo,tvnorm->swidth,tvnorm->sheight, |
841 | 1,tvnorm,&buf->crop); | 844 | 1,tvnorm,&buf->crop); |
842 | bttv_risc_packed(btv, &buf->top, buf->vb.dma.sglist, | 845 | bttv_risc_packed(btv, &buf->top, dma->sglist, |
843 | /* offset */ 0, RAW_BPL, /* padding */ 0, | 846 | /* offset */ 0, RAW_BPL, /* padding */ 0, |
844 | /* skip_lines */ 0, RAW_LINES); | 847 | /* skip_lines */ 0, RAW_LINES); |
845 | bttv_risc_packed(btv, &buf->bottom, buf->vb.dma.sglist, | 848 | bttv_risc_packed(btv, &buf->bottom, dma->sglist, |
846 | buf->vb.size/2 , RAW_BPL, 0, 0, RAW_LINES); | 849 | buf->vb.size/2 , RAW_BPL, 0, 0, RAW_LINES); |
847 | } | 850 | } |
848 | 851 | ||
diff --git a/drivers/media/video/bt8xx/bttv-vbi.c b/drivers/media/video/bt8xx/bttv-vbi.c index 007485aa4f01..346ce019bdcb 100644 --- a/drivers/media/video/bt8xx/bttv-vbi.c +++ b/drivers/media/video/bt8xx/bttv-vbi.c | |||
@@ -150,13 +150,14 @@ static int vbi_buffer_prepare(struct videobuf_queue *q, | |||
150 | 150 | ||
151 | if (redo_dma_risc) { | 151 | if (redo_dma_risc) { |
152 | unsigned int bpl, padding, offset; | 152 | unsigned int bpl, padding, offset; |
153 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
153 | 154 | ||
154 | bpl = 2044; /* max. vbipack */ | 155 | bpl = 2044; /* max. vbipack */ |
155 | padding = VBI_BPL - bpl; | 156 | padding = VBI_BPL - bpl; |
156 | 157 | ||
157 | if (fh->vbi_fmt.fmt.count[0] > 0) { | 158 | if (fh->vbi_fmt.fmt.count[0] > 0) { |
158 | rc = bttv_risc_packed(btv, &buf->top, | 159 | rc = bttv_risc_packed(btv, &buf->top, |
159 | buf->vb.dma.sglist, | 160 | dma->sglist, |
160 | /* offset */ 0, bpl, | 161 | /* offset */ 0, bpl, |
161 | padding, skip_lines0, | 162 | padding, skip_lines0, |
162 | fh->vbi_fmt.fmt.count[0]); | 163 | fh->vbi_fmt.fmt.count[0]); |
@@ -168,7 +169,7 @@ static int vbi_buffer_prepare(struct videobuf_queue *q, | |||
168 | offset = fh->vbi_fmt.fmt.count[0] * VBI_BPL; | 169 | offset = fh->vbi_fmt.fmt.count[0] * VBI_BPL; |
169 | 170 | ||
170 | rc = bttv_risc_packed(btv, &buf->bottom, | 171 | rc = bttv_risc_packed(btv, &buf->bottom, |
171 | buf->vb.dma.sglist, | 172 | dma->sglist, |
172 | offset, bpl, | 173 | offset, bpl, |
173 | padding, skip_lines1, | 174 | padding, skip_lines1, |
174 | fh->vbi_fmt.fmt.count[1]); | 175 | fh->vbi_fmt.fmt.count[1]); |
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h index 5b25faca1504..0b92c35a8435 100644 --- a/drivers/media/video/bt8xx/bttvp.h +++ b/drivers/media/video/bt8xx/bttvp.h | |||
@@ -41,7 +41,7 @@ | |||
41 | #include <media/v4l2-common.h> | 41 | #include <media/v4l2-common.h> |
42 | 42 | ||
43 | #include <linux/device.h> | 43 | #include <linux/device.h> |
44 | #include <media/video-buf.h> | 44 | #include <media/videobuf-dma-sg.h> |
45 | #include <media/tuner.h> | 45 | #include <media/tuner.h> |
46 | #include <media/tveeprom.h> | 46 | #include <media/tveeprom.h> |
47 | #include <media/ir-common.h> | 47 | #include <media/ir-common.h> |
diff --git a/drivers/media/video/cafe_ccic.c b/drivers/media/video/cafe_ccic.c index ccb37006bb18..b63cab336920 100644 --- a/drivers/media/video/cafe_ccic.c +++ b/drivers/media/video/cafe_ccic.c | |||
@@ -1197,7 +1197,7 @@ static int cafe_setup_siobuf(struct cafe_camera *cam, int index) | |||
1197 | buf->v4lbuf.field = V4L2_FIELD_NONE; | 1197 | buf->v4lbuf.field = V4L2_FIELD_NONE; |
1198 | buf->v4lbuf.memory = V4L2_MEMORY_MMAP; | 1198 | buf->v4lbuf.memory = V4L2_MEMORY_MMAP; |
1199 | /* | 1199 | /* |
1200 | * Offset: must be 32-bit even on a 64-bit system. video-buf | 1200 | * Offset: must be 32-bit even on a 64-bit system. videobuf-dma-sg |
1201 | * just uses the length times the index, but the spec warns | 1201 | * just uses the length times the index, but the spec warns |
1202 | * against doing just that - vma merging problems. So we | 1202 | * against doing just that - vma merging problems. So we |
1203 | * leave a gap between each pair of buffers. | 1203 | * leave a gap between each pair of buffers. |
diff --git a/drivers/media/video/cx88/Kconfig b/drivers/media/video/cx88/Kconfig index f750a543c961..c68ba74d44ec 100644 --- a/drivers/media/video/cx88/Kconfig +++ b/drivers/media/video/cx88/Kconfig | |||
@@ -4,7 +4,7 @@ config VIDEO_CX88 | |||
4 | select I2C_ALGOBIT | 4 | select I2C_ALGOBIT |
5 | select FW_LOADER | 5 | select FW_LOADER |
6 | select VIDEO_BTCX | 6 | select VIDEO_BTCX |
7 | select VIDEO_BUF | 7 | select VIDEOBUF_DMA_SG |
8 | select VIDEO_TUNER | 8 | select VIDEO_TUNER |
9 | select VIDEO_TVEEPROM | 9 | select VIDEO_TVEEPROM |
10 | select VIDEO_IR | 10 | select VIDEO_IR |
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c index f4abed454fd4..90c36c5705c3 100644 --- a/drivers/media/video/cx88/cx88-alsa.c +++ b/drivers/media/video/cx88/cx88-alsa.c | |||
@@ -72,7 +72,7 @@ struct cx88_audio_dev { | |||
72 | unsigned int period_size; | 72 | unsigned int period_size; |
73 | unsigned int num_periods; | 73 | unsigned int num_periods; |
74 | 74 | ||
75 | struct videobuf_dmabuf dma_risc; | 75 | struct videobuf_dmabuf *dma_risc; |
76 | 76 | ||
77 | struct cx88_buffer *buf; | 77 | struct cx88_buffer *buf; |
78 | 78 | ||
@@ -282,11 +282,12 @@ static int dsp_buffer_free(snd_cx88_card_t *chip) | |||
282 | BUG_ON(!chip->dma_size); | 282 | BUG_ON(!chip->dma_size); |
283 | 283 | ||
284 | dprintk(2,"Freeing buffer\n"); | 284 | dprintk(2,"Freeing buffer\n"); |
285 | videobuf_pci_dma_unmap(chip->pci, &chip->dma_risc); | 285 | videobuf_pci_dma_unmap(chip->pci, chip->dma_risc); |
286 | videobuf_dma_free(&chip->dma_risc); | 286 | videobuf_dma_free(chip->dma_risc); |
287 | btcx_riscmem_free(chip->pci,&chip->buf->risc); | 287 | btcx_riscmem_free(chip->pci,&chip->buf->risc); |
288 | kfree(chip->buf); | 288 | kfree(chip->buf); |
289 | 289 | ||
290 | chip->dma_risc = NULL; | ||
290 | chip->dma_size = 0; | 291 | chip->dma_size = 0; |
291 | 292 | ||
292 | return 0; | 293 | return 0; |
@@ -366,6 +367,8 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream, | |||
366 | struct snd_pcm_hw_params * hw_params) | 367 | struct snd_pcm_hw_params * hw_params) |
367 | { | 368 | { |
368 | snd_cx88_card_t *chip = snd_pcm_substream_chip(substream); | 369 | snd_cx88_card_t *chip = snd_pcm_substream_chip(substream); |
370 | struct videobuf_dmabuf *dma; | ||
371 | |||
369 | struct cx88_buffer *buf; | 372 | struct cx88_buffer *buf; |
370 | int ret; | 373 | int ret; |
371 | 374 | ||
@@ -381,7 +384,7 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream, | |||
381 | BUG_ON(!chip->dma_size); | 384 | BUG_ON(!chip->dma_size); |
382 | BUG_ON(chip->num_periods & (chip->num_periods-1)); | 385 | BUG_ON(chip->num_periods & (chip->num_periods-1)); |
383 | 386 | ||
384 | buf = kzalloc(sizeof(*buf), GFP_KERNEL); | 387 | buf = videobuf_pci_alloc(sizeof(*buf)); |
385 | if (NULL == buf) | 388 | if (NULL == buf) |
386 | return -ENOMEM; | 389 | return -ENOMEM; |
387 | 390 | ||
@@ -392,17 +395,18 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream, | |||
392 | buf->vb.height = chip->num_periods; | 395 | buf->vb.height = chip->num_periods; |
393 | buf->vb.size = chip->dma_size; | 396 | buf->vb.size = chip->dma_size; |
394 | 397 | ||
395 | videobuf_dma_init(&buf->vb.dma); | 398 | dma=videobuf_to_dma(&buf->vb); |
396 | ret = videobuf_dma_init_kernel(&buf->vb.dma, PCI_DMA_FROMDEVICE, | 399 | videobuf_dma_init(dma); |
400 | ret = videobuf_dma_init_kernel(dma, PCI_DMA_FROMDEVICE, | ||
397 | (PAGE_ALIGN(buf->vb.size) >> PAGE_SHIFT)); | 401 | (PAGE_ALIGN(buf->vb.size) >> PAGE_SHIFT)); |
398 | if (ret < 0) | 402 | if (ret < 0) |
399 | goto error; | 403 | goto error; |
400 | 404 | ||
401 | ret = videobuf_pci_dma_map(chip->pci,&buf->vb.dma); | 405 | ret = videobuf_pci_dma_map(chip->pci,dma); |
402 | if (ret < 0) | 406 | if (ret < 0) |
403 | goto error; | 407 | goto error; |
404 | 408 | ||
405 | ret = cx88_risc_databuffer(chip->pci, &buf->risc, buf->vb.dma.sglist, | 409 | ret = cx88_risc_databuffer(chip->pci, &buf->risc, dma->sglist, |
406 | buf->vb.width, buf->vb.height, 1); | 410 | buf->vb.width, buf->vb.height, 1); |
407 | if (ret < 0) | 411 | if (ret < 0) |
408 | goto error; | 412 | goto error; |
@@ -414,9 +418,9 @@ static int snd_cx88_hw_params(struct snd_pcm_substream * substream, | |||
414 | buf->vb.state = STATE_PREPARED; | 418 | buf->vb.state = STATE_PREPARED; |
415 | 419 | ||
416 | chip->buf = buf; | 420 | chip->buf = buf; |
417 | chip->dma_risc = buf->vb.dma; | 421 | chip->dma_risc = dma; |
418 | 422 | ||
419 | substream->runtime->dma_area = chip->dma_risc.vmalloc; | 423 | substream->runtime->dma_area = chip->dma_risc->vmalloc; |
420 | substream->runtime->dma_bytes = chip->dma_size; | 424 | substream->runtime->dma_bytes = chip->dma_size; |
421 | substream->runtime->dma_addr = 0; | 425 | substream->runtime->dma_addr = 0; |
422 | return 0; | 426 | return 0; |
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c index fcaf4f51293f..6d6f5048d762 100644 --- a/drivers/media/video/cx88/cx88-blackbird.c +++ b/drivers/media/video/cx88/cx88-blackbird.c | |||
@@ -1111,7 +1111,7 @@ static int mpeg_open(struct inode *inode, struct file *file) | |||
1111 | file->private_data = fh; | 1111 | file->private_data = fh; |
1112 | fh->dev = dev; | 1112 | fh->dev = dev; |
1113 | 1113 | ||
1114 | videobuf_queue_init(&fh->mpegq, &blackbird_qops, | 1114 | videobuf_queue_pci_init(&fh->mpegq, &blackbird_qops, |
1115 | dev->pci, &dev->slock, | 1115 | dev->pci, &dev->slock, |
1116 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 1116 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
1117 | V4L2_FIELD_INTERLACED, | 1117 | V4L2_FIELD_INTERLACED, |
diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c index 716154828ff0..85609b41f86e 100644 --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c | |||
@@ -213,10 +213,12 @@ int cx88_risc_stopper(struct pci_dev *pci, struct btcx_riscmem *risc, | |||
213 | void | 213 | void |
214 | cx88_free_buffer(struct videobuf_queue *q, struct cx88_buffer *buf) | 214 | cx88_free_buffer(struct videobuf_queue *q, struct cx88_buffer *buf) |
215 | { | 215 | { |
216 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
217 | |||
216 | BUG_ON(in_interrupt()); | 218 | BUG_ON(in_interrupt()); |
217 | videobuf_waiton(&buf->vb,0,0); | 219 | videobuf_waiton(&buf->vb,0,0); |
218 | videobuf_dma_unmap(q, &buf->vb.dma); | 220 | videobuf_dma_unmap(q, dma); |
219 | videobuf_dma_free(&buf->vb.dma); | 221 | videobuf_dma_free(dma); |
220 | btcx_riscmem_free((struct pci_dev *)q->dev, &buf->risc); | 222 | btcx_riscmem_free((struct pci_dev *)q->dev, &buf->risc); |
221 | buf->vb.state = STATE_NEEDS_INIT; | 223 | buf->vb.state = STATE_NEEDS_INIT; |
222 | } | 224 | } |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 00d0e43785a0..d16e5c6d21c0 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -710,7 +710,7 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv) | |||
710 | 710 | ||
711 | /* dvb stuff */ | 711 | /* dvb stuff */ |
712 | printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name); | 712 | printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name); |
713 | videobuf_queue_init(&dev->dvb.dvbq, &dvb_qops, | 713 | videobuf_queue_pci_init(&dev->dvb.dvbq, &dvb_qops, |
714 | dev->pci, &dev->slock, | 714 | dev->pci, &dev->slock, |
715 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 715 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
716 | V4L2_FIELD_TOP, | 716 | V4L2_FIELD_TOP, |
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c index d302793fcfb9..a652f294d23d 100644 --- a/drivers/media/video/cx88/cx88-mpeg.c +++ b/drivers/media/video/cx88/cx88-mpeg.c | |||
@@ -237,6 +237,7 @@ int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev, | |||
237 | struct cx88_buffer *buf, enum v4l2_field field) | 237 | struct cx88_buffer *buf, enum v4l2_field field) |
238 | { | 238 | { |
239 | int size = dev->ts_packet_size * dev->ts_packet_count; | 239 | int size = dev->ts_packet_size * dev->ts_packet_count; |
240 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
240 | int rc; | 241 | int rc; |
241 | 242 | ||
242 | dprintk(1, "%s: %p\n", __FUNCTION__, buf); | 243 | dprintk(1, "%s: %p\n", __FUNCTION__, buf); |
@@ -252,7 +253,7 @@ int cx8802_buf_prepare(struct videobuf_queue *q, struct cx8802_dev *dev, | |||
252 | if (0 != (rc = videobuf_iolock(q,&buf->vb,NULL))) | 253 | if (0 != (rc = videobuf_iolock(q,&buf->vb,NULL))) |
253 | goto fail; | 254 | goto fail; |
254 | cx88_risc_databuffer(dev->pci, &buf->risc, | 255 | cx88_risc_databuffer(dev->pci, &buf->risc, |
255 | buf->vb.dma.sglist, | 256 | dma->sglist, |
256 | buf->vb.width, buf->vb.height, 0); | 257 | buf->vb.width, buf->vb.height, 0); |
257 | } | 258 | } |
258 | buf->vb.state = STATE_PREPARED; | 259 | buf->vb.state = STATE_PREPARED; |
diff --git a/drivers/media/video/cx88/cx88-vbi.c b/drivers/media/video/cx88/cx88-vbi.c index 72c1d19fa79f..aa40505c4b3a 100644 --- a/drivers/media/video/cx88/cx88-vbi.c +++ b/drivers/media/video/cx88/cx88-vbi.c | |||
@@ -172,6 +172,7 @@ vbi_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
172 | return -EINVAL; | 172 | return -EINVAL; |
173 | 173 | ||
174 | if (STATE_NEEDS_INIT == buf->vb.state) { | 174 | if (STATE_NEEDS_INIT == buf->vb.state) { |
175 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
175 | buf->vb.width = VBI_LINE_LENGTH; | 176 | buf->vb.width = VBI_LINE_LENGTH; |
176 | buf->vb.height = VBI_LINE_COUNT; | 177 | buf->vb.height = VBI_LINE_COUNT; |
177 | buf->vb.size = size; | 178 | buf->vb.size = size; |
@@ -180,7 +181,7 @@ vbi_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
180 | if (0 != (rc = videobuf_iolock(q,&buf->vb,NULL))) | 181 | if (0 != (rc = videobuf_iolock(q,&buf->vb,NULL))) |
181 | goto fail; | 182 | goto fail; |
182 | cx88_risc_buffer(dev->pci, &buf->risc, | 183 | cx88_risc_buffer(dev->pci, &buf->risc, |
183 | buf->vb.dma.sglist, | 184 | dma->sglist, |
184 | 0, buf->vb.width * buf->vb.height, | 185 | 0, buf->vb.width * buf->vb.height, |
185 | buf->vb.width, 0, | 186 | buf->vb.width, 0, |
186 | buf->vb.height); | 187 | buf->vb.height); |
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index 705c29b002ea..1439b7268532 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -534,6 +534,7 @@ buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
534 | struct cx8800_dev *dev = fh->dev; | 534 | struct cx8800_dev *dev = fh->dev; |
535 | struct cx88_core *core = dev->core; | 535 | struct cx88_core *core = dev->core; |
536 | struct cx88_buffer *buf = container_of(vb,struct cx88_buffer,vb); | 536 | struct cx88_buffer *buf = container_of(vb,struct cx88_buffer,vb); |
537 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
537 | int rc, init_buffer = 0; | 538 | int rc, init_buffer = 0; |
538 | 539 | ||
539 | BUG_ON(NULL == fh->fmt); | 540 | BUG_ON(NULL == fh->fmt); |
@@ -566,30 +567,30 @@ buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
566 | switch (buf->vb.field) { | 567 | switch (buf->vb.field) { |
567 | case V4L2_FIELD_TOP: | 568 | case V4L2_FIELD_TOP: |
568 | cx88_risc_buffer(dev->pci, &buf->risc, | 569 | cx88_risc_buffer(dev->pci, &buf->risc, |
569 | buf->vb.dma.sglist, 0, UNSET, | 570 | dma->sglist, 0, UNSET, |
570 | buf->bpl, 0, buf->vb.height); | 571 | buf->bpl, 0, buf->vb.height); |
571 | break; | 572 | break; |
572 | case V4L2_FIELD_BOTTOM: | 573 | case V4L2_FIELD_BOTTOM: |
573 | cx88_risc_buffer(dev->pci, &buf->risc, | 574 | cx88_risc_buffer(dev->pci, &buf->risc, |
574 | buf->vb.dma.sglist, UNSET, 0, | 575 | dma->sglist, UNSET, 0, |
575 | buf->bpl, 0, buf->vb.height); | 576 | buf->bpl, 0, buf->vb.height); |
576 | break; | 577 | break; |
577 | case V4L2_FIELD_INTERLACED: | 578 | case V4L2_FIELD_INTERLACED: |
578 | cx88_risc_buffer(dev->pci, &buf->risc, | 579 | cx88_risc_buffer(dev->pci, &buf->risc, |
579 | buf->vb.dma.sglist, 0, buf->bpl, | 580 | dma->sglist, 0, buf->bpl, |
580 | buf->bpl, buf->bpl, | 581 | buf->bpl, buf->bpl, |
581 | buf->vb.height >> 1); | 582 | buf->vb.height >> 1); |
582 | break; | 583 | break; |
583 | case V4L2_FIELD_SEQ_TB: | 584 | case V4L2_FIELD_SEQ_TB: |
584 | cx88_risc_buffer(dev->pci, &buf->risc, | 585 | cx88_risc_buffer(dev->pci, &buf->risc, |
585 | buf->vb.dma.sglist, | 586 | dma->sglist, |
586 | 0, buf->bpl * (buf->vb.height >> 1), | 587 | 0, buf->bpl * (buf->vb.height >> 1), |
587 | buf->bpl, 0, | 588 | buf->bpl, 0, |
588 | buf->vb.height >> 1); | 589 | buf->vb.height >> 1); |
589 | break; | 590 | break; |
590 | case V4L2_FIELD_SEQ_BT: | 591 | case V4L2_FIELD_SEQ_BT: |
591 | cx88_risc_buffer(dev->pci, &buf->risc, | 592 | cx88_risc_buffer(dev->pci, &buf->risc, |
592 | buf->vb.dma.sglist, | 593 | dma->sglist, |
593 | buf->bpl * (buf->vb.height >> 1), 0, | 594 | buf->bpl * (buf->vb.height >> 1), 0, |
594 | buf->bpl, 0, | 595 | buf->bpl, 0, |
595 | buf->vb.height >> 1); | 596 | buf->vb.height >> 1); |
@@ -752,13 +753,13 @@ static int video_open(struct inode *inode, struct file *file) | |||
752 | fh->height = 240; | 753 | fh->height = 240; |
753 | fh->fmt = format_by_fourcc(V4L2_PIX_FMT_BGR24); | 754 | fh->fmt = format_by_fourcc(V4L2_PIX_FMT_BGR24); |
754 | 755 | ||
755 | videobuf_queue_init(&fh->vidq, &cx8800_video_qops, | 756 | videobuf_queue_pci_init(&fh->vidq, &cx8800_video_qops, |
756 | dev->pci, &dev->slock, | 757 | dev->pci, &dev->slock, |
757 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 758 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
758 | V4L2_FIELD_INTERLACED, | 759 | V4L2_FIELD_INTERLACED, |
759 | sizeof(struct cx88_buffer), | 760 | sizeof(struct cx88_buffer), |
760 | fh); | 761 | fh); |
761 | videobuf_queue_init(&fh->vbiq, &cx8800_vbi_qops, | 762 | videobuf_queue_pci_init(&fh->vbiq, &cx8800_vbi_qops, |
762 | dev->pci, &dev->slock, | 763 | dev->pci, &dev->slock, |
763 | V4L2_BUF_TYPE_VBI_CAPTURE, | 764 | V4L2_BUF_TYPE_VBI_CAPTURE, |
764 | V4L2_FIELD_SEQ_TB, | 765 | V4L2_FIELD_SEQ_TB, |
@@ -1104,28 +1105,9 @@ static int vidioc_enum_fmt_cap (struct file *file, void *priv, | |||
1104 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | 1105 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
1105 | static int vidiocgmbuf (struct file *file, void *priv, struct video_mbuf *mbuf) | 1106 | static int vidiocgmbuf (struct file *file, void *priv, struct video_mbuf *mbuf) |
1106 | { | 1107 | { |
1107 | struct cx8800_fh *fh = priv; | 1108 | struct cx8800_fh *fh = priv; |
1108 | struct videobuf_queue *q; | ||
1109 | struct v4l2_requestbuffers req; | ||
1110 | unsigned int i; | ||
1111 | int err; | ||
1112 | 1109 | ||
1113 | q = get_queue(fh); | 1110 | return videobuf_cgmbuf (get_queue(fh), mbuf, 8); |
1114 | memset(&req,0,sizeof(req)); | ||
1115 | req.type = q->type; | ||
1116 | req.count = 8; | ||
1117 | req.memory = V4L2_MEMORY_MMAP; | ||
1118 | err = videobuf_reqbufs(q,&req); | ||
1119 | if (err < 0) | ||
1120 | return err; | ||
1121 | |||
1122 | mbuf->frames = req.count; | ||
1123 | mbuf->size = 0; | ||
1124 | for (i = 0; i < mbuf->frames; i++) { | ||
1125 | mbuf->offsets[i] = q->bufs[i]->boff; | ||
1126 | mbuf->size += q->bufs[i]->bsize; | ||
1127 | } | ||
1128 | return 0; | ||
1129 | } | 1111 | } |
1130 | #endif | 1112 | #endif |
1131 | 1113 | ||
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 0e4f8e278671..875a9abab2a2 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <media/v4l2-common.h> | 28 | #include <media/v4l2-common.h> |
29 | #include <media/tuner.h> | 29 | #include <media/tuner.h> |
30 | #include <media/tveeprom.h> | 30 | #include <media/tveeprom.h> |
31 | #include <media/video-buf.h> | 31 | #include <media/videobuf-dma-sg.h> |
32 | #include <media/cx2341x.h> | 32 | #include <media/cx2341x.h> |
33 | #include <media/audiochip.h> | 33 | #include <media/audiochip.h> |
34 | #if defined(CONFIG_VIDEO_BUF_DVB) || defined(CONFIG_VIDEO_BUF_DVB_MODULE) | 34 | #if defined(CONFIG_VIDEO_BUF_DVB) || defined(CONFIG_VIDEO_BUF_DVB_MODULE) |
diff --git a/drivers/media/video/saa7134/Kconfig b/drivers/media/video/saa7134/Kconfig index 9f1417a4f7d2..82bc4ef414ac 100644 --- a/drivers/media/video/saa7134/Kconfig +++ b/drivers/media/video/saa7134/Kconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | config VIDEO_SAA7134 | 1 | config VIDEO_SAA7134 |
2 | tristate "Philips SAA7134 support" | 2 | tristate "Philips SAA7134 support" |
3 | depends on VIDEO_DEV && PCI && I2C | 3 | depends on VIDEO_DEV && PCI && I2C |
4 | select VIDEO_BUF | 4 | select VIDEOBUF_DMA_SG |
5 | select VIDEO_IR | 5 | select VIDEO_IR |
6 | select VIDEO_TUNER | 6 | select VIDEO_TUNER |
7 | select CRC32 | 7 | select CRC32 |
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c index 80108ddf4834..a1d986e01a30 100644 --- a/drivers/media/video/saa7134/saa7134-core.c +++ b/drivers/media/video/saa7134/saa7134-core.c | |||
@@ -236,9 +236,10 @@ int saa7134_buffer_startpage(struct saa7134_buf *buf) | |||
236 | unsigned long saa7134_buffer_base(struct saa7134_buf *buf) | 236 | unsigned long saa7134_buffer_base(struct saa7134_buf *buf) |
237 | { | 237 | { |
238 | unsigned long base; | 238 | unsigned long base; |
239 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
239 | 240 | ||
240 | base = saa7134_buffer_startpage(buf) * 4096; | 241 | base = saa7134_buffer_startpage(buf) * 4096; |
241 | base += buf->vb.dma.sglist[0].offset; | 242 | base += dma->sglist[0].offset; |
242 | return base; | 243 | return base; |
243 | } | 244 | } |
244 | 245 | ||
@@ -286,11 +287,12 @@ void saa7134_pgtable_free(struct pci_dev *pci, struct saa7134_pgtable *pt) | |||
286 | 287 | ||
287 | void saa7134_dma_free(struct videobuf_queue *q,struct saa7134_buf *buf) | 288 | void saa7134_dma_free(struct videobuf_queue *q,struct saa7134_buf *buf) |
288 | { | 289 | { |
290 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
289 | BUG_ON(in_interrupt()); | 291 | BUG_ON(in_interrupt()); |
290 | 292 | ||
291 | videobuf_waiton(&buf->vb,0,0); | 293 | videobuf_waiton(&buf->vb,0,0); |
292 | videobuf_dma_unmap(q, &buf->vb.dma); | 294 | videobuf_dma_unmap(q, dma); |
293 | videobuf_dma_free(&buf->vb.dma); | 295 | videobuf_dma_free(dma); |
294 | buf->vb.state = STATE_NEEDS_INIT; | 296 | buf->vb.state = STATE_NEEDS_INIT; |
295 | } | 297 | } |
296 | 298 | ||
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c index bbab252cbeee..38d87332cc5d 100644 --- a/drivers/media/video/saa7134/saa7134-dvb.c +++ b/drivers/media/video/saa7134/saa7134-dvb.c | |||
@@ -850,7 +850,7 @@ static int dvb_init(struct saa7134_dev *dev) | |||
850 | dev->ts.nr_bufs = 32; | 850 | dev->ts.nr_bufs = 32; |
851 | dev->ts.nr_packets = 32*4; | 851 | dev->ts.nr_packets = 32*4; |
852 | dev->dvb.name = dev->name; | 852 | dev->dvb.name = dev->name; |
853 | videobuf_queue_init(&dev->dvb.dvbq, &saa7134_ts_qops, | 853 | videobuf_queue_pci_init(&dev->dvb.dvbq, &saa7134_ts_qops, |
854 | dev->pci, &dev->slock, | 854 | dev->pci, &dev->slock, |
855 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 855 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
856 | V4L2_FIELD_ALTERNATE, | 856 | V4L2_FIELD_ALTERNATE, |
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c index 7ed4eaf05e13..a16df57af63a 100644 --- a/drivers/media/video/saa7134/saa7134-empress.c +++ b/drivers/media/video/saa7134/saa7134-empress.c | |||
@@ -400,7 +400,7 @@ static int empress_init(struct saa7134_dev *dev) | |||
400 | printk(KERN_INFO "%s: registered device video%d [mpeg]\n", | 400 | printk(KERN_INFO "%s: registered device video%d [mpeg]\n", |
401 | dev->name,dev->empress_dev->minor & 0x1f); | 401 | dev->name,dev->empress_dev->minor & 0x1f); |
402 | 402 | ||
403 | videobuf_queue_init(&dev->empress_tsq, &saa7134_ts_qops, | 403 | videobuf_queue_pci_init(&dev->empress_tsq, &saa7134_ts_qops, |
404 | dev->pci, &dev->slock, | 404 | dev->pci, &dev->slock, |
405 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 405 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
406 | V4L2_FIELD_ALTERNATE, | 406 | V4L2_FIELD_ALTERNATE, |
diff --git a/drivers/media/video/saa7134/saa7134-ts.c b/drivers/media/video/saa7134/saa7134-ts.c index 7780b2cce80d..5b1d1dafb5a5 100644 --- a/drivers/media/video/saa7134/saa7134-ts.c +++ b/drivers/media/video/saa7134/saa7134-ts.c | |||
@@ -92,6 +92,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
92 | } | 92 | } |
93 | 93 | ||
94 | if (STATE_NEEDS_INIT == buf->vb.state) { | 94 | if (STATE_NEEDS_INIT == buf->vb.state) { |
95 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
96 | |||
95 | buf->vb.width = llength; | 97 | buf->vb.width = llength; |
96 | buf->vb.height = lines; | 98 | buf->vb.height = lines; |
97 | buf->vb.size = size; | 99 | buf->vb.size = size; |
@@ -101,8 +103,8 @@ static int buffer_prepare(struct videobuf_queue *q, struct videobuf_buffer *vb, | |||
101 | if (err) | 103 | if (err) |
102 | goto oops; | 104 | goto oops; |
103 | err = saa7134_pgtable_build(dev->pci,buf->pt, | 105 | err = saa7134_pgtable_build(dev->pci,buf->pt, |
104 | buf->vb.dma.sglist, | 106 | dma->sglist, |
105 | buf->vb.dma.sglen, | 107 | dma->sglen, |
106 | saa7134_buffer_startpage(buf)); | 108 | saa7134_buffer_startpage(buf)); |
107 | if (err) | 109 | if (err) |
108 | goto oops; | 110 | goto oops; |
diff --git a/drivers/media/video/saa7134/saa7134-vbi.c b/drivers/media/video/saa7134/saa7134-vbi.c index 0044079f5da2..81a2aedeff5c 100644 --- a/drivers/media/video/saa7134/saa7134-vbi.c +++ b/drivers/media/video/saa7134/saa7134-vbi.c | |||
@@ -137,6 +137,8 @@ static int buffer_prepare(struct videobuf_queue *q, | |||
137 | saa7134_dma_free(q,buf); | 137 | saa7134_dma_free(q,buf); |
138 | 138 | ||
139 | if (STATE_NEEDS_INIT == buf->vb.state) { | 139 | if (STATE_NEEDS_INIT == buf->vb.state) { |
140 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
141 | |||
140 | buf->vb.width = llength; | 142 | buf->vb.width = llength; |
141 | buf->vb.height = lines; | 143 | buf->vb.height = lines; |
142 | buf->vb.size = size; | 144 | buf->vb.size = size; |
@@ -146,8 +148,8 @@ static int buffer_prepare(struct videobuf_queue *q, | |||
146 | if (err) | 148 | if (err) |
147 | goto oops; | 149 | goto oops; |
148 | err = saa7134_pgtable_build(dev->pci,buf->pt, | 150 | err = saa7134_pgtable_build(dev->pci,buf->pt, |
149 | buf->vb.dma.sglist, | 151 | dma->sglist, |
150 | buf->vb.dma.sglen, | 152 | dma->sglen, |
151 | saa7134_buffer_startpage(buf)); | 153 | saa7134_buffer_startpage(buf)); |
152 | if (err) | 154 | if (err) |
153 | goto oops; | 155 | goto oops; |
diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c index 9c317ed6b210..cf40a9690a50 100644 --- a/drivers/media/video/saa7134/saa7134-video.c +++ b/drivers/media/video/saa7134/saa7134-video.c | |||
@@ -1037,6 +1037,8 @@ static int buffer_prepare(struct videobuf_queue *q, | |||
1037 | } | 1037 | } |
1038 | 1038 | ||
1039 | if (STATE_NEEDS_INIT == buf->vb.state) { | 1039 | if (STATE_NEEDS_INIT == buf->vb.state) { |
1040 | struct videobuf_dmabuf *dma=videobuf_to_dma(&buf->vb); | ||
1041 | |||
1040 | buf->vb.width = fh->width; | 1042 | buf->vb.width = fh->width; |
1041 | buf->vb.height = fh->height; | 1043 | buf->vb.height = fh->height; |
1042 | buf->vb.size = size; | 1044 | buf->vb.size = size; |
@@ -1048,8 +1050,8 @@ static int buffer_prepare(struct videobuf_queue *q, | |||
1048 | if (err) | 1050 | if (err) |
1049 | goto oops; | 1051 | goto oops; |
1050 | err = saa7134_pgtable_build(dev->pci,buf->pt, | 1052 | err = saa7134_pgtable_build(dev->pci,buf->pt, |
1051 | buf->vb.dma.sglist, | 1053 | dma->sglist, |
1052 | buf->vb.dma.sglen, | 1054 | dma->sglen, |
1053 | saa7134_buffer_startpage(buf)); | 1055 | saa7134_buffer_startpage(buf)); |
1054 | if (err) | 1056 | if (err) |
1055 | goto oops; | 1057 | goto oops; |
@@ -1309,13 +1311,13 @@ static int video_open(struct inode *inode, struct file *file) | |||
1309 | fh->height = 576; | 1311 | fh->height = 576; |
1310 | v4l2_prio_open(&dev->prio,&fh->prio); | 1312 | v4l2_prio_open(&dev->prio,&fh->prio); |
1311 | 1313 | ||
1312 | videobuf_queue_init(&fh->cap, &video_qops, | 1314 | videobuf_queue_pci_init(&fh->cap, &video_qops, |
1313 | dev->pci, &dev->slock, | 1315 | dev->pci, &dev->slock, |
1314 | V4L2_BUF_TYPE_VIDEO_CAPTURE, | 1316 | V4L2_BUF_TYPE_VIDEO_CAPTURE, |
1315 | V4L2_FIELD_INTERLACED, | 1317 | V4L2_FIELD_INTERLACED, |
1316 | sizeof(struct saa7134_buf), | 1318 | sizeof(struct saa7134_buf), |
1317 | fh); | 1319 | fh); |
1318 | videobuf_queue_init(&fh->vbi, &saa7134_vbi_qops, | 1320 | videobuf_queue_pci_init(&fh->vbi, &saa7134_vbi_qops, |
1319 | dev->pci, &dev->slock, | 1321 | dev->pci, &dev->slock, |
1320 | V4L2_BUF_TYPE_VBI_CAPTURE, | 1322 | V4L2_BUF_TYPE_VBI_CAPTURE, |
1321 | V4L2_FIELD_SEQ_TB, | 1323 | V4L2_FIELD_SEQ_TB, |
@@ -2137,29 +2139,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
2137 | } | 2139 | } |
2138 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | 2140 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
2139 | case VIDIOCGMBUF: | 2141 | case VIDIOCGMBUF: |
2140 | { | 2142 | return videobuf_cgmbuf(saa7134_queue(fh), arg, gbuffers); |
2141 | struct video_mbuf *mbuf = arg; | ||
2142 | struct videobuf_queue *q; | ||
2143 | struct v4l2_requestbuffers req; | ||
2144 | unsigned int i; | ||
2145 | |||
2146 | q = saa7134_queue(fh); | ||
2147 | memset(&req,0,sizeof(req)); | ||
2148 | req.type = q->type; | ||
2149 | req.count = gbuffers; | ||
2150 | req.memory = V4L2_MEMORY_MMAP; | ||
2151 | err = videobuf_reqbufs(q,&req); | ||
2152 | if (err < 0) | ||
2153 | return err; | ||
2154 | memset(mbuf,0,sizeof(*mbuf)); | ||
2155 | mbuf->frames = req.count; | ||
2156 | mbuf->size = 0; | ||
2157 | for (i = 0; i < mbuf->frames; i++) { | ||
2158 | mbuf->offsets[i] = q->bufs[i]->boff; | ||
2159 | mbuf->size += q->bufs[i]->bsize; | ||
2160 | } | ||
2161 | return 0; | ||
2162 | } | ||
2163 | #endif | 2143 | #endif |
2164 | case VIDIOC_REQBUFS: | 2144 | case VIDIOC_REQBUFS: |
2165 | return videobuf_reqbufs(saa7134_queue(fh),arg); | 2145 | return videobuf_reqbufs(saa7134_queue(fh),arg); |
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index fd12942b3a10..dae608f9bf3b 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h | |||
@@ -37,7 +37,7 @@ | |||
37 | #include <media/tuner.h> | 37 | #include <media/tuner.h> |
38 | #include <media/ir-common.h> | 38 | #include <media/ir-common.h> |
39 | #include <media/ir-kbd-i2c.h> | 39 | #include <media/ir-kbd-i2c.h> |
40 | #include <media/video-buf.h> | 40 | #include <media/videobuf-dma-sg.h> |
41 | #include <sound/driver.h> | 41 | #include <sound/driver.h> |
42 | #include <sound/core.h> | 42 | #include <sound/core.h> |
43 | #include <sound/pcm.h> | 43 | #include <sound/pcm.h> |
diff --git a/drivers/media/video/video-buf-dvb.c b/drivers/media/video/video-buf-dvb.c index d2af82dc8faf..9631ead297ee 100644 --- a/drivers/media/video/video-buf-dvb.c +++ b/drivers/media/video/video-buf-dvb.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/file.h> | 22 | #include <linux/file.h> |
23 | #include <linux/freezer.h> | 23 | #include <linux/freezer.h> |
24 | 24 | ||
25 | #include <media/video-buf.h> | 25 | #include <media/videobuf-dma-sg.h> |
26 | #include <media/video-buf-dvb.h> | 26 | #include <media/video-buf-dvb.h> |
27 | 27 | ||
28 | /* ------------------------------------------------------------------ */ | 28 | /* ------------------------------------------------------------------ */ |
@@ -45,6 +45,7 @@ static int videobuf_dvb_thread(void *data) | |||
45 | struct videobuf_buffer *buf; | 45 | struct videobuf_buffer *buf; |
46 | unsigned long flags; | 46 | unsigned long flags; |
47 | int err; | 47 | int err; |
48 | struct videobuf_dmabuf *dma; | ||
48 | 49 | ||
49 | dprintk("dvb thread started\n"); | 50 | dprintk("dvb thread started\n"); |
50 | set_freezable(); | 51 | set_freezable(); |
@@ -65,8 +66,9 @@ static int videobuf_dvb_thread(void *data) | |||
65 | try_to_freeze(); | 66 | try_to_freeze(); |
66 | 67 | ||
67 | /* feed buffer data to demux */ | 68 | /* feed buffer data to demux */ |
69 | dma=videobuf_to_dma(buf); | ||
68 | if (buf->state == STATE_DONE) | 70 | if (buf->state == STATE_DONE) |
69 | dvb_dmx_swfilter(&dvb->demux, buf->dma.vmalloc, | 71 | dvb_dmx_swfilter(&dvb->demux, dma->vmalloc, |
70 | buf->size); | 72 | buf->size); |
71 | 73 | ||
72 | /* requeue buffer */ | 74 | /* requeue buffer */ |
diff --git a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h index cce20ed5cf6c..e49f7e156061 100644 --- a/include/media/saa7146_vv.h +++ b/include/media/saa7146_vv.h | |||
@@ -4,7 +4,7 @@ | |||
4 | #include <linux/videodev.h> | 4 | #include <linux/videodev.h> |
5 | #include <media/v4l2-common.h> | 5 | #include <media/v4l2-common.h> |
6 | #include <media/saa7146.h> | 6 | #include <media/saa7146.h> |
7 | #include <media/video-buf.h> | 7 | #include <media/videobuf-dma-sg.h> |
8 | 8 | ||
9 | #define MAX_SAA7146_CAPTURE_BUFFERS 32 /* arbitrary */ | 9 | #define MAX_SAA7146_CAPTURE_BUFFERS 32 /* arbitrary */ |
10 | #define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */ | 10 | #define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */ |