Lines Matching refs:gspca_dev

32 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
50 static u8 reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
53 struct usb_device *dev = gspca_dev->dev; in reg_r()
56 if (gspca_dev->usb_err < 0) in reg_r()
63 gspca_dev->usb_buf, 1, in reg_r()
67 gspca_dev->usb_err = ret; in reg_r()
70 return gspca_dev->usb_buf[0]; in reg_r()
74 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
77 struct usb_device *dev = gspca_dev->dev; in reg_w()
80 if (gspca_dev->usb_err < 0) in reg_w()
92 gspca_dev->usb_err = ret; in reg_w()
97 static void rcv_val(struct gspca_dev *gspca_dev, in rcv_val() argument
100 struct usb_device *dev = gspca_dev->dev; in rcv_val()
103 reg_w(gspca_dev, 0x634, (ads >> 16) & 0xff); in rcv_val()
104 reg_w(gspca_dev, 0x635, (ads >> 8) & 0xff); in rcv_val()
105 reg_w(gspca_dev, 0x636, ads & 0xff); in rcv_val()
106 reg_w(gspca_dev, 0x637, 0); in rcv_val()
107 reg_w(gspca_dev, 0x638, 4); /* len & 0xff */ in rcv_val()
108 reg_w(gspca_dev, 0x639, 0); /* len >> 8 */ in rcv_val()
109 reg_w(gspca_dev, 0x63a, 0); in rcv_val()
110 reg_w(gspca_dev, 0x63b, 0); in rcv_val()
111 reg_w(gspca_dev, 0x630, 5); in rcv_val()
112 if (gspca_dev->usb_err < 0) in rcv_val()
116 gspca_dev->usb_buf, in rcv_val()
122 gspca_dev->usb_err = ret; in rcv_val()
127 static void snd_val(struct gspca_dev *gspca_dev, in snd_val() argument
131 struct usb_device *dev = gspca_dev->dev; in snd_val()
136 reg_r(gspca_dev, 0x0704); in snd_val()
137 seq = reg_r(gspca_dev, 0x0705); in snd_val()
138 reg_r(gspca_dev, 0x0650); in snd_val()
139 reg_w(gspca_dev, 0x654, seq); in snd_val()
141 reg_w(gspca_dev, 0x654, (ads >> 16) & 0xff); in snd_val()
143 reg_w(gspca_dev, 0x655, (ads >> 8) & 0xff); in snd_val()
144 reg_w(gspca_dev, 0x656, ads & 0xff); in snd_val()
145 reg_w(gspca_dev, 0x657, 0); in snd_val()
146 reg_w(gspca_dev, 0x658, 0x04); /* size */ in snd_val()
147 reg_w(gspca_dev, 0x659, 0); in snd_val()
148 reg_w(gspca_dev, 0x65a, 0); in snd_val()
149 reg_w(gspca_dev, 0x65b, 0); in snd_val()
150 reg_w(gspca_dev, 0x650, 5); in snd_val()
151 if (gspca_dev->usb_err < 0) in snd_val()
153 gspca_dev->usb_buf[0] = val >> 24; in snd_val()
154 gspca_dev->usb_buf[1] = val >> 16; in snd_val()
155 gspca_dev->usb_buf[2] = val >> 8; in snd_val()
156 gspca_dev->usb_buf[3] = val; in snd_val()
159 gspca_dev->usb_buf, in snd_val()
165 gspca_dev->usb_err = ret; in snd_val()
170 reg_w(gspca_dev, 0x705, seq); in snd_val()
176 static void set_par(struct gspca_dev *gspca_dev, in set_par() argument
179 snd_val(gspca_dev, 0x003f08, parval); in set_par()
182 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
188 set_par(gspca_dev, parval); in setbrightness()
191 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
197 set_par(gspca_dev, parval); in setcontrast()
200 static void setcolors(struct gspca_dev *gspca_dev, s32 val) in setcolors() argument
206 set_par(gspca_dev, parval); in setcolors()
209 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) in setlightfreq() argument
211 set_par(gspca_dev, val == 1 in setlightfreq()
217 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
220 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
221 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
226 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
231 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); in sd_init()
232 ret = reg_r(gspca_dev, 0x0740); in sd_init()
233 if (gspca_dev->usb_err >= 0) { in sd_init()
236 gspca_dev->usb_err = -EIO; in sd_init()
239 return gspca_dev->usb_err; in sd_init()
243 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
245 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
249 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
250 gspca_dev->pixfmt.width, in sd_start()
255 usb_set_interface(gspca_dev->dev, gspca_dev->iface, 1); in sd_start()
257 set_par(gspca_dev, 0x10000000); in sd_start()
258 set_par(gspca_dev, 0x00000000); in sd_start()
259 set_par(gspca_dev, 0x8002e001); in sd_start()
260 set_par(gspca_dev, 0x14000000); in sd_start()
261 if (gspca_dev->pixfmt.width > 320) in sd_start()
265 set_par(gspca_dev, value); in sd_start()
266 ret = usb_set_interface(gspca_dev->dev, in sd_start()
267 gspca_dev->iface, in sd_start()
268 gspca_dev->alt); in sd_start()
271 gspca_dev->iface, gspca_dev->alt); in sd_start()
272 gspca_dev->usb_err = ret; in sd_start()
275 reg_r(gspca_dev, 0x0630); in sd_start()
276 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ in sd_start()
277 reg_r(gspca_dev, 0x0650); in sd_start()
278 snd_val(gspca_dev, 0x000020, 0xffffffff); in sd_start()
279 reg_w(gspca_dev, 0x0620, 0); in sd_start()
280 reg_w(gspca_dev, 0x0630, 0); in sd_start()
281 reg_w(gspca_dev, 0x0640, 0); in sd_start()
282 reg_w(gspca_dev, 0x0650, 0); in sd_start()
283 reg_w(gspca_dev, 0x0660, 0); in sd_start()
284 set_par(gspca_dev, 0x09800000); /* Red ? */ in sd_start()
285 set_par(gspca_dev, 0x0a800000); /* Green ? */ in sd_start()
286 set_par(gspca_dev, 0x0b800000); /* Blue ? */ in sd_start()
287 set_par(gspca_dev, 0x0d030000); /* Gamma ? */ in sd_start()
290 set_par(gspca_dev, 0x01000000); in sd_start()
291 set_par(gspca_dev, 0x01000000); in sd_start()
292 if (gspca_dev->usb_err >= 0) in sd_start()
293 gspca_dbg(gspca_dev, D_STREAM, "camera started alt: 0x%02x\n", in sd_start()
294 gspca_dev->alt); in sd_start()
296 return gspca_dev->usb_err; in sd_start()
299 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
301 struct usb_device *dev = gspca_dev->dev; in sd_stopN()
303 set_par(gspca_dev, 0x02000000); in sd_stopN()
304 set_par(gspca_dev, 0x02000000); in sd_stopN()
305 usb_set_interface(dev, gspca_dev->iface, 1); in sd_stopN()
306 reg_r(gspca_dev, 0x0630); in sd_stopN()
307 rcv_val(gspca_dev, 0x000020); /* << (value ff ff ff ff) */ in sd_stopN()
308 reg_r(gspca_dev, 0x0650); in sd_stopN()
309 snd_val(gspca_dev, 0x000020, 0xffffffff); in sd_stopN()
310 reg_w(gspca_dev, 0x0620, 0); in sd_stopN()
311 reg_w(gspca_dev, 0x0630, 0); in sd_stopN()
312 reg_w(gspca_dev, 0x0640, 0); in sd_stopN()
313 reg_w(gspca_dev, 0x0650, 0); in sd_stopN()
314 reg_w(gspca_dev, 0x0660, 0); in sd_stopN()
315 gspca_dbg(gspca_dev, D_STREAM, "camera stopped\n"); in sd_stopN()
318 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
322 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
335 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
339 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
347 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
352 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
353 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
355 gspca_dev->usb_err = 0; in sd_s_ctrl()
357 if (!gspca_dev->streaming) in sd_s_ctrl()
362 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
365 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
368 setcolors(gspca_dev, ctrl->val); in sd_s_ctrl()
371 setlightfreq(gspca_dev, ctrl->val); in sd_s_ctrl()
374 return gspca_dev->usb_err; in sd_s_ctrl()
381 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
383 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
385 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()