Lines Matching refs:gspca_dev

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