Lines Matching refs:gspca_dev

33 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
1535 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
1540 struct usb_device *dev = gspca_dev->dev; in reg_w()
1543 if (gspca_dev->usb_err < 0) in reg_w()
1546 gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x\n", in reg_w()
1549 gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x %02x ...\n", in reg_w()
1551 memcpy(gspca_dev->usb_buf, data, len); in reg_w()
1557 gspca_dev->usb_buf, in reg_w()
1562 gspca_dev->usb_err = ret; in reg_w()
1567 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
1571 struct usb_device *dev = gspca_dev->dev; in reg_r()
1574 if (gspca_dev->usb_err < 0) in reg_r()
1580 gspca_dev->usb_buf, len, 500); in reg_r()
1583 gspca_dev->usb_err = ret; in reg_r()
1587 gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x\n", in reg_r()
1588 index, gspca_dev->usb_buf[0]); in reg_r()
1590 gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x %02x ..\n", in reg_r()
1591 index, gspca_dev->usb_buf[0], in reg_r()
1592 gspca_dev->usb_buf[1]); in reg_r()
1595 static void i2c_w(struct gspca_dev *gspca_dev, in i2c_w() argument
1603 reg_w(gspca_dev, 0x0600, data + 1, len - 1); in i2c_w()
1604 reg_w(gspca_dev, 0x0600, data, len); in i2c_w()
1607 reg_w(gspca_dev, 0x0502, val, 2); in i2c_w()
1609 reg_w(gspca_dev, 0x0501, val, 1); in i2c_w()
1612 reg_r(gspca_dev, 0x0505, 1); in i2c_w()
1613 if (gspca_dev->usb_err < 0) in i2c_w()
1615 if (gspca_dev->usb_buf[0] == 0) in i2c_w()
1618 gspca_dev->usb_err = -ETIME; in i2c_w()
1621 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
1634 reg_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1636 i2c_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1655 static void setgain(struct gspca_dev *gspca_dev, u8 val) in setgain() argument
1657 struct sd *sd = (struct sd *) gspca_dev; in setgain()
1662 reg_w(gspca_dev, 0x1026, &val, 1); in setgain()
1669 reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */ in setgain()
1674 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
1676 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
1682 reg_w(gspca_dev, 0x1019, v, 1); in setexposure()
1690 reg_w(gspca_dev, 0x101b, v, 2); in setexposure()
1695 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
1697 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
1706 reg_r(gspca_dev, 0x1004, 1); in setautogain()
1707 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ in setautogain()
1708 sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; in setautogain()
1710 reg_r(gspca_dev, 0x1011, 8); in setautogain()
1711 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] in setautogain()
1712 - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2]; in setautogain()
1713 h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4] in setautogain()
1714 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; in setautogain()
1717 sd->ae_res = gspca_dev->pixfmt.width * in setautogain()
1718 gspca_dev->pixfmt.height; in setautogain()
1722 static int nw802_test_reg(struct gspca_dev *gspca_dev, in nw802_test_reg() argument
1727 reg_w(gspca_dev, index, &value, 1); in nw802_test_reg()
1730 reg_r(gspca_dev, index, 1); in nw802_test_reg()
1732 return gspca_dev->usb_buf[0] == value; in nw802_test_reg()
1736 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
1739 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
1744 gspca_dev->cam.needs_full_bandwidth = 1; in sd_config()
1756 if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) { in sd_config()
1760 } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) { in sd_config()
1765 reg_r(gspca_dev, 0x0403, 1); /* GPIO */ in sd_config()
1766 gspca_dbg(gspca_dev, D_PROBE, "et31x110 sensor type %02x\n", in sd_config()
1767 gspca_dev->usb_buf[0]); in sd_config()
1768 switch (gspca_dev->usb_buf[0] >> 1) { in sd_config()
1786 gspca_dev->usb_err = -ENODEV; in sd_config()
1787 return gspca_dev->usb_err; in sd_config()
1789 gspca_dbg(gspca_dev, D_PROBE, "Bridge nw80%d - type: %d\n", in sd_config()
1795 gspca_dev->cam.cam_mode = cif_mode; /* qvga */ in sd_config()
1798 gspca_dev->cam.cam_mode = &cif_mode[1]; /* cif */ in sd_config()
1801 gspca_dev->cam.nmodes = 1; in sd_config()
1803 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
1808 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
1811 gspca_dev->cam.nmodes = 1; /* qvga only */ in sd_config()
1816 return gspca_dev->usb_err; in sd_config()
1820 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
1822 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
1828 reg_w_buf(gspca_dev, spacecam_init); in sd_init()
1831 reg_w_buf(gspca_dev, nw800_init); in sd_init()
1840 reg_w_buf(gspca_dev, proscope_init); in sd_init()
1845 return gspca_dev->usb_err; in sd_init()
1849 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
1851 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
1855 reg_w_buf(gspca_dev, cmd); in sd_start()
1858 if (gspca_dev->pixfmt.width == 320) in sd_start()
1859 reg_w_buf(gspca_dev, nw801_start_qvga); in sd_start()
1861 reg_w_buf(gspca_dev, nw801_start_vga); in sd_start()
1862 reg_w_buf(gspca_dev, nw801_start_2); in sd_start()
1865 if (gspca_dev->pixfmt.width == 320) in sd_start()
1866 reg_w_buf(gspca_dev, kr651_start_qvga); in sd_start()
1868 reg_w_buf(gspca_dev, kr651_start_vga); in sd_start()
1869 reg_w_buf(gspca_dev, kr651_start_2); in sd_start()
1872 if (gspca_dev->pixfmt.width == 320) in sd_start()
1873 reg_w_buf(gspca_dev, proscope_start_qvga); in sd_start()
1875 reg_w_buf(gspca_dev, proscope_start_vga); in sd_start()
1876 reg_w_buf(gspca_dev, proscope_start_2); in sd_start()
1882 return gspca_dev->usb_err; in sd_start()
1885 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
1887 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
1893 reg_w(gspca_dev, 0x0406, &value, 1); in sd_stopN()
1916 reg_w(gspca_dev, 0x0404, &value, 1); in sd_stopN()
1919 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1932 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
1933 gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8); in sd_pkt_scan()
1935 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
1939 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
1941 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
1951 reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4); in do_autogain()
1952 luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16) in do_autogain()
1953 + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; in do_autogain()
1958 gspca_coarse_grained_expo_autogain(gspca_dev, luma, 100, 5); in do_autogain()
1961 gspca_expo_autogain(gspca_dev, luma, 100, 5, 230, 0); in do_autogain()
1969 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
1970 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
1972 gspca_dev->usb_err = 0; in sd_s_ctrl()
1974 if (!gspca_dev->streaming) in sd_s_ctrl()
1981 setautogain(gspca_dev, ctrl->val); in sd_s_ctrl()
1983 if (gspca_dev->gain->is_new) in sd_s_ctrl()
1984 setgain(gspca_dev, gspca_dev->gain->val); in sd_s_ctrl()
1985 if (gspca_dev->exposure->is_new) in sd_s_ctrl()
1986 setexposure(gspca_dev, in sd_s_ctrl()
1987 gspca_dev->exposure->val); in sd_s_ctrl()
1993 setexposure(gspca_dev, gspca_dev->exposure->val); in sd_s_ctrl()
1996 return gspca_dev->usb_err; in sd_s_ctrl()
2003 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
2005 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
2006 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
2008 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
2012 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2016 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2018 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2022 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2024 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2030 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2041 if (gspca_dev->autogain) in sd_init_controls()
2042 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()