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