diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/dvb/Kbuild | 0 | ||||
| -rw-r--r-- | include/linux/dvb/dmx.h | 29 | ||||
| -rw-r--r-- | include/linux/dvb/video.h | 29 | ||||
| -rw-r--r-- | include/media/adp1653.h | 4 | ||||
| -rw-r--r-- | include/media/davinci/vpbe_display.h | 15 | ||||
| -rw-r--r-- | include/media/davinci/vpbe_osd.h | 2 | ||||
| -rw-r--r-- | include/media/ir-kbd-i2c.h | 2 | ||||
| -rw-r--r-- | include/media/mt9v022.h | 16 | ||||
| -rw-r--r-- | include/media/rc-core.h | 4 | ||||
| -rw-r--r-- | include/media/rc-map.h | 64 | ||||
| -rw-r--r-- | include/media/s3c_camif.h | 45 | ||||
| -rw-r--r-- | include/media/smiapp.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-event.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-fh.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-ioctl.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-mem2mem.h | 3 | ||||
| -rw-r--r-- | include/media/videobuf2-core.h | 38 | ||||
| -rw-r--r-- | include/media/videobuf2-memops.h | 5 | ||||
| -rw-r--r-- | include/uapi/linux/videodev2.h | 37 |
19 files changed, 208 insertions, 93 deletions
diff --git a/include/linux/dvb/Kbuild b/include/linux/dvb/Kbuild deleted file mode 100644 index e69de29bb2d1..000000000000 --- a/include/linux/dvb/Kbuild +++ /dev/null | |||
diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h deleted file mode 100644 index 0be6d8f2b52b..000000000000 --- a/include/linux/dvb/dmx.h +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * dmx.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> | ||
| 5 | * & Ralph Metzler <ralph@convergence.de> | ||
| 6 | * for convergence integrated media GmbH | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU Lesser General Public License | ||
| 10 | * as published by the Free Software Foundation; either version 2.1 | ||
| 11 | * of the License, or (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU Lesser General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 21 | * | ||
| 22 | */ | ||
| 23 | #ifndef _DVBDMX_H_ | ||
| 24 | #define _DVBDMX_H_ | ||
| 25 | |||
| 26 | #include <linux/time.h> | ||
| 27 | #include <uapi/linux/dvb/dmx.h> | ||
| 28 | |||
| 29 | #endif /*_DVBDMX_H_*/ | ||
diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h deleted file mode 100644 index 85c20d925696..000000000000 --- a/include/linux/dvb/video.h +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * video.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> | ||
| 5 | * & Ralph Metzler <ralph@convergence.de> | ||
| 6 | * for convergence integrated media GmbH | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU Lesser General Public License | ||
| 10 | * as published by the Free Software Foundation; either version 2.1 | ||
| 11 | * of the License, or (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU Lesser General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 21 | * | ||
| 22 | */ | ||
| 23 | #ifndef _DVBVIDEO_H_ | ||
| 24 | #define _DVBVIDEO_H_ | ||
| 25 | |||
| 26 | #include <linux/compiler.h> | ||
| 27 | #include <uapi/linux/dvb/video.h> | ||
| 28 | |||
| 29 | #endif /*_DVBVIDEO_H_*/ | ||
diff --git a/include/media/adp1653.h b/include/media/adp1653.h index 50a1af88aed0..1d9b48a3bd80 100644 --- a/include/media/adp1653.h +++ b/include/media/adp1653.h | |||
| @@ -3,10 +3,10 @@ | |||
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2008--2011 Nokia Corporation | 4 | * Copyright (C) 2008--2011 Nokia Corporation |
| 5 | * | 5 | * |
| 6 | * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> | 6 | * Contact: Sakari Ailus <sakari.ailus@iki.fi> |
| 7 | * | 7 | * |
| 8 | * Contributors: | 8 | * Contributors: |
| 9 | * Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> | 9 | * Sakari Ailus <sakari.ailus@iki.fi> |
| 10 | * Tuukka Toivonen <tuukkat76@gmail.com> | 10 | * Tuukka Toivonen <tuukkat76@gmail.com> |
| 11 | * | 11 | * |
| 12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
diff --git a/include/media/davinci/vpbe_display.h b/include/media/davinci/vpbe_display.h index dbf6b37682cd..8dffffedbb59 100644 --- a/include/media/davinci/vpbe_display.h +++ b/include/media/davinci/vpbe_display.h | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | /* Header files */ | 16 | /* Header files */ |
| 17 | #include <linux/videodev2.h> | 17 | #include <linux/videodev2.h> |
| 18 | #include <media/v4l2-common.h> | 18 | #include <media/v4l2-common.h> |
| 19 | #include <media/videobuf-dma-contig.h> | 19 | #include <media/videobuf2-dma-contig.h> |
| 20 | #include <media/davinci/vpbe_types.h> | 20 | #include <media/davinci/vpbe_types.h> |
| 21 | #include <media/davinci/vpbe_osd.h> | 21 | #include <media/davinci/vpbe_osd.h> |
| 22 | #include <media/davinci/vpbe.h> | 22 | #include <media/davinci/vpbe.h> |
| @@ -62,6 +62,11 @@ struct display_layer_info { | |||
| 62 | enum osd_v_exp_ratio v_exp; | 62 | enum osd_v_exp_ratio v_exp; |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | struct vpbe_disp_buffer { | ||
| 66 | struct vb2_buffer vb; | ||
| 67 | struct list_head list; | ||
| 68 | }; | ||
| 69 | |||
| 65 | /* vpbe display object structure */ | 70 | /* vpbe display object structure */ |
| 66 | struct vpbe_layer { | 71 | struct vpbe_layer { |
| 67 | /* number of buffers in fbuffers */ | 72 | /* number of buffers in fbuffers */ |
| @@ -69,13 +74,15 @@ struct vpbe_layer { | |||
| 69 | /* Pointer to the vpbe_display */ | 74 | /* Pointer to the vpbe_display */ |
| 70 | struct vpbe_display *disp_dev; | 75 | struct vpbe_display *disp_dev; |
| 71 | /* Pointer pointing to current v4l2_buffer */ | 76 | /* Pointer pointing to current v4l2_buffer */ |
| 72 | struct videobuf_buffer *cur_frm; | 77 | struct vpbe_disp_buffer *cur_frm; |
| 73 | /* Pointer pointing to next v4l2_buffer */ | 78 | /* Pointer pointing to next v4l2_buffer */ |
| 74 | struct videobuf_buffer *next_frm; | 79 | struct vpbe_disp_buffer *next_frm; |
| 75 | /* videobuf specific parameters | 80 | /* videobuf specific parameters |
| 76 | * Buffer queue used in video-buf | 81 | * Buffer queue used in video-buf |
| 77 | */ | 82 | */ |
| 78 | struct videobuf_queue buffer_queue; | 83 | struct vb2_queue buffer_queue; |
| 84 | /* allocator-specific contexts for each plane */ | ||
| 85 | struct vb2_alloc_ctx *alloc_ctx; | ||
| 79 | /* Queue of filled frames */ | 86 | /* Queue of filled frames */ |
| 80 | struct list_head dma_queue; | 87 | struct list_head dma_queue; |
| 81 | /* Used in video-buf */ | 88 | /* Used in video-buf */ |
diff --git a/include/media/davinci/vpbe_osd.h b/include/media/davinci/vpbe_osd.h index d7e397a444e6..5ab0d8d41f68 100644 --- a/include/media/davinci/vpbe_osd.h +++ b/include/media/davinci/vpbe_osd.h | |||
| @@ -357,7 +357,7 @@ struct osd_state { | |||
| 357 | spinlock_t lock; | 357 | spinlock_t lock; |
| 358 | struct device *dev; | 358 | struct device *dev; |
| 359 | dma_addr_t osd_base_phys; | 359 | dma_addr_t osd_base_phys; |
| 360 | unsigned long osd_base; | 360 | void __iomem *osd_base; |
| 361 | unsigned long osd_size; | 361 | unsigned long osd_size; |
| 362 | /* 1-->the isr will toggle the VID0 ping-pong buffer */ | 362 | /* 1-->the isr will toggle the VID0 ping-pong buffer */ |
| 363 | int pingpong; | 363 | int pingpong; |
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h index 768aa77925cd..e221bc74020b 100644 --- a/include/media/ir-kbd-i2c.h +++ b/include/media/ir-kbd-i2c.h | |||
| @@ -37,7 +37,7 @@ enum ir_kbd_get_key_fn { | |||
| 37 | struct IR_i2c_init_data { | 37 | struct IR_i2c_init_data { |
| 38 | char *ir_codes; | 38 | char *ir_codes; |
| 39 | const char *name; | 39 | const char *name; |
| 40 | u64 type; /* RC_TYPE_RC5, etc */ | 40 | u64 type; /* RC_BIT_RC5, etc */ |
| 41 | u32 polling_interval; /* 0 means DEFAULT_POLLING_INTERVAL */ | 41 | u32 polling_interval; /* 0 means DEFAULT_POLLING_INTERVAL */ |
| 42 | 42 | ||
| 43 | /* | 43 | /* |
diff --git a/include/media/mt9v022.h b/include/media/mt9v022.h new file mode 100644 index 000000000000..40561801321a --- /dev/null +++ b/include/media/mt9v022.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | /* | ||
| 2 | * mt9v022 sensor | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __MT9V022_H__ | ||
| 10 | #define __MT9V022_H__ | ||
| 11 | |||
| 12 | struct mt9v022_platform_data { | ||
| 13 | unsigned short y_skip_top; /* Lines to skip at the top */ | ||
| 14 | }; | ||
| 15 | |||
| 16 | #endif | ||
diff --git a/include/media/rc-core.h b/include/media/rc-core.h index b0c494a69079..f03445f3c767 100644 --- a/include/media/rc-core.h +++ b/include/media/rc-core.h | |||
| @@ -50,7 +50,7 @@ enum rc_driver_type { | |||
| 50 | * @input_dev: the input child device used to communicate events to userspace | 50 | * @input_dev: the input child device used to communicate events to userspace |
| 51 | * @driver_type: specifies if protocol decoding is done in hardware or software | 51 | * @driver_type: specifies if protocol decoding is done in hardware or software |
| 52 | * @idle: used to keep track of RX state | 52 | * @idle: used to keep track of RX state |
| 53 | * @allowed_protos: bitmask with the supported RC_TYPE_* protocols | 53 | * @allowed_protos: bitmask with the supported RC_BIT_* protocols |
| 54 | * @scanmask: some hardware decoders are not capable of providing the full | 54 | * @scanmask: some hardware decoders are not capable of providing the full |
| 55 | * scancode to the application. As this is a hardware limit, we can't do | 55 | * scancode to the application. As this is a hardware limit, we can't do |
| 56 | * anything with it. Yet, as the same keycode table can be used with other | 56 | * anything with it. Yet, as the same keycode table can be used with other |
| @@ -113,7 +113,7 @@ struct rc_dev { | |||
| 113 | u32 max_timeout; | 113 | u32 max_timeout; |
| 114 | u32 rx_resolution; | 114 | u32 rx_resolution; |
| 115 | u32 tx_resolution; | 115 | u32 tx_resolution; |
| 116 | int (*change_protocol)(struct rc_dev *dev, u64 rc_type); | 116 | int (*change_protocol)(struct rc_dev *dev, u64 *rc_type); |
| 117 | int (*open)(struct rc_dev *dev); | 117 | int (*open)(struct rc_dev *dev); |
| 118 | void (*close)(struct rc_dev *dev); | 118 | void (*close)(struct rc_dev *dev); |
| 119 | int (*s_tx_mask)(struct rc_dev *dev, u32 mask); | 119 | int (*s_tx_mask)(struct rc_dev *dev, u32 mask); |
diff --git a/include/media/rc-map.h b/include/media/rc-map.h index cfd5163ff7f3..74f55a3f14eb 100644 --- a/include/media/rc-map.h +++ b/include/media/rc-map.h | |||
| @@ -11,22 +11,54 @@ | |||
| 11 | 11 | ||
| 12 | #include <linux/input.h> | 12 | #include <linux/input.h> |
| 13 | 13 | ||
| 14 | #define RC_TYPE_UNKNOWN 0 | 14 | enum rc_type { |
| 15 | #define RC_TYPE_RC5 (1 << 0) /* Philips RC5 protocol */ | 15 | RC_TYPE_UNKNOWN = 0, /* Protocol not known */ |
| 16 | #define RC_TYPE_NEC (1 << 1) | 16 | RC_TYPE_OTHER = 1, /* Protocol known but proprietary */ |
| 17 | #define RC_TYPE_RC6 (1 << 2) /* Philips RC6 protocol */ | 17 | RC_TYPE_LIRC = 2, /* Pass raw IR to lirc userspace */ |
| 18 | #define RC_TYPE_JVC (1 << 3) /* JVC protocol */ | 18 | RC_TYPE_RC5 = 3, /* Philips RC5 protocol */ |
| 19 | #define RC_TYPE_SONY (1 << 4) /* Sony12/15/20 protocol */ | 19 | RC_TYPE_RC5X = 4, /* Philips RC5x protocol */ |
| 20 | #define RC_TYPE_RC5_SZ (1 << 5) /* RC5 variant used by Streamzap */ | 20 | RC_TYPE_RC5_SZ = 5, /* StreamZap variant of RC5 */ |
| 21 | #define RC_TYPE_SANYO (1 << 6) /* Sanyo protocol */ | 21 | RC_TYPE_JVC = 6, /* JVC protocol */ |
| 22 | #define RC_TYPE_MCE_KBD (1 << 29) /* RC6-ish MCE keyboard/mouse */ | 22 | RC_TYPE_SONY12 = 7, /* Sony 12 bit protocol */ |
| 23 | #define RC_TYPE_LIRC (1 << 30) /* Pass raw IR to lirc userspace */ | 23 | RC_TYPE_SONY15 = 8, /* Sony 15 bit protocol */ |
| 24 | #define RC_TYPE_OTHER (1u << 31) | 24 | RC_TYPE_SONY20 = 9, /* Sony 20 bit protocol */ |
| 25 | RC_TYPE_NEC = 10, /* NEC protocol */ | ||
| 26 | RC_TYPE_SANYO = 11, /* Sanyo protocol */ | ||
| 27 | RC_TYPE_MCE_KBD = 12, /* RC6-ish MCE keyboard/mouse */ | ||
| 28 | RC_TYPE_RC6_0 = 13, /* Philips RC6-0-16 protocol */ | ||
| 29 | RC_TYPE_RC6_6A_20 = 14, /* Philips RC6-6A-20 protocol */ | ||
| 30 | RC_TYPE_RC6_6A_24 = 15, /* Philips RC6-6A-24 protocol */ | ||
| 31 | RC_TYPE_RC6_6A_32 = 16, /* Philips RC6-6A-32 protocol */ | ||
| 32 | RC_TYPE_RC6_MCE = 17, /* MCE (Philips RC6-6A-32 subtype) protocol */ | ||
| 33 | }; | ||
| 34 | |||
| 35 | #define RC_BIT_NONE 0 | ||
| 36 | #define RC_BIT_UNKNOWN (1 << RC_TYPE_UNKNOWN) | ||
| 37 | #define RC_BIT_OTHER (1 << RC_TYPE_OTHER) | ||
| 38 | #define RC_BIT_LIRC (1 << RC_TYPE_LIRC) | ||
| 39 | #define RC_BIT_RC5 (1 << RC_TYPE_RC5) | ||
| 40 | #define RC_BIT_RC5X (1 << RC_TYPE_RC5X) | ||
| 41 | #define RC_BIT_RC5_SZ (1 << RC_TYPE_RC5_SZ) | ||
| 42 | #define RC_BIT_JVC (1 << RC_TYPE_JVC) | ||
| 43 | #define RC_BIT_SONY12 (1 << RC_TYPE_SONY12) | ||
| 44 | #define RC_BIT_SONY15 (1 << RC_TYPE_SONY15) | ||
| 45 | #define RC_BIT_SONY20 (1 << RC_TYPE_SONY20) | ||
| 46 | #define RC_BIT_NEC (1 << RC_TYPE_NEC) | ||
| 47 | #define RC_BIT_SANYO (1 << RC_TYPE_SANYO) | ||
| 48 | #define RC_BIT_MCE_KBD (1 << RC_TYPE_MCE_KBD) | ||
| 49 | #define RC_BIT_RC6_0 (1 << RC_TYPE_RC6_0) | ||
| 50 | #define RC_BIT_RC6_6A_20 (1 << RC_TYPE_RC6_6A_20) | ||
| 51 | #define RC_BIT_RC6_6A_24 (1 << RC_TYPE_RC6_6A_24) | ||
| 52 | #define RC_BIT_RC6_6A_32 (1 << RC_TYPE_RC6_6A_32) | ||
| 53 | #define RC_BIT_RC6_MCE (1 << RC_TYPE_RC6_MCE) | ||
| 25 | 54 | ||
| 26 | #define RC_TYPE_ALL (RC_TYPE_RC5 | RC_TYPE_NEC | RC_TYPE_RC6 | \ | 55 | #define RC_BIT_ALL (RC_BIT_UNKNOWN | RC_BIT_OTHER | RC_BIT_LIRC | \ |
| 27 | RC_TYPE_JVC | RC_TYPE_SONY | RC_TYPE_LIRC | \ | 56 | RC_BIT_RC5 | RC_BIT_RC5X | RC_BIT_RC5_SZ | \ |
| 28 | RC_TYPE_RC5_SZ | RC_TYPE_SANYO | RC_TYPE_MCE_KBD | \ | 57 | RC_BIT_JVC | \ |
| 29 | RC_TYPE_OTHER) | 58 | RC_BIT_SONY12 | RC_BIT_SONY15 | RC_BIT_SONY20 | \ |
| 59 | RC_BIT_NEC | RC_BIT_SANYO | RC_BIT_MCE_KBD | \ | ||
| 60 | RC_BIT_RC6_0 | RC_BIT_RC6_6A_20 | RC_BIT_RC6_6A_24 | \ | ||
| 61 | RC_BIT_RC6_6A_32 | RC_BIT_RC6_MCE) | ||
| 30 | 62 | ||
| 31 | struct rc_map_table { | 63 | struct rc_map_table { |
| 32 | u32 scancode; | 64 | u32 scancode; |
| @@ -38,7 +70,7 @@ struct rc_map { | |||
| 38 | unsigned int size; /* Max number of entries */ | 70 | unsigned int size; /* Max number of entries */ |
| 39 | unsigned int len; /* Used number of entries */ | 71 | unsigned int len; /* Used number of entries */ |
| 40 | unsigned int alloc; /* Size of *scan in bytes */ | 72 | unsigned int alloc; /* Size of *scan in bytes */ |
| 41 | u64 rc_type; | 73 | enum rc_type rc_type; |
| 42 | const char *name; | 74 | const char *name; |
| 43 | spinlock_t lock; | 75 | spinlock_t lock; |
| 44 | }; | 76 | }; |
diff --git a/include/media/s3c_camif.h b/include/media/s3c_camif.h new file mode 100644 index 000000000000..df96c2c789b4 --- /dev/null +++ b/include/media/s3c_camif.h | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | /* | ||
| 2 | * s3c24xx/s3c64xx SoC series Camera Interface (CAMIF) driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Sylwester Nawrocki <sylvester.nawrocki@gmail.com> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef MEDIA_S3C_CAMIF_ | ||
| 12 | #define MEDIA_S3C_CAMIF_ | ||
| 13 | |||
| 14 | #include <linux/i2c.h> | ||
| 15 | #include <media/v4l2-mediabus.h> | ||
| 16 | |||
| 17 | /** | ||
| 18 | * struct s3c_camif_sensor_info - an image sensor description | ||
| 19 | * @i2c_board_info: pointer to an I2C sensor subdevice board info | ||
| 20 | * @clock_frequency: frequency of the clock the host provides to a sensor | ||
| 21 | * @mbus_type: media bus type | ||
| 22 | * @i2c_bus_num: i2c control bus id the sensor is attached to | ||
| 23 | * @flags: the parallel bus flags defining signals polarity (V4L2_MBUS_*) | ||
| 24 | * @use_field: 1 if parallel bus FIELD signal is used (only s3c64xx) | ||
| 25 | */ | ||
| 26 | struct s3c_camif_sensor_info { | ||
| 27 | struct i2c_board_info i2c_board_info; | ||
| 28 | unsigned long clock_frequency; | ||
| 29 | enum v4l2_mbus_type mbus_type; | ||
| 30 | u16 i2c_bus_num; | ||
| 31 | u16 flags; | ||
| 32 | u8 use_field; | ||
| 33 | }; | ||
| 34 | |||
| 35 | struct s3c_camif_plat_data { | ||
| 36 | struct s3c_camif_sensor_info sensor; | ||
| 37 | int (*gpio_get)(void); | ||
| 38 | int (*gpio_put)(void); | ||
| 39 | }; | ||
| 40 | |||
| 41 | /* Platform default helper functions */ | ||
| 42 | int s3c_camif_gpio_get(void); | ||
| 43 | int s3c_camif_gpio_put(void); | ||
| 44 | |||
| 45 | #endif /* MEDIA_S3C_CAMIF_ */ | ||
diff --git a/include/media/smiapp.h b/include/media/smiapp.h index 9ab07fd45d5c..07f96a89e189 100644 --- a/include/media/smiapp.h +++ b/include/media/smiapp.h | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * Generic driver for SMIA/SMIA++ compliant camera modules | 4 | * Generic driver for SMIA/SMIA++ compliant camera modules |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 2011--2012 Nokia Corporation | 6 | * Copyright (C) 2011--2012 Nokia Corporation |
| 7 | * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> | 7 | * Contact: Sakari Ailus <sakari.ailus@iki.fi> |
| 8 | * | 8 | * |
| 9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
| 10 | * modify it under the terms of the GNU General Public License | 10 | * modify it under the terms of the GNU General Public License |
diff --git a/include/media/v4l2-event.h b/include/media/v4l2-event.h index e7c5d170a9cd..eff85f934b24 100644 --- a/include/media/v4l2-event.h +++ b/include/media/v4l2-event.h | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | * | 5 | * |
| 6 | * Copyright (C) 2009--2010 Nokia Corporation. | 6 | * Copyright (C) 2009--2010 Nokia Corporation. |
| 7 | * | 7 | * |
| 8 | * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> | 8 | * Contact: Sakari Ailus <sakari.ailus@iki.fi> |
| 9 | * | 9 | * |
| 10 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
| 11 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
diff --git a/include/media/v4l2-fh.h b/include/media/v4l2-fh.h index 52513c225c18..a62ee18cb7b7 100644 --- a/include/media/v4l2-fh.h +++ b/include/media/v4l2-fh.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * | 6 | * |
| 7 | * Copyright (C) 2009--2010 Nokia Corporation. | 7 | * Copyright (C) 2009--2010 Nokia Corporation. |
| 8 | * | 8 | * |
| 9 | * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com> | 9 | * Contact: Sakari Ailus <sakari.ailus@iki.fi> |
| 10 | * | 10 | * |
| 11 | * This program is free software; you can redistribute it and/or | 11 | * This program is free software; you can redistribute it and/or |
| 12 | * modify it under the terms of the GNU General Public License | 12 | * modify it under the terms of the GNU General Public License |
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index e48b571ca37d..4118ad1324c9 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h | |||
| @@ -111,6 +111,8 @@ struct v4l2_ioctl_ops { | |||
| 111 | int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b); | 111 | int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b); |
| 112 | int (*vidioc_querybuf)(struct file *file, void *fh, struct v4l2_buffer *b); | 112 | int (*vidioc_querybuf)(struct file *file, void *fh, struct v4l2_buffer *b); |
| 113 | int (*vidioc_qbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | 113 | int (*vidioc_qbuf) (struct file *file, void *fh, struct v4l2_buffer *b); |
| 114 | int (*vidioc_expbuf) (struct file *file, void *fh, | ||
| 115 | struct v4l2_exportbuffer *e); | ||
| 114 | int (*vidioc_dqbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | 116 | int (*vidioc_dqbuf) (struct file *file, void *fh, struct v4l2_buffer *b); |
| 115 | 117 | ||
| 116 | int (*vidioc_create_bufs)(struct file *file, void *fh, struct v4l2_create_buffers *b); | 118 | int (*vidioc_create_bufs)(struct file *file, void *fh, struct v4l2_create_buffers *b); |
diff --git a/include/media/v4l2-mem2mem.h b/include/media/v4l2-mem2mem.h index 131cc4a53675..7e82d2b193d5 100644 --- a/include/media/v4l2-mem2mem.h +++ b/include/media/v4l2-mem2mem.h | |||
| @@ -111,6 +111,9 @@ int v4l2_m2m_qbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, | |||
| 111 | int v4l2_m2m_dqbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, | 111 | int v4l2_m2m_dqbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, |
| 112 | struct v4l2_buffer *buf); | 112 | struct v4l2_buffer *buf); |
| 113 | 113 | ||
| 114 | int v4l2_m2m_expbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, | ||
| 115 | struct v4l2_exportbuffer *eb); | ||
| 116 | |||
| 114 | int v4l2_m2m_streamon(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, | 117 | int v4l2_m2m_streamon(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, |
| 115 | enum v4l2_buf_type type); | 118 | enum v4l2_buf_type type); |
| 116 | int v4l2_m2m_streamoff(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, | 119 | int v4l2_m2m_streamoff(struct file *file, struct v4l2_m2m_ctx *m2m_ctx, |
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h index e04252a9fea6..9cfd4ee9e56f 100644 --- a/include/media/videobuf2-core.h +++ b/include/media/videobuf2-core.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/mutex.h> | 16 | #include <linux/mutex.h> |
| 17 | #include <linux/poll.h> | 17 | #include <linux/poll.h> |
| 18 | #include <linux/videodev2.h> | 18 | #include <linux/videodev2.h> |
| 19 | #include <linux/dma-buf.h> | ||
| 19 | 20 | ||
| 20 | struct vb2_alloc_ctx; | 21 | struct vb2_alloc_ctx; |
| 21 | struct vb2_fileio_data; | 22 | struct vb2_fileio_data; |
| @@ -41,6 +42,24 @@ struct vb2_fileio_data; | |||
| 41 | * argument to other ops in this structure | 42 | * argument to other ops in this structure |
| 42 | * @put_userptr: inform the allocator that a USERPTR buffer will no longer | 43 | * @put_userptr: inform the allocator that a USERPTR buffer will no longer |
| 43 | * be used | 44 | * be used |
| 45 | * @attach_dmabuf: attach a shared struct dma_buf for a hardware operation; | ||
| 46 | * used for DMABUF memory types; alloc_ctx is the alloc context | ||
| 47 | * dbuf is the shared dma_buf; returns NULL on failure; | ||
| 48 | * allocator private per-buffer structure on success; | ||
| 49 | * this needs to be used for further accesses to the buffer | ||
| 50 | * @detach_dmabuf: inform the exporter of the buffer that the current DMABUF | ||
| 51 | * buffer is no longer used; the buf_priv argument is the | ||
| 52 | * allocator private per-buffer structure previously returned | ||
| 53 | * from the attach_dmabuf callback | ||
| 54 | * @map_dmabuf: request for access to the dmabuf from allocator; the allocator | ||
| 55 | * of dmabuf is informed that this driver is going to use the | ||
| 56 | * dmabuf | ||
| 57 | * @unmap_dmabuf: releases access control to the dmabuf - allocator is notified | ||
| 58 | * that this driver is done using the dmabuf for now | ||
| 59 | * @prepare: called every time the buffer is passed from userspace to the | ||
| 60 | * driver, useful for cache synchronisation, optional | ||
| 61 | * @finish: called every time the buffer is passed back from the driver | ||
| 62 | * to the userspace, also optional | ||
| 44 | * @vaddr: return a kernel virtual address to a given memory buffer | 63 | * @vaddr: return a kernel virtual address to a given memory buffer |
| 45 | * associated with the passed private structure or NULL if no | 64 | * associated with the passed private structure or NULL if no |
| 46 | * such mapping exists | 65 | * such mapping exists |
| @@ -56,15 +75,27 @@ struct vb2_fileio_data; | |||
| 56 | * Required ops for USERPTR types: get_userptr, put_userptr. | 75 | * Required ops for USERPTR types: get_userptr, put_userptr. |
| 57 | * Required ops for MMAP types: alloc, put, num_users, mmap. | 76 | * Required ops for MMAP types: alloc, put, num_users, mmap. |
| 58 | * Required ops for read/write access types: alloc, put, num_users, vaddr | 77 | * Required ops for read/write access types: alloc, put, num_users, vaddr |
| 78 | * Required ops for DMABUF types: attach_dmabuf, detach_dmabuf, map_dmabuf, | ||
| 79 | * unmap_dmabuf. | ||
| 59 | */ | 80 | */ |
| 60 | struct vb2_mem_ops { | 81 | struct vb2_mem_ops { |
| 61 | void *(*alloc)(void *alloc_ctx, unsigned long size); | 82 | void *(*alloc)(void *alloc_ctx, unsigned long size); |
| 62 | void (*put)(void *buf_priv); | 83 | void (*put)(void *buf_priv); |
| 84 | struct dma_buf *(*get_dmabuf)(void *buf_priv); | ||
| 63 | 85 | ||
| 64 | void *(*get_userptr)(void *alloc_ctx, unsigned long vaddr, | 86 | void *(*get_userptr)(void *alloc_ctx, unsigned long vaddr, |
| 65 | unsigned long size, int write); | 87 | unsigned long size, int write); |
| 66 | void (*put_userptr)(void *buf_priv); | 88 | void (*put_userptr)(void *buf_priv); |
| 67 | 89 | ||
| 90 | void (*prepare)(void *buf_priv); | ||
| 91 | void (*finish)(void *buf_priv); | ||
| 92 | |||
| 93 | void *(*attach_dmabuf)(void *alloc_ctx, struct dma_buf *dbuf, | ||
| 94 | unsigned long size, int write); | ||
| 95 | void (*detach_dmabuf)(void *buf_priv); | ||
| 96 | int (*map_dmabuf)(void *buf_priv); | ||
| 97 | void (*unmap_dmabuf)(void *buf_priv); | ||
| 98 | |||
| 68 | void *(*vaddr)(void *buf_priv); | 99 | void *(*vaddr)(void *buf_priv); |
| 69 | void *(*cookie)(void *buf_priv); | 100 | void *(*cookie)(void *buf_priv); |
| 70 | 101 | ||
| @@ -75,6 +106,8 @@ struct vb2_mem_ops { | |||
| 75 | 106 | ||
| 76 | struct vb2_plane { | 107 | struct vb2_plane { |
| 77 | void *mem_priv; | 108 | void *mem_priv; |
| 109 | struct dma_buf *dbuf; | ||
| 110 | unsigned int dbuf_mapped; | ||
| 78 | }; | 111 | }; |
| 79 | 112 | ||
| 80 | /** | 113 | /** |
| @@ -83,12 +116,14 @@ struct vb2_plane { | |||
| 83 | * @VB2_USERPTR: driver supports USERPTR with streaming API | 116 | * @VB2_USERPTR: driver supports USERPTR with streaming API |
| 84 | * @VB2_READ: driver supports read() style access | 117 | * @VB2_READ: driver supports read() style access |
| 85 | * @VB2_WRITE: driver supports write() style access | 118 | * @VB2_WRITE: driver supports write() style access |
| 119 | * @VB2_DMABUF: driver supports DMABUF with streaming API | ||
| 86 | */ | 120 | */ |
| 87 | enum vb2_io_modes { | 121 | enum vb2_io_modes { |
| 88 | VB2_MMAP = (1 << 0), | 122 | VB2_MMAP = (1 << 0), |
| 89 | VB2_USERPTR = (1 << 1), | 123 | VB2_USERPTR = (1 << 1), |
| 90 | VB2_READ = (1 << 2), | 124 | VB2_READ = (1 << 2), |
| 91 | VB2_WRITE = (1 << 3), | 125 | VB2_WRITE = (1 << 3), |
| 126 | VB2_DMABUF = (1 << 4), | ||
| 92 | }; | 127 | }; |
| 93 | 128 | ||
| 94 | /** | 129 | /** |
| @@ -329,6 +364,7 @@ int __must_check vb2_queue_init(struct vb2_queue *q); | |||
| 329 | void vb2_queue_release(struct vb2_queue *q); | 364 | void vb2_queue_release(struct vb2_queue *q); |
| 330 | 365 | ||
| 331 | int vb2_qbuf(struct vb2_queue *q, struct v4l2_buffer *b); | 366 | int vb2_qbuf(struct vb2_queue *q, struct v4l2_buffer *b); |
| 367 | int vb2_expbuf(struct vb2_queue *q, struct v4l2_exportbuffer *eb); | ||
| 332 | int vb2_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool nonblocking); | 368 | int vb2_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool nonblocking); |
| 333 | 369 | ||
| 334 | int vb2_streamon(struct vb2_queue *q, enum v4l2_buf_type type); | 370 | int vb2_streamon(struct vb2_queue *q, enum v4l2_buf_type type); |
| @@ -438,6 +474,8 @@ int vb2_ioctl_qbuf(struct file *file, void *priv, struct v4l2_buffer *p); | |||
| 438 | int vb2_ioctl_dqbuf(struct file *file, void *priv, struct v4l2_buffer *p); | 474 | int vb2_ioctl_dqbuf(struct file *file, void *priv, struct v4l2_buffer *p); |
| 439 | int vb2_ioctl_streamon(struct file *file, void *priv, enum v4l2_buf_type i); | 475 | int vb2_ioctl_streamon(struct file *file, void *priv, enum v4l2_buf_type i); |
| 440 | int vb2_ioctl_streamoff(struct file *file, void *priv, enum v4l2_buf_type i); | 476 | int vb2_ioctl_streamoff(struct file *file, void *priv, enum v4l2_buf_type i); |
| 477 | int vb2_ioctl_expbuf(struct file *file, void *priv, | ||
| 478 | struct v4l2_exportbuffer *p); | ||
| 441 | 479 | ||
| 442 | /* struct v4l2_file_operations helpers */ | 480 | /* struct v4l2_file_operations helpers */ |
| 443 | 481 | ||
diff --git a/include/media/videobuf2-memops.h b/include/media/videobuf2-memops.h index 84e1f6c031c5..f05444ca8c0c 100644 --- a/include/media/videobuf2-memops.h +++ b/include/media/videobuf2-memops.h | |||
| @@ -33,11 +33,6 @@ extern const struct vm_operations_struct vb2_common_vm_ops; | |||
| 33 | int vb2_get_contig_userptr(unsigned long vaddr, unsigned long size, | 33 | int vb2_get_contig_userptr(unsigned long vaddr, unsigned long size, |
| 34 | struct vm_area_struct **res_vma, dma_addr_t *res_pa); | 34 | struct vm_area_struct **res_vma, dma_addr_t *res_pa); |
| 35 | 35 | ||
| 36 | int vb2_mmap_pfn_range(struct vm_area_struct *vma, unsigned long paddr, | ||
| 37 | unsigned long size, | ||
| 38 | const struct vm_operations_struct *vm_ops, | ||
| 39 | void *priv); | ||
| 40 | |||
| 41 | struct vm_area_struct *vb2_get_vma(struct vm_area_struct *vma); | 36 | struct vm_area_struct *vb2_get_vma(struct vm_area_struct *vma); |
| 42 | void vb2_put_vma(struct vm_area_struct *vma); | 37 | void vb2_put_vma(struct vm_area_struct *vma); |
| 43 | 38 | ||
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 57bfa59cda74..3cf3e946e331 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h | |||
| @@ -186,6 +186,7 @@ enum v4l2_memory { | |||
| 186 | V4L2_MEMORY_MMAP = 1, | 186 | V4L2_MEMORY_MMAP = 1, |
| 187 | V4L2_MEMORY_USERPTR = 2, | 187 | V4L2_MEMORY_USERPTR = 2, |
| 188 | V4L2_MEMORY_OVERLAY = 3, | 188 | V4L2_MEMORY_OVERLAY = 3, |
| 189 | V4L2_MEMORY_DMABUF = 4, | ||
| 189 | }; | 190 | }; |
| 190 | 191 | ||
| 191 | /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ | 192 | /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ |
| @@ -602,6 +603,8 @@ struct v4l2_requestbuffers { | |||
| 602 | * should be passed to mmap() called on the video node) | 603 | * should be passed to mmap() called on the video node) |
| 603 | * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer | 604 | * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer |
| 604 | * pointing to this plane | 605 | * pointing to this plane |
| 606 | * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file | ||
| 607 | * descriptor associated with this plane | ||
| 605 | * @data_offset: offset in the plane to the start of data; usually 0, | 608 | * @data_offset: offset in the plane to the start of data; usually 0, |
| 606 | * unless there is a header in front of the data | 609 | * unless there is a header in front of the data |
| 607 | * | 610 | * |
| @@ -616,6 +619,7 @@ struct v4l2_plane { | |||
| 616 | union { | 619 | union { |
| 617 | __u32 mem_offset; | 620 | __u32 mem_offset; |
| 618 | unsigned long userptr; | 621 | unsigned long userptr; |
| 622 | __s32 fd; | ||
| 619 | } m; | 623 | } m; |
| 620 | __u32 data_offset; | 624 | __u32 data_offset; |
| 621 | __u32 reserved[11]; | 625 | __u32 reserved[11]; |
| @@ -640,6 +644,8 @@ struct v4l2_plane { | |||
| 640 | * (or a "cookie" that should be passed to mmap() as offset) | 644 | * (or a "cookie" that should be passed to mmap() as offset) |
| 641 | * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; | 645 | * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR; |
| 642 | * a userspace pointer pointing to this buffer | 646 | * a userspace pointer pointing to this buffer |
| 647 | * @fd: for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF; | ||
| 648 | * a userspace file descriptor associated with this buffer | ||
| 643 | * @planes: for multiplanar buffers; userspace pointer to the array of plane | 649 | * @planes: for multiplanar buffers; userspace pointer to the array of plane |
| 644 | * info structs for this buffer | 650 | * info structs for this buffer |
| 645 | * @length: size in bytes of the buffer (NOT its payload) for single-plane | 651 | * @length: size in bytes of the buffer (NOT its payload) for single-plane |
| @@ -666,6 +672,7 @@ struct v4l2_buffer { | |||
| 666 | __u32 offset; | 672 | __u32 offset; |
| 667 | unsigned long userptr; | 673 | unsigned long userptr; |
| 668 | struct v4l2_plane *planes; | 674 | struct v4l2_plane *planes; |
| 675 | __s32 fd; | ||
| 669 | } m; | 676 | } m; |
| 670 | __u32 length; | 677 | __u32 length; |
| 671 | __u32 reserved2; | 678 | __u32 reserved2; |
| @@ -687,6 +694,33 @@ struct v4l2_buffer { | |||
| 687 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800 | 694 | #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x0800 |
| 688 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000 | 695 | #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x1000 |
| 689 | 696 | ||
| 697 | /** | ||
| 698 | * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor | ||
| 699 | * | ||
| 700 | * @index: id number of the buffer | ||
| 701 | * @type: enum v4l2_buf_type; buffer type (type == *_MPLANE for | ||
| 702 | * multiplanar buffers); | ||
| 703 | * @plane: index of the plane to be exported, 0 for single plane queues | ||
| 704 | * @flags: flags for newly created file, currently only O_CLOEXEC is | ||
| 705 | * supported, refer to manual of open syscall for more details | ||
| 706 | * @fd: file descriptor associated with DMABUF (set by driver) | ||
| 707 | * | ||
| 708 | * Contains data used for exporting a video buffer as DMABUF file descriptor. | ||
| 709 | * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF | ||
| 710 | * (identical to the cookie used to mmap() the buffer to userspace). All | ||
| 711 | * reserved fields must be set to zero. The field reserved0 is expected to | ||
| 712 | * become a structure 'type' allowing an alternative layout of the structure | ||
| 713 | * content. Therefore this field should not be used for any other extensions. | ||
| 714 | */ | ||
| 715 | struct v4l2_exportbuffer { | ||
| 716 | __u32 type; /* enum v4l2_buf_type */ | ||
| 717 | __u32 index; | ||
| 718 | __u32 plane; | ||
| 719 | __u32 flags; | ||
| 720 | __s32 fd; | ||
| 721 | __u32 reserved[11]; | ||
| 722 | }; | ||
| 723 | |||
| 690 | /* | 724 | /* |
| 691 | * O V E R L A Y P R E V I E W | 725 | * O V E R L A Y P R E V I E W |
| 692 | */ | 726 | */ |
| @@ -737,7 +771,7 @@ struct v4l2_window { | |||
| 737 | struct v4l2_captureparm { | 771 | struct v4l2_captureparm { |
| 738 | __u32 capability; /* Supported modes */ | 772 | __u32 capability; /* Supported modes */ |
| 739 | __u32 capturemode; /* Current mode */ | 773 | __u32 capturemode; /* Current mode */ |
| 740 | struct v4l2_fract timeperframe; /* Time per frame in .1us units */ | 774 | struct v4l2_fract timeperframe; /* Time per frame in seconds */ |
| 741 | __u32 extendedmode; /* Driver-specific extensions */ | 775 | __u32 extendedmode; /* Driver-specific extensions */ |
| 742 | __u32 readbuffers; /* # of buffers for read */ | 776 | __u32 readbuffers; /* # of buffers for read */ |
| 743 | __u32 reserved[4]; | 777 | __u32 reserved[4]; |
| @@ -1888,6 +1922,7 @@ struct v4l2_create_buffers { | |||
| 1888 | #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) | 1922 | #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer) |
| 1889 | #define VIDIOC_OVERLAY _IOW('V', 14, int) | 1923 | #define VIDIOC_OVERLAY _IOW('V', 14, int) |
| 1890 | #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) | 1924 | #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer) |
| 1925 | #define VIDIOC_EXPBUF _IOWR('V', 16, struct v4l2_exportbuffer) | ||
| 1891 | #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) | 1926 | #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer) |
| 1892 | #define VIDIOC_STREAMON _IOW('V', 18, int) | 1927 | #define VIDIOC_STREAMON _IOW('V', 18, int) |
| 1893 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) | 1928 | #define VIDIOC_STREAMOFF _IOW('V', 19, int) |
