Lines Matching refs:usbvision

8  * This module is part of usbvision driver project.
69 #include "usbvision.h"
70 #include "usbvision-cards.h"
75 #define DRIVER_NAME "usbvision"
103 /* sequential number of usbvision device */
118 static void usbvision_release(struct usb_usbvision *usbvision);
159 /* Device parameters information is located at /sys/module/usbvision */
185 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
187 usbvision_device_data[usbvision->dev_model].model_string);
196 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
200 if (usbvision->user)
201 call_all(usbvision, core, g_ctrl, &ctrl);
211 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
215 if (usbvision->user)
216 call_all(usbvision, core, g_ctrl, &ctrl);
226 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
230 if (usbvision->user)
231 call_all(usbvision, core, g_ctrl, &ctrl);
241 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
245 if (usbvision->user)
246 call_all(usbvision, core, g_ctrl, &ctrl);
256 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
258 YES_NO(usbvision->streaming == stream_on ? 1 : 0));
267 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
269 YES_NO(usbvision->isoc_mode == ISOC_MODE_COMPRESS));
278 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
279 return sprintf(buf, "%d\n", usbvision->bridge_type);
341 * client only (checks internal counter 'usbvision->user'). The procedure
347 struct usb_usbvision *usbvision = video_drvdata(file);
352 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
354 usbvision_reset_power_off_timer(usbvision);
356 if (usbvision->user)
360 err_code = usbvision_scratch_alloc(usbvision);
364 err_code = usbvision_decompress_alloc(usbvision);
368 usbvision_scratch_free(usbvision);
369 usbvision_decompress_free(usbvision);
375 if (usbvision->power == 0) {
376 usbvision_power_on(usbvision);
377 usbvision_i2c_register(usbvision);
381 if (!usbvision->initialized) {
383 setup_ok = usbvision_setup(usbvision, isoc_mode);
385 usbvision->initialized = 1;
391 usbvision_begin_streaming(usbvision);
392 err_code = usbvision_init_isoc(usbvision);
394 usbvision_muxsel(usbvision, 0);
395 usbvision->user++;
398 usbvision_i2c_unregister(usbvision);
399 usbvision_power_off(usbvision);
400 usbvision->initialized = 0;
406 usbvision_empty_framequeues(usbvision);
407 mutex_unlock(&usbvision->v4l2_lock);
423 struct usb_usbvision *usbvision = video_drvdata(file);
427 mutex_lock(&usbvision->v4l2_lock);
428 usbvision_audio_off(usbvision);
429 usbvision_restart_isoc(usbvision);
430 usbvision_stop_isoc(usbvision);
432 usbvision_decompress_free(usbvision);
433 usbvision_frames_free(usbvision);
434 usbvision_empty_framequeues(usbvision);
435 usbvision_scratch_free(usbvision);
437 usbvision->user--;
442 usbvision_set_power_off_timer(usbvision);
443 usbvision->initialized = 0;
446 if (usbvision->remove_pending) {
448 usbvision_release(usbvision);
451 mutex_unlock(&usbvision->v4l2_lock);
468 struct usb_usbvision *usbvision = video_drvdata(file);
472 err_code = usbvision_read_reg(usbvision, reg->reg&0xff);
474 dev_err(&usbvision->vdev->dev,
487 struct usb_usbvision *usbvision = video_drvdata(file);
491 err_code = usbvision_write_reg(usbvision, reg->reg & 0xff, reg->val);
493 dev_err(&usbvision->vdev->dev,
505 struct usb_usbvision *usbvision = video_drvdata(file);
509 usbvision_device_data[usbvision->dev_model].model_string,
511 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
516 (usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
523 struct usb_usbvision *usbvision = video_drvdata(file);
526 if (vi->index >= usbvision->video_inputs)
528 if (usbvision->have_tuner)
534 specific for each usbvision card model */
537 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) {
549 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
557 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
574 struct usb_usbvision *usbvision = video_drvdata(file);
576 *input = usbvision->ctl_input;
582 struct usb_usbvision *usbvision = video_drvdata(file);
584 if (input >= usbvision->video_inputs)
587 usbvision_muxsel(usbvision, input);
588 usbvision_set_input(usbvision);
589 usbvision_set_output(usbvision,
590 usbvision->curwidth,
591 usbvision->curheight);
597 struct usb_usbvision *usbvision = video_drvdata(file);
599 usbvision->tvnorm_id = id;
601 call_all(usbvision, video, s_std, usbvision->tvnorm_id);
603 usbvision_muxsel(usbvision, usbvision->ctl_input);
610 struct usb_usbvision *usbvision = video_drvdata(file);
612 *id = usbvision->tvnorm_id;
619 struct usb_usbvision *usbvision = video_drvdata(file);
621 if (!usbvision->have_tuner || vt->index) /* Only tuner 0 */
623 if (usbvision->radio) {
630 call_all(usbvision, tuner, g_tuner, vt);
638 struct usb_usbvision *usbvision = video_drvdata(file);
641 if (!usbvision->have_tuner || vt->index)
644 call_all(usbvision, tuner, s_tuner, vt);
652 struct usb_usbvision *usbvision = video_drvdata(file);
655 if (usbvision->radio)
659 freq->frequency = usbvision->freq;
667 struct usb_usbvision *usbvision = video_drvdata(file);
670 if (!usbvision->have_tuner || freq->tuner)
673 usbvision->freq = freq->frequency;
674 call_all(usbvision, tuner, s_frequency, freq);
681 struct usb_usbvision *usbvision = video_drvdata(file);
683 if (usbvision->radio)
702 struct usb_usbvision *usbvision = video_drvdata(file);
704 call_all(usbvision, core, queryctrl, ctrl);
715 struct usb_usbvision *usbvision = video_drvdata(file);
717 call_all(usbvision, core, g_ctrl, ctrl);
724 struct usb_usbvision *usbvision = video_drvdata(file);
726 call_all(usbvision, core, s_ctrl, ctrl);
733 struct usb_usbvision *usbvision = video_drvdata(file);
743 if (usbvision->streaming == stream_on) {
744 ret = usbvision_stream_interrupt(usbvision);
749 usbvision_frames_free(usbvision);
750 usbvision_empty_framequeues(usbvision);
751 vr->count = usbvision_frames_alloc(usbvision, vr->count);
753 usbvision->cur_frame = NULL;
761 struct usb_usbvision *usbvision = video_drvdata(file);
766 if (vb->index >= usbvision->num_frames)
770 frame = &usbvision->frame[vb->index];
779 vb->m.offset = vb->index * PAGE_ALIGN(usbvision->max_frame_size);
783 vb->length = usbvision->curwidth *
784 usbvision->curheight *
785 usbvision->palette.bytes_per_pixel;
786 vb->timestamp = usbvision->frame[vb->index].timestamp;
787 vb->sequence = usbvision->frame[vb->index].sequence;
793 struct usb_usbvision *usbvision = video_drvdata(file);
798 if (vb->index >= usbvision->num_frames)
801 frame = &usbvision->frame[vb->index];
814 frame->v4l2_format = usbvision->palette;
816 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
817 list_add_tail(&usbvision->frame[vb->index].frame, &usbvision->inqueue);
818 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
825 struct usb_usbvision *usbvision = video_drvdata(file);
830 if (list_empty(&(usbvision->outqueue))) {
831 if (usbvision->streaming == stream_idle)
834 (usbvision->wait_frame,
835 !list_empty(&(usbvision->outqueue)));
840 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
841 f = list_entry(usbvision->outqueue.next,
843 list_del(usbvision->outqueue.next);
844 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
864 struct usb_usbvision *usbvision = video_drvdata(file);
866 usbvision->streaming = stream_on;
867 call_all(usbvision, video, s_stream, 1);
875 struct usb_usbvision *usbvision = video_drvdata(file);
880 if (usbvision->streaming == stream_on) {
881 usbvision_stream_interrupt(usbvision);
883 call_all(usbvision, video, s_stream, 0);
885 usbvision_empty_framequeues(usbvision);
903 struct usb_usbvision *usbvision = video_drvdata(file);
904 vf->fmt.pix.width = usbvision->curwidth;
905 vf->fmt.pix.height = usbvision->curheight;
906 vf->fmt.pix.pixelformat = usbvision->palette.format;
908 usbvision->curwidth * usbvision->palette.bytes_per_pixel;
909 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline * usbvision->curheight;
919 struct usb_usbvision *usbvision = video_drvdata(file);
926 usbvision->palette = usbvision_v4l2_format[format_idx];
937 usbvision->palette.bytes_per_pixel;
946 struct usb_usbvision *usbvision = video_drvdata(file);
954 if (usbvision->streaming == stream_on) {
955 ret = usbvision_stream_interrupt(usbvision);
959 usbvision_frames_free(usbvision);
960 usbvision_empty_framequeues(usbvision);
962 usbvision->cur_frame = NULL;
965 usbvision_set_output(usbvision, vf->fmt.pix.width, vf->fmt.pix.height);
973 struct usb_usbvision *usbvision = video_drvdata(file);
982 if (!USBVISION_IS_OPERATIONAL(usbvision) || (buf == NULL))
988 if (!usbvision->num_frames) {
991 usbvision_frames_free(usbvision);
992 usbvision_empty_framequeues(usbvision);
993 usbvision_frames_alloc(usbvision, USBVISION_NUMFRAMES);
996 if (usbvision->streaming != stream_on) {
998 usbvision->streaming = stream_on;
999 call_all(usbvision, video, s_stream, 1);
1004 for (i = 0; i < usbvision->num_frames; i++) {
1005 frame = &usbvision->frame[i];
1014 frame->v4l2_format = usbvision->palette;
1016 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1017 list_add_tail(&frame->frame, &usbvision->inqueue);
1018 spin_unlock_irqrestore(&usbvision->queue_lock,
1024 if (list_empty(&(usbvision->outqueue))) {
1029 (usbvision->wait_frame,
1030 !list_empty(&(usbvision->outqueue)));
1035 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1036 frame = list_entry(usbvision->outqueue.next,
1038 list_del(usbvision->outqueue.next);
1039 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
1077 struct usb_usbvision *usbvision = video_drvdata(file);
1080 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1083 mutex_unlock(&usbvision->v4l2_lock);
1093 struct usb_usbvision *usbvision = video_drvdata(file);
1097 if (!USBVISION_IS_OPERATIONAL(usbvision))
1101 size != PAGE_ALIGN(usbvision->max_frame_size)) {
1105 for (i = 0; i < usbvision->num_frames; i++) {
1106 if (((PAGE_ALIGN(usbvision->max_frame_size)*i) >> PAGE_SHIFT) ==
1110 if (i == usbvision->num_frames) {
1119 pos = usbvision->frame[i].data;
1135 struct usb_usbvision *usbvision = video_drvdata(file);
1138 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1141 mutex_unlock(&usbvision->v4l2_lock);
1146 * Here comes the stuff for radio on usbvision based devices
1151 struct usb_usbvision *usbvision = video_drvdata(file);
1156 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1158 if (usbvision->user) {
1159 dev_err(&usbvision->rdev->dev,
1165 usbvision_reset_power_off_timer(usbvision);
1166 if (usbvision->power == 0) {
1167 usbvision_power_on(usbvision);
1168 usbvision_i2c_register(usbvision);
1173 err_code = usbvision_set_alternate(usbvision);
1175 usbvision->last_error = err_code;
1181 usbvision->radio = 1;
1182 call_all(usbvision, tuner, s_radio);
1183 usbvision_set_audio(usbvision, USBVISION_AUDIO_RADIO);
1184 usbvision->user++;
1189 usbvision_i2c_unregister(usbvision);
1190 usbvision_power_off(usbvision);
1191 usbvision->initialized = 0;
1195 mutex_unlock(&usbvision->v4l2_lock);
1202 struct usb_usbvision *usbvision = video_drvdata(file);
1207 mutex_lock(&usbvision->v4l2_lock);
1209 usbvision->iface_alt = 0;
1210 err_code = usb_set_interface(usbvision->dev, usbvision->iface,
1211 usbvision->iface_alt);
1213 usbvision_audio_off(usbvision);
1214 usbvision->radio = 0;
1215 usbvision->user--;
1218 usbvision_set_power_off_timer(usbvision);
1219 usbvision->initialized = 0;
1222 if (usbvision->remove_pending) {
1224 usbvision_release(usbvision);
1228 mutex_unlock(&usbvision->v4l2_lock);
1281 .name = "usbvision-video",
1313 .name = "usbvision-radio",
1319 static struct video_device *usbvision_vdev_init(struct usb_usbvision *usbvision,
1323 struct usb_device *usb_dev = usbvision->dev;
1327 dev_err(&usbvision->dev->dev,
1328 "%s: usbvision->dev is not set\n", __func__);
1336 vdev->lock = &usbvision->v4l2_lock;
1337 vdev->v4l2_dev = &usbvision->v4l2_dev;
1339 video_set_drvdata(vdev, usbvision);
1344 static void usbvision_unregister_video(struct usb_usbvision *usbvision)
1347 if (usbvision->rdev) {
1349 video_device_node_name(usbvision->rdev));
1350 if (video_is_registered(usbvision->rdev))
1351 video_unregister_device(usbvision->rdev);
1353 video_device_release(usbvision->rdev);
1354 usbvision->rdev = NULL;
1358 if (usbvision->vdev) {
1360 video_device_node_name(usbvision->vdev));
1361 if (video_is_registered(usbvision->vdev))
1362 video_unregister_device(usbvision->vdev);
1364 video_device_release(usbvision->vdev);
1365 usbvision->vdev = NULL;
1370 static int usbvision_register_video(struct usb_usbvision *usbvision)
1373 usbvision->vdev = usbvision_vdev_init(usbvision,
1376 if (usbvision->vdev == NULL)
1378 if (video_register_device(usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0)
1381 usbvision->nr, video_device_node_name(usbvision->vdev));
1384 if (usbvision_device_data[usbvision->dev_model].radio) {
1385 /* usbvision has radio */
1386 usbvision->rdev = usbvision_vdev_init(usbvision,
1389 if (usbvision->rdev == NULL)
1391 if (video_register_device(usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0)
1394 usbvision->nr, video_device_node_name(usbvision->rdev));
1400 dev_err(&usbvision->dev->dev,
1402 usbvision->nr);
1403 usbvision_unregister_video(usbvision);
1419 struct usb_usbvision *usbvision;
1421 usbvision = kzalloc(sizeof(struct usb_usbvision), GFP_KERNEL);
1422 if (usbvision == NULL)
1425 usbvision->dev = dev;
1426 if (v4l2_device_register(&intf->dev, &usbvision->v4l2_dev))
1429 mutex_init(&usbvision->v4l2_lock);
1432 usbvision->ctrl_urb = usb_alloc_urb(USBVISION_URB_FRAMES, GFP_KERNEL);
1433 if (usbvision->ctrl_urb == NULL)
1435 init_waitqueue_head(&usbvision->ctrl_urb_wq);
1437 usbvision_init_power_off_timer(usbvision);
1439 return usbvision;
1442 v4l2_device_unregister(&usbvision->v4l2_dev);
1444 kfree(usbvision);
1455 static void usbvision_release(struct usb_usbvision *usbvision)
1459 usbvision_reset_power_off_timer(usbvision);
1461 usbvision->initialized = 0;
1463 usbvision_remove_sysfs(usbvision->vdev);
1464 usbvision_unregister_video(usbvision);
1465 kfree(usbvision->alt_max_pkt_size);
1467 usb_free_urb(usbvision->ctrl_urb);
1469 v4l2_device_unregister(&usbvision->v4l2_dev);
1470 kfree(usbvision);
1478 static void usbvision_configure_video(struct usb_usbvision *usbvision)
1482 if (usbvision == NULL)
1485 model = usbvision->dev_model;
1486 usbvision->palette = usbvision_v4l2_format[2]; /* V4L2_PIX_FMT_RGB24; */
1488 if (usbvision_device_data[usbvision->dev_model].vin_reg2_override) {
1489 usbvision->vin_reg2_preset =
1490 usbvision_device_data[usbvision->dev_model].vin_reg2;
1492 usbvision->vin_reg2_preset = 0;
1495 usbvision->tvnorm_id = usbvision_device_data[model].video_norm;
1497 usbvision->video_inputs = usbvision_device_data[model].video_channels;
1498 usbvision->ctl_input = 0;
1503 usbvision_audio_off(usbvision);
1506 usbvision_power_on(usbvision);
1507 usbvision_i2c_register(usbvision);
1525 struct usb_usbvision *usbvision = NULL;
1559 usbvision = usbvision_alloc(dev, intf);
1560 if (usbvision == NULL) {
1566 usbvision->bridge_type = BRIDGE_NT1004;
1568 usbvision->bridge_type = BRIDGE_NT1005;
1570 usbvision->bridge_type = BRIDGE_NT1003;
1571 PDEBUG(DBG_PROBE, "bridge_type %d", usbvision->bridge_type);
1576 usbvision->num_alt = uif->num_altsetting;
1577 PDEBUG(DBG_PROBE, "Alternate settings: %i", usbvision->num_alt);
1578 usbvision->alt_max_pkt_size = kmalloc(32 * usbvision->num_alt, GFP_KERNEL);
1579 if (usbvision->alt_max_pkt_size == NULL) {
1580 dev_err(&intf->dev, "usbvision: out of memory!\n");
1581 usbvision_release(usbvision);
1585 for (i = 0; i < usbvision->num_alt; i++) {
1588 usbvision->alt_max_pkt_size[i] =
1591 usbvision->alt_max_pkt_size[i]);
1595 usbvision->nr = usbvision_nr++;
1597 usbvision->have_tuner = usbvision_device_data[model].tuner;
1598 if (usbvision->have_tuner)
1599 usbvision->tuner_type = usbvision_device_data[model].tuner_type;
1601 usbvision->dev_model = model;
1602 usbvision->remove_pending = 0;
1603 usbvision->iface = ifnum;
1604 usbvision->iface_alt = 0;
1605 usbvision->video_endp = endpoint->bEndpointAddress;
1606 usbvision->isoc_packet_size = 0;
1607 usbvision->usb_bandwidth = 0;
1608 usbvision->user = 0;
1609 usbvision->streaming = stream_off;
1610 usbvision_configure_video(usbvision);
1611 usbvision_register_video(usbvision);
1613 usbvision_create_sysfs(usbvision->vdev);
1630 struct usb_usbvision *usbvision = to_usbvision(usb_get_intfdata(intf));
1634 if (usbvision == NULL) {
1639 mutex_lock(&usbvision->v4l2_lock);
1642 usbvision_stop_isoc(usbvision);
1644 v4l2_device_disconnect(&usbvision->v4l2_dev);
1646 if (usbvision->power) {
1647 usbvision_i2c_unregister(usbvision);
1648 usbvision_power_off(usbvision);
1650 usbvision->remove_pending = 1; /* Now all ISO data will be ignored */
1652 usb_put_dev(usbvision->dev);
1653 usbvision->dev = NULL; /* USB device is no more */
1655 mutex_unlock(&usbvision->v4l2_lock);
1657 if (usbvision->user) {
1660 wake_up_interruptible(&usbvision->wait_frame);
1661 wake_up_interruptible(&usbvision->wait_stream);
1663 usbvision_release(usbvision);
1670 .name = "usbvision",