Go to the documentation of this file.
28 #include <linux/module.h>
31 #include <linux/wait.h>
34 #include <linux/slab.h>
35 #include <asm/errno.h>
36 #include <linux/videodev2.h>
44 #ifdef CONFIG_USB_PWC_INPUT_EVDEV
45 #include <linux/input.h>
51 #define PWC_VERSION "10.0.15"
52 #define PWC_NAME "pwc"
53 #define PFX PWC_NAME ": "
57 #define PWC_DEBUG_LEVEL_MODULE (1<<0)
58 #define PWC_DEBUG_LEVEL_PROBE (1<<1)
59 #define PWC_DEBUG_LEVEL_OPEN (1<<2)
60 #define PWC_DEBUG_LEVEL_READ (1<<3)
61 #define PWC_DEBUG_LEVEL_MEMORY (1<<4)
62 #define PWC_DEBUG_LEVEL_FLOW (1<<5)
63 #define PWC_DEBUG_LEVEL_SIZE (1<<6)
64 #define PWC_DEBUG_LEVEL_IOCTL (1<<7)
65 #define PWC_DEBUG_LEVEL_TRACE (1<<8)
67 #define PWC_DEBUG_MODULE(fmt, args...) PWC_DEBUG(MODULE, fmt, ##args)
68 #define PWC_DEBUG_PROBE(fmt, args...) PWC_DEBUG(PROBE, fmt, ##args)
69 #define PWC_DEBUG_OPEN(fmt, args...) PWC_DEBUG(OPEN, fmt, ##args)
70 #define PWC_DEBUG_READ(fmt, args...) PWC_DEBUG(READ, fmt, ##args)
71 #define PWC_DEBUG_MEMORY(fmt, args...) PWC_DEBUG(MEMORY, fmt, ##args)
72 #define PWC_DEBUG_FLOW(fmt, args...) PWC_DEBUG(FLOW, fmt, ##args)
73 #define PWC_DEBUG_SIZE(fmt, args...) PWC_DEBUG(SIZE, fmt, ##args)
74 #define PWC_DEBUG_IOCTL(fmt, args...) PWC_DEBUG(IOCTL, fmt, ##args)
75 #define PWC_DEBUG_TRACE(fmt, args...) PWC_DEBUG(TRACE, fmt, ##args)
78 #ifdef CONFIG_USB_PWC_DEBUG
80 #define PWC_DEBUG_LEVEL (PWC_DEBUG_LEVEL_MODULE)
82 #define PWC_DEBUG(level, fmt, args...) do {\
83 if ((PWC_DEBUG_LEVEL_ ##level) & pwc_trace) \
84 printk(KERN_DEBUG PFX fmt, ##args); \
87 #define PWC_ERROR(fmt, args...) printk(KERN_ERR PFX fmt, ##args)
88 #define PWC_WARNING(fmt, args...) printk(KERN_WARNING PFX fmt, ##args)
89 #define PWC_INFO(fmt, args...) printk(KERN_INFO PFX fmt, ##args)
90 #define PWC_TRACE(fmt, args...) PWC_DEBUG(TRACE, fmt, ##args)
94 #define PWC_ERROR(fmt, args...) printk(KERN_ERR PFX fmt, ##args)
95 #define PWC_WARNING(fmt, args...) printk(KERN_WARNING PFX fmt, ##args)
96 #define PWC_INFO(fmt, args...) printk(KERN_INFO PFX fmt, ##args)
97 #define PWC_TRACE(fmt, args...) do { } while(0)
98 #define PWC_DEBUG(level, fmt, args...) do { } while(0)
105 #define TOUCAM_HEADER_SIZE 8
106 #define TOUCAM_TRAILER_SIZE 4
108 #define FEATURE_MOTOR_PANTILT 0x0001
109 #define FEATURE_CODEC1 0x0002
110 #define FEATURE_CODEC2 0x0004
112 #define MAX_WIDTH 640
113 #define MAX_HEIGHT 480
116 #define FRAME_LOWMARK 5
119 #define MAX_ISO_BUFS 3
120 #define ISO_FRAMES_PER_DESC 10
121 #define ISO_MAX_FRAME_SIZE 960
122 #define ISO_BUFFER_SIZE (ISO_FRAMES_PER_DESC * ISO_MAX_FRAME_SIZE)
125 #define PWC_FRAME_SIZE (460800 + TOUCAM_HEADER_SIZE + TOUCAM_TRAILER_SIZE)
129 #define MAX_FRAMES 16
132 #define DEVICE_USE_CODEC1(x) ((x)<675)
133 #define DEVICE_USE_CODEC2(x) ((x)>=675 && (x)<700)
134 #define DEVICE_USE_CODEC3(x) ((x)>=700)
135 #define DEVICE_USE_CODEC23(x) ((x)>=675)
138 #define SET_LUM_CTL 0x01
139 #define GET_LUM_CTL 0x02
140 #define SET_CHROM_CTL 0x03
141 #define GET_CHROM_CTL 0x04
142 #define SET_STATUS_CTL 0x05
143 #define GET_STATUS_CTL 0x06
144 #define SET_EP_STREAM_CTL 0x07
145 #define GET_EP_STREAM_CTL 0x08
146 #define GET_XX_CTL 0x09
147 #define SET_XX_CTL 0x0A
148 #define GET_XY_CTL 0x0B
149 #define SET_XY_CTL 0x0C
150 #define SET_MPT_CTL 0x0D
151 #define GET_MPT_CTL 0x0E
154 #define AGC_MODE_FORMATTER 0x2000
155 #define PRESET_AGC_FORMATTER 0x2100
156 #define SHUTTER_MODE_FORMATTER 0x2200
157 #define PRESET_SHUTTER_FORMATTER 0x2300
158 #define PRESET_CONTOUR_FORMATTER 0x2400
159 #define AUTO_CONTOUR_FORMATTER 0x2500
160 #define BACK_LIGHT_COMPENSATION_FORMATTER 0x2600
161 #define CONTRAST_FORMATTER 0x2700
162 #define DYNAMIC_NOISE_CONTROL_FORMATTER 0x2800
163 #define FLICKERLESS_MODE_FORMATTER 0x2900
164 #define AE_CONTROL_SPEED 0x2A00
165 #define BRIGHTNESS_FORMATTER 0x2B00
166 #define GAMMA_FORMATTER 0x2C00
169 #define WB_MODE_FORMATTER 0x1000
170 #define AWB_CONTROL_SPEED_FORMATTER 0x1100
171 #define AWB_CONTROL_DELAY_FORMATTER 0x1200
172 #define PRESET_MANUAL_RED_GAIN_FORMATTER 0x1300
173 #define PRESET_MANUAL_BLUE_GAIN_FORMATTER 0x1400
174 #define COLOUR_MODE_FORMATTER 0x1500
175 #define SATURATION_MODE_FORMATTER1 0x1600
176 #define SATURATION_MODE_FORMATTER2 0x1700
179 #define SAVE_USER_DEFAULTS_FORMATTER 0x0200
180 #define RESTORE_USER_DEFAULTS_FORMATTER 0x0300
181 #define RESTORE_FACTORY_DEFAULTS_FORMATTER 0x0400
182 #define READ_AGC_FORMATTER 0x0500
183 #define READ_SHUTTER_FORMATTER 0x0600
184 #define READ_RED_GAIN_FORMATTER 0x0700
185 #define READ_BLUE_GAIN_FORMATTER 0x0800
188 #define PT_RELATIVE_CONTROL_FORMATTER 0x01
189 #define PT_RESET_CONTROL_FORMATTER 0x02
190 #define PT_STATUS_FORMATTER 0x03
193 #define PSZ_SQCIF 0x00
194 #define PSZ_QSIF 0x01
195 #define PSZ_QCIF 0x02
288 #ifdef CONFIG_USB_PWC_INPUT_EVDEV
289 struct input_dev *button_dev;
290 char button_phys[64];
353 #ifdef CONFIG_USB_PWC_DEBUG
367 int pixfmt,
int frames,
int *
compression,
int send_to_cam);
378 #define pwc_set_s8_ctrl pwc_set_u8_ctrl