Lines Matching refs:gspca_dev

33 	struct gspca_dev gspca_dev;	/* !! must be the first item */
48 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val);
49 static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val);
50 static int sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val);
51 static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val);
52 static int sd_setcolors(struct gspca_dev *gspca_dev, __s32 val);
53 static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val);
54 static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val);
55 static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val);
232 /* read 'len' bytes to gspca_dev->usb_buf */
233 static void reg_r(struct gspca_dev *gspca_dev,
237 struct usb_device *dev = gspca_dev->dev;
250 index, gspca_dev->usb_buf, len, 500);
252 index, gspca_dev->usb_buf[0]);
255 static void reg_w_val(struct gspca_dev *gspca_dev,
259 struct usb_device *dev = gspca_dev->dev;
261 gspca_dev->usb_buf[0] = val;
267 index, gspca_dev->usb_buf, 1, 500);
270 static void reg_w(struct gspca_dev *gspca_dev,
275 struct usb_device *dev = gspca_dev->dev;
284 memcpy(gspca_dev->usb_buf, buffer, len);
289 0, index, gspca_dev->usb_buf, len, 500);
292 static int i2c_w(struct gspca_dev *gspca_dev,
301 reg_w_val(gspca_dev, ET_I2C_BASE, 0x40);
305 reg_w_val(gspca_dev, ET_I2C_COUNT, ptchcount);
307 reg_w_val(gspca_dev, ET_I2C_REG, reg);
309 reg_w_val(gspca_dev, ET_I2C_DATA0 + len, buffer[len]);
313 static int i2c_r(struct gspca_dev *gspca_dev,
317 reg_w_val(gspca_dev, ET_I2C_BASE, 0x40);
320 reg_w_val(gspca_dev, ET_I2C_COUNT, 0x11);
321 reg_w_val(gspca_dev, ET_I2C_REG, reg); /* set the register base */
322 reg_w_val(gspca_dev, ET_I2C_PREFETCH, 0x02); /* prefetch */
323 reg_w_val(gspca_dev, ET_I2C_PREFETCH, 0x00);
324 reg_r(gspca_dev, ET_I2C_DATA0, 1); /* read one byte */
328 static int Et_WaitStatus(struct gspca_dev *gspca_dev)
333 reg_r(gspca_dev, ET_ClCK, 1);
334 if (gspca_dev->usb_buf[0] != 0)
340 static int et_video(struct gspca_dev *gspca_dev,
345 reg_w_val(gspca_dev, ET_GPIO_OUT,
348 ret = Et_WaitStatus(gspca_dev);
354 static void Et_init2(struct gspca_dev *gspca_dev)
360 reg_w_val(gspca_dev, ET_GPIO_DIR_CTRL, 0x2f);
361 reg_w_val(gspca_dev, ET_GPIO_OUT, 0x10);
362 reg_r(gspca_dev, ET_GPIO_IN, 1);
363 reg_w_val(gspca_dev, ET_ClCK, 0x14); /* 0x14 // 0x16 enabled pattern */
364 reg_w_val(gspca_dev, ET_CTRL, 0x1b);
367 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv)
371 reg_w_val(gspca_dev, ET_COMP, value);
372 reg_w_val(gspca_dev, ET_MAXQt, 0x1f);
373 reg_w_val(gspca_dev, ET_MINQt, 0x04);
375 reg_w_val(gspca_dev, ET_REG1d, 0xff);
376 reg_w_val(gspca_dev, ET_REG1e, 0xff);
377 reg_w_val(gspca_dev, ET_REG1f, 0xff);
378 reg_w_val(gspca_dev, ET_REG20, 0x35);
379 reg_w_val(gspca_dev, ET_REG21, 0x01);
380 reg_w_val(gspca_dev, ET_REG22, 0x00);
381 reg_w_val(gspca_dev, ET_REG23, 0xff);
382 reg_w_val(gspca_dev, ET_REG24, 0xff);
383 reg_w_val(gspca_dev, ET_REG25, 0x0f);
385 reg_w_val(gspca_dev, 0x30, 0x11); /* 0x30 */
386 reg_w_val(gspca_dev, 0x31, 0x40);
387 reg_w_val(gspca_dev, 0x32, 0x00);
388 reg_w_val(gspca_dev, ET_O_RED, 0x00); /* 0x34 */
389 reg_w_val(gspca_dev, ET_O_GREEN1, 0x00);
390 reg_w_val(gspca_dev, ET_O_BLUE, 0x00);
391 reg_w_val(gspca_dev, ET_O_GREEN2, 0x00);
393 reg_w_val(gspca_dev, ET_G_RED, 0x80); /* 0x4d */
394 reg_w_val(gspca_dev, ET_G_GREEN1, 0x80);
395 reg_w_val(gspca_dev, ET_G_BLUE, 0x80);
396 reg_w_val(gspca_dev, ET_G_GREEN2, 0x80);
397 reg_w_val(gspca_dev, ET_G_GR_H, 0x00);
398 reg_w_val(gspca_dev, ET_G_GB_H, 0x00); /* 0x52 */
400 reg_w_val(gspca_dev, 0x61, 0x80); /* use cmc_out */
401 reg_w_val(gspca_dev, 0x62, 0x02);
402 reg_w_val(gspca_dev, 0x63, 0x03);
403 reg_w_val(gspca_dev, 0x64, 0x14);
404 reg_w_val(gspca_dev, 0x65, 0x0e);
405 reg_w_val(gspca_dev, 0x66, 0x02);
406 reg_w_val(gspca_dev, 0x67, 0x02);
409 reg_w_val(gspca_dev, ET_SYNCHRO, 0x8f); /* 0x68 */
410 reg_w_val(gspca_dev, ET_STARTX, 0x69); /* 0x6a //0x69 */
411 reg_w_val(gspca_dev, ET_STARTY, 0x0d); /* 0x0d //0x0c */
412 reg_w_val(gspca_dev, ET_WIDTH_LOW, 0x80);
413 reg_w_val(gspca_dev, ET_HEIGTH_LOW, 0xe0);
414 reg_w_val(gspca_dev, ET_W_H_HEIGTH, 0x60); /* 6d */
415 reg_w_val(gspca_dev, ET_REG6e, 0x86);
416 reg_w_val(gspca_dev, ET_REG6f, 0x01);
417 reg_w_val(gspca_dev, ET_REG70, 0x26);
418 reg_w_val(gspca_dev, ET_REG71, 0x7a);
419 reg_w_val(gspca_dev, ET_REG72, 0x01);
421 reg_w_val(gspca_dev, ET_REG73, 0x00);
422 reg_w_val(gspca_dev, ET_REG74, 0x18); /* 0x28 */
423 reg_w_val(gspca_dev, ET_REG75, 0x0f); /* 0x01 */
425 reg_w_val(gspca_dev, 0x8a, 0x20);
426 reg_w_val(gspca_dev, 0x8d, 0x0f);
427 reg_w_val(gspca_dev, 0x8e, 0x08);
429 reg_w_val(gspca_dev, 0x03, 0x08);
430 reg_w_val(gspca_dev, ET_PXL_CLK, 0x03);
431 reg_w_val(gspca_dev, 0x81, 0xff);
432 reg_w_val(gspca_dev, 0x80, 0x00);
433 reg_w_val(gspca_dev, 0x81, 0xff);
434 reg_w_val(gspca_dev, 0x80, 0x20);
435 reg_w_val(gspca_dev, 0x03, 0x01);
436 reg_w_val(gspca_dev, 0x03, 0x00);
437 reg_w_val(gspca_dev, 0x03, 0x08);
440 /* reg_r(gspca_dev, ET_I2C_BASE, 1);
443 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv)
452 reg_w_val(gspca_dev, ET_PXL_CLK, value);
454 reg_w(gspca_dev, 0x62, FormLine, 6);
457 reg_w_val(gspca_dev, 0x81, 0x47); /* 0x47; */
458 reg_w_val(gspca_dev, 0x80, 0x40); /* 0x40; */
463 reg_w_val(gspca_dev, 0x81, 0x30); /* 0x20; - set brightness */
464 reg_w_val(gspca_dev, 0x80, 0x20); /* 0x20; */
467 static void setbrightness(struct gspca_dev *gspca_dev)
469 struct sd *sd = (struct sd *) gspca_dev;
474 reg_w_val(gspca_dev, ET_O_RED + i, brightness);
477 static void setcontrast(struct gspca_dev *gspca_dev)
479 struct sd *sd = (struct sd *) gspca_dev;
484 reg_w(gspca_dev, ET_G_RED, RGBG, 6);
487 static void setcolors(struct gspca_dev *gspca_dev)
489 struct sd *sd = (struct sd *) gspca_dev;
500 i2c_w(gspca_dev, PAS106_REG13, &i2cflags, 1, 3);
501 i2c_w(gspca_dev, PAS106_REG9, I2cc, sizeof I2cc, 1);
507 static void getcolors(struct gspca_dev *gspca_dev)
509 struct sd *sd = (struct sd *) gspca_dev;
512 /* i2c_r(gspca_dev, PAS106_REG9); * blue */
513 i2c_r(gspca_dev, PAS106_REG9 + 3); /* red */
514 sd->colors = gspca_dev->usb_buf[0] & 0x0f;
518 static void setautogain(struct gspca_dev *gspca_dev)
520 struct sd *sd = (struct sd *) gspca_dev;
528 static void Et_init1(struct gspca_dev *gspca_dev)
538 reg_w_val(gspca_dev, ET_GPIO_DIR_CTRL, 7);
539 reg_r(gspca_dev, ET_GPIO_IN, 1);
540 reg_w_val(gspca_dev, ET_RESET_ALL, 1);
541 reg_w_val(gspca_dev, ET_RESET_ALL, 0);
542 reg_w_val(gspca_dev, ET_ClCK, 0x10);
543 reg_w_val(gspca_dev, ET_CTRL, 0x19);
545 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv)
550 gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv,
552 reg_w_val(gspca_dev, ET_COMP, value);
553 reg_w_val(gspca_dev, ET_MAXQt, 0x1d);
554 reg_w_val(gspca_dev, ET_MINQt, 0x02);
556 reg_w_val(gspca_dev, ET_REG1d, 0xff);
557 reg_w_val(gspca_dev, ET_REG1e, 0xff);
558 reg_w_val(gspca_dev, ET_REG1f, 0xff);
559 reg_w_val(gspca_dev, ET_REG20, 0x35);
560 reg_w_val(gspca_dev, ET_REG21, 0x01);
561 reg_w_val(gspca_dev, ET_REG22, 0x00);
562 reg_w_val(gspca_dev, ET_REG23, 0xf7);
563 reg_w_val(gspca_dev, ET_REG24, 0xff);
564 reg_w_val(gspca_dev, ET_REG25, 0x07);
566 reg_w_val(gspca_dev, ET_G_RED, 0x80);
567 reg_w_val(gspca_dev, ET_G_GREEN1, 0x80);
568 reg_w_val(gspca_dev, ET_G_BLUE, 0x80);
569 reg_w_val(gspca_dev, ET_G_GREEN2, 0x80);
570 reg_w_val(gspca_dev, ET_G_GR_H, 0x00);
571 reg_w_val(gspca_dev, ET_G_GB_H, 0x00);
573 reg_w_val(gspca_dev, ET_SYNCHRO, 0xf0);
574 reg_w_val(gspca_dev, ET_STARTX, 0x56); /* 0x56 */
575 reg_w_val(gspca_dev, ET_STARTY, 0x05); /* 0x04 */
576 reg_w_val(gspca_dev, ET_WIDTH_LOW, 0x60);
577 reg_w_val(gspca_dev, ET_HEIGTH_LOW, 0x20);
578 reg_w_val(gspca_dev, ET_W_H_HEIGTH, 0x50);
579 reg_w_val(gspca_dev, ET_REG6e, 0x86);
580 reg_w_val(gspca_dev, ET_REG6f, 0x01);
581 reg_w_val(gspca_dev, ET_REG70, 0x86);
582 reg_w_val(gspca_dev, ET_REG71, 0x14);
583 reg_w_val(gspca_dev, ET_REG72, 0x00);
585 reg_w_val(gspca_dev, ET_REG73, 0x00);
586 reg_w_val(gspca_dev, ET_REG74, 0x00);
587 reg_w_val(gspca_dev, ET_REG75, 0x0a);
588 reg_w_val(gspca_dev, ET_I2C_CLK, 0x04);
589 reg_w_val(gspca_dev, ET_PXL_CLK, 0x01);
591 if (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) {
593 i2c_w(gspca_dev, PAS106_REG2, I2c0, sizeof I2c0, 1);
594 i2c_w(gspca_dev, PAS106_REG9, I2c2, sizeof I2c2, 1);
596 i2c_w(gspca_dev, PAS106_REG2, &value, 1, 1);
597 i2c_w(gspca_dev, PAS106_REG3, I2c3, sizeof I2c3, 1);
600 i2c_w(gspca_dev, PAS106_REG0e, &value, 1, 1);
604 i2c_w(gspca_dev, PAS106_REG2, I2c0, sizeof I2c0, 1);
605 i2c_w(gspca_dev, PAS106_REG9, I2c2, sizeof I2c2, 1);
607 i2c_w(gspca_dev, PAS106_REG2, &value, 1, 1);
608 i2c_w(gspca_dev, PAS106_REG3, I2c3, sizeof I2c3, 1);
611 i2c_w(gspca_dev, PAS106_REG0e, &value, 1, 1);
614 i2c_w(gspca_dev, PAS106_REG0f, &value, 1, 1);
620 /* i2c_w(gspca_dev, PAS106_REG5, &value, 1, 1); */
622 i2c_w(gspca_dev, PAS106_REG7, I2c4, sizeof I2c4, 1);
624 reg_w(gspca_dev, ET_G_RED, GainRGBG, 6);
625 getcolors(gspca_dev);
626 setcolors(gspca_dev);
630 static int sd_config(struct gspca_dev *gspca_dev,
633 struct sd *sd = (struct sd *) gspca_dev;
636 cam = &gspca_dev->cam;
644 gspca_dev->ctrl_dis = (1 << COLOR_IDX);
655 static int sd_init(struct gspca_dev *gspca_dev)
657 struct sd *sd = (struct sd *) gspca_dev;
660 Et_init1(gspca_dev);
662 Et_init2(gspca_dev);
663 reg_w_val(gspca_dev, ET_RESET_ALL, 0x08);
664 et_video(gspca_dev, 0); /* video off */
669 static int sd_start(struct gspca_dev *gspca_dev)
671 struct sd *sd = (struct sd *) gspca_dev;
674 Et_init1(gspca_dev);
676 Et_init2(gspca_dev);
678 setautogain(gspca_dev);
680 reg_w_val(gspca_dev, ET_RESET_ALL, 0x08);
681 et_video(gspca_dev, 1); /* video on */
685 static void sd_stopN(struct gspca_dev *gspca_dev)
687 et_video(gspca_dev, 0); /* video off */
690 static __u8 Et_getgainG(struct gspca_dev *gspca_dev)
692 struct sd *sd = (struct sd *) gspca_dev;
695 i2c_r(gspca_dev, PAS106_REG0e);
696 PDEBUG(D_CONF, "Etoms gain G %d", gspca_dev->usb_buf[0]);
697 return gspca_dev->usb_buf[0];
702 static void Et_setgainG(struct gspca_dev *gspca_dev, __u8 gain)
704 struct sd *sd = (struct sd *) gspca_dev;
709 i2c_w(gspca_dev, PAS106_REG13, &i2cflags, 1, 3);
710 i2c_w(gspca_dev, PAS106_REG0e, &gain, 1, 1);
719 static void do_autogain(struct gspca_dev *gspca_dev)
721 struct sd *sd = (struct sd *) gspca_dev;
735 Gbright = Et_getgainG(gspca_dev);
736 reg_r(gspca_dev, ET_LUMA_CENTER, 4);
737 g = (gspca_dev->usb_buf[0] + gspca_dev->usb_buf[3]) >> 1;
738 r = gspca_dev->usb_buf[1];
739 b = gspca_dev->usb_buf[2];
749 Et_setgainG(gspca_dev, (__u8) Gbright);
756 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
771 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
772 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
777 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
779 gspca_dev->last_packet_type = DISCARD_PACKET;
783 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
785 struct sd *sd = (struct sd *) gspca_dev;
788 if (gspca_dev->streaming)
789 setbrightness(gspca_dev);
793 static int sd_getbrightness(struct gspca_dev *gspca_dev, __s32 *val)
795 struct sd *sd = (struct sd *) gspca_dev;
801 static int sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val)
803 struct sd *sd = (struct sd *) gspca_dev;
806 if (gspca_dev->streaming)
807 setcontrast(gspca_dev);
811 static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val)
813 struct sd *sd = (struct sd *) gspca_dev;
819 static int sd_setcolors(struct gspca_dev *gspca_dev, __s32 val)
821 struct sd *sd = (struct sd *) gspca_dev;
824 if (gspca_dev->streaming)
825 setcolors(gspca_dev);
829 static int sd_getcolors(struct gspca_dev *gspca_dev, __s32 *val)
831 struct sd *sd = (struct sd *) gspca_dev;
837 static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val)
839 struct sd *sd = (struct sd *) gspca_dev;
842 if (gspca_dev->streaming)
843 setautogain(gspca_dev);
847 static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val)
849 struct sd *sd = (struct sd *) gspca_dev;