linux/drivers/media/video
Magnus Damm 720b17e759 videobuf-dma-contig: zero copy USERPTR support
Since videobuf-dma-contig is designed to handle physically contiguous
memory, this patch modifies the videobuf-dma-contig code to only accept a
user space pointer to physically contiguous memory.  For now only
VM_PFNMAP vmas are supported, so forget hotplug.

On SuperH Mobile we use this with our sh_mobile_ceu_camera driver together
with various multimedia accelerator blocks that are exported to user space
using UIO.  The UIO kernel code exports physically contiguous memory to
user space and lets the user space application mmap() this memory and pass
a pointer using the USERPTR interface for V4L2 zero copy operation.

With this approach we support zero copy capture, hardware scaling and
various forms of hardware encoding and decoding.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Cc: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-06-16 19:47:40 -07:00
..
au0828 V4L/DVB (11652): au0828: fix kernel oops regression on USB disconnect. 2009-04-29 16:02:51 -03:00
bt8xx dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
cpia2 V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers 2009-03-30 12:43:15 -03:00
cx18 V4L/DVB (11568): cx18: Fix the handling of i2c bus registration error 2009-04-29 15:41:13 -03:00
cx88 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
cx231xx V4L/DVB (11494a): cx231xx Kconfig fixes 2009-04-29 15:41:11 -03:00
cx23885 V4L/DVB (11664): cx23885: Frontend wasn't locking on HVR-1500 2009-05-09 18:52:19 -03:00
cx25840 V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
em28xx V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
et61x251 V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
gspca V4L/DVB (11427): gspca - m5602: Minor cleanups 2009-04-06 21:44:48 -03:00
hdpvr trivial: typo (en|dis|avail|remove)bale -> (en|dis|avail|remove)able 2009-06-12 18:01:45 +02:00
ivtv ivtv: Fix PCI DMA direction 2009-06-05 08:05:23 -07:00
ovcamchip V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
pvrusb2 USB: add reset endpoint operations 2009-04-17 10:50:27 -07:00
pwc USB: pwc : do not pass stack allocated buffers to USB core. 2009-04-23 14:15:31 -07:00
saa7134 dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
sn9c102 V4L/DVB (11221): gspca - sonixj: Prefer sonixj instead of sn9c102 for 0471:0327. 2009-03-30 12:43:41 -03:00
usbvideo V4L/DVB (11226): avoid warnings for request_ihex_firmware on dabusb and vicam 2009-03-30 12:43:41 -03:00
usbvision V4L/DVB: usbvision: remove unused #include <version.h> 2009-04-06 21:44:48 -03:00
uvc V4L/DVB (11669): uvc: fix compile warning 2009-05-09 18:52:40 -03:00
zc0301 V4L/DVB (10343): gspca - zc3xx / zc0301: Handle the 0ac8:303b instead of zc0301. 2009-03-30 12:42:30 -03:00
zoran V4L/DVB (11660): zoran: fix bug when enumerating format -1 2009-05-09 18:50:54 -03:00
adv7170.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
adv7175.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
arv.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
bt819.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt856.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
bt866.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
btcx-risc.c
btcx-risc.h
bw-qcam.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
bw-qcam.h
c-qcam.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
cafe_ccic-regs.h
cafe_ccic.c V4L/DVB (11680): cafe_ccic: use = instead of == for setting a value at a var 2009-05-09 18:54:32 -03:00
cpia_pp.c
cpia_usb.c
cpia.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
cpia.h
cs53l32a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs5345.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
cs8420.h
cx2341x.c V4L/DVB (10698): v4l2-common: remove v4l2_ctrl_query_fill_std 2009-03-30 12:42:54 -03:00
dabusb.c V4L/DVB (11256): dabusb: fix compile warning. 2009-03-30 12:43:44 -03:00
dabusb.h
font.h
hexium_gemini.c V4L/DVB (10271): saa7146: convert to video_ioctl2. 2009-03-30 12:42:24 -03:00
hexium_orion.c V4L/DVB (10271): saa7146: convert to video_ioctl2. 2009-03-30 12:42:24 -03:00
ibmmpeg2.h
indycam.c V4L/DVB (10866): saa7191, indycam: remove compat code. 2009-03-30 12:43:11 -03:00
indycam.h V4L/DVB (10861): vino/indycam/saa7191: convert to i2c modules to V4L2. 2009-03-30 12:43:10 -03:00
ir-kbd-i2c.c V4L/DVB (10939): ir-kbd-i2c: Prevent general protection fault on rmmod 2009-03-30 12:43:17 -03:00
Kconfig mx31: changed CONSISTENT_DMA_SIZE to 8M for mx31 video 2009-05-07 16:21:26 +02:00
ks0127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
ks0127.h V4L/DVB (10730): v4l-dvb: cleanup obsolete references to v4l1 headers. 2009-03-30 12:42:59 -03:00
m52790.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
Makefile V4L/DVB (11366): v4l: remove obsolete header and source 2009-04-06 21:44:19 -03:00
meye.c dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
meye.h
msp3400-driver.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-driver.h V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
msp3400-kthreads.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
mt9m001.c V4L/DVB (11326): mt9m001: fix advertised pixel clock polarity 2009-04-06 21:43:48 -03:00
mt9m111.c V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations 2009-03-30 12:43:21 -03:00
mt9t031.c V4L/DVB (11347): mt9t031: use platform power hook 2009-04-06 21:43:57 -03:00
mt9v022.c V4L/DVB (11033): mt9v022: allow setting of bus width from board code 2009-03-30 12:43:22 -03:00
mx1_camera.c V4L/DVB (11350): Add camera (CSI) driver for MX1 2009-04-06 21:43:58 -03:00
mx3_camera.c V4L/DVB (11612): mx3_camera: Fix compilation with CONFIG_PM 2009-04-29 15:59:24 -03:00
mxb.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
mxb.h
omap24xxcam-dma.c V4L/DVB (9815): omap2: add OMAP2 camera driver. 2008-12-30 09:38:35 -02:00
omap24xxcam.c V4L/DVB (11264): omap24xxcam: Remove buffer type check from vidioc_s/g_parm 2009-03-30 12:43:45 -03:00
omap24xxcam.h V4L/DVB (9815): omap2: add OMAP2 camera driver. 2008-12-30 09:38:35 -02:00
ov511.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
ov511.h
ov772x.c V4L/DVB (11327): ov772x: add edge contrl support 2009-04-06 21:43:49 -03:00
ov7670.c V4L/DVB (11117): ov7670: add support to get/set registers 2009-03-30 12:43:30 -03:00
pms.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
pxa_camera.c V4L/DVB (11323): pxa-camera: simplify the .buf_queue path by merging two loops 2009-04-06 21:43:46 -03:00
s2255drv.c V4L/DVB (11570): patch: s2255drv: fix race condition on set mode 2009-04-29 15:41:14 -03:00
saa711x_regs.h
saa717x.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa5246a.c V4L/DVB (11516): drivers/media/video/saa5246a.c: fix use-after-free 2009-04-29 15:41:12 -03:00
saa5249.c V4L/DVB (11515): drivers/media/video/saa5249.c: fix use-after-free and leak 2009-04-29 15:41:11 -03:00
saa6588.c V4L/DVB (11283): saa6588: remove legacy code. 2009-03-30 12:43:47 -03:00
saa7110.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7115.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7121.h
saa7127.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7146.h V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers 2009-03-30 12:43:15 -03:00
saa7146reg.h
saa7185.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
saa7191.h V4L/DVB (10861): vino/indycam/saa7191: convert to i2c modules to V4L2. 2009-03-30 12:43:10 -03:00
se401.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
se401.h
sh_mobile_ceu_camera.c V4L/DVB (11029): video: use videobuf_waiton() in sh_mobile_ceu free_buffer() 2009-03-30 12:43:21 -03:00
soc_camera_platform.c V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations 2009-03-30 12:43:21 -03:00
soc_camera.c V4L/DVB (11325): soc-camera: fix breakage caused by 1fa5ae857b 2009-04-06 21:43:48 -03:00
stk-sensor.c
stk-webcam.c V4L/DVB (11265): stkwebcam: Remove buffer type check from g_parm and q/dq/reqbufs 2009-03-30 12:43:45 -03:00
stk-webcam.h
stradis.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
stv680.c V4L/DVB (10138): v4l2-ioctl: change to long return type to match unlocked_ioctl. 2009-01-02 17:11:34 -02:00
stv680.h
tcm825x.c V4L/DVB (10628): V4L: Storage class should be before const qualifier 2009-03-30 12:42:48 -03:00
tcm825x.h V4L/DVB (10628): V4L: Storage class should be before const qualifier 2009-03-30 12:42:48 -03:00
tda7432.c V4L/DVB (11303): tda7432: remove legacy code for old-style i2c API 2009-03-30 12:43:49 -03:00
tda9840.c V4L/DVB (11372): v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22 2009-04-06 21:44:23 -03:00
tda9875.c V4L/DVB (11302): tda9875: remove legacy code for old-style i2c API 2009-03-30 12:43:48 -03:00
tea6415c.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tea6415c.h V4L/DVB (10499): saa7146: convert saa7146 and mxb in particular to v4l2_subdev. 2009-03-30 12:42:42 -03:00
tea6420.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tea6420.h V4L/DVB (10499): saa7146: convert saa7146 and mxb in particular to v4l2_subdev. 2009-03-30 12:42:42 -03:00
tlv320aic23b.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
tuner-core.c V4L/DVB (11372): v4l2: use old-style i2c API for kernels < 2.6.26 instead of < 2.6.22 2009-04-06 21:44:23 -03:00
tvaudio.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tveeprom.c V4L/DVB (11071): tveeprom: add the xc5000 tuner to the tveeprom definition 2009-03-30 12:43:26 -03:00
tvp514x_regs.h V4L/DVB (9817): v4l: add new tvp514x I2C video decoder driver 2008-12-30 09:38:36 -02:00
tvp514x.c V4L/DVB (10698): v4l2-common: remove v4l2_ctrl_query_fill_std 2009-03-30 12:42:54 -03:00
tvp5150_reg.h
tvp5150.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
tw9910.c V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations 2009-03-30 12:43:21 -03:00
upd64031a.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
upd64083.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
v4l1-compat.c V4L/DVB (11329): Fix buglets in v4l1 compatibility layer 2009-04-06 21:43:50 -03:00
v4l2-common.c V4L/DVB (11373): v4l2-common: add explicit v4l2_device pointer as first arg to new_(probed)_subdev 2009-04-06 21:44:24 -03:00
v4l2-compat-ioctl32.c V4L/DVB (10910): videodev2.h: remove deprecated VIDIOC_G_CHIP_IDENT_OLD 2009-03-30 12:43:15 -03:00
v4l2-dev.c V4L/DVB (11390): 2-dev.c: return 0 for NULL open and release callbacks 2009-04-06 21:44:30 -03:00
v4l2-device.c V4L/DVB (11044): v4l2-device: add v4l2_device_disconnect 2009-03-30 12:43:22 -03:00
v4l2-int-device.c
v4l2-ioctl.c V4L/DVB (11662): v4l2-ioctl: Clear buffer type specific trailing fields/padding 2009-05-09 18:51:48 -03:00
videobuf-core.c
videobuf-dma-contig.c videobuf-dma-contig: zero copy USERPTR support 2009-06-16 19:47:40 -07:00
videobuf-dma-sg.c V4L/DVB (10176a): Switch remaining clear_user_page users over to clear_user_highpage 2009-01-07 22:18:54 -02:00
videobuf-dvb.c
videobuf-vmalloc.c V4L/DVB (10305): videobuf-vmalloc: Fix: videobuf memory were never freed 2009-03-30 12:42:27 -03:00
vino.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
vino.h
vivi.c V4L/DVB (10912): vivi: fix compile warning. 2009-03-30 12:43:15 -03:00
vp27smpx.c V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core. 2009-04-06 21:44:22 -03:00
vpx3220.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
w9966.c V4L/DVB (10907): avoid loading the entire videodev.h header on V4L2 drivers 2009-03-30 12:43:15 -03:00
w9968cf_decoder.h
w9968cf_vpp.h
w9968cf.c V4L/DVB (11373): v4l2-common: add explicit v4l2_device pointer as first arg to new_(probed)_subdev 2009-04-06 21:44:24 -03:00
w9968cf.h V4L/DVB (11377): v4l: increase version numbers of drivers converted to v4l2_subdev. 2009-04-06 21:44:26 -03:00
wm8739.c V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed. 2009-03-30 12:43:49 -03:00
wm8775.c V4L/DVB (11380): v4l2-subdev: change s_routing prototype 2009-04-06 21:44:27 -03:00
zr364xx.c V4L/DVB: zr364xx: remove unused #include <version.h> 2009-04-06 21:44:49 -03:00