Lines Matching refs:gspca_dev
24 struct gspca_dev gspca_dev; /* !! must be the first item */ member
1526 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
1531 struct usb_device *dev = gspca_dev->dev; in reg_w()
1534 if (gspca_dev->usb_err < 0) in reg_w()
1537 gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x\n", in reg_w()
1540 gspca_dbg(gspca_dev, D_USBO, "SET 00 0000 %04x %02x %02x ...\n", in reg_w()
1542 memcpy(gspca_dev->usb_buf, data, len); in reg_w()
1548 gspca_dev->usb_buf, in reg_w()
1553 gspca_dev->usb_err = ret; in reg_w()
1558 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
1562 struct usb_device *dev = gspca_dev->dev; in reg_r()
1565 if (gspca_dev->usb_err < 0) in reg_r()
1571 gspca_dev->usb_buf, len, 500); in reg_r()
1574 gspca_dev->usb_err = ret; in reg_r()
1579 memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); in reg_r()
1583 gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x\n", in reg_r()
1584 index, gspca_dev->usb_buf[0]); in reg_r()
1586 gspca_dbg(gspca_dev, D_USBI, "GET 00 0000 %04x %02x %02x ..\n", in reg_r()
1587 index, gspca_dev->usb_buf[0], in reg_r()
1588 gspca_dev->usb_buf[1]); in reg_r()
1591 static void i2c_w(struct gspca_dev *gspca_dev, in i2c_w() argument
1599 reg_w(gspca_dev, 0x0600, data + 1, len - 1); in i2c_w()
1600 reg_w(gspca_dev, 0x0600, data, len); in i2c_w()
1603 reg_w(gspca_dev, 0x0502, val, 2); in i2c_w()
1605 reg_w(gspca_dev, 0x0501, val, 1); in i2c_w()
1608 reg_r(gspca_dev, 0x0505, 1); in i2c_w()
1609 if (gspca_dev->usb_err < 0) in i2c_w()
1611 if (gspca_dev->usb_buf[0] == 0) in i2c_w()
1614 gspca_dev->usb_err = -ETIME; in i2c_w()
1617 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
1630 reg_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1632 i2c_w(gspca_dev, reg, cmd, len); in reg_w_buf()
1651 static void setgain(struct gspca_dev *gspca_dev, u8 val) in setgain() argument
1653 struct sd *sd = (struct sd *) gspca_dev; in setgain()
1658 reg_w(gspca_dev, 0x1026, &val, 1); in setgain()
1665 reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */ in setgain()
1670 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
1672 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
1678 reg_w(gspca_dev, 0x1019, v, 1); in setexposure()
1686 reg_w(gspca_dev, 0x101b, v, 2); in setexposure()
1691 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
1693 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
1702 reg_r(gspca_dev, 0x1004, 1); in setautogain()
1703 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */ in setautogain()
1704 sd->ae_res = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; in setautogain()
1706 reg_r(gspca_dev, 0x1011, 8); in setautogain()
1707 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0] in setautogain()
1708 - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2]; in setautogain()
1709 h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4] in setautogain()
1710 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6]; in setautogain()
1713 sd->ae_res = gspca_dev->pixfmt.width * in setautogain()
1714 gspca_dev->pixfmt.height; in setautogain()
1718 static int nw802_test_reg(struct gspca_dev *gspca_dev, in nw802_test_reg() argument
1723 reg_w(gspca_dev, index, &value, 1); in nw802_test_reg()
1726 reg_r(gspca_dev, index, 1); in nw802_test_reg()
1728 return gspca_dev->usb_buf[0] == value; in nw802_test_reg()
1732 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
1735 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
1740 gspca_dev->cam.needs_full_bandwidth = 1; in sd_config()
1752 if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) { in sd_config()
1756 } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) { in sd_config()
1761 reg_r(gspca_dev, 0x0403, 1); /* GPIO */ in sd_config()
1762 gspca_dbg(gspca_dev, D_PROBE, "et31x110 sensor type %02x\n", in sd_config()
1763 gspca_dev->usb_buf[0]); in sd_config()
1764 switch (gspca_dev->usb_buf[0] >> 1) { in sd_config()
1782 gspca_dev->usb_err = -ENODEV; in sd_config()
1783 return gspca_dev->usb_err; in sd_config()
1785 gspca_dbg(gspca_dev, D_PROBE, "Bridge nw80%d - type: %d\n", in sd_config()
1791 gspca_dev->cam.cam_mode = cif_mode; /* qvga */ in sd_config()
1794 gspca_dev->cam.cam_mode = &cif_mode[1]; /* cif */ in sd_config()
1797 gspca_dev->cam.nmodes = 1; in sd_config()
1799 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
1804 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
1807 gspca_dev->cam.nmodes = 1; /* qvga only */ in sd_config()
1812 return gspca_dev->usb_err; in sd_config()
1816 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
1818 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
1824 reg_w_buf(gspca_dev, spacecam_init); in sd_init()
1827 reg_w_buf(gspca_dev, nw800_init); in sd_init()
1836 reg_w_buf(gspca_dev, proscope_init); in sd_init()
1841 return gspca_dev->usb_err; in sd_init()
1845 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
1847 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
1851 reg_w_buf(gspca_dev, cmd); in sd_start()
1854 if (gspca_dev->pixfmt.width == 320) in sd_start()
1855 reg_w_buf(gspca_dev, nw801_start_qvga); in sd_start()
1857 reg_w_buf(gspca_dev, nw801_start_vga); in sd_start()
1858 reg_w_buf(gspca_dev, nw801_start_2); in sd_start()
1861 if (gspca_dev->pixfmt.width == 320) in sd_start()
1862 reg_w_buf(gspca_dev, kr651_start_qvga); in sd_start()
1864 reg_w_buf(gspca_dev, kr651_start_vga); in sd_start()
1865 reg_w_buf(gspca_dev, kr651_start_2); in sd_start()
1868 if (gspca_dev->pixfmt.width == 320) in sd_start()
1869 reg_w_buf(gspca_dev, proscope_start_qvga); in sd_start()
1871 reg_w_buf(gspca_dev, proscope_start_vga); in sd_start()
1872 reg_w_buf(gspca_dev, proscope_start_2); in sd_start()
1878 return gspca_dev->usb_err; in sd_start()
1881 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
1883 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
1889 reg_w(gspca_dev, 0x0406, &value, 1); in sd_stopN()
1912 reg_w(gspca_dev, 0x0404, &value, 1); in sd_stopN()
1915 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1928 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
1929 gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8); in sd_pkt_scan()
1931 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
1935 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
1937 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
1947 reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4); in do_autogain()
1948 luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16) in do_autogain()
1949 + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]; in do_autogain()
1954 gspca_coarse_grained_expo_autogain(gspca_dev, luma, 100, 5); in do_autogain()
1957 gspca_expo_autogain(gspca_dev, luma, 100, 5, 230, 0); in do_autogain()
1965 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
1966 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
1968 gspca_dev->usb_err = 0; in sd_s_ctrl()
1970 if (!gspca_dev->streaming) in sd_s_ctrl()
1977 setautogain(gspca_dev, ctrl->val); in sd_s_ctrl()
1979 if (gspca_dev->gain->is_new) in sd_s_ctrl()
1980 setgain(gspca_dev, gspca_dev->gain->val); in sd_s_ctrl()
1981 if (gspca_dev->exposure->is_new) in sd_s_ctrl()
1982 setexposure(gspca_dev, in sd_s_ctrl()
1983 gspca_dev->exposure->val); in sd_s_ctrl()
1989 setexposure(gspca_dev, gspca_dev->exposure->val); in sd_s_ctrl()
1992 return gspca_dev->usb_err; in sd_s_ctrl()
1999 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
2001 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
2002 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
2004 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
2008 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2012 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2014 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2018 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2020 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2026 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
2037 if (gspca_dev->autogain) in sd_init_controls()
2038 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()