Lines Matching refs:gspca_dev

37 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
1539 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
1544 struct usb_device *dev = gspca_dev->dev; in reg_w()
1547 if (gspca_dev->usb_err < 0) in reg_w()
1554 memcpy(gspca_dev->usb_buf, data, len); in reg_w()
1560 gspca_dev->usb_buf, in reg_w()
1565 gspca_dev->usb_err = ret; in reg_w()
1570 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
1574 struct usb_device *dev = gspca_dev->dev; in reg_r()
1577 if (gspca_dev->usb_err < 0) in reg_r()
1583 gspca_dev->usb_buf, len, 500); in reg_r()
1586 gspca_dev->usb_err = ret; in reg_r()
1591 index, gspca_dev->usb_buf[0]); in reg_r()
1594 index, gspca_dev->usb_buf[0], in reg_r()
1595 gspca_dev->usb_buf[1]); in reg_r()
1598 static void i2c_w(struct gspca_dev *gspca_dev, in i2c_w() argument
1606 reg_w(gspca_dev, 0x0600, data + 1, len - 1); in i2c_w()
1607 reg_w(gspca_dev, 0x0600, data, len); in i2c_w()
1610 reg_w(gspca_dev, 0x0502, val, 2); in i2c_w()
1612 reg_w(gspca_dev, 0x0501, val, 1); in i2c_w()
1615 reg_r(gspca_dev, 0x0505, 1); in i2c_w()
1616 if (gspca_dev->usb_err < 0) in i2c_w()
1618 if (gspca_dev->usb_buf[0] == 0) in i2c_w()
1621 gspca_dev->usb_err = -ETIME; in i2c_w()
1624 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
1637 reg_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1639 i2c_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1658 static void setgain(struct gspca_dev *gspca_dev, u8 val) in setgain() argument
1660 struct sd *sd = (struct sd *) gspca_dev; in setgain()
1665 reg_w(gspca_dev, 0x1026, &val, 1); in setgain()
1672 reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */ in setgain()
1677 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
1679 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
1685 reg_w(gspca_dev, 0x1019, v, 1); in setexposure()
1693 reg_w(gspca_dev, 0x101b, v, 2); in setexposure()
1698 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
1700 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
1709 reg_r(gspca_dev, 0x1004, 1); in setautogain()
1710 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ in setautogain()
1711 sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; in setautogain()
1713 reg_r(gspca_dev, 0x1011, 8); in setautogain()
1714 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] in setautogain()
1715 - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2]; in setautogain()
1716 h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4] in setautogain()
1717 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; in setautogain()
1720 sd->ae_res = gspca_dev->pixfmt.width * in setautogain()
1721 gspca_dev->pixfmt.height; in setautogain()
1725 static int nw802_test_reg(struct gspca_dev *gspca_dev, in nw802_test_reg() argument
1730 reg_w(gspca_dev, index, &value, 1); in nw802_test_reg()
1733 reg_r(gspca_dev, index, 1); in nw802_test_reg()
1735 return gspca_dev->usb_buf[0] == value; in nw802_test_reg()
1739 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
1742 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
1747 gspca_dev->cam.needs_full_bandwidth = 1; in sd_config()
1759 if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) { in sd_config()
1763 } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) { in sd_config()
1768 reg_r(gspca_dev, 0x0403, 1); /* GPIO */ in sd_config()
1770 gspca_dev->usb_buf[0]); in sd_config()
1771 switch (gspca_dev->usb_buf[0] >> 1) { in sd_config()
1789 gspca_dev->usb_err = -ENODEV; in sd_config()
1790 return gspca_dev->usb_err; in sd_config()
1797 gspca_dev->cam.cam_mode = cif_mode; /* qvga */ in sd_config()
1800 gspca_dev->cam.cam_mode = &cif_mode[1]; /* cif */ in sd_config()
1803 gspca_dev->cam.nmodes = 1; in sd_config()
1805 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
1810 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
1813 gspca_dev->cam.nmodes = 1; /* qvga only */ in sd_config()
1818 return gspca_dev->usb_err; in sd_config()
1822 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
1824 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
1830 reg_w_buf(gspca_dev, spacecam_init); in sd_init()
1833 reg_w_buf(gspca_dev, nw800_init); in sd_init()
1842 reg_w_buf(gspca_dev, proscope_init); in sd_init()
1847 return gspca_dev->usb_err; in sd_init()
1851 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
1853 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
1857 reg_w_buf(gspca_dev, cmd); in sd_start()
1860 if (gspca_dev->pixfmt.width == 320) in sd_start()
1861 reg_w_buf(gspca_dev, nw801_start_qvga); in sd_start()
1863 reg_w_buf(gspca_dev, nw801_start_vga); in sd_start()
1864 reg_w_buf(gspca_dev, nw801_start_2); in sd_start()
1867 if (gspca_dev->pixfmt.width == 320) in sd_start()
1868 reg_w_buf(gspca_dev, kr651_start_qvga); in sd_start()
1870 reg_w_buf(gspca_dev, kr651_start_vga); in sd_start()
1871 reg_w_buf(gspca_dev, kr651_start_2); in sd_start()
1874 if (gspca_dev->pixfmt.width == 320) in sd_start()
1875 reg_w_buf(gspca_dev, proscope_start_qvga); in sd_start()
1877 reg_w_buf(gspca_dev, proscope_start_vga); in sd_start()
1878 reg_w_buf(gspca_dev, proscope_start_2); in sd_start()
1884 return gspca_dev->usb_err; in sd_start()
1887 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
1889 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
1895 reg_w(gspca_dev, 0x0406, &value, 1); in sd_stopN()
1918 reg_w(gspca_dev, 0x0404, &value, 1); in sd_stopN()
1921 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1934 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
1935 gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8); in sd_pkt_scan()
1937 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
1941 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
1943 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
1953 reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4); in do_autogain()
1954 luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16) in do_autogain()
1955 + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; in do_autogain()
1960 gspca_coarse_grained_expo_autogain(gspca_dev, luma, 100, 5); in do_autogain()
1963 gspca_expo_autogain(gspca_dev, luma, 100, 5, 230, 0); in do_autogain()
1971 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
1972 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
1974 gspca_dev->usb_err = 0; in sd_s_ctrl()
1976 if (!gspca_dev->streaming) in sd_s_ctrl()
1983 setautogain(gspca_dev, ctrl->val); in sd_s_ctrl()
1985 if (gspca_dev->gain->is_new) in sd_s_ctrl()
1986 setgain(gspca_dev, gspca_dev->gain->val); in sd_s_ctrl()
1987 if (gspca_dev->exposure->is_new) in sd_s_ctrl()
1988 setexposure(gspca_dev, in sd_s_ctrl()
1989 gspca_dev->exposure->val); in sd_s_ctrl()
1995 setexposure(gspca_dev, gspca_dev->exposure->val); in sd_s_ctrl()
1998 return gspca_dev->usb_err; in sd_s_ctrl()
2005 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
2007 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
2008 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
2010 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
2014 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2018 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2020 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2024 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2026 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2032 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2043 if (gspca_dev->autogain) in sd_init_controls()
2044 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()