Lines Matching refs:gspca_dev
23 struct gspca_dev gspca_dev; /* !! must be the first item */ member
1141 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
1146 if (gspca_dev->usb_err < 0) in reg_r()
1149 gspca_err(gspca_dev, "reg_r: buffer overflow\n"); in reg_r()
1153 ret = usb_control_msg(gspca_dev->dev, in reg_r()
1154 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
1158 gspca_dev->usb_buf, len, in reg_r()
1160 gspca_dbg(gspca_dev, D_USBI, "reg_r [%02x] -> %02x\n", in reg_r()
1161 value, gspca_dev->usb_buf[0]); in reg_r()
1164 gspca_dev->usb_err = ret; in reg_r()
1169 memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); in reg_r()
1173 static void reg_w1(struct gspca_dev *gspca_dev, in reg_w1() argument
1179 if (gspca_dev->usb_err < 0) in reg_w1()
1181 gspca_dbg(gspca_dev, D_USBO, "reg_w1 [%04x] = %02x\n", value, data); in reg_w1()
1182 gspca_dev->usb_buf[0] = data; in reg_w1()
1183 ret = usb_control_msg(gspca_dev->dev, in reg_w1()
1184 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w1()
1189 gspca_dev->usb_buf, 1, in reg_w1()
1193 gspca_dev->usb_err = ret; in reg_w1()
1196 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
1203 if (gspca_dev->usb_err < 0) in reg_w()
1205 gspca_dbg(gspca_dev, D_USBO, "reg_w [%04x] = %02x %02x ..\n", in reg_w()
1209 gspca_err(gspca_dev, "reg_w: buffer overflow\n"); in reg_w()
1213 memcpy(gspca_dev->usb_buf, buffer, len); in reg_w()
1214 ret = usb_control_msg(gspca_dev->dev, in reg_w()
1215 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
1219 gspca_dev->usb_buf, len, in reg_w()
1223 gspca_dev->usb_err = ret; in reg_w()
1228 static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val) in i2c_w1() argument
1230 struct sd *sd = (struct sd *) gspca_dev; in i2c_w1()
1233 if (gspca_dev->usb_err < 0) in i2c_w1()
1235 gspca_dbg(gspca_dev, D_USBO, "i2c_w1 [%02x] = %02x\n", reg, val); in i2c_w1()
1240 gspca_dev->usb_buf[0] = 0x80 | (2 << 4); in i2c_w1()
1243 gspca_dev->usb_buf[0] = 0x81 | (2 << 4); in i2c_w1()
1246 gspca_dev->usb_buf[1] = sd->i2c_addr; in i2c_w1()
1247 gspca_dev->usb_buf[2] = reg; in i2c_w1()
1248 gspca_dev->usb_buf[3] = val; in i2c_w1()
1249 gspca_dev->usb_buf[4] = 0; in i2c_w1()
1250 gspca_dev->usb_buf[5] = 0; in i2c_w1()
1251 gspca_dev->usb_buf[6] = 0; in i2c_w1()
1252 gspca_dev->usb_buf[7] = 0x10; in i2c_w1()
1253 ret = usb_control_msg(gspca_dev->dev, in i2c_w1()
1254 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w1()
1259 gspca_dev->usb_buf, 8, in i2c_w1()
1264 gspca_dev->usb_err = ret; in i2c_w1()
1269 static void i2c_w8(struct gspca_dev *gspca_dev, in i2c_w8() argument
1274 if (gspca_dev->usb_err < 0) in i2c_w8()
1276 gspca_dbg(gspca_dev, D_USBO, "i2c_w8 [%02x] = %02x ..\n", in i2c_w8()
1278 memcpy(gspca_dev->usb_buf, buffer, 8); in i2c_w8()
1279 ret = usb_control_msg(gspca_dev->dev, in i2c_w8()
1280 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w8()
1284 gspca_dev->usb_buf, 8, in i2c_w8()
1289 gspca_dev->usb_err = ret; in i2c_w8()
1294 static void i2c_r(struct gspca_dev *gspca_dev, u8 reg, int len) in i2c_r() argument
1296 struct sd *sd = (struct sd *) gspca_dev; in i2c_r()
1316 i2c_w8(gspca_dev, mode); in i2c_r()
1320 i2c_w8(gspca_dev, mode); in i2c_r()
1322 reg_r(gspca_dev, 0x0a, 5); in i2c_r()
1325 static void i2c_w_seq(struct gspca_dev *gspca_dev, in i2c_w_seq() argument
1330 i2c_w8(gspca_dev, *data); in i2c_w_seq()
1339 static void hv7131r_probe(struct gspca_dev *gspca_dev) in hv7131r_probe() argument
1341 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ in hv7131r_probe()
1343 reg_w1(gspca_dev, 0x02, 0x66); /* Gpio on */ in hv7131r_probe()
1345 i2c_r(gspca_dev, 0, 5); /* read sensor id */ in hv7131r_probe()
1346 if (gspca_dev->usb_buf[0] == 0x02 /* chip ID (02 is R) */ in hv7131r_probe()
1347 && gspca_dev->usb_buf[1] == 0x09 in hv7131r_probe()
1348 && gspca_dev->usb_buf[2] == 0x01) { in hv7131r_probe()
1349 gspca_dbg(gspca_dev, D_PROBE, "Sensor HV7131R found\n"); in hv7131r_probe()
1353 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1], in hv7131r_probe()
1354 gspca_dev->usb_buf[2]); in hv7131r_probe()
1357 static void mi0360_probe(struct gspca_dev *gspca_dev) in mi0360_probe() argument
1359 struct sd *sd = (struct sd *) gspca_dev; in mi0360_probe()
1378 reg_w1(gspca_dev, 0x17, 0x62); in mi0360_probe()
1379 reg_w1(gspca_dev, 0x01, 0x08); in mi0360_probe()
1381 i2c_w8(gspca_dev, probe_tb[i][j]); in mi0360_probe()
1383 reg_r(gspca_dev, 0x0a, 5); in mi0360_probe()
1384 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in mi0360_probe()
1386 i2c_w8(gspca_dev, probe_tb[i][3]); in mi0360_probe()
1387 reg_w1(gspca_dev, 0x01, 0x29); in mi0360_probe()
1388 reg_w1(gspca_dev, 0x17, 0x42); in mi0360_probe()
1392 if (gspca_dev->usb_err < 0) in mi0360_probe()
1396 gspca_dbg(gspca_dev, D_PROBE, "Sensor mi0360b\n"); in mi0360_probe()
1400 gspca_dbg(gspca_dev, D_PROBE, "Sensor mt9v111\n"); in mi0360_probe()
1404 gspca_dbg(gspca_dev, D_PROBE, "Sensor mi0360\n"); in mi0360_probe()
1407 gspca_dbg(gspca_dev, D_PROBE, "Unknown sensor %04x - forced to mi0360\n", in mi0360_probe()
1413 static void ov7630_probe(struct gspca_dev *gspca_dev) in ov7630_probe() argument
1415 struct sd *sd = (struct sd *) gspca_dev; in ov7630_probe()
1419 reg_w1(gspca_dev, 0x17, 0x62); in ov7630_probe()
1420 reg_w1(gspca_dev, 0x01, 0x08); in ov7630_probe()
1422 i2c_r(gspca_dev, 0x0a, 2); in ov7630_probe()
1423 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7630_probe()
1424 reg_w1(gspca_dev, 0x01, 0x29); in ov7630_probe()
1425 reg_w1(gspca_dev, 0x17, 0x42); in ov7630_probe()
1426 if (gspca_dev->usb_err < 0) in ov7630_probe()
1431 gspca_dev->cam.input_flags = in ov7630_probe()
1433 gspca_dbg(gspca_dev, D_PROBE, "Sensor soi768\n"); in ov7630_probe()
1436 gspca_dbg(gspca_dev, D_PROBE, "Sensor ov%04x\n", val); in ov7630_probe()
1439 static void ov7648_probe(struct gspca_dev *gspca_dev) in ov7648_probe() argument
1441 struct sd *sd = (struct sd *) gspca_dev; in ov7648_probe()
1445 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1446 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1448 i2c_r(gspca_dev, 0x0a, 2); in ov7648_probe()
1449 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7648_probe()
1450 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1451 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1453 gspca_dbg(gspca_dev, D_PROBE, "Sensor ov%04x\n", val); in ov7648_probe()
1458 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1459 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1461 i2c_r(gspca_dev, 0x00, 2); in ov7648_probe()
1462 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7648_probe()
1463 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1464 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1465 if (gspca_dev->usb_err < 0) in ov7648_probe()
1468 gspca_dbg(gspca_dev, D_PROBE, "Sensor po1030\n"); in ov7648_probe()
1476 static void po2030n_probe(struct gspca_dev *gspca_dev) in po2030n_probe() argument
1478 struct sd *sd = (struct sd *) gspca_dev; in po2030n_probe()
1482 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1483 reg_w1(gspca_dev, 0x01, 0x08); in po2030n_probe()
1484 reg_w1(gspca_dev, 0x02, 0x22); in po2030n_probe()
1486 i2c_r(gspca_dev, 0x00, 1); in po2030n_probe()
1487 val = gspca_dev->usb_buf[4]; in po2030n_probe()
1488 reg_w1(gspca_dev, 0x01, 0x29); /* reset */ in po2030n_probe()
1489 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1491 gspca_dbg(gspca_dev, D_PROBE, "Sensor gc0307\n"); in po2030n_probe()
1497 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1498 reg_w1(gspca_dev, 0x01, 0x0a); in po2030n_probe()
1500 i2c_r(gspca_dev, 0x00, 2); in po2030n_probe()
1501 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in po2030n_probe()
1502 reg_w1(gspca_dev, 0x01, 0x29); in po2030n_probe()
1503 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1504 if (gspca_dev->usb_err < 0) in po2030n_probe()
1507 gspca_dbg(gspca_dev, D_PROBE, "Sensor po2030n\n"); in po2030n_probe()
1515 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
1518 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
1525 cam = &gspca_dev->cam; in sd_config()
1544 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
1546 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
1552 reg_w1(gspca_dev, 0xf1, 0x01); in sd_init()
1553 reg_r(gspca_dev, 0x00, 1); in sd_init()
1554 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1555 reg_r(gspca_dev, 0x00, 1); /* get sonix chip id */ in sd_init()
1556 regF1 = gspca_dev->usb_buf[0]; in sd_init()
1557 if (gspca_dev->usb_err < 0) in sd_init()
1558 return gspca_dev->usb_err; in sd_init()
1559 gspca_dbg(gspca_dev, D_PROBE, "Sonix chip id: %02x\n", regF1); in sd_init()
1560 if (gspca_dev->audio) in sd_init()
1577 mi0360_probe(gspca_dev); in sd_init()
1580 ov7630_probe(gspca_dev); in sd_init()
1583 ov7648_probe(gspca_dev); in sd_init()
1586 po2030n_probe(gspca_dev); in sd_init()
1592 reg_w1(gspca_dev, 0x02, regGpio[1]); in sd_init()
1595 reg_w(gspca_dev, 0x01, regGpio, 2); in sd_init()
1601 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1607 return gspca_dev->usb_err; in sd_init()
1617 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
1619 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
1620 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
1622 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
1653 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1655 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1664 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1687 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
1693 static u32 expo_adjust(struct gspca_dev *gspca_dev, in expo_adjust() argument
1696 struct sd *sd = (struct sd *) gspca_dev; in expo_adjust()
1704 i2c_w1(gspca_dev, 0x68, a); in expo_adjust()
1707 i2c_w1(gspca_dev, 0x03, b >> 8); in expo_adjust()
1708 i2c_w1(gspca_dev, 0x04, b); in expo_adjust()
1718 i2c_w8(gspca_dev, Expodoit); in expo_adjust()
1736 i2c_w8(gspca_dev, expoMi); in expo_adjust()
1737 i2c_w8(gspca_dev, doit); in expo_adjust()
1738 i2c_w8(gspca_dev, sensorgo); in expo_adjust()
1754 i2c_w8(gspca_dev, expoMof); in expo_adjust()
1757 i2c_w8(gspca_dev, expoMo10); in expo_adjust()
1758 i2c_w8(gspca_dev, gainMo); in expo_adjust()
1759 gspca_dbg(gspca_dev, D_FRAM, "set exposure %d\n", in expo_adjust()
1775 i2c_w8(gspca_dev, expo_c1); in expo_adjust()
1788 i2c_w8(gspca_dev, gainOm); in expo_adjust()
1789 reg_w1(gspca_dev, 0x96, expo >> 5); in expo_adjust()
1790 gspca_dbg(gspca_dev, D_FRAM, "set exposure %d\n", gainOm[3]); in expo_adjust()
1797 static void setbrightness(struct gspca_dev *gspca_dev) in setbrightness() argument
1799 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
1816 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1821 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1825 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1829 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1833 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1837 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1841 reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ in setbrightness()
1844 static void setcontrast(struct gspca_dev *gspca_dev) in setcontrast() argument
1846 struct sd *sd = (struct sd *) gspca_dev; in setcontrast()
1858 reg_w(gspca_dev, 0x84, contrast, sizeof contrast); in setcontrast()
1861 static void setcolors(struct gspca_dev *gspca_dev) in setcolors() argument
1863 struct sd *sd = (struct sd *) gspca_dev; in setcolors()
1886 reg_w(gspca_dev, 0x8a, reg8a, sizeof reg8a); in setcolors()
1889 static void setredblue(struct gspca_dev *gspca_dev) in setredblue() argument
1891 struct sd *sd = (struct sd *) gspca_dev; in setredblue()
1900 i2c_w8(gspca_dev, rg1b); in setredblue()
1903 reg_w1(gspca_dev, 0x05, sd->red_bal->val); in setredblue()
1905 reg_w1(gspca_dev, 0x06, sd->blue_bal->val); in setredblue()
1908 static void setgamma(struct gspca_dev *gspca_dev) in setgamma() argument
1910 struct sd *sd = (struct sd *) gspca_dev; in setgamma()
1943 reg_w(gspca_dev, 0x20, gamma, sizeof gamma); in setgamma()
1946 static void setexposure(struct gspca_dev *gspca_dev) in setexposure() argument
1948 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
1954 rexpo[3] = gspca_dev->exposure->val >> 8; in setexposure()
1955 i2c_w8(gspca_dev, rexpo); in setexposure()
1958 rexpo[3] = gspca_dev->exposure->val; in setexposure()
1959 i2c_w8(gspca_dev, rexpo); in setexposure()
1963 static void setautogain(struct gspca_dev *gspca_dev) in setautogain() argument
1965 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
1976 if (gspca_dev->autogain->val) in setautogain()
1978 i2c_w1(&sd->gspca_dev, 0x13, comb); in setautogain()
1982 if (gspca_dev->autogain->val) in setautogain()
1988 static void setgain(struct gspca_dev *gspca_dev) in setgain() argument
1990 struct sd *sd = (struct sd *) gspca_dev; in setgain()
1996 rgain[3] = gspca_dev->gain->val; in setgain()
1997 i2c_w8(gspca_dev, rgain); in setgain()
2001 static void sethvflip(struct gspca_dev *gspca_dev) in sethvflip() argument
2003 struct sd *sd = (struct sd *) gspca_dev; in sethvflip()
2011 i2c_w1(gspca_dev, 0x01, comn); /* sctra */ in sethvflip()
2017 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2023 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2039 i2c_w1(&sd->gspca_dev, 0x1e, comn); in sethvflip()
2044 static void setsharpness(struct gspca_dev *gspca_dev) in setsharpness() argument
2046 struct sd *sd = (struct sd *) gspca_dev; in setsharpness()
2048 reg_w1(gspca_dev, 0x99, sd->sharpness->val); in setsharpness()
2051 static void setillum(struct gspca_dev *gspca_dev) in setillum() argument
2053 struct sd *sd = (struct sd *) gspca_dev; in setillum()
2057 reg_w1(gspca_dev, 0x02, /* gpio */ in setillum()
2061 reg_w1(gspca_dev, 0x02, in setillum()
2070 static void setfreq(struct gspca_dev *gspca_dev) in setfreq() argument
2072 struct sd *sd = (struct sd *) gspca_dev; in setfreq()
2080 i2c_w1(gspca_dev, 0x13, com8 | 0x20); in setfreq()
2083 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2084 i2c_w1(gspca_dev, 0x3b, 0x0a); in setfreq()
2087 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2088 i2c_w1(gspca_dev, 0x3b, 0x02); in setfreq()
2119 i2c_w1(gspca_dev, 0x2a, reg2a); in setfreq()
2120 i2c_w1(gspca_dev, 0x2b, reg2b); in setfreq()
2121 i2c_w1(gspca_dev, 0x2d, reg2d); in setfreq()
2125 static void setjpegqual(struct gspca_dev *gspca_dev) in setjpegqual() argument
2127 struct sd *sd = (struct sd *) gspca_dev; in setjpegqual()
2133 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64); in setjpegqual()
2134 usb_control_msg(gspca_dev->dev, in setjpegqual()
2135 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2139 gspca_dev->usb_buf, 64, in setjpegqual()
2141 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64); in setjpegqual()
2142 usb_control_msg(gspca_dev->dev, in setjpegqual()
2143 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2147 gspca_dev->usb_buf, 64, in setjpegqual()
2151 reg_w1(gspca_dev, 0x18, sd->reg18); in setjpegqual()
2159 struct gspca_dev *gspca_dev = &sd->gspca_dev; in qual_upd() local
2162 mutex_lock(&gspca_dev->usb_lock); in qual_upd()
2163 gspca_dbg(gspca_dev, D_STREAM, "qual_upd %d%%\n", sd->quality); in qual_upd()
2164 gspca_dev->usb_err = 0; in qual_upd()
2165 setjpegqual(gspca_dev); in qual_upd()
2166 mutex_unlock(&gspca_dev->usb_lock); in qual_upd()
2170 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
2172 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
2200 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
2201 gspca_dev->pixfmt.width, in sd_start()
2212 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2217 if (gspca_dev->audio) in sd_start()
2219 reg_w(gspca_dev, 0x01, reg0102, 2); in sd_start()
2220 reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); in sd_start()
2221 reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); in sd_start()
2235 reg_w(gspca_dev, 0x9a, reg9a, 6); in sd_start()
2237 reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); in sd_start()
2239 reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); in sd_start()
2248 reg_w1(gspca_dev, 0x02, 0x73); in sd_start()
2250 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2251 reg_w1(gspca_dev, 0x01, 0x22); in sd_start()
2259 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2261 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2263 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2265 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2269 hv7131r_probe(gspca_dev); /*fixme: is it useful? */ in sd_start()
2273 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2274 i2c_w8(gspca_dev, om6802_init0[0]); in sd_start()
2275 i2c_w8(gspca_dev, om6802_init0[1]); in sd_start()
2277 reg_w1(gspca_dev, 0x02, 0x71); in sd_start()
2282 reg_w1(gspca_dev, 0x02, 0x62); in sd_start()
2287 i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); in sd_start()
2289 reg_w1(gspca_dev, 0x15, sn9c1xx[0x15]); in sd_start()
2290 reg_w1(gspca_dev, 0x16, sn9c1xx[0x16]); in sd_start()
2291 reg_w1(gspca_dev, 0x12, sn9c1xx[0x12]); in sd_start()
2292 reg_w1(gspca_dev, 0x13, sn9c1xx[0x13]); in sd_start()
2293 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2295 reg_w1(gspca_dev, 0xd2, 0x3a); /* AE_H_SIZE = 116 */ in sd_start()
2296 reg_w1(gspca_dev, 0xd3, 0x30); /* AE_V_SIZE = 96 */ in sd_start()
2298 reg_w1(gspca_dev, 0xd2, 0x6a); /* AE_H_SIZE = 212 */ in sd_start()
2299 reg_w1(gspca_dev, 0xd3, 0x50); /* AE_V_SIZE = 160 */ in sd_start()
2301 reg_w1(gspca_dev, 0xc6, 0x00); in sd_start()
2302 reg_w1(gspca_dev, 0xc7, 0x00); in sd_start()
2304 reg_w1(gspca_dev, 0xc8, 0x2c); /* AW_H_STOP = 352 */ in sd_start()
2305 reg_w1(gspca_dev, 0xc9, 0x24); /* AW_V_STOP = 288 */ in sd_start()
2307 reg_w1(gspca_dev, 0xc8, 0x50); /* AW_H_STOP = 640 */ in sd_start()
2308 reg_w1(gspca_dev, 0xc9, 0x3c); /* AW_V_STOP = 480 */ in sd_start()
2310 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2319 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2321 reg_w1(gspca_dev, 0x05, 0x00); /* red */ in sd_start()
2322 reg_w1(gspca_dev, 0x07, 0x00); /* green */ in sd_start()
2323 reg_w1(gspca_dev, 0x06, 0x00); /* blue */ in sd_start()
2324 reg_w1(gspca_dev, 0x14, sn9c1xx[0x14]); in sd_start()
2326 setgamma(gspca_dev); in sd_start()
2330 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2335 reg_w1(gspca_dev, 0x9a, 0x05); in sd_start()
2340 reg_w1(gspca_dev, 0x9a, 0x07); in sd_start()
2344 reg_w1(gspca_dev, 0x9a, 0x0a); in sd_start()
2348 reg_w1(gspca_dev, 0x9a, 0x06); in sd_start()
2351 reg_w1(gspca_dev, 0x9a, 0x08); in sd_start()
2354 setsharpness(gspca_dev); in sd_start()
2356 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2357 reg_w1(gspca_dev, 0x05, 0x20); /* red */ in sd_start()
2358 reg_w1(gspca_dev, 0x07, 0x20); /* green */ in sd_start()
2359 reg_w1(gspca_dev, 0x06, 0x20); /* blue */ in sd_start()
2362 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_start()
2431 i2c_w_seq(gspca_dev, init); in sd_start()
2435 reg_w(gspca_dev, 0xc0, C0, 6); in sd_start()
2440 reg_w(gspca_dev, 0xca, CA_adcm1700, 4); in sd_start()
2443 reg_w(gspca_dev, 0xca, CA_po2030n, 4); in sd_start()
2446 reg_w(gspca_dev, 0xca, CA, 4); in sd_start()
2455 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); in sd_start()
2458 reg_w(gspca_dev, 0xce, CE_gc0307, 4); in sd_start()
2461 reg_w(gspca_dev, 0xce, CE_po2030n, 4); in sd_start()
2464 reg_w(gspca_dev, 0xce, CE, 4); in sd_start()
2471 reg_w1(gspca_dev, 0x18, sd->reg18); in sd_start()
2472 setjpegqual(gspca_dev); in sd_start()
2474 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2475 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2482 return gspca_dev->usb_err; in sd_start()
2485 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
2487 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
2507 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2509 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2514 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2515 i2c_w8(gspca_dev, stophv7131); in sd_stopN()
2520 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2522 i2c_w8(gspca_dev, stopmi0360); in sd_stopN()
2528 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2533 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2534 i2c_w8(gspca_dev, stopov7648); in sd_stopN()
2538 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2541 i2c_w8(gspca_dev, stopsoi768); in sd_stopN()
2546 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2548 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2549 reg_w1(gspca_dev, 0x17, reg17); in sd_stopN()
2551 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2553 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2560 static void sd_stop0(struct gspca_dev *gspca_dev) in sd_stop0() argument
2562 struct sd *sd = (struct sd *) gspca_dev; in sd_stop0()
2564 mutex_unlock(&gspca_dev->usb_lock); in sd_stop0()
2566 mutex_lock(&gspca_dev->usb_lock); in sd_stop0()
2569 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
2571 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
2585 gspca_dbg(gspca_dev, D_FRAM, "mean lum %d\n", delta); in do_autogain()
2588 gspca_expo_autogain(gspca_dev, delta, luma_mean, luma_delta, in do_autogain()
2601 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2609 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2618 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2620 setredblue(gspca_dev); in do_autogain()
2630 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2632 setredblue(gspca_dev); in do_autogain()
2663 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
2667 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
2730 if (gspca_dev->last_packet_type == LAST_PACKET) in sd_pkt_scan()
2731 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
2733 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
2742 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan()
2747 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan()
2752 gspca_frame_add(gspca_dev, LAST_PACKET, data, i); in sd_pkt_scan()
2760 gspca_dev->urb[0]->iso_frame_desc[0].length); in sd_pkt_scan()
2799 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
2801 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
2807 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
2808 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
2810 gspca_dev->usb_err = 0; in sd_s_ctrl()
2812 if (!gspca_dev->streaming) in sd_s_ctrl()
2817 setbrightness(gspca_dev); in sd_s_ctrl()
2820 setcontrast(gspca_dev); in sd_s_ctrl()
2823 setcolors(gspca_dev); in sd_s_ctrl()
2826 setredblue(gspca_dev); in sd_s_ctrl()
2829 setgamma(gspca_dev); in sd_s_ctrl()
2832 setautogain(gspca_dev); in sd_s_ctrl()
2833 setexposure(gspca_dev); in sd_s_ctrl()
2834 setgain(gspca_dev); in sd_s_ctrl()
2837 sethvflip(gspca_dev); in sd_s_ctrl()
2840 setsharpness(gspca_dev); in sd_s_ctrl()
2843 setillum(gspca_dev); in sd_s_ctrl()
2846 setfreq(gspca_dev); in sd_s_ctrl()
2851 return gspca_dev->usb_err; in sd_s_ctrl()
2855 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, in sd_int_pkt_scan() argument
2862 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_int_pkt_scan()
2863 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
2864 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
2865 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()