Lines Matching refs:gspca_dev

65 	struct gspca_dev gspca_dev;		/* !! must be the first item */
100 static void pac207_write_regs(struct gspca_dev *gspca_dev, u16 index,
103 struct usb_device *udev = gspca_dev->dev;
106 if (gspca_dev->usb_err < 0)
109 memcpy(gspca_dev->usb_buf, buffer, length);
114 gspca_dev->usb_buf, length, PAC207_CTRL_TIMEOUT);
118 gspca_dev->usb_err = err;
122 static void pac207_write_reg(struct gspca_dev *gspca_dev, u16 index, u16 value)
124 struct usb_device *udev = gspca_dev->dev;
127 if (gspca_dev->usb_err < 0)
136 gspca_dev->usb_err = err;
140 static int pac207_read_reg(struct gspca_dev *gspca_dev, u16 index)
142 struct usb_device *udev = gspca_dev->dev;
145 if (gspca_dev->usb_err < 0)
151 gspca_dev->usb_buf, 1, PAC207_CTRL_TIMEOUT);
155 gspca_dev->usb_err = res;
159 return gspca_dev->usb_buf[0];
163 static int sd_config(struct gspca_dev *gspca_dev,
169 idreg[0] = pac207_read_reg(gspca_dev, 0x0000);
170 idreg[1] = pac207_read_reg(gspca_dev, 0x0001);
185 cam = &gspca_dev->cam;
193 static int sd_init(struct gspca_dev *gspca_dev)
202 pac207_write_reg(gspca_dev, 0x41, mode);
203 pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */
205 return gspca_dev->usb_err;
208 static void setcontrol(struct gspca_dev *gspca_dev, u16 reg, u16 val)
210 pac207_write_reg(gspca_dev, reg, val);
211 pac207_write_reg(gspca_dev, 0x13, 0x01); /* Bit 0, auto clear */
212 pac207_write_reg(gspca_dev, 0x1c, 0x01); /* not documented */
217 struct gspca_dev *gspca_dev =
218 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
219 struct sd *sd = (struct sd *)gspca_dev;
221 gspca_dev->usb_err = 0;
228 gspca_dev->exposure->val = PAC207_EXPOSURE_DEFAULT;
229 gspca_dev->gain->val = PAC207_GAIN_DEFAULT;
233 if (!gspca_dev->streaming)
238 setcontrol(gspca_dev, PAC207_BRIGHTNESS_REG, ctrl->val);
241 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val))
242 setcontrol(gspca_dev, PAC207_EXPOSURE_REG,
243 gspca_dev->exposure->val);
244 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val))
245 setcontrol(gspca_dev, PAC207_GAIN_REG,
246 gspca_dev->gain->val);
251 return gspca_dev->usb_err;
259 static int sd_init_controls(struct gspca_dev *gspca_dev)
261 struct sd *sd = (struct sd *) gspca_dev;
262 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
264 gspca_dev->vdev.ctrl_handler = hdl;
271 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
273 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
277 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
285 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false);
290 static int sd_start(struct gspca_dev *gspca_dev)
292 struct sd *sd = (struct sd *) gspca_dev;
295 pac207_write_reg(gspca_dev, 0x0f, 0x10); /* Power control (Bit 6-0) */
296 pac207_write_regs(gspca_dev, 0x0002, pac207_sensor_init[0], 8);
297 pac207_write_regs(gspca_dev, 0x000a, pac207_sensor_init[1], 8);
298 pac207_write_regs(gspca_dev, 0x0012, pac207_sensor_init[2], 8);
299 pac207_write_regs(gspca_dev, 0x0042, pac207_sensor_init[3], 8);
302 if (gspca_dev->pixfmt.width == 176)
303 pac207_write_reg(gspca_dev, 0x4a, 0xff);
305 pac207_write_reg(gspca_dev, 0x4a, 0x30);
306 pac207_write_reg(gspca_dev, 0x4b, 0x00); /* Sram test value */
307 pac207_write_reg(gspca_dev, 0x08, v4l2_ctrl_g_ctrl(sd->brightness));
310 pac207_write_reg(gspca_dev, 0x0e,
311 v4l2_ctrl_g_ctrl(gspca_dev->gain));
312 pac207_write_reg(gspca_dev, 0x02,
313 v4l2_ctrl_g_ctrl(gspca_dev->exposure)); /* PXCK = 12MHz /n */
320 if (gspca_dev->pixfmt.width == 176) { /* 176x144 */
326 pac207_write_reg(gspca_dev, 0x41, mode);
328 pac207_write_reg(gspca_dev, 0x13, 0x01); /* Bit 0, auto clear */
329 pac207_write_reg(gspca_dev, 0x1c, 0x01); /* not documented */
331 pac207_write_reg(gspca_dev, 0x40, 0x01); /* Start ISO pipe */
336 return gspca_dev->usb_err;
339 static void sd_stopN(struct gspca_dev *gspca_dev)
348 pac207_write_reg(gspca_dev, 0x40, 0x00); /* Stop ISO pipe */
349 pac207_write_reg(gspca_dev, 0x41, mode); /* Turn off LED */
350 pac207_write_reg(gspca_dev, 0x0f, 0x00); /* Power Control */
354 static void pac207_do_auto_gain(struct gspca_dev *gspca_dev)
356 struct sd *sd = (struct sd *) gspca_dev;
364 else if (gspca_coarse_grained_expo_autogain(gspca_dev, avg_lum,
369 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
373 struct sd *sd = (struct sd *) gspca_dev;
376 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
386 gspca_frame_add(gspca_dev, LAST_PACKET,
389 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
413 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
417 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev,
424 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1);
425 input_sync(gspca_dev->input_dev);
426 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0);
427 input_sync(gspca_dev->input_dev);