Lines Matching +full:cam +full:- +full:if

1 // SPDX-License-Identifier: GPL-2.0-or-later
80 ret = usb_control_msg(gspca_dev->dev, in sq905c_command()
81 usb_sndctrlpipe(gspca_dev->dev, 0), in sq905c_command()
86 if (ret < 0) { in sq905c_command()
99 ret = usb_control_msg(gspca_dev->dev, in sq905c_read()
100 usb_rcvctrlpipe(gspca_dev->dev, 0), in sq905c_read()
103 command, index, gspca_dev->usb_buf, size, in sq905c_read()
105 if (ret < 0) { in sq905c_read()
117 * threads attempting to use gspca_dev->usb_buf we take the usb_lock when
124 struct gspca_dev *gspca_dev = &dev->gspca_dev; in sq905c_dostream()
133 if (!buffer) { in sq905c_dostream()
138 while (gspca_dev->present && gspca_dev->streaming) { in sq905c_dostream()
140 if (gspca_dev->frozen) in sq905c_dostream()
144 ret = usb_bulk_msg(gspca_dev->dev, in sq905c_dostream()
145 usb_rcvbulkpipe(gspca_dev->dev, 0x81), in sq905c_dostream()
151 if (ret < 0 || act_len < FRAME_HEADER_LEN) in sq905c_dostream()
162 while (bytes_left > 0 && gspca_dev->present) { in sq905c_dostream()
165 ret = usb_bulk_msg(gspca_dev->dev, in sq905c_dostream()
166 usb_rcvbulkpipe(gspca_dev->dev, 0x81), in sq905c_dostream()
169 if (ret < 0 || act_len < data_len) in sq905c_dostream()
174 bytes_left -= data_len; in sq905c_dostream()
175 if (bytes_left == 0) in sq905c_dostream()
184 if (gspca_dev->present) { in sq905c_dostream()
185 mutex_lock(&gspca_dev->usb_lock); in sq905c_dostream()
187 mutex_unlock(&gspca_dev->usb_lock); in sq905c_dostream()
196 struct cam *cam = &gspca_dev->cam; in sd_config() local
202 id->idVendor, id->idProduct); in sd_config()
205 if (ret < 0) { in sd_config()
211 if (ret < 0) { in sd_config()
217 "SQ9050 ID string: %02x - %*ph\n", in sd_config()
218 gspca_dev->usb_buf[3], 6, gspca_dev->usb_buf + 14); in sd_config()
220 cam->cam_mode = sq905c_mode; in sd_config()
221 cam->nmodes = 2; in sd_config()
222 if (gspca_dev->usb_buf[15] == 0) in sd_config()
223 cam->nmodes = 1; in sd_config()
225 cam->bulk_size = 32; in sd_config()
226 cam->bulk = 1; in sd_config()
227 INIT_WORK(&dev->work_struct, sq905c_dostream); in sd_config()
232 /* the usb_lock is held at entry - restore on exit */
238 mutex_unlock(&gspca_dev->usb_lock); in sd_stop0()
240 destroy_workqueue(dev->work_thread); in sd_stop0()
241 dev->work_thread = NULL; in sd_stop0()
242 mutex_lock(&gspca_dev->usb_lock); in sd_stop0()
258 dev->cap_mode = gspca_dev->cam.cam_mode; in sd_start()
260 switch (gspca_dev->pixfmt.width) { in sd_start()
263 dev->cap_mode++; in sd_start()
273 if (ret < 0) { in sd_start()
278 dev->work_thread = create_singlethread_workqueue(MODULE_NAME); in sd_start()
279 if (!dev->work_thread) in sd_start()
280 return -ENOMEM; in sd_start()
282 queue_work(dev->work_thread, &dev->work_struct); in sd_start()
299 /* sub-driver description */
308 /* -- device connect -- */