• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/media/video/usbvision/

Lines Matching refs:usbvision

8  * This module is part of usbvision driver project.
77 #include "usbvision.h"
78 #include "usbvision-cards.h"
81 #define DRIVER_NAME "usbvision"
111 static int usbvision_nr = 0; // sequential number of usbvision device
144 static void usbvision_release(struct usb_usbvision *usbvision);
193 /* Device parameters information is located at /sys/module/usbvision */
215 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
216 return sprintf(buf, "%s\n", usbvision_device_data[usbvision->DevModel].ModelString);
223 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
227 if(usbvision->user)
228 call_i2c_clients(usbvision, VIDIOC_G_CTRL, &ctrl);
236 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
240 if(usbvision->user)
241 call_i2c_clients(usbvision, VIDIOC_G_CTRL, &ctrl);
249 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
253 if(usbvision->user)
254 call_i2c_clients(usbvision, VIDIOC_G_CTRL, &ctrl);
262 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
266 if(usbvision->user)
267 call_i2c_clients(usbvision, VIDIOC_G_CTRL, &ctrl);
275 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
276 return sprintf(buf, "%s\n", YES_NO(usbvision->streaming==Stream_On?1:0));
283 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
284 return sprintf(buf, "%s\n", YES_NO(usbvision->isocMode==ISOC_MODE_COMPRESS));
291 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
292 return sprintf(buf, "%d\n", usbvision->bridgeType);
372 * client only (checks internal counter 'usbvision->user'). The procedure
379 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
385 usbvision_reset_powerOffTimer(usbvision);
387 if (usbvision->user)
391 errCode = usbvision_scratch_alloc(usbvision);
394 errCode = usbvision_decompress_alloc(usbvision);
398 usbvision_scratch_free(usbvision);
399 usbvision_decompress_free(usbvision);
405 down(&usbvision->lock);
406 if (usbvision->power == 0) {
407 usbvision_power_on(usbvision);
408 usbvision_i2c_register(usbvision);
412 if (!usbvision->initialized) {
414 setup_ok = usbvision_setup(usbvision,isocMode);
416 usbvision->initialized = 1;
422 usbvision_begin_streaming(usbvision);
423 errCode = usbvision_init_isoc(usbvision);
425 usbvision_muxsel(usbvision,0);
426 usbvision->user++;
430 usbvision_i2c_unregister(usbvision);
431 usbvision_power_off(usbvision);
432 usbvision->initialized = 0;
435 up(&usbvision->lock);
442 usbvision_empty_framequeues(usbvision);
459 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
462 down(&usbvision->lock);
464 usbvision_audio_off(usbvision);
465 usbvision_restart_isoc(usbvision);
466 usbvision_stop_isoc(usbvision);
468 usbvision_decompress_free(usbvision);
469 usbvision_frames_free(usbvision);
470 usbvision_empty_framequeues(usbvision);
471 usbvision_scratch_free(usbvision);
473 usbvision->user--;
477 usbvision_set_powerOffTimer(usbvision);
478 usbvision->initialized = 0;
481 up(&usbvision->lock);
483 if (usbvision->remove_pending) {
485 usbvision_release(usbvision);
505 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
507 if (!USBVISION_IS_OPERATIONAL(usbvision))
526 errCode = usbvision_read_reg(usbvision, reg->reg&0xff);
528 errCode = usbvision_write_reg(usbvision, reg->reg&0xff, reg->val);
549 strlcpy(vc->card, usbvision_device_data[usbvision->DevModel].ModelString,
551 strlcpy(vc->bus_info, usbvision->dev->dev.bus_id,
558 (usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
567 if ((vi->index >= usbvision->video_inputs) || (vi->index < 0) )
569 if (usbvision->have_tuner) {
577 if (usbvision_device_data[usbvision->DevModel].VideoChannels == 4) {
590 if (usbvision_device_data[usbvision->DevModel].VideoChannels == 4) {
600 if (usbvision_device_data[usbvision->DevModel].VideoChannels == 4) {
637 *input = usbvision->ctl_input;
643 if ((*input >= usbvision->video_inputs) || (*input < 0) )
645 usbvision->ctl_input = *input;
647 down(&usbvision->lock);
648 usbvision_muxsel(usbvision, usbvision->ctl_input);
649 usbvision_set_input(usbvision);
650 usbvision_set_output(usbvision, usbvision->curwidth, usbvision->curheight);
651 up(&usbvision->lock);
658 *id = usbvision->tvnorm->id;
660 PDEBUG(DBG_IOCTL, "VIDIOC_G_STD std_id=%s", usbvision->tvnorm->name);
678 down(&usbvision->lock);
679 usbvision->tvnorm = &tvnorms[i];
681 call_i2c_clients(usbvision, VIDIOC_S_STD,
682 &usbvision->tvnorm->id);
684 up(&usbvision->lock);
686 PDEBUG(DBG_IOCTL, "VIDIOC_S_STD std_id=%s", usbvision->tvnorm->name);
693 if (!usbvision->have_tuner || vt->index) // Only tuner 0
697 call_i2c_clients(usbvision,VIDIOC_G_TUNER,vt);
707 if (!usbvision->have_tuner || vt->index)
710 call_i2c_clients(usbvision,VIDIOC_S_TUNER,vt);
721 freq->frequency = usbvision->freq;
730 if (!usbvision->have_tuner || freq->tuner)
733 usbvision->freq = freq->frequency;
734 call_i2c_clients(usbvision, cmd, freq);
763 call_i2c_clients(usbvision, cmd, arg);
775 call_i2c_clients(usbvision, VIDIOC_G_CTRL, ctrl);
784 call_i2c_clients(usbvision, VIDIOC_S_CTRL, ctrl);
799 if(usbvision->streaming == Stream_On) {
800 if ((ret = usbvision_stream_interrupt(usbvision)))
804 usbvision_frames_free(usbvision);
805 usbvision_empty_framequeues(usbvision);
806 vr->count = usbvision_frames_alloc(usbvision,vr->count);
808 usbvision->curFrame = NULL;
822 if(vb->index>=usbvision->num_frames) {
827 frame = &usbvision->frame[vb->index];
836 vb->m.offset = vb->index*PAGE_ALIGN(usbvision->max_frame_size);
840 vb->length = usbvision->curwidth*usbvision->curheight*usbvision->palette.bytes_per_pixel;
841 vb->timestamp = usbvision->frame[vb->index].timestamp;
842 vb->sequence = usbvision->frame[vb->index].sequence;
854 if(vb->index>=usbvision->num_frames) {
858 frame = &usbvision->frame[vb->index];
872 frame->v4l2_format = usbvision->palette;
874 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
875 list_add_tail(&usbvision->frame[vb->index].frame, &usbvision->inqueue);
876 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
891 if (list_empty(&(usbvision->outqueue))) {
892 if (usbvision->streaming == Stream_Idle)
895 (usbvision->wait_frame,
896 !list_empty(&(usbvision->outqueue)));
901 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
902 f = list_entry(usbvision->outqueue.next,
904 list_del(usbvision->outqueue.next);
905 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
923 usbvision->streaming = Stream_On;
925 call_i2c_clients(usbvision,VIDIOC_STREAMON , &b);
939 if(usbvision->streaming == Stream_On) {
940 usbvision_stream_interrupt(usbvision);
942 call_i2c_clients(usbvision,VIDIOC_STREAMOFF , &b);
944 usbvision_empty_framequeues(usbvision);
970 vf->fmt.pix.width = usbvision->curwidth;
971 vf->fmt.pix.height = usbvision->curheight;
972 vf->fmt.pix.pixelformat = usbvision->palette.format;
973 vf->fmt.pix.bytesperline = usbvision->curwidth*usbvision->palette.bytes_per_pixel;
974 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline*usbvision->curheight;
978 vf->fmt.pix.width, vf->fmt.pix.height,usbvision->palette.desc);
999 usbvision->palette = usbvision_v4l2_format[formatIdx];
1010 vf->fmt.pix.bytesperline = vf->fmt.pix.width*usbvision->palette.bytes_per_pixel;
1015 vf->fmt.pix.width, vf->fmt.pix.height,usbvision->palette.desc);
1020 if(usbvision->streaming == Stream_On) {
1021 if ((ret = usbvision_stream_interrupt(usbvision)))
1024 usbvision_frames_free(usbvision);
1025 usbvision_empty_framequeues(usbvision);
1027 usbvision->curFrame = NULL;
1030 down(&usbvision->lock);
1031 usbvision_set_output(usbvision, vf->fmt.pix.width, vf->fmt.pix.height);
1032 up(&usbvision->lock);
1035 vf->fmt.pix.width, vf->fmt.pix.height,usbvision->palette.desc);
1059 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
1068 if (!USBVISION_IS_OPERATIONAL(usbvision) || (buf == NULL))
1073 if(!usbvision->num_frames) {
1076 usbvision_frames_free(usbvision);
1077 usbvision_empty_framequeues(usbvision);
1078 usbvision_frames_alloc(usbvision,USBVISION_NUMFRAMES);
1081 if(usbvision->streaming != Stream_On) {
1083 usbvision->streaming = Stream_On;
1084 call_i2c_clients(usbvision,VIDIOC_STREAMON , NULL);
1088 for(i=0;i<usbvision->num_frames;i++) {
1089 frame = &usbvision->frame[i];
1097 frame->v4l2_format = usbvision->palette;
1099 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1100 list_add_tail(&frame->frame, &usbvision->inqueue);
1101 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
1106 if (list_empty(&(usbvision->outqueue))) {
1111 (usbvision->wait_frame,
1112 !list_empty(&(usbvision->outqueue)));
1117 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1118 frame = list_entry(usbvision->outqueue.next,
1120 list_del(usbvision->outqueue.next);
1121 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
1163 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
1167 down(&usbvision->lock);
1169 if (!USBVISION_IS_OPERATIONAL(usbvision)) {
1170 up(&usbvision->lock);
1175 size != PAGE_ALIGN(usbvision->max_frame_size)) {
1176 up(&usbvision->lock);
1180 for (i = 0; i < usbvision->num_frames; i++) {
1181 if (((PAGE_ALIGN(usbvision->max_frame_size)*i) >> PAGE_SHIFT) == vma->vm_pgoff)
1184 if (i == usbvision->num_frames) {
1186 up(&usbvision->lock);
1194 pos = usbvision->frame[i].data;
1199 up(&usbvision->lock);
1207 up(&usbvision->lock);
1213 * Here comes the stuff for radio on usbvision based devices
1219 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
1225 down(&usbvision->lock);
1227 if (usbvision->user) {
1233 usbvision_reset_powerOffTimer(usbvision);
1234 if (usbvision->power == 0) {
1235 usbvision_power_on(usbvision);
1236 usbvision_i2c_register(usbvision);
1241 errCode = usbvision_set_alternate(usbvision);
1243 usbvision->last_error = errCode;
1248 usbvision->radio = 1;
1249 call_i2c_clients(usbvision,AUDC_SET_RADIO,&usbvision->tuner_type);
1251 call_i2c_clients(usbvision, VIDIOC_S_FREQUENCY, &freq);
1252 usbvision_set_audio(usbvision, USBVISION_AUDIO_RADIO);
1253 usbvision->user++;
1258 usbvision_i2c_unregister(usbvision);
1259 usbvision_power_off(usbvision);
1260 usbvision->initialized = 0;
1263 up(&usbvision->lock);
1271 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
1276 down(&usbvision->lock);
1279 usbvision->ifaceAlt=0;
1280 errCode = usb_set_interface(usbvision->dev, usbvision->iface,
1281 usbvision->ifaceAlt);
1283 usbvision_audio_off(usbvision);
1284 usbvision->radio=0;
1285 usbvision->user--;
1288 usbvision_set_powerOffTimer(usbvision);
1289 usbvision->initialized = 0;
1292 up(&usbvision->lock);
1294 if (usbvision->remove_pending) {
1296 usbvision_release(usbvision);
1309 struct usb_usbvision *usbvision = (struct usb_usbvision *) video_get_drvdata(dev);
1311 if (!USBVISION_IS_OPERATIONAL(usbvision))
1321 strlcpy(vc->card, usbvision_device_data[usbvision->DevModel].ModelString,
1323 strlcpy(vc->bus_info, usbvision->dev->dev.bus_id,
1326 vc->capabilities = (usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
1338 call_i2c_clients(usbvision, cmd, arg);
1351 call_i2c_clients(usbvision, VIDIOC_G_CTRL, ctrl);
1359 call_i2c_clients(usbvision, VIDIOC_S_CTRL, ctrl);
1375 call_i2c_clients(usbvision,VIDIOC_G_TUNER,t);
1384 if (!usbvision->have_tuner || vt->index)
1387 call_i2c_clients(usbvision,VIDIOC_S_TUNER,vt);
1413 f->frequency = usbvision->freq;
1414 call_i2c_clients(usbvision, cmd, f);
1425 usbvision->freq = f->frequency;
1426 call_i2c_clients(usbvision, cmd, f);
1449 * Here comes the stuff for vbi on usbvision based devices
1498 .name = "usbvision-video",
1520 .name = "usbvision-radio",
1541 .name = "usbvision-vbi",
1546 static struct video_device *usbvision_vdev_init(struct usb_usbvision *usbvision,
1550 struct usb_device *usb_dev = usbvision->dev;
1554 err("%s: usbvision->dev is not set", __FUNCTION__);
1566 video_set_drvdata(vdev, usbvision);
1571 static void usbvision_unregister_video(struct usb_usbvision *usbvision)
1574 if (usbvision->vbi) {
1575 PDEBUG(DBG_PROBE, "unregister /dev/vbi%d [v4l2]", usbvision->vbi->minor & 0x1f);
1576 if (usbvision->vbi->minor != -1) {
1577 video_unregister_device(usbvision->vbi);
1580 video_device_release(usbvision->vbi);
1582 usbvision->vbi = NULL;
1586 if (usbvision->rdev) {
1587 PDEBUG(DBG_PROBE, "unregister /dev/radio%d [v4l2]", usbvision->rdev->minor & 0x1f);
1588 if (usbvision->rdev->minor != -1) {
1589 video_unregister_device(usbvision->rdev);
1592 video_device_release(usbvision->rdev);
1594 usbvision->rdev = NULL;
1598 if (usbvision->vdev) {
1599 PDEBUG(DBG_PROBE, "unregister /dev/video%d [v4l2]", usbvision->vdev->minor & 0x1f);
1600 if (usbvision->vdev->minor != -1) {
1601 video_unregister_device(usbvision->vdev);
1604 video_device_release(usbvision->vdev);
1606 usbvision->vdev = NULL;
1611 static int __devinit usbvision_register_video(struct usb_usbvision *usbvision)
1614 usbvision->vdev = usbvision_vdev_init(usbvision, &usbvision_video_template, "USBVision Video");
1615 if (usbvision->vdev == NULL) {
1618 if (video_register_device(usbvision->vdev, VFL_TYPE_GRABBER, video_nr)<0) {
1621 printk(KERN_INFO "USBVision[%d]: registered USBVision Video device /dev/video%d [v4l2]\n", usbvision->nr,usbvision->vdev->minor & 0x1f);
1624 if (usbvision_device_data[usbvision->DevModel].Radio) {
1625 // usbvision has radio
1626 usbvision->rdev = usbvision_vdev_init(usbvision, &usbvision_radio_template, "USBVision Radio");
1627 if (usbvision->rdev == NULL) {
1630 if (video_register_device(usbvision->rdev, VFL_TYPE_RADIO, radio_nr)<0) {
1633 printk(KERN_INFO "USBVision[%d]: registered USBVision Radio device /dev/radio%d [v4l2]\n", usbvision->nr, usbvision->rdev->minor & 0x1f);
1636 if (usbvision_device_data[usbvision->DevModel].vbi) {
1637 usbvision->vbi = usbvision_vdev_init(usbvision, &usbvision_vbi_template, "USBVision VBI");
1638 if (usbvision->vdev == NULL) {
1641 if (video_register_device(usbvision->vbi, VFL_TYPE_VBI, vbi_nr)<0) {
1644 printk(KERN_INFO "USBVision[%d]: registered USBVision VBI device /dev/vbi%d [v4l2] (Not Working Yet!)\n", usbvision->nr,usbvision->vbi->minor & 0x1f);
1650 err("USBVision[%d]: video_register_device() failed", usbvision->nr);
1651 usbvision_unregister_video(usbvision);
1665 struct usb_usbvision *usbvision;
1667 if ((usbvision = kzalloc(sizeof(struct usb_usbvision), GFP_KERNEL)) == NULL) {
1671 usbvision->dev = dev;
1673 init_MUTEX(&usbvision->lock); /* to 1 == available */
1676 usbvision->ctrlUrb = usb_alloc_urb(USBVISION_URB_FRAMES, GFP_KERNEL);
1677 if (usbvision->ctrlUrb == NULL) {
1680 init_waitqueue_head(&usbvision->ctrlUrb_wq);
1681 init_MUTEX(&usbvision->ctrlUrbLock); /* to 1 == available */
1683 usbvision_init_powerOffTimer(usbvision);
1685 return usbvision;
1688 if (usbvision && usbvision->ctrlUrb) {
1689 usb_free_urb(usbvision->ctrlUrb);
1691 if (usbvision) {
1692 kfree(usbvision);
1704 static void usbvision_release(struct usb_usbvision *usbvision)
1708 down(&usbvision->lock);
1710 usbvision_reset_powerOffTimer(usbvision);
1712 usbvision->initialized = 0;
1714 up(&usbvision->lock);
1716 usbvision_remove_sysfs(usbvision->vdev);
1717 usbvision_unregister_video(usbvision);
1719 if (usbvision->ctrlUrb) {
1720 usb_free_urb(usbvision->ctrlUrb);
1723 kfree(usbvision);
1731 static void usbvision_configure_video(struct usb_usbvision *usbvision)
1735 if (usbvision == NULL)
1738 model = usbvision->DevModel;
1739 usbvision->palette = usbvision_v4l2_format[2]; // V4L2_PIX_FMT_RGB24;
1741 if (usbvision_device_data[usbvision->DevModel].Vin_Reg2_override) {
1742 usbvision->Vin_Reg2_Preset = usbvision_device_data[usbvision->DevModel].Vin_Reg2;
1744 usbvision->Vin_Reg2_Preset = 0;
1752 usbvision->tvnorm = &tvnorms[i]; /* set default norm */
1754 usbvision->video_inputs = usbvision_device_data[model].VideoChannels;
1755 usbvision->ctl_input = 0;
1758 usbvision_audio_off(usbvision); //first switch off audio
1760 usbvision_power_on(usbvision); //and then power up the noisy tuner
1761 usbvision_i2c_register(usbvision);
1779 struct usb_usbvision *usbvision = NULL;
1812 if ((usbvision = usbvision_alloc(dev)) == NULL) {
1818 usbvision->bridgeType = BRIDGE_NT1004;
1821 usbvision->bridgeType = BRIDGE_NT1005;
1824 usbvision->bridgeType = BRIDGE_NT1003;
1826 PDEBUG(DBG_PROBE, "bridgeType %d", usbvision->bridgeType);
1828 down(&usbvision->lock);
1833 usbvision->num_alt=uif->num_altsetting;
1834 PDEBUG(DBG_PROBE, "Alternate settings: %i",usbvision->num_alt);
1835 usbvision->alt_max_pkt_size = kmalloc(32*
1836 usbvision->num_alt,GFP_KERNEL);
1837 if (usbvision->alt_max_pkt_size == NULL) {
1838 err("usbvision: out of memory!\n");
1842 for (i = 0; i < usbvision->num_alt ; i++) {
1845 usbvision->alt_max_pkt_size[i] =
1848 usbvision->alt_max_pkt_size[i]);
1852 usbvision->nr = usbvision_nr++;
1854 usbvision->have_tuner = usbvision_device_data[model].Tuner;
1855 if (usbvision->have_tuner) {
1856 usbvision->tuner_type = usbvision_device_data[model].TunerType;
1859 usbvision->tuner_addr = ADDR_UNSET;
1861 usbvision->DevModel = model;
1862 usbvision->remove_pending = 0;
1863 usbvision->iface = ifnum;
1864 usbvision->ifaceAlt = 0;
1865 usbvision->video_endp = endpoint->bEndpointAddress;
1866 usbvision->isocPacketSize = 0;
1867 usbvision->usb_bandwidth = 0;
1868 usbvision->user = 0;
1869 usbvision->streaming = Stream_Off;
1870 usbvision_register_video(usbvision);
1871 usbvision_configure_video(usbvision);
1872 up(&usbvision->lock);
1875 usb_set_intfdata (intf, usbvision);
1876 usbvision_create_sysfs(usbvision->vdev);
1893 struct usb_usbvision *usbvision = usb_get_intfdata(intf);
1897 if (usbvision == NULL) {
1903 down(&usbvision->lock);
1906 usbvision_stop_isoc(usbvision);
1908 if (usbvision->power) {
1909 usbvision_i2c_unregister(usbvision);
1910 usbvision_power_off(usbvision);
1912 usbvision->remove_pending = 1; // Now all ISO data will be ignored
1914 usb_put_dev(usbvision->dev);
1915 usbvision->dev = NULL; // USB device is no more
1917 up(&usbvision->lock);
1919 if (usbvision->user) {
1921 wake_up_interruptible(&usbvision->wait_frame);
1922 wake_up_interruptible(&usbvision->wait_stream);
1925 usbvision_release(usbvision);
1933 .name = "usbvision",