Lines Matching refs:gspca_dev

40 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
5548 static u8 reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
5553 if (gspca_dev->usb_err < 0) in reg_r()
5555 ret = usb_control_msg(gspca_dev->dev, in reg_r()
5556 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
5560 index, gspca_dev->usb_buf, 1, in reg_r()
5564 gspca_dev->usb_err = ret; in reg_r()
5567 return gspca_dev->usb_buf[0]; in reg_r()
5570 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
5576 if (gspca_dev->usb_err < 0) in reg_w()
5578 ret = usb_control_msg(gspca_dev->dev, in reg_w()
5579 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
5586 gspca_dev->usb_err = ret; in reg_w()
5590 static u16 i2c_read(struct gspca_dev *gspca_dev, in i2c_read() argument
5596 if (gspca_dev->usb_err < 0) in i2c_read()
5598 reg_w(gspca_dev, reg, 0x0092); in i2c_read()
5599 reg_w(gspca_dev, 0x02, 0x0090); /* <- read command */ in i2c_read()
5601 retbyte = reg_r(gspca_dev, 0x0091); /* read status */ in i2c_read()
5604 retval = reg_r(gspca_dev, 0x0095); /* read Lowbyte */ in i2c_read()
5605 retval |= reg_r(gspca_dev, 0x0096) << 8; /* read Hightbyte */ in i2c_read()
5609 static u8 i2c_write(struct gspca_dev *gspca_dev, in i2c_write() argument
5616 if (gspca_dev->usb_err < 0) in i2c_write()
5618 reg_w(gspca_dev, reg, 0x92); in i2c_write()
5619 reg_w(gspca_dev, valL, 0x93); in i2c_write()
5620 reg_w(gspca_dev, valH, 0x94); in i2c_write()
5621 reg_w(gspca_dev, 0x01, 0x90); /* <- write command */ in i2c_write()
5623 retbyte = reg_r(gspca_dev, 0x0091); /* read status */ in i2c_write()
5629 static void usb_exchange(struct gspca_dev *gspca_dev, in usb_exchange() argument
5635 reg_w(gspca_dev, action->val, action->idx); in usb_exchange()
5638 reg_r(gspca_dev, action->idx); in usb_exchange()
5641 i2c_write(gspca_dev, in usb_exchange()
5647 i2c_write(gspca_dev, in usb_exchange()
5662 static void setmatrix(struct gspca_dev *gspca_dev) in setmatrix() argument
5664 struct sd *sd = (struct sd *) gspca_dev; in setmatrix()
5709 reg_w(gspca_dev, matrix[i], 0x010a + i); in setmatrix()
5712 static void setsharpness(struct gspca_dev *gspca_dev, s32 val) in setsharpness() argument
5721 reg_w(gspca_dev, sharpness_tb[val][0], 0x01c6); in setsharpness()
5722 reg_r(gspca_dev, 0x01c8); in setsharpness()
5723 reg_r(gspca_dev, 0x01c9); in setsharpness()
5724 reg_r(gspca_dev, 0x01ca); in setsharpness()
5725 reg_w(gspca_dev, sharpness_tb[val][1], 0x01cb); in setsharpness()
5728 static void setcontrast(struct gspca_dev *gspca_dev, in setcontrast() argument
5768 reg_w(gspca_dev, g, 0x0120 + i); /* gamma */ in setcontrast()
5782 reg_w(gspca_dev, gr[i], 0x0130 + i); /* gradient */ in setcontrast()
5785 static s32 getexposure(struct gspca_dev *gspca_dev) in getexposure() argument
5787 return (i2c_read(gspca_dev, 0x25) << 9) in getexposure()
5788 | (i2c_read(gspca_dev, 0x26) << 1) in getexposure()
5789 | (i2c_read(gspca_dev, 0x27) >> 7); in getexposure()
5792 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
5794 i2c_write(gspca_dev, 0x25, val >> 9, 0x00); in setexposure()
5795 i2c_write(gspca_dev, 0x26, val >> 1, 0x00); in setexposure()
5796 i2c_write(gspca_dev, 0x27, val << 7, 0x00); in setexposure()
5799 static void setquality(struct gspca_dev *gspca_dev) in setquality() argument
5801 struct sd *sd = (struct sd *) gspca_dev; in setquality()
5803 reg_w(gspca_dev, sd->reg08, ZC3XX_R008_CLOCKSETTING); in setquality()
5812 static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) in setlightfreq() argument
5814 struct sd *sd = (struct sd *) gspca_dev; in setlightfreq()
5897 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in setlightfreq()
5903 usb_exchange(gspca_dev, zc3_freq); in setlightfreq()
5908 reg_w(gspca_dev, 0x85, 0x018d); in setlightfreq()
5914 reg_w(gspca_dev, 0x40, 0x0002); in setlightfreq()
5916 reg_w(gspca_dev, 0x44, 0x0002); in setlightfreq()
5920 reg_w(gspca_dev, 0x00, 0x01a7); in setlightfreq()
5925 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
5927 reg_w(gspca_dev, val ? 0x42 : 0x02, 0x0180); in setautogain()
5937 struct gspca_dev *gspca_dev = &sd->gspca_dev; in transfer_update() local
5949 mutex_lock(&gspca_dev->usb_lock); in transfer_update()
5951 if (gspca_dev->frozen) in transfer_update()
5954 if (!gspca_dev->present || !gspca_dev->streaming) in transfer_update()
5958 gspca_dev->usb_err = 0; in transfer_update()
5959 reg11 = reg_r(gspca_dev, 0x0011); in transfer_update()
5960 if (gspca_dev->usb_err) in transfer_update()
5987 gspca_dev->usb_err = 0; in transfer_update()
5988 reg_w(gspca_dev, reg07, 0x0007); in transfer_update()
5989 if (gspca_dev->usb_err) in transfer_update()
5992 mutex_unlock(&gspca_dev->usb_lock); in transfer_update()
5996 mutex_unlock(&gspca_dev->usb_lock); in transfer_update()
5999 static void send_unknown(struct gspca_dev *gspca_dev, int sensor) in send_unknown() argument
6001 reg_w(gspca_dev, 0x01, 0x0000); /* bridge reset */ in send_unknown()
6004 reg_w(gspca_dev, 0x03, 0x003a); in send_unknown()
6005 reg_w(gspca_dev, 0x0c, 0x003b); in send_unknown()
6006 reg_w(gspca_dev, 0x08, 0x0038); in send_unknown()
6015 reg_w(gspca_dev, 0x0d, 0x003a); in send_unknown()
6016 reg_w(gspca_dev, 0x02, 0x003b); in send_unknown()
6017 reg_w(gspca_dev, 0x00, 0x0038); in send_unknown()
6021 reg_w(gspca_dev, 0x03, 0x003b); in send_unknown()
6022 reg_w(gspca_dev, 0x0c, 0x003a); in send_unknown()
6023 reg_w(gspca_dev, 0x0b, 0x0039); in send_unknown()
6025 reg_w(gspca_dev, 0x0b, 0x0038); in send_unknown()
6031 static void start_2wr_probe(struct gspca_dev *gspca_dev, int sensor) in start_2wr_probe() argument
6033 reg_w(gspca_dev, 0x01, 0x0000); in start_2wr_probe()
6034 reg_w(gspca_dev, sensor, 0x0010); in start_2wr_probe()
6035 reg_w(gspca_dev, 0x01, 0x0001); in start_2wr_probe()
6036 reg_w(gspca_dev, 0x03, 0x0012); in start_2wr_probe()
6037 reg_w(gspca_dev, 0x01, 0x0012); in start_2wr_probe()
6041 static int sif_probe(struct gspca_dev *gspca_dev) in sif_probe() argument
6045 start_2wr_probe(gspca_dev, 0x0f); /* PAS106 */ in sif_probe()
6046 reg_w(gspca_dev, 0x08, 0x008d); in sif_probe()
6048 checkword = ((i2c_read(gspca_dev, 0x00) & 0x0f) << 4) in sif_probe()
6049 | ((i2c_read(gspca_dev, 0x01) & 0xf0) >> 4); in sif_probe()
6052 send_unknown(gspca_dev, SENSOR_PAS106); in sif_probe()
6058 static int vga_2wr_probe(struct gspca_dev *gspca_dev) in vga_2wr_probe() argument
6062 start_2wr_probe(gspca_dev, 0x00); /* HV7131B */ in vga_2wr_probe()
6063 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); in vga_2wr_probe()
6064 retword = i2c_read(gspca_dev, 0x01); in vga_2wr_probe()
6068 start_2wr_probe(gspca_dev, 0x04); /* CS2102 */ in vga_2wr_probe()
6069 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); in vga_2wr_probe()
6070 retword = i2c_read(gspca_dev, 0x01); in vga_2wr_probe()
6074 start_2wr_probe(gspca_dev, 0x06); /* OmniVision */ in vga_2wr_probe()
6075 reg_w(gspca_dev, 0x08, 0x008d); in vga_2wr_probe()
6076 i2c_write(gspca_dev, 0x11, 0xaa, 0x00); in vga_2wr_probe()
6077 retword = i2c_read(gspca_dev, 0x11); in vga_2wr_probe()
6084 start_2wr_probe(gspca_dev, 0x08); /* HDCS2020 */ in vga_2wr_probe()
6085 i2c_write(gspca_dev, 0x1c, 0x00, 0x00); in vga_2wr_probe()
6086 i2c_write(gspca_dev, 0x15, 0xaa, 0x00); in vga_2wr_probe()
6087 retword = i2c_read(gspca_dev, 0x15); in vga_2wr_probe()
6091 start_2wr_probe(gspca_dev, 0x0a); /* PB0330 */ in vga_2wr_probe()
6092 i2c_write(gspca_dev, 0x07, 0xaa, 0xaa); in vga_2wr_probe()
6093 retword = i2c_read(gspca_dev, 0x07); in vga_2wr_probe()
6096 retword = i2c_read(gspca_dev, 0x03); in vga_2wr_probe()
6099 retword = i2c_read(gspca_dev, 0x04); in vga_2wr_probe()
6103 start_2wr_probe(gspca_dev, 0x0c); /* ICM105A */ in vga_2wr_probe()
6104 i2c_write(gspca_dev, 0x01, 0x11, 0x00); in vga_2wr_probe()
6105 retword = i2c_read(gspca_dev, 0x01); in vga_2wr_probe()
6109 start_2wr_probe(gspca_dev, 0x0e); /* PAS202BCB */ in vga_2wr_probe()
6110 reg_w(gspca_dev, 0x08, 0x008d); in vga_2wr_probe()
6111 i2c_write(gspca_dev, 0x03, 0xaa, 0x00); in vga_2wr_probe()
6113 retword = i2c_read(gspca_dev, 0x03); in vga_2wr_probe()
6115 send_unknown(gspca_dev, SENSOR_PAS202B); in vga_2wr_probe()
6119 start_2wr_probe(gspca_dev, 0x02); /* TAS5130C */ in vga_2wr_probe()
6120 i2c_write(gspca_dev, 0x01, 0xaa, 0x00); in vga_2wr_probe()
6121 retword = i2c_read(gspca_dev, 0x01); in vga_2wr_probe()
6125 reg_r(gspca_dev, 0x0010); /* ?? */ in vga_2wr_probe()
6126 reg_r(gspca_dev, 0x0010); in vga_2wr_probe()
6128 reg_w(gspca_dev, 0x01, 0x0000); in vga_2wr_probe()
6129 reg_w(gspca_dev, 0x01, 0x0001); in vga_2wr_probe()
6130 reg_w(gspca_dev, 0x06, 0x0010); /* OmniVision */ in vga_2wr_probe()
6131 reg_w(gspca_dev, 0xa1, 0x008b); in vga_2wr_probe()
6132 reg_w(gspca_dev, 0x08, 0x008d); in vga_2wr_probe()
6134 reg_w(gspca_dev, 0x01, 0x0012); in vga_2wr_probe()
6135 i2c_write(gspca_dev, 0x12, 0x80, 0x00); /* sensor reset */ in vga_2wr_probe()
6136 retword = i2c_read(gspca_dev, 0x0a) << 8; in vga_2wr_probe()
6137 retword |= i2c_read(gspca_dev, 0x0b); in vga_2wr_probe()
6141 reg_w(gspca_dev, 0x06, 0x0010); in vga_2wr_probe()
6166 static int vga_3wr_probe(struct gspca_dev *gspca_dev) in vga_3wr_probe() argument
6168 struct sd *sd = (struct sd *) gspca_dev; in vga_3wr_probe()
6173 reg_w(gspca_dev, 0x02, 0x0010); in vga_3wr_probe()
6174 reg_r(gspca_dev, 0x0010); in vga_3wr_probe()
6175 reg_w(gspca_dev, 0x01, 0x0000); in vga_3wr_probe()
6176 reg_w(gspca_dev, 0x00, 0x0010); in vga_3wr_probe()
6177 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6178 reg_w(gspca_dev, 0x91, 0x008b); in vga_3wr_probe()
6179 reg_w(gspca_dev, 0x03, 0x0012); in vga_3wr_probe()
6180 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6181 reg_w(gspca_dev, 0x05, 0x0012); in vga_3wr_probe()
6182 retword = i2c_read(gspca_dev, 0x14); in vga_3wr_probe()
6185 retword = i2c_read(gspca_dev, 0x15); in vga_3wr_probe()
6188 retword = i2c_read(gspca_dev, 0x16); in vga_3wr_probe()
6192 reg_w(gspca_dev, 0x02, 0x0010); in vga_3wr_probe()
6193 retword = reg_r(gspca_dev, 0x000b) << 8; in vga_3wr_probe()
6194 retword |= reg_r(gspca_dev, 0x000a); in vga_3wr_probe()
6196 reg_r(gspca_dev, 0x0010); in vga_3wr_probe()
6202 send_unknown(gspca_dev, SENSOR_PB0330); in vga_3wr_probe()
6207 reg_w(gspca_dev, 0x01, 0x0000); /* check PB0330 */ in vga_3wr_probe()
6208 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6209 reg_w(gspca_dev, 0xdd, 0x008b); in vga_3wr_probe()
6210 reg_w(gspca_dev, 0x0a, 0x0010); in vga_3wr_probe()
6211 reg_w(gspca_dev, 0x03, 0x0012); in vga_3wr_probe()
6212 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6213 retword = i2c_read(gspca_dev, 0x00); in vga_3wr_probe()
6220 reg_w(gspca_dev, 0x01, 0x0000); in vga_3wr_probe()
6221 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6222 reg_w(gspca_dev, 0x98, 0x008b); in vga_3wr_probe()
6223 reg_w(gspca_dev, 0x01, 0x0010); in vga_3wr_probe()
6224 reg_w(gspca_dev, 0x03, 0x0012); in vga_3wr_probe()
6226 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6227 retword = i2c_read(gspca_dev, 0x00); in vga_3wr_probe()
6233 send_unknown(gspca_dev, SENSOR_GC0305); in vga_3wr_probe()
6237 reg_w(gspca_dev, 0x01, 0x0000); /* check OmniVision */ in vga_3wr_probe()
6238 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6239 reg_w(gspca_dev, 0xa1, 0x008b); in vga_3wr_probe()
6240 reg_w(gspca_dev, 0x08, 0x008d); in vga_3wr_probe()
6241 reg_w(gspca_dev, 0x06, 0x0010); in vga_3wr_probe()
6242 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6243 reg_w(gspca_dev, 0x05, 0x0012); in vga_3wr_probe()
6244 if (i2c_read(gspca_dev, 0x1c) == 0x007f /* OV7610 - manufacturer ID */ in vga_3wr_probe()
6245 && i2c_read(gspca_dev, 0x1d) == 0x00a2) { in vga_3wr_probe()
6246 send_unknown(gspca_dev, SENSOR_OV7620); in vga_3wr_probe()
6250 reg_w(gspca_dev, 0x01, 0x0000); in vga_3wr_probe()
6251 reg_w(gspca_dev, 0x00, 0x0002); in vga_3wr_probe()
6252 reg_w(gspca_dev, 0x01, 0x0010); in vga_3wr_probe()
6253 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6254 reg_w(gspca_dev, 0xee, 0x008b); in vga_3wr_probe()
6255 reg_w(gspca_dev, 0x03, 0x0012); in vga_3wr_probe()
6256 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6257 reg_w(gspca_dev, 0x05, 0x0012); in vga_3wr_probe()
6258 retword = i2c_read(gspca_dev, 0x00) << 8; /* ID 0 */ in vga_3wr_probe()
6259 retword |= i2c_read(gspca_dev, 0x01); /* ID 1 */ in vga_3wr_probe()
6264 retbyte = i2c_read(gspca_dev, 0x02); /* revision number */ in vga_3wr_probe()
6267 send_unknown(gspca_dev, SENSOR_PO2030); in vga_3wr_probe()
6271 reg_w(gspca_dev, 0x01, 0x0000); in vga_3wr_probe()
6272 reg_w(gspca_dev, 0x0a, 0x0010); in vga_3wr_probe()
6273 reg_w(gspca_dev, 0xd3, 0x008b); in vga_3wr_probe()
6274 reg_w(gspca_dev, 0x01, 0x0001); in vga_3wr_probe()
6275 reg_w(gspca_dev, 0x03, 0x0012); in vga_3wr_probe()
6276 reg_w(gspca_dev, 0x01, 0x0012); in vga_3wr_probe()
6277 reg_w(gspca_dev, 0x05, 0x0012); in vga_3wr_probe()
6278 reg_w(gspca_dev, 0xd3, 0x008b); in vga_3wr_probe()
6279 retword = i2c_read(gspca_dev, 0x01); in vga_3wr_probe()
6287 static int zcxx_probeSensor(struct gspca_dev *gspca_dev) in zcxx_probeSensor() argument
6289 struct sd *sd = (struct sd *) gspca_dev; in zcxx_probeSensor()
6299 sensor = sif_probe(gspca_dev); in zcxx_probeSensor()
6304 sensor = vga_2wr_probe(gspca_dev); in zcxx_probeSensor()
6307 return vga_3wr_probe(gspca_dev); in zcxx_probeSensor()
6311 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
6314 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
6333 struct gspca_dev *gspca_dev = in zcxx_g_volatile_ctrl() local
6334 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in zcxx_g_volatile_ctrl()
6335 struct sd *sd = (struct sd *)gspca_dev; in zcxx_g_volatile_ctrl()
6339 gspca_dev->usb_err = 0; in zcxx_g_volatile_ctrl()
6340 if (ctrl->val && sd->exposure && gspca_dev->streaming) in zcxx_g_volatile_ctrl()
6341 sd->exposure->val = getexposure(gspca_dev); in zcxx_g_volatile_ctrl()
6342 return gspca_dev->usb_err; in zcxx_g_volatile_ctrl()
6349 struct gspca_dev *gspca_dev = in zcxx_s_ctrl() local
6350 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in zcxx_s_ctrl()
6351 struct sd *sd = (struct sd *)gspca_dev; in zcxx_s_ctrl()
6354 gspca_dev->usb_err = 0; in zcxx_s_ctrl()
6367 if (i >= 2 && gspca_dev->streaming && in zcxx_s_ctrl()
6368 !gspca_dev->cam.needs_full_bandwidth) in zcxx_s_ctrl()
6375 if (!gspca_dev->streaming) in zcxx_s_ctrl()
6381 setcontrast(gspca_dev, sd->gamma->val, in zcxx_s_ctrl()
6386 setautogain(gspca_dev, ctrl->val); in zcxx_s_ctrl()
6387 if (!gspca_dev->usb_err && !ctrl->val && sd->exposure) in zcxx_s_ctrl()
6388 setexposure(gspca_dev, sd->exposure->val); in zcxx_s_ctrl()
6391 setlightfreq(gspca_dev, ctrl->val); in zcxx_s_ctrl()
6394 setsharpness(gspca_dev, ctrl->val); in zcxx_s_ctrl()
6397 setquality(gspca_dev); in zcxx_s_ctrl()
6400 return gspca_dev->usb_err; in zcxx_s_ctrl()
6408 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
6410 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
6411 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
6434 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
6470 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
6472 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
6497 sensor = zcxx_probeSensor(gspca_dev); in sd_init()
6520 sensor = i2c_read(gspca_dev, 0x00); in sd_init()
6624 reg_w(gspca_dev, 0x02, 0x0010); in sd_init()
6625 reg_r(gspca_dev, 0x0010); in sd_init()
6628 cam = &gspca_dev->cam; in sd_init()
6646 reg_w(gspca_dev, 0x01, 0x0000); in sd_init()
6647 return gspca_dev->usb_err; in sd_init()
6650 static int sd_pre_start(struct gspca_dev *gspca_dev) in sd_pre_start() argument
6652 struct sd *sd = (struct sd *) gspca_dev; in sd_pre_start()
6653 gspca_dev->cam.needs_full_bandwidth = (sd->reg08 >= 4) ? 1 : 0; in sd_pre_start()
6657 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
6659 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
6703 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
6704 gspca_dev->pixfmt.width, in sd_start()
6707 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_start()
6710 zcxx_probeSensor(gspca_dev); in sd_start()
6713 usb_exchange(gspca_dev, pas106b_Initial_com); in sd_start()
6716 usb_exchange(gspca_dev, init_tb[sd->sensor][mode]); in sd_start()
6726 reg_r(gspca_dev, 0x0002); /* --> 0x40 */ in sd_start()
6727 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ in sd_start()
6728 reg_w(gspca_dev, 0x15, 0x01ae); in sd_start()
6731 reg_w(gspca_dev, 0x0d, 0x003a); in sd_start()
6732 reg_w(gspca_dev, 0x02, 0x003b); in sd_start()
6733 reg_w(gspca_dev, 0x00, 0x0038); in sd_start()
6737 reg_w(gspca_dev, 0x03, 0x003b); in sd_start()
6738 reg_w(gspca_dev, 0x0c, 0x003a); in sd_start()
6739 reg_w(gspca_dev, 0x0b, 0x0039); in sd_start()
6741 reg_w(gspca_dev, 0x50, ZC3XX_R11D_GLOBALGAIN); in sd_start()
6745 setmatrix(gspca_dev); in sd_start()
6749 reg_r(gspca_dev, 0x0008); in sd_start()
6750 reg_w(gspca_dev, 0x00, 0x0008); in sd_start()
6756 reg_r(gspca_dev, 0x0008); in sd_start()
6759 reg_w(gspca_dev, 0x03, 0x0008); in sd_start()
6762 setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); in sd_start()
6771 setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma), in sd_start()
6776 setmatrix(gspca_dev); /* one more time? */ in sd_start()
6780 reg_r(gspca_dev, 0x0180); /* from win */ in sd_start()
6781 reg_w(gspca_dev, 0x00, 0x0180); in sd_start()
6784 setquality(gspca_dev); in sd_start()
6786 reg_w(gspca_dev, 0x00, 0x0007); in sd_start()
6788 setlightfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->plfreq)); in sd_start()
6792 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ in sd_start()
6793 reg_w(gspca_dev, 0x15, 0x01ae); in sd_start()
6794 reg_w(gspca_dev, 0x02, 0x0180); in sd_start()
6796 reg_w(gspca_dev, 0x40, 0x0117); in sd_start()
6799 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure)); in sd_start()
6800 reg_w(gspca_dev, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN); in sd_start()
6804 reg_w(gspca_dev, 0x09, 0x01ad); /* (from win traces) */ in sd_start()
6805 reg_w(gspca_dev, 0x15, 0x01ae); in sd_start()
6810 reg_r(gspca_dev, 0x0180); in sd_start()
6813 reg_w(gspca_dev, 0x09, 0x01ad); in sd_start()
6814 reg_w(gspca_dev, 0x15, 0x01ae); in sd_start()
6815 i2c_read(gspca_dev, 0x13); /*fixme: returns 0xa3 */ in sd_start()
6816 i2c_write(gspca_dev, 0x13, 0xa3, 0x00); in sd_start()
6818 reg_w(gspca_dev, 0x40, 0x0117); in sd_start()
6819 reg_r(gspca_dev, 0x0180); in sd_start()
6823 setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); in sd_start()
6825 if (gspca_dev->usb_err < 0) in sd_start()
6826 return gspca_dev->usb_err; in sd_start()
6837 static void sd_stop0(struct gspca_dev *gspca_dev) in sd_stop0() argument
6839 struct sd *sd = (struct sd *) gspca_dev; in sd_stop0()
6842 mutex_unlock(&gspca_dev->usb_lock); in sd_stop0()
6844 mutex_lock(&gspca_dev->usb_lock); in sd_stop0()
6847 if (!gspca_dev->present) in sd_stop0()
6849 send_unknown(gspca_dev, sd->sensor); in sd_stop0()
6852 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
6856 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
6862 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
6870 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
6882 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
6885 static int sd_set_jcomp(struct gspca_dev *gspca_dev, in sd_set_jcomp() argument
6888 struct sd *sd = (struct sd *) gspca_dev; in sd_set_jcomp()
6893 static int sd_get_jcomp(struct gspca_dev *gspca_dev, in sd_get_jcomp() argument
6896 struct sd *sd = (struct sd *) gspca_dev; in sd_get_jcomp()
6906 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, in sd_int_pkt_scan() argument
6911 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_int_pkt_scan()
6912 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
6913 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
6914 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()