Lines Matching refs:gspca_dev

35 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
2903 static void reg_r_i(struct gspca_dev *gspca_dev, in reg_r_i() argument
2910 if (gspca_dev->usb_err < 0) in reg_r_i()
2912 ret = usb_control_msg(gspca_dev->dev, in reg_r_i()
2913 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r_i()
2917 index, gspca_dev->usb_buf, len, in reg_r_i()
2921 gspca_dev->usb_err = ret; in reg_r_i()
2924 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
2929 reg_r_i(gspca_dev, req, index, len); in reg_r()
2930 if (gspca_dev->usb_err < 0) in reg_r()
2934 gspca_dev->usb_buf[0]); in reg_r()
2937 req, index, 3, gspca_dev->usb_buf); in reg_r()
2940 static void reg_w_i(struct gspca_dev *gspca_dev, in reg_w_i() argument
2947 if (gspca_dev->usb_err < 0) in reg_w_i()
2949 ret = usb_control_msg(gspca_dev->dev, in reg_w_i()
2950 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_i()
2957 gspca_dev->usb_err = ret; in reg_w_i()
2960 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
2965 if (gspca_dev->usb_err < 0) in reg_w()
2968 reg_w_i(gspca_dev, req, value, index); in reg_w()
2971 static u16 read_sensor_register(struct gspca_dev *gspca_dev, in read_sensor_register() argument
2977 reg_r(gspca_dev, 0xa1, 0xb33f, 1); in read_sensor_register()
2978 if (!(gspca_dev->usb_buf[0] & 0x02)) { in read_sensor_register()
2979 pr_err("I2c Bus Busy Wait %02x\n", gspca_dev->usb_buf[0]); in read_sensor_register()
2982 reg_w(gspca_dev, 0xa0, address, 0xb33a); in read_sensor_register()
2983 reg_w(gspca_dev, 0xa0, 0x02, 0xb339); in read_sensor_register()
2986 reg_r(gspca_dev, 0xa1, 0xb33b, 1); in read_sensor_register()
2987 if (gspca_dev->usb_buf[0] == 0x00) in read_sensor_register()
2992 reg_r(gspca_dev, 0xa1, 0xb33e, 1); in read_sensor_register()
2993 ldata = gspca_dev->usb_buf[0]; in read_sensor_register()
2994 reg_r(gspca_dev, 0xa1, 0xb33d, 1); in read_sensor_register()
2995 mdata = gspca_dev->usb_buf[0]; in read_sensor_register()
2996 reg_r(gspca_dev, 0xa1, 0xb33c, 1); in read_sensor_register()
2997 hdata = gspca_dev->usb_buf[0]; in read_sensor_register()
3001 reg_r(gspca_dev, 0xa1, 0xb334, 1); in read_sensor_register()
3002 if (gspca_dev->usb_buf[0] == 0x02) in read_sensor_register()
3007 static int vc032x_probe_sensor(struct gspca_dev *gspca_dev) in vc032x_probe_sensor() argument
3009 struct sd *sd = (struct sd *) gspca_dev; in vc032x_probe_sensor()
3016 reg_w(gspca_dev, 0xa0, 0x01, 0xb301); in vc032x_probe_sensor()
3017 reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff); in vc032x_probe_sensor()
3021 reg_r(gspca_dev, 0xa1, 0xbfcf, 1); in vc032x_probe_sensor()
3023 sd->bridge == BRIDGE_VC0321 ? 1 : 3, gspca_dev->usb_buf[0]); in vc032x_probe_sensor()
3032 reg_w(gspca_dev, 0xa0, 0x02, 0xb334); in vc032x_probe_sensor()
3033 reg_w(gspca_dev, 0xa0, ptsensor_info->m1, 0xb300); in vc032x_probe_sensor()
3034 reg_w(gspca_dev, 0xa0, ptsensor_info->m2, 0xb300); in vc032x_probe_sensor()
3035 reg_w(gspca_dev, 0xa0, 0x01, 0xb308); in vc032x_probe_sensor()
3036 reg_w(gspca_dev, 0xa0, 0x0c, 0xb309); in vc032x_probe_sensor()
3037 reg_w(gspca_dev, 0xa0, ptsensor_info->I2cAdd, 0xb335); in vc032x_probe_sensor()
3038 reg_w(gspca_dev, 0xa0, ptsensor_info->op, 0xb301); in vc032x_probe_sensor()
3039 value = read_sensor_register(gspca_dev, ptsensor_info->IdAdd); in vc032x_probe_sensor()
3041 value = read_sensor_register(gspca_dev, 0x83); in vc032x_probe_sensor()
3061 static void i2c_write(struct gspca_dev *gspca_dev, in i2c_write() argument
3067 if (gspca_dev->usb_err < 0) in i2c_write()
3073 reg_r_i(gspca_dev, 0xa1, 0xb33f, 1); in i2c_write()
3075 reg_w_i(gspca_dev, 0xa0, size, 0xb334); in i2c_write()
3076 reg_w_i(gspca_dev, 0xa0, reg, 0xb33a); in i2c_write()
3077 reg_w_i(gspca_dev, 0xa0, val[0], 0xb336); in i2c_write()
3079 reg_w_i(gspca_dev, 0xa0, val[1], 0xb337); in i2c_write()
3080 reg_w_i(gspca_dev, 0xa0, 0x01, 0xb339); in i2c_write()
3083 reg_r_i(gspca_dev, 0xa1, 0xb33b, 1); in i2c_write()
3084 if (gspca_dev->usb_buf[0] == 0) in i2c_write()
3092 static void put_tab_to_reg(struct gspca_dev *gspca_dev, in put_tab_to_reg() argument
3099 reg_w(gspca_dev, 0xa0, tab[j], ad++); in put_tab_to_reg()
3102 static void usb_exchange(struct gspca_dev *gspca_dev, in usb_exchange() argument
3112 reg_w(gspca_dev, 0xa0, data[i][2], in usb_exchange()
3116 i2c_write(gspca_dev, data[i][1], &data[i][2], 1); in usb_exchange()
3119 i2c_write(gspca_dev, data[i][0], &data[i][1], 2); in usb_exchange()
3132 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
3135 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
3148 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
3150 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
3168 sensor = vc032x_probe_sensor(gspca_dev); in sd_init()
3210 cam = &gspca_dev->cam; in sd_init()
3244 reg_r(gspca_dev, 0x8a, 0, 3); in sd_init()
3245 reg_w(gspca_dev, 0x87, 0x00, 0x0f0f); in sd_init()
3246 reg_r(gspca_dev, 0x8b, 0, 3); in sd_init()
3247 reg_w(gspca_dev, 0x88, 0x00, 0x0202); in sd_init()
3249 reg_r(gspca_dev, 0xa1, 0xb300, 1); in sd_init()
3250 if (gspca_dev->usb_buf[0] != 0) { in sd_init()
3251 reg_w(gspca_dev, 0xa0, 0x26, 0xb300); in sd_init()
3252 reg_w(gspca_dev, 0xa0, 0x04, 0xb300); in sd_init()
3254 reg_w(gspca_dev, 0xa0, 0x00, 0xb300); in sd_init()
3257 return gspca_dev->usb_err; in sd_init()
3260 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
3269 i2c_write(gspca_dev, 0x98, &data, 1); in setbrightness()
3272 static void setcontrast(struct gspca_dev *gspca_dev, u8 val) in setcontrast() argument
3274 i2c_write(gspca_dev, 0x99, &val, 1); in setcontrast()
3277 static void setcolors(struct gspca_dev *gspca_dev, u8 val) in setcolors() argument
3282 i2c_write(gspca_dev, 0x94, &data, 1); in setcolors()
3283 i2c_write(gspca_dev, 0x95, &val, 1); in setcolors()
3286 static void sethvflip(struct gspca_dev *gspca_dev, bool hflip, bool vflip) in sethvflip() argument
3288 struct sd *sd = (struct sd *) gspca_dev; in sethvflip()
3300 i2c_write(gspca_dev, 0xf0, data, 2); in sethvflip()
3304 i2c_write(gspca_dev, 0x20, data, 2); in sethvflip()
3311 i2c_write(gspca_dev, OV7660_REG_MVFP, data, 1); in sethvflip()
3315 i2c_write(gspca_dev, 0x03, data, 1); in sethvflip()
3319 i2c_write(gspca_dev, 0x1e, data, 1); in sethvflip()
3324 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) in setlightfreq() argument
3326 struct sd *sd = (struct sd *) gspca_dev; in setlightfreq()
3332 usb_exchange(gspca_dev, ov7660_freq_tb[val]); in setlightfreq()
3335 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) in setsharpness() argument
3337 struct sd *sd = (struct sd *) gspca_dev; in setsharpness()
3343 i2c_write(gspca_dev, 0x03, &data, 1); in setsharpness()
3348 i2c_write(gspca_dev, 0x61, &data, 1); in setsharpness()
3355 i2c_write(gspca_dev, 0x59, &data, 1); in setsharpness()
3359 static void setgain(struct gspca_dev *gspca_dev, u8 val) in setgain() argument
3361 i2c_write(gspca_dev, 0x15, &val, 1); in setgain()
3364 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
3369 i2c_write(gspca_dev, 0x1a, &data, 1); in setexposure()
3371 i2c_write(gspca_dev, 0x1b, &data, 1); in setexposure()
3374 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
3378 i2c_write(gspca_dev, 0xd1, &data[val], 1); in setautogain()
3381 static void setgamma(struct gspca_dev *gspca_dev) in setgamma() argument
3384 usb_exchange(gspca_dev, poxxxx_gamma); in setgamma()
3387 static void setbacklight(struct gspca_dev *gspca_dev, s32 val) in setbacklight() argument
3393 i2c_write(gspca_dev, 0xaa, &data, 1); in setbacklight()
3396 i2c_write(gspca_dev, 0xc4, &data, 1); in setbacklight()
3398 i2c_write(gspca_dev, 0xc5, &data, 1); in setbacklight()
3401 i2c_write(gspca_dev, 0xc6, &data, 1); in setbacklight()
3403 i2c_write(gspca_dev, 0xc7, &data, 1); in setbacklight()
3406 i2c_write(gspca_dev, 0xc8, &data, 1); in setbacklight()
3408 i2c_write(gspca_dev, 0xc9, &data, 1); in setbacklight()
3411 i2c_write(gspca_dev, 0xca, &data, 1); in setbacklight()
3413 i2c_write(gspca_dev, 0xcb, &data, 1); in setbacklight()
3416 static void setwb(struct gspca_dev *gspca_dev) in setwb() argument
3421 i2c_write(gspca_dev, 0x16, &data[0], 1); in setwb()
3422 i2c_write(gspca_dev, 0x18, &data[1], 1); in setwb()
3425 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
3427 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
3440 reg_w(gspca_dev, 0x89, 0xf0ff, 0xffff); in sd_start()
3441 reg_w(gspca_dev, 0xa9, 0x8348, 0x000e); in sd_start()
3442 reg_w(gspca_dev, 0xa9, 0x0000, 0x001a); in sd_start()
3447 reg_w(gspca_dev, 0xa0, 0xff, 0xbfec); in sd_start()
3448 reg_w(gspca_dev, 0xa0, 0xff, 0xbfed); in sd_start()
3449 reg_w(gspca_dev, 0xa0, 0xff, 0xbfee); in sd_start()
3450 reg_w(gspca_dev, 0xa0, 0xff, 0xbfef); in sd_start()
3453 if (gspca_dev->cam.cam_mode[gspca_dev->curr_mode].pixelformat in sd_start()
3460 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; in sd_start()
3524 usb_exchange(gspca_dev, init); in sd_start()
3534 usb_exchange(gspca_dev, poxxxx_init_common); in sd_start()
3535 setgamma(gspca_dev); in sd_start()
3536 usb_exchange(gspca_dev, poxxxx_init_start_3); in sd_start()
3541 usb_exchange(gspca_dev, init); in sd_start()
3542 reg_r(gspca_dev, 0x8c, 0x0000, 3); in sd_start()
3543 reg_w(gspca_dev, 0xa0, in sd_start()
3544 gspca_dev->usb_buf[2] & 1 ? 0 : 1, in sd_start()
3551 usb_exchange(gspca_dev, init); in sd_start()
3553 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb84a); in sd_start()
3554 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb85b); in sd_start()
3555 put_tab_to_reg(gspca_dev, GammaT, 17, 0xb86c); in sd_start()
3556 put_tab_to_reg(gspca_dev, MatrixT, 9, 0xb82c); in sd_start()
3561 reg_w(gspca_dev, 0x89, 0x0400, 0x1415); in sd_start()
3564 reg_w(gspca_dev, 0x89, 0x058c, 0x0000); in sd_start()
3571 reg_w(gspca_dev, 0x87, 0xffff, 0xffff); in sd_start()
3572 reg_w(gspca_dev, 0x88, 0xff00, 0xf0f1); in sd_start()
3573 reg_w(gspca_dev, 0xa0, 0x0000, 0xbfff); in sd_start()
3576 usb_exchange(gspca_dev, poxxxx_init_end_2); in sd_start()
3577 setwb(gspca_dev); in sd_start()
3579 reg_w(gspca_dev, 0x89, 0xffff, 0xfdff); in sd_start()
3582 return gspca_dev->usb_err; in sd_start()
3585 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
3587 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
3591 reg_w(gspca_dev, 0x89, 0x058c, 0x00ff); in sd_stopN()
3597 reg_w(gspca_dev, 0x89, 0xffff, 0xffff); in sd_stopN()
3600 reg_w(gspca_dev, 0xa0, 0x01, 0xb301); in sd_stopN()
3601 reg_w(gspca_dev, 0xa0, 0x09, 0xb003); in sd_stopN()
3605 static void sd_stop0(struct gspca_dev *gspca_dev) in sd_stop0() argument
3607 struct sd *sd = (struct sd *) gspca_dev; in sd_stop0()
3609 if (!gspca_dev->present) in sd_stop0()
3613 reg_w(gspca_dev, 0x89, 0x058c, 0x00ff); in sd_stop0()
3615 reg_w(gspca_dev, 0x89, 0xffff, 0xffff); in sd_stop0()
3618 reg_w(gspca_dev, 0xa0, 0x26, 0xb300); in sd_stop0()
3619 reg_w(gspca_dev, 0xa0, 0x04, 0xb300); in sd_stop0()
3620 reg_w(gspca_dev, 0xa0, 0x00, 0xb300); in sd_stop0()
3624 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
3628 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
3633 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
3636 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); in sd_pkt_scan()
3645 l = gspca_dev->image_len; in sd_pkt_scan()
3646 size = gspca_dev->frsz; in sd_pkt_scan()
3650 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
3655 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
3656 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
3657 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
3659 gspca_dev->usb_err = 0; in sd_s_ctrl()
3661 if (!gspca_dev->streaming && ctrl->id != V4L2_CID_POWER_LINE_FREQUENCY) in sd_s_ctrl()
3666 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
3669 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
3672 setcolors(gspca_dev, ctrl->val); in sd_s_ctrl()
3675 sethvflip(gspca_dev, sd->hflip->val, sd->vflip->val); in sd_s_ctrl()
3678 setsharpness(gspca_dev, ctrl->val); in sd_s_ctrl()
3681 setautogain(gspca_dev, ctrl->val); in sd_s_ctrl()
3684 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
3687 setexposure(gspca_dev, ctrl->val); in sd_s_ctrl()
3690 setbacklight(gspca_dev, ctrl->val); in sd_s_ctrl()
3693 setlightfreq(gspca_dev, ctrl->val); in sd_s_ctrl()
3696 return gspca_dev->usb_err; in sd_s_ctrl()
3703 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
3705 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
3706 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
3742 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()