Lines Matching refs:gspca_dev
32 struct gspca_dev gspca_dev; /* !! must be the first item */ member
1150 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
1155 if (gspca_dev->usb_err < 0) in reg_r()
1158 gspca_err(gspca_dev, "reg_r: buffer overflow\n"); in reg_r()
1162 ret = usb_control_msg(gspca_dev->dev, in reg_r()
1163 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
1167 gspca_dev->usb_buf, len, in reg_r()
1169 gspca_dbg(gspca_dev, D_USBI, "reg_r [%02x] -> %02x\n", in reg_r()
1170 value, gspca_dev->usb_buf[0]); in reg_r()
1173 gspca_dev->usb_err = ret; in reg_r()
1177 static void reg_w1(struct gspca_dev *gspca_dev, in reg_w1() argument
1183 if (gspca_dev->usb_err < 0) in reg_w1()
1185 gspca_dbg(gspca_dev, D_USBO, "reg_w1 [%04x] = %02x\n", value, data); in reg_w1()
1186 gspca_dev->usb_buf[0] = data; in reg_w1()
1187 ret = usb_control_msg(gspca_dev->dev, in reg_w1()
1188 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w1()
1193 gspca_dev->usb_buf, 1, in reg_w1()
1197 gspca_dev->usb_err = ret; in reg_w1()
1200 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
1207 if (gspca_dev->usb_err < 0) in reg_w()
1209 gspca_dbg(gspca_dev, D_USBO, "reg_w [%04x] = %02x %02x ..\n", in reg_w()
1213 gspca_err(gspca_dev, "reg_w: buffer overflow\n"); in reg_w()
1217 memcpy(gspca_dev->usb_buf, buffer, len); in reg_w()
1218 ret = usb_control_msg(gspca_dev->dev, in reg_w()
1219 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
1223 gspca_dev->usb_buf, len, in reg_w()
1227 gspca_dev->usb_err = ret; in reg_w()
1232 static void i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val) in i2c_w1() argument
1234 struct sd *sd = (struct sd *) gspca_dev; in i2c_w1()
1237 if (gspca_dev->usb_err < 0) in i2c_w1()
1239 gspca_dbg(gspca_dev, D_USBO, "i2c_w1 [%02x] = %02x\n", reg, val); in i2c_w1()
1244 gspca_dev->usb_buf[0] = 0x80 | (2 << 4); in i2c_w1()
1247 gspca_dev->usb_buf[0] = 0x81 | (2 << 4); in i2c_w1()
1250 gspca_dev->usb_buf[1] = sd->i2c_addr; in i2c_w1()
1251 gspca_dev->usb_buf[2] = reg; in i2c_w1()
1252 gspca_dev->usb_buf[3] = val; in i2c_w1()
1253 gspca_dev->usb_buf[4] = 0; in i2c_w1()
1254 gspca_dev->usb_buf[5] = 0; in i2c_w1()
1255 gspca_dev->usb_buf[6] = 0; in i2c_w1()
1256 gspca_dev->usb_buf[7] = 0x10; in i2c_w1()
1257 ret = usb_control_msg(gspca_dev->dev, in i2c_w1()
1258 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w1()
1263 gspca_dev->usb_buf, 8, in i2c_w1()
1268 gspca_dev->usb_err = ret; in i2c_w1()
1273 static void i2c_w8(struct gspca_dev *gspca_dev, in i2c_w8() argument
1278 if (gspca_dev->usb_err < 0) in i2c_w8()
1280 gspca_dbg(gspca_dev, D_USBO, "i2c_w8 [%02x] = %02x ..\n", in i2c_w8()
1282 memcpy(gspca_dev->usb_buf, buffer, 8); in i2c_w8()
1283 ret = usb_control_msg(gspca_dev->dev, in i2c_w8()
1284 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w8()
1288 gspca_dev->usb_buf, 8, in i2c_w8()
1293 gspca_dev->usb_err = ret; in i2c_w8()
1298 static void i2c_r(struct gspca_dev *gspca_dev, u8 reg, int len) in i2c_r() argument
1300 struct sd *sd = (struct sd *) gspca_dev; in i2c_r()
1320 i2c_w8(gspca_dev, mode); in i2c_r()
1324 i2c_w8(gspca_dev, mode); in i2c_r()
1326 reg_r(gspca_dev, 0x0a, 5); in i2c_r()
1329 static void i2c_w_seq(struct gspca_dev *gspca_dev, in i2c_w_seq() argument
1334 i2c_w8(gspca_dev, *data); in i2c_w_seq()
1343 static void hv7131r_probe(struct gspca_dev *gspca_dev) in hv7131r_probe() argument
1345 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ in hv7131r_probe()
1347 reg_w1(gspca_dev, 0x02, 0x66); /* Gpio on */ in hv7131r_probe()
1349 i2c_r(gspca_dev, 0, 5); /* read sensor id */ in hv7131r_probe()
1350 if (gspca_dev->usb_buf[0] == 0x02 /* chip ID (02 is R) */ in hv7131r_probe()
1351 && gspca_dev->usb_buf[1] == 0x09 in hv7131r_probe()
1352 && gspca_dev->usb_buf[2] == 0x01) { in hv7131r_probe()
1353 gspca_dbg(gspca_dev, D_PROBE, "Sensor HV7131R found\n"); in hv7131r_probe()
1357 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1], in hv7131r_probe()
1358 gspca_dev->usb_buf[2]); in hv7131r_probe()
1361 static void mi0360_probe(struct gspca_dev *gspca_dev) in mi0360_probe() argument
1363 struct sd *sd = (struct sd *) gspca_dev; in mi0360_probe()
1382 reg_w1(gspca_dev, 0x17, 0x62); in mi0360_probe()
1383 reg_w1(gspca_dev, 0x01, 0x08); in mi0360_probe()
1385 i2c_w8(gspca_dev, probe_tb[i][j]); in mi0360_probe()
1387 reg_r(gspca_dev, 0x0a, 5); in mi0360_probe()
1388 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in mi0360_probe()
1390 i2c_w8(gspca_dev, probe_tb[i][3]); in mi0360_probe()
1391 reg_w1(gspca_dev, 0x01, 0x29); in mi0360_probe()
1392 reg_w1(gspca_dev, 0x17, 0x42); in mi0360_probe()
1396 if (gspca_dev->usb_err < 0) in mi0360_probe()
1400 gspca_dbg(gspca_dev, D_PROBE, "Sensor mi0360b\n"); in mi0360_probe()
1404 gspca_dbg(gspca_dev, D_PROBE, "Sensor mt9v111\n"); in mi0360_probe()
1408 gspca_dbg(gspca_dev, D_PROBE, "Sensor mi0360\n"); in mi0360_probe()
1411 gspca_dbg(gspca_dev, D_PROBE, "Unknown sensor %04x - forced to mi0360\n", in mi0360_probe()
1417 static void ov7630_probe(struct gspca_dev *gspca_dev) in ov7630_probe() argument
1419 struct sd *sd = (struct sd *) gspca_dev; in ov7630_probe()
1423 reg_w1(gspca_dev, 0x17, 0x62); in ov7630_probe()
1424 reg_w1(gspca_dev, 0x01, 0x08); in ov7630_probe()
1426 i2c_r(gspca_dev, 0x0a, 2); in ov7630_probe()
1427 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7630_probe()
1428 reg_w1(gspca_dev, 0x01, 0x29); in ov7630_probe()
1429 reg_w1(gspca_dev, 0x17, 0x42); in ov7630_probe()
1430 if (gspca_dev->usb_err < 0) in ov7630_probe()
1435 gspca_dev->cam.input_flags = in ov7630_probe()
1437 gspca_dbg(gspca_dev, D_PROBE, "Sensor soi768\n"); in ov7630_probe()
1440 gspca_dbg(gspca_dev, D_PROBE, "Sensor ov%04x\n", val); in ov7630_probe()
1443 static void ov7648_probe(struct gspca_dev *gspca_dev) in ov7648_probe() argument
1445 struct sd *sd = (struct sd *) gspca_dev; in ov7648_probe()
1449 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1450 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1452 i2c_r(gspca_dev, 0x0a, 2); in ov7648_probe()
1453 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7648_probe()
1454 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1455 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1457 gspca_dbg(gspca_dev, D_PROBE, "Sensor ov%04x\n", val); in ov7648_probe()
1462 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1463 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1465 i2c_r(gspca_dev, 0x00, 2); in ov7648_probe()
1466 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in ov7648_probe()
1467 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1468 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1469 if (gspca_dev->usb_err < 0) in ov7648_probe()
1472 gspca_dbg(gspca_dev, D_PROBE, "Sensor po1030\n"); in ov7648_probe()
1480 static void po2030n_probe(struct gspca_dev *gspca_dev) in po2030n_probe() argument
1482 struct sd *sd = (struct sd *) gspca_dev; in po2030n_probe()
1486 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1487 reg_w1(gspca_dev, 0x01, 0x08); in po2030n_probe()
1488 reg_w1(gspca_dev, 0x02, 0x22); in po2030n_probe()
1490 i2c_r(gspca_dev, 0x00, 1); in po2030n_probe()
1491 val = gspca_dev->usb_buf[4]; in po2030n_probe()
1492 reg_w1(gspca_dev, 0x01, 0x29); /* reset */ in po2030n_probe()
1493 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1495 gspca_dbg(gspca_dev, D_PROBE, "Sensor gc0307\n"); in po2030n_probe()
1501 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1502 reg_w1(gspca_dev, 0x01, 0x0a); in po2030n_probe()
1504 i2c_r(gspca_dev, 0x00, 2); in po2030n_probe()
1505 val = (gspca_dev->usb_buf[3] << 8) | gspca_dev->usb_buf[4]; in po2030n_probe()
1506 reg_w1(gspca_dev, 0x01, 0x29); in po2030n_probe()
1507 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1508 if (gspca_dev->usb_err < 0) in po2030n_probe()
1511 gspca_dbg(gspca_dev, D_PROBE, "Sensor po2030n\n"); in po2030n_probe()
1519 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
1522 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
1529 cam = &gspca_dev->cam; in sd_config()
1548 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
1550 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
1556 reg_w1(gspca_dev, 0xf1, 0x01); in sd_init()
1557 reg_r(gspca_dev, 0x00, 1); in sd_init()
1558 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1559 reg_r(gspca_dev, 0x00, 1); /* get sonix chip id */ in sd_init()
1560 regF1 = gspca_dev->usb_buf[0]; in sd_init()
1561 if (gspca_dev->usb_err < 0) in sd_init()
1562 return gspca_dev->usb_err; in sd_init()
1563 gspca_dbg(gspca_dev, D_PROBE, "Sonix chip id: %02x\n", regF1); in sd_init()
1564 if (gspca_dev->audio) in sd_init()
1581 mi0360_probe(gspca_dev); in sd_init()
1584 ov7630_probe(gspca_dev); in sd_init()
1587 ov7648_probe(gspca_dev); in sd_init()
1590 po2030n_probe(gspca_dev); in sd_init()
1596 reg_w1(gspca_dev, 0x02, regGpio[1]); in sd_init()
1599 reg_w(gspca_dev, 0x01, regGpio, 2); in sd_init()
1605 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1611 return gspca_dev->usb_err; in sd_init()
1621 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
1623 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
1624 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
1626 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
1657 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1659 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1668 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
1691 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
1697 static u32 expo_adjust(struct gspca_dev *gspca_dev, in expo_adjust() argument
1700 struct sd *sd = (struct sd *) gspca_dev; in expo_adjust()
1708 i2c_w1(gspca_dev, 0x68, a); in expo_adjust()
1711 i2c_w1(gspca_dev, 0x03, b >> 8); in expo_adjust()
1712 i2c_w1(gspca_dev, 0x04, b); in expo_adjust()
1722 i2c_w8(gspca_dev, Expodoit); in expo_adjust()
1740 i2c_w8(gspca_dev, expoMi); in expo_adjust()
1741 i2c_w8(gspca_dev, doit); in expo_adjust()
1742 i2c_w8(gspca_dev, sensorgo); in expo_adjust()
1758 i2c_w8(gspca_dev, expoMof); in expo_adjust()
1761 i2c_w8(gspca_dev, expoMo10); in expo_adjust()
1762 i2c_w8(gspca_dev, gainMo); in expo_adjust()
1763 gspca_dbg(gspca_dev, D_FRAM, "set exposure %d\n", in expo_adjust()
1779 i2c_w8(gspca_dev, expo_c1); in expo_adjust()
1792 i2c_w8(gspca_dev, gainOm); in expo_adjust()
1793 reg_w1(gspca_dev, 0x96, expo >> 5); in expo_adjust()
1794 gspca_dbg(gspca_dev, D_FRAM, "set exposure %d\n", gainOm[3]); in expo_adjust()
1801 static void setbrightness(struct gspca_dev *gspca_dev) in setbrightness() argument
1803 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
1820 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 sd->exposure = expo_adjust(gspca_dev, expo); in setbrightness()
1845 reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ in setbrightness()
1848 static void setcontrast(struct gspca_dev *gspca_dev) in setcontrast() argument
1850 struct sd *sd = (struct sd *) gspca_dev; in setcontrast()
1862 reg_w(gspca_dev, 0x84, contrast, sizeof contrast); in setcontrast()
1865 static void setcolors(struct gspca_dev *gspca_dev) in setcolors() argument
1867 struct sd *sd = (struct sd *) gspca_dev; in setcolors()
1890 reg_w(gspca_dev, 0x8a, reg8a, sizeof reg8a); in setcolors()
1893 static void setredblue(struct gspca_dev *gspca_dev) in setredblue() argument
1895 struct sd *sd = (struct sd *) gspca_dev; in setredblue()
1904 i2c_w8(gspca_dev, rg1b); in setredblue()
1907 reg_w1(gspca_dev, 0x05, sd->red_bal->val); in setredblue()
1909 reg_w1(gspca_dev, 0x06, sd->blue_bal->val); in setredblue()
1912 static void setgamma(struct gspca_dev *gspca_dev) in setgamma() argument
1914 struct sd *sd = (struct sd *) gspca_dev; in setgamma()
1947 reg_w(gspca_dev, 0x20, gamma, sizeof gamma); in setgamma()
1950 static void setexposure(struct gspca_dev *gspca_dev) in setexposure() argument
1952 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
1958 rexpo[3] = gspca_dev->exposure->val >> 8; in setexposure()
1959 i2c_w8(gspca_dev, rexpo); in setexposure()
1962 rexpo[3] = gspca_dev->exposure->val; in setexposure()
1963 i2c_w8(gspca_dev, rexpo); in setexposure()
1967 static void setautogain(struct gspca_dev *gspca_dev) in setautogain() argument
1969 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
1980 if (gspca_dev->autogain->val) in setautogain()
1982 i2c_w1(&sd->gspca_dev, 0x13, comb); in setautogain()
1986 if (gspca_dev->autogain->val) in setautogain()
1992 static void setgain(struct gspca_dev *gspca_dev) in setgain() argument
1994 struct sd *sd = (struct sd *) gspca_dev; in setgain()
2000 rgain[3] = gspca_dev->gain->val; in setgain()
2001 i2c_w8(gspca_dev, rgain); in setgain()
2005 static void sethvflip(struct gspca_dev *gspca_dev) in sethvflip() argument
2007 struct sd *sd = (struct sd *) gspca_dev; in sethvflip()
2015 i2c_w1(gspca_dev, 0x01, comn); /* sctra */ in sethvflip()
2021 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2027 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2043 i2c_w1(&sd->gspca_dev, 0x1e, comn); in sethvflip()
2048 static void setsharpness(struct gspca_dev *gspca_dev) in setsharpness() argument
2050 struct sd *sd = (struct sd *) gspca_dev; in setsharpness()
2052 reg_w1(gspca_dev, 0x99, sd->sharpness->val); in setsharpness()
2055 static void setillum(struct gspca_dev *gspca_dev) in setillum() argument
2057 struct sd *sd = (struct sd *) gspca_dev; in setillum()
2061 reg_w1(gspca_dev, 0x02, /* gpio */ in setillum()
2065 reg_w1(gspca_dev, 0x02, in setillum()
2074 static void setfreq(struct gspca_dev *gspca_dev) in setfreq() argument
2076 struct sd *sd = (struct sd *) gspca_dev; in setfreq()
2084 i2c_w1(gspca_dev, 0x13, com8 | 0x20); in setfreq()
2087 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2088 i2c_w1(gspca_dev, 0x3b, 0x0a); in setfreq()
2091 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2092 i2c_w1(gspca_dev, 0x3b, 0x02); in setfreq()
2123 i2c_w1(gspca_dev, 0x2a, reg2a); in setfreq()
2124 i2c_w1(gspca_dev, 0x2b, reg2b); in setfreq()
2125 i2c_w1(gspca_dev, 0x2d, reg2d); in setfreq()
2129 static void setjpegqual(struct gspca_dev *gspca_dev) in setjpegqual() argument
2131 struct sd *sd = (struct sd *) gspca_dev; in setjpegqual()
2137 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64); in setjpegqual()
2138 usb_control_msg(gspca_dev->dev, in setjpegqual()
2139 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2143 gspca_dev->usb_buf, 64, in setjpegqual()
2145 memcpy(gspca_dev->usb_buf, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64); in setjpegqual()
2146 usb_control_msg(gspca_dev->dev, in setjpegqual()
2147 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2151 gspca_dev->usb_buf, 64, in setjpegqual()
2155 reg_w1(gspca_dev, 0x18, sd->reg18); in setjpegqual()
2163 struct gspca_dev *gspca_dev = &sd->gspca_dev; in qual_upd() local
2166 mutex_lock(&gspca_dev->usb_lock); in qual_upd()
2167 gspca_dbg(gspca_dev, D_STREAM, "qual_upd %d%%\n", sd->quality); in qual_upd()
2168 gspca_dev->usb_err = 0; in qual_upd()
2169 setjpegqual(gspca_dev); in qual_upd()
2170 mutex_unlock(&gspca_dev->usb_lock); in qual_upd()
2174 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
2176 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
2204 jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, in sd_start()
2205 gspca_dev->pixfmt.width, in sd_start()
2216 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2221 if (gspca_dev->audio) in sd_start()
2223 reg_w(gspca_dev, 0x01, reg0102, 2); in sd_start()
2224 reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); in sd_start()
2225 reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); in sd_start()
2239 reg_w(gspca_dev, 0x9a, reg9a, 6); in sd_start()
2241 reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); in sd_start()
2243 reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); in sd_start()
2252 reg_w1(gspca_dev, 0x02, 0x73); in sd_start()
2254 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2255 reg_w1(gspca_dev, 0x01, 0x22); in sd_start()
2263 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2265 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2267 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2269 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2273 hv7131r_probe(gspca_dev); /*fixme: is it useful? */ in sd_start()
2277 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2278 i2c_w8(gspca_dev, om6802_init0[0]); in sd_start()
2279 i2c_w8(gspca_dev, om6802_init0[1]); in sd_start()
2281 reg_w1(gspca_dev, 0x02, 0x71); in sd_start()
2286 reg_w1(gspca_dev, 0x02, 0x62); in sd_start()
2291 i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); in sd_start()
2293 reg_w1(gspca_dev, 0x15, sn9c1xx[0x15]); in sd_start()
2294 reg_w1(gspca_dev, 0x16, sn9c1xx[0x16]); in sd_start()
2295 reg_w1(gspca_dev, 0x12, sn9c1xx[0x12]); in sd_start()
2296 reg_w1(gspca_dev, 0x13, sn9c1xx[0x13]); in sd_start()
2297 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2299 reg_w1(gspca_dev, 0xd2, 0x3a); /* AE_H_SIZE = 116 */ in sd_start()
2300 reg_w1(gspca_dev, 0xd3, 0x30); /* AE_V_SIZE = 96 */ in sd_start()
2302 reg_w1(gspca_dev, 0xd2, 0x6a); /* AE_H_SIZE = 212 */ in sd_start()
2303 reg_w1(gspca_dev, 0xd3, 0x50); /* AE_V_SIZE = 160 */ in sd_start()
2305 reg_w1(gspca_dev, 0xc6, 0x00); in sd_start()
2306 reg_w1(gspca_dev, 0xc7, 0x00); in sd_start()
2308 reg_w1(gspca_dev, 0xc8, 0x2c); /* AW_H_STOP = 352 */ in sd_start()
2309 reg_w1(gspca_dev, 0xc9, 0x24); /* AW_V_STOP = 288 */ in sd_start()
2311 reg_w1(gspca_dev, 0xc8, 0x50); /* AW_H_STOP = 640 */ in sd_start()
2312 reg_w1(gspca_dev, 0xc9, 0x3c); /* AW_V_STOP = 480 */ in sd_start()
2314 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2323 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2325 reg_w1(gspca_dev, 0x05, 0x00); /* red */ in sd_start()
2326 reg_w1(gspca_dev, 0x07, 0x00); /* green */ in sd_start()
2327 reg_w1(gspca_dev, 0x06, 0x00); /* blue */ in sd_start()
2328 reg_w1(gspca_dev, 0x14, sn9c1xx[0x14]); in sd_start()
2330 setgamma(gspca_dev); in sd_start()
2334 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2339 reg_w1(gspca_dev, 0x9a, 0x05); in sd_start()
2344 reg_w1(gspca_dev, 0x9a, 0x07); in sd_start()
2348 reg_w1(gspca_dev, 0x9a, 0x0a); in sd_start()
2352 reg_w1(gspca_dev, 0x9a, 0x06); in sd_start()
2355 reg_w1(gspca_dev, 0x9a, 0x08); in sd_start()
2358 setsharpness(gspca_dev); in sd_start()
2360 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2361 reg_w1(gspca_dev, 0x05, 0x20); /* red */ in sd_start()
2362 reg_w1(gspca_dev, 0x07, 0x20); /* green */ in sd_start()
2363 reg_w1(gspca_dev, 0x06, 0x20); /* blue */ in sd_start()
2366 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_start()
2435 i2c_w_seq(gspca_dev, init); in sd_start()
2439 reg_w(gspca_dev, 0xc0, C0, 6); in sd_start()
2444 reg_w(gspca_dev, 0xca, CA_adcm1700, 4); in sd_start()
2447 reg_w(gspca_dev, 0xca, CA_po2030n, 4); in sd_start()
2450 reg_w(gspca_dev, 0xca, CA, 4); in sd_start()
2459 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); in sd_start()
2462 reg_w(gspca_dev, 0xce, CE_gc0307, 4); in sd_start()
2465 reg_w(gspca_dev, 0xce, CE_po2030n, 4); in sd_start()
2468 reg_w(gspca_dev, 0xce, CE, 4); in sd_start()
2475 reg_w1(gspca_dev, 0x18, sd->reg18); in sd_start()
2476 setjpegqual(gspca_dev); in sd_start()
2478 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2479 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2486 return gspca_dev->usb_err; in sd_start()
2489 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
2491 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
2511 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2513 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2518 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2519 i2c_w8(gspca_dev, stophv7131); in sd_stopN()
2524 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2526 i2c_w8(gspca_dev, stopmi0360); in sd_stopN()
2532 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2537 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2538 i2c_w8(gspca_dev, stopov7648); in sd_stopN()
2542 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2545 i2c_w8(gspca_dev, stopsoi768); in sd_stopN()
2550 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2552 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2553 reg_w1(gspca_dev, 0x17, reg17); in sd_stopN()
2555 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2557 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2564 static void sd_stop0(struct gspca_dev *gspca_dev) in sd_stop0() argument
2566 struct sd *sd = (struct sd *) gspca_dev; in sd_stop0()
2568 mutex_unlock(&gspca_dev->usb_lock); in sd_stop0()
2570 mutex_lock(&gspca_dev->usb_lock); in sd_stop0()
2573 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
2575 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
2589 gspca_dbg(gspca_dev, D_FRAM, "mean lum %d\n", delta); in do_autogain()
2592 gspca_expo_autogain(gspca_dev, delta, luma_mean, luma_delta, in do_autogain()
2605 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2613 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2622 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2624 setredblue(gspca_dev); in do_autogain()
2634 sd->exposure = expo_adjust(gspca_dev, in do_autogain()
2636 setredblue(gspca_dev); in do_autogain()
2667 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
2671 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
2734 if (gspca_dev->last_packet_type == LAST_PACKET) in sd_pkt_scan()
2735 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
2737 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
2746 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan()
2751 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan()
2756 gspca_frame_add(gspca_dev, LAST_PACKET, data, i); in sd_pkt_scan()
2764 gspca_dev->urb[0]->iso_frame_desc[0].length); in sd_pkt_scan()
2803 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
2805 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
2811 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
2812 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
2814 gspca_dev->usb_err = 0; in sd_s_ctrl()
2816 if (!gspca_dev->streaming) in sd_s_ctrl()
2821 setbrightness(gspca_dev); in sd_s_ctrl()
2824 setcontrast(gspca_dev); in sd_s_ctrl()
2827 setcolors(gspca_dev); in sd_s_ctrl()
2830 setredblue(gspca_dev); in sd_s_ctrl()
2833 setgamma(gspca_dev); in sd_s_ctrl()
2836 setautogain(gspca_dev); in sd_s_ctrl()
2837 setexposure(gspca_dev); in sd_s_ctrl()
2838 setgain(gspca_dev); in sd_s_ctrl()
2841 sethvflip(gspca_dev); in sd_s_ctrl()
2844 setsharpness(gspca_dev); in sd_s_ctrl()
2847 setillum(gspca_dev); in sd_s_ctrl()
2850 setfreq(gspca_dev); in sd_s_ctrl()
2855 return gspca_dev->usb_err; in sd_s_ctrl()
2859 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, in sd_int_pkt_scan() argument
2866 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_int_pkt_scan()
2867 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
2868 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
2869 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()