| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | #ifndef GSPCAV2_H
 | 
					
						
							|  |  |  | #define GSPCAV2_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/module.h>
 | 
					
						
							|  |  |  | #include <linux/kernel.h>
 | 
					
						
							|  |  |  | #include <linux/usb.h>
 | 
					
						
							|  |  |  | #include <linux/videodev2.h>
 | 
					
						
							|  |  |  | #include <media/v4l2-common.h>
 | 
					
						
							| 
									
										
										
										
											2012-05-09 09:58:33 -03:00
										 |  |  | #include <media/v4l2-ctrls.h>
 | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:19 -03:00
										 |  |  | #include <media/v4l2-device.h>
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | #include <linux/mutex.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-30 04:53:02 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-04 13:17:55 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* GSPCA debug codes */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define D_PROBE  1
 | 
					
						
							|  |  |  | #define D_CONF   2
 | 
					
						
							|  |  |  | #define D_STREAM 3
 | 
					
						
							|  |  |  | #define D_FRAM   4
 | 
					
						
							|  |  |  | #define D_PACK   5
 | 
					
						
							|  |  |  | #define D_USBI   6
 | 
					
						
							|  |  |  | #define D_USBO   7
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | extern int gspca_debug; | 
					
						
							| 
									
										
										
										
											2013-02-04 13:17:55 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define PDEBUG(level, fmt, ...) \
 | 
					
						
							|  |  |  | 	v4l2_dbg(level, gspca_debug, &gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define PERR(fmt, ...) \
 | 
					
						
							|  |  |  | 	v4l2_err(&gspca_dev->v4l2_dev, fmt, ##__VA_ARGS__) | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define GSPCA_MAX_FRAMES 16	/* maximum number of video frame buffers */
 | 
					
						
							| 
									
										
										
										
											2008-09-04 07:01:50 -03:00
										 |  |  | /* image transfers */ | 
					
						
							|  |  |  | #define MAX_NURBS 4		/* max number of URBs */
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 06:18:46 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* used to list framerates supported by a camera mode (resolution) */ | 
					
						
							|  |  |  | struct framerates { | 
					
						
							| 
									
										
										
										
											2010-01-17 03:27:04 -03:00
										 |  |  | 	const u8 *rates; | 
					
						
							| 
									
										
										
										
											2009-12-02 06:18:46 -03:00
										 |  |  | 	int nrates; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | /* device information - set at probe time */ | 
					
						
							|  |  |  | struct cam { | 
					
						
							| 
									
										
										
										
											2008-12-29 07:49:41 -03:00
										 |  |  | 	const struct v4l2_pix_format *cam_mode;	/* size nmodes */ | 
					
						
							| 
									
										
										
										
											2010-12-28 07:01:04 -03:00
										 |  |  | 	const struct framerates *mode_framerates; /* must have size nmodes,
 | 
					
						
							| 
									
										
										
										
											2009-12-02 06:18:46 -03:00
										 |  |  | 						   * just like cam_mode */ | 
					
						
							| 
									
										
										
										
											2009-12-15 05:23:04 -03:00
										 |  |  | 	u32 bulk_size;		/* buffer size when image transfer by bulk */ | 
					
						
							|  |  |  | 	u32 input_flags;	/* value for ENUM_INPUT status flags */ | 
					
						
							|  |  |  | 	u8 nmodes;		/* size of cam_mode */ | 
					
						
							|  |  |  | 	u8 no_urb_create;	/* don't create transfer URBs */ | 
					
						
							|  |  |  | 	u8 bulk_nurbs;		/* number of URBs in bulk mode
 | 
					
						
							| 
									
										
										
										
											2008-11-14 07:53:32 -03:00
										 |  |  | 				 * - cannot be > MAX_NURBS | 
					
						
							|  |  |  | 				 * - when 0 and bulk_size != 0 means | 
					
						
							|  |  |  | 				 *   1 URB and submit done by subdriver */ | 
					
						
							| 
									
										
										
										
											2009-04-21 13:45:56 -03:00
										 |  |  | 	u8 bulk;		/* image transfer by 0:isoc / 1:bulk */ | 
					
						
							| 
									
										
										
										
											2009-04-25 13:29:01 -03:00
										 |  |  | 	u8 npkt;		/* number of packets in an ISOC message
 | 
					
						
							|  |  |  | 				 * 0 is the default value: 32 packets */ | 
					
						
							| 
									
										
										
										
											2012-01-01 16:35:01 -03:00
										 |  |  | 	u8 needs_full_bandwidth;/* Set this flag to notify the bandwidth calc.
 | 
					
						
							|  |  |  | 				 * code that the cam fills all image buffers to | 
					
						
							|  |  |  | 				 * the max, even when using compression. */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct gspca_dev; | 
					
						
							|  |  |  | struct gspca_frame; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* subdriver operations */ | 
					
						
							|  |  |  | typedef int (*cam_op) (struct gspca_dev *); | 
					
						
							|  |  |  | typedef void (*cam_v_op) (struct gspca_dev *); | 
					
						
							|  |  |  | typedef int (*cam_cf_op) (struct gspca_dev *, const struct usb_device_id *); | 
					
						
							| 
									
										
										
										
											2012-09-17 05:05:25 -03:00
										 |  |  | typedef int (*cam_get_jpg_op) (struct gspca_dev *, | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 				struct v4l2_jpegcompression *); | 
					
						
							| 
									
										
										
										
											2012-09-17 05:05:25 -03:00
										 |  |  | typedef int (*cam_set_jpg_op) (struct gspca_dev *, | 
					
						
							|  |  |  | 				const struct v4l2_jpegcompression *); | 
					
						
							| 
									
										
										
										
											2013-03-24 08:28:46 -03:00
										 |  |  | typedef int (*cam_get_reg_op) (struct gspca_dev *, | 
					
						
							| 
									
										
										
										
											2009-07-19 05:29:20 -03:00
										 |  |  | 				struct v4l2_dbg_register *); | 
					
						
							| 
									
										
										
										
											2013-03-24 08:28:46 -03:00
										 |  |  | typedef int (*cam_set_reg_op) (struct gspca_dev *, | 
					
						
							|  |  |  | 				const struct v4l2_dbg_register *); | 
					
						
							| 
									
										
										
										
											2013-05-29 06:59:42 -03:00
										 |  |  | typedef int (*cam_chip_info_op) (struct gspca_dev *, | 
					
						
							|  |  |  | 				struct v4l2_dbg_chip_info *); | 
					
						
							| 
									
										
										
										
											2010-12-25 13:46:14 -03:00
										 |  |  | typedef void (*cam_streamparm_op) (struct gspca_dev *, | 
					
						
							| 
									
										
										
										
											2008-12-10 06:02:42 -03:00
										 |  |  | 				  struct v4l2_streamparm *); | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | typedef void (*cam_pkt_op) (struct gspca_dev *gspca_dev, | 
					
						
							| 
									
										
										
										
											2009-11-13 09:21:03 -03:00
										 |  |  | 				u8 *data, | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 				int len); | 
					
						
							| 
									
										
										
										
											2010-01-28 06:39:49 -03:00
										 |  |  | typedef int (*cam_int_pkt_op) (struct gspca_dev *gspca_dev, | 
					
						
							|  |  |  | 				u8 *data, | 
					
						
							|  |  |  | 				int len); | 
					
						
							| 
									
										
										
										
											2013-08-30 17:54:24 -03:00
										 |  |  | typedef void (*cam_format_op) (struct gspca_dev *gspca_dev, | 
					
						
							|  |  |  | 				struct v4l2_format *fmt); | 
					
						
							|  |  |  | typedef int (*cam_frmsize_op) (struct gspca_dev *gspca_dev, | 
					
						
							|  |  |  | 				struct v4l2_frmsizeenum *fsize); | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* subdriver description */ | 
					
						
							|  |  |  | struct sd_desc { | 
					
						
							|  |  |  | /* information */ | 
					
						
							| 
									
										
										
										
											2008-07-04 11:16:16 -03:00
										 |  |  | 	const char *name;	/* sub-driver name */ | 
					
						
							| 
									
										
										
										
											2008-09-03 17:12:16 -03:00
										 |  |  | /* mandatory operations */ | 
					
						
							| 
									
										
										
										
											2008-04-23 08:09:12 -03:00
										 |  |  | 	cam_cf_op config;	/* called on probe */ | 
					
						
							| 
									
										
										
										
											2008-09-03 17:12:16 -03:00
										 |  |  | 	cam_op init;		/* called on probe and resume */ | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:17 -03:00
										 |  |  | 	cam_op init_controls;	/* called on probe */ | 
					
						
							| 
									
										
										
										
											2009-06-30 07:07:01 -03:00
										 |  |  | 	cam_op start;		/* called on stream on after URBs creation */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 	cam_pkt_op pkt_scan; | 
					
						
							| 
									
										
										
										
											2008-07-05 11:49:20 -03:00
										 |  |  | /* optional operations */ | 
					
						
							| 
									
										
										
										
											2009-06-30 07:07:01 -03:00
										 |  |  | 	cam_op isoc_init;	/* called on stream on before getting the EP */ | 
					
						
							|  |  |  | 	cam_op isoc_nego;	/* called when URB submit failed with NOSPC */ | 
					
						
							| 
									
										
										
										
											2008-09-03 17:12:16 -03:00
										 |  |  | 	cam_v_op stopN;		/* called on stream off - main alt */ | 
					
						
							| 
									
										
										
										
											2008-11-18 06:33:08 -03:00
										 |  |  | 	cam_v_op stop0;		/* called on stream off & disconnect - alt 0 */ | 
					
						
							| 
									
										
										
										
											2008-07-05 11:49:20 -03:00
										 |  |  | 	cam_v_op dq_callback;	/* called when a frame has been dequeued */ | 
					
						
							| 
									
										
										
										
											2012-09-17 05:05:25 -03:00
										 |  |  | 	cam_get_jpg_op get_jcomp; | 
					
						
							|  |  |  | 	cam_set_jpg_op set_jcomp; | 
					
						
							| 
									
										
										
										
											2008-12-10 06:02:42 -03:00
										 |  |  | 	cam_streamparm_op get_streamparm; | 
					
						
							|  |  |  | 	cam_streamparm_op set_streamparm; | 
					
						
							| 
									
										
										
										
											2013-08-30 17:54:24 -03:00
										 |  |  | 	cam_format_op try_fmt; | 
					
						
							|  |  |  | 	cam_frmsize_op enum_framesizes; | 
					
						
							| 
									
										
										
										
											2009-07-19 05:29:20 -03:00
										 |  |  | #ifdef CONFIG_VIDEO_ADV_DEBUG
 | 
					
						
							| 
									
										
										
										
											2013-03-24 08:28:46 -03:00
										 |  |  | 	cam_set_reg_op set_register; | 
					
						
							|  |  |  | 	cam_get_reg_op get_register; | 
					
						
							| 
									
										
										
										
											2013-05-29 06:59:42 -03:00
										 |  |  | 	cam_chip_info_op get_chip_info; | 
					
						
							| 
									
										
										
										
											2009-07-19 05:29:20 -03:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2013-01-24 19:28:59 -03:00
										 |  |  | #if IS_ENABLED(CONFIG_INPUT)
 | 
					
						
							| 
									
										
										
										
											2010-01-28 06:39:49 -03:00
										 |  |  | 	cam_int_pkt_op int_pkt_scan; | 
					
						
							| 
									
										
										
										
											2010-02-19 04:28:39 -03:00
										 |  |  | 	/* other_input makes the gspca core create gspca_dev->input even when
 | 
					
						
							|  |  |  | 	   int_pkt_scan is NULL, for cams with non interrupt driven buttons */ | 
					
						
							|  |  |  | 	u8 other_input; | 
					
						
							| 
									
										
										
										
											2010-01-28 06:39:49 -03:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* packet types when moving from iso buf to frame buf */ | 
					
						
							| 
									
										
										
										
											2008-10-03 08:46:50 -03:00
										 |  |  | enum gspca_packet_type { | 
					
						
							|  |  |  | 	DISCARD_PACKET, | 
					
						
							|  |  |  | 	FIRST_PACKET, | 
					
						
							|  |  |  | 	INTER_PACKET, | 
					
						
							|  |  |  | 	LAST_PACKET | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | struct gspca_frame { | 
					
						
							| 
									
										
										
										
											2008-06-30 15:50:11 -03:00
										 |  |  | 	__u8 *data;			/* frame buffer */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 	int vma_use_count; | 
					
						
							|  |  |  | 	struct v4l2_buffer v4l2_buf; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct gspca_dev { | 
					
						
							| 
									
										
										
										
											2008-11-19 06:37:53 -03:00
										 |  |  | 	struct video_device vdev;	/* !! must be the first item */ | 
					
						
							| 
									
										
										
										
											2008-11-18 15:52:31 -03:00
										 |  |  | 	struct module *module;		/* subdriver handling the device */ | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:19 -03:00
										 |  |  | 	struct v4l2_device v4l2_dev; | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 	struct usb_device *dev; | 
					
						
							| 
									
										
										
										
											2008-05-04 06:46:21 -03:00
										 |  |  | 	struct file *capt_file;		/* file doing video capture */ | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:27 -03:00
										 |  |  | 					/* protected by queue_lock */ | 
					
						
							| 
									
										
										
										
											2013-01-24 19:28:59 -03:00
										 |  |  | #if IS_ENABLED(CONFIG_INPUT)
 | 
					
						
							| 
									
										
										
										
											2010-01-28 06:39:49 -03:00
										 |  |  | 	struct input_dev *input_dev; | 
					
						
							|  |  |  | 	char phys[64];			/* physical device path */ | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	struct cam cam;				/* device information */ | 
					
						
							|  |  |  | 	const struct sd_desc *sd_desc;		/* subdriver description */ | 
					
						
							| 
									
										
										
										
											2012-05-09 11:19:00 -03:00
										 |  |  | 	struct v4l2_ctrl_handler ctrl_handler; | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-09 09:58:33 -03:00
										 |  |  | 	/* autogain and exposure or gain control cluster, these are global as
 | 
					
						
							|  |  |  | 	   the autogain/exposure functions in autogain_functions.c use them */ | 
					
						
							|  |  |  | 	struct { | 
					
						
							|  |  |  | 		struct v4l2_ctrl *autogain; | 
					
						
							|  |  |  | 		struct v4l2_ctrl *exposure; | 
					
						
							|  |  |  | 		struct v4l2_ctrl *gain; | 
					
						
							|  |  |  | 		int exp_too_low_cnt, exp_too_high_cnt; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-03 17:12:19 -03:00
										 |  |  | #define USB_BUF_SZ 64
 | 
					
						
							|  |  |  | 	__u8 *usb_buf;				/* buffer for USB exchanges */ | 
					
						
							| 
									
										
										
										
											2008-06-12 10:58:58 -03:00
										 |  |  | 	struct urb *urb[MAX_NURBS]; | 
					
						
							| 
									
										
										
										
											2013-01-24 19:28:59 -03:00
										 |  |  | #if IS_ENABLED(CONFIG_INPUT)
 | 
					
						
							| 
									
										
										
										
											2010-01-28 06:39:49 -03:00
										 |  |  | 	struct urb *int_urb; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	__u8 *frbuf;				/* buffer for nframes */ | 
					
						
							|  |  |  | 	struct gspca_frame frame[GSPCA_MAX_FRAMES]; | 
					
						
							| 
									
										
										
										
											2010-06-27 03:08:19 -03:00
										 |  |  | 	u8 *image;				/* image beeing filled */ | 
					
						
							| 
									
										
										
										
											2008-06-30 15:50:11 -03:00
										 |  |  | 	__u32 frsz;				/* frame size */ | 
					
						
							| 
									
										
										
										
											2010-06-27 03:08:19 -03:00
										 |  |  | 	u32 image_len;				/* current length of image */ | 
					
						
							| 
									
										
										
										
											2010-07-06 04:32:27 -03:00
										 |  |  | 	atomic_t fr_q;				/* next frame to queue */ | 
					
						
							|  |  |  | 	atomic_t fr_i;				/* frame being filled */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 	signed char fr_queue[GSPCA_MAX_FRAMES];	/* frame queue */ | 
					
						
							| 
									
										
										
										
											2010-07-06 04:32:27 -03:00
										 |  |  | 	char nframes;				/* number of frames */ | 
					
						
							|  |  |  | 	u8 fr_o;				/* next frame to dequeue */ | 
					
						
							| 
									
										
										
										
											2008-10-23 07:29:51 -03:00
										 |  |  | 	__u8 last_packet_type; | 
					
						
							|  |  |  | 	__s8 empty_packet;		/* if (-1) don't check empty packets */ | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:27 -03:00
										 |  |  | 	__u8 streaming;			/* protected by both mutexes (*) */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-30 15:50:11 -03:00
										 |  |  | 	__u8 curr_mode;			/* current camera mode */ | 
					
						
							| 
									
										
										
										
											2013-08-30 17:54:23 -03:00
										 |  |  | 	struct v4l2_pix_format pixfmt;	/* current mode parameters */ | 
					
						
							| 
									
										
										
										
											2008-10-23 07:29:51 -03:00
										 |  |  | 	__u32 sequence;			/* frame sequence number */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	wait_queue_head_t wq;		/* wait queue */ | 
					
						
							|  |  |  | 	struct mutex usb_lock;		/* usb exchange protection */ | 
					
						
							|  |  |  | 	struct mutex queue_lock;	/* ISOC queue protection */ | 
					
						
							| 
									
										
										
										
											2009-12-02 07:14:33 -03:00
										 |  |  | 	int usb_err;			/* USB error - protected by usb_lock */ | 
					
						
							| 
									
										
										
										
											2010-07-14 06:30:18 -03:00
										 |  |  | 	u16 pkt_size;			/* ISOC packet size */ | 
					
						
							| 
									
										
										
										
											2008-09-03 16:48:10 -03:00
										 |  |  | #ifdef CONFIG_PM
 | 
					
						
							|  |  |  | 	char frozen;			/* suspend - resume */ | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | 	char present;			/* device connected */ | 
					
						
							|  |  |  | 	char nbufread;			/* number of buffers for read() */ | 
					
						
							| 
									
										
										
										
											2008-06-12 10:58:58 -03:00
										 |  |  | 	char memory;			/* memory type (V4L2_MEMORY_xxx) */ | 
					
						
							| 
									
										
										
										
											2008-10-23 07:29:51 -03:00
										 |  |  | 	__u8 iface;			/* USB interface number */ | 
					
						
							|  |  |  | 	__u8 alt;			/* USB alternate setting */ | 
					
						
							| 
									
										
										
										
											2010-07-14 06:30:18 -03:00
										 |  |  | 	u8 audio;			/* presence of audio device */ | 
					
						
							| 
									
										
										
										
											2012-05-06 09:28:27 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* (*) These variables are proteced by both usb_lock and queue_lock,
 | 
					
						
							|  |  |  | 	   that is any code setting them is holding *both*, which means that | 
					
						
							|  |  |  | 	   any code getting them needs to hold at least one of them */ | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int gspca_dev_probe(struct usb_interface *intf, | 
					
						
							|  |  |  | 		const struct usb_device_id *id, | 
					
						
							|  |  |  | 		const struct sd_desc *sd_desc, | 
					
						
							| 
									
										
										
										
											2008-06-12 10:58:58 -03:00
										 |  |  | 		int dev_size, | 
					
						
							|  |  |  | 		struct module *module); | 
					
						
							| 
									
										
										
										
											2010-06-05 07:47:36 -03:00
										 |  |  | int gspca_dev_probe2(struct usb_interface *intf, | 
					
						
							|  |  |  | 		const struct usb_device_id *id, | 
					
						
							|  |  |  | 		const struct sd_desc *sd_desc, | 
					
						
							|  |  |  | 		int dev_size, | 
					
						
							|  |  |  | 		struct module *module); | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | void gspca_disconnect(struct usb_interface *intf); | 
					
						
							| 
									
										
										
										
											2009-11-13 09:21:03 -03:00
										 |  |  | void gspca_frame_add(struct gspca_dev *gspca_dev, | 
					
						
							|  |  |  | 			enum gspca_packet_type packet_type, | 
					
						
							|  |  |  | 			const u8 *data, | 
					
						
							|  |  |  | 			int len); | 
					
						
							| 
									
										
										
										
											2008-09-03 16:48:10 -03:00
										 |  |  | #ifdef CONFIG_PM
 | 
					
						
							|  |  |  | int gspca_suspend(struct usb_interface *intf, pm_message_t message); | 
					
						
							|  |  |  | int gspca_resume(struct usb_interface *intf); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2012-05-09 09:58:33 -03:00
										 |  |  | int gspca_expo_autogain(struct gspca_dev *gspca_dev, int avg_lum, | 
					
						
							|  |  |  | 	int desired_avg_lum, int deadzone, int gain_knee, int exposure_knee); | 
					
						
							|  |  |  | int gspca_coarse_grained_expo_autogain(struct gspca_dev *gspca_dev, | 
					
						
							|  |  |  |         int avg_lum, int desired_avg_lum, int deadzone); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-12 09:58:09 -03:00
										 |  |  | #endif /* GSPCAV2_H */
 |