Bug
[В начало]
Ошибка # 53
Показать/спрятать трассу ошибок Error trace
-__BLAST_initialize_/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/rcv/132_1a/main-ldv_main1_sequence_infinite_withcheck_stateful/preprocess/1-cpp/drivers/media/usb/usbvision/usbvision-core.o.i() { 52 -adjust_compression = 1; adjust_x_offset = 4294967295; adjust_y_offset = 4294967295; scratch_buf_size = 131072; return ; } -__BLAST_initialize_/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/rcv/132_1a/main-ldv_main1_sequence_infinite_withcheck_stateful/preprocess/1-cpp/drivers/media/usb/usbvision/usbvision-video.o.i() { 107 -usbvision_v4l2_format[ 0 ].supported = 1; usbvision_v4l2_format[ 0 ].bytes_per_pixel = 1; usbvision_v4l2_format[ 0 ].depth = 8; usbvision_v4l2_format[ 0 ].format = 1497715271; usbvision_v4l2_format[ 0 ].desc = "GREY"; usbvision_v4l2_format[ 1 ].supported = 1; usbvision_v4l2_format[ 1 ].bytes_per_pixel = 2; usbvision_v4l2_format[ 1 ].depth = 16; usbvision_v4l2_format[ 1 ].format = 1346520914; usbvision_v4l2_format[ 1 ].desc = "RGB565"; usbvision_v4l2_format[ 2 ].supported = 1; usbvision_v4l2_format[ 2 ].bytes_per_pixel = 3; usbvision_v4l2_format[ 2 ].depth = 24; usbvision_v4l2_format[ 2 ].format = 859981650; usbvision_v4l2_format[ 2 ].desc = "RGB24"; usbvision_v4l2_format[ 3 ].supported = 1; usbvision_v4l2_format[ 3 ].bytes_per_pixel = 4; usbvision_v4l2_format[ 3 ].depth = 32; usbvision_v4l2_format[ 3 ].format = 876758866; usbvision_v4l2_format[ 3 ].desc = "RGB32"; usbvision_v4l2_format[ 4 ].supported = 1; usbvision_v4l2_format[ 4 ].bytes_per_pixel = 2; usbvision_v4l2_format[ 4 ].depth = 16; usbvision_v4l2_format[ 4 ].format = 1329743698; usbvision_v4l2_format[ 4 ].desc = "RGB555"; usbvision_v4l2_format[ 5 ].supported = 1; usbvision_v4l2_format[ 5 ].bytes_per_pixel = 2; usbvision_v4l2_format[ 5 ].depth = 16; usbvision_v4l2_format[ 5 ].format = 1448695129; usbvision_v4l2_format[ 5 ].desc = "YUV422"; usbvision_v4l2_format[ 6 ].supported = 1; usbvision_v4l2_format[ 6 ].bytes_per_pixel = 2; usbvision_v4l2_format[ 6 ].depth = 12; usbvision_v4l2_format[ 6 ].format = 842094169; usbvision_v4l2_format[ 6 ].desc = "YUV420P"; usbvision_v4l2_format[ 7 ].supported = 1; usbvision_v4l2_format[ 7 ].bytes_per_pixel = 2; usbvision_v4l2_format[ 7 ].depth = 16; usbvision_v4l2_format[ 7 ].format = 1345466932; usbvision_v4l2_format[ 7 ].desc = "YUV422P"; isoc_mode = 96; power_on_at_open = 1; video_nr = -1; radio_nr = -1; dev_attr_version.attr.name = "version"; dev_attr_version.attr.mode = 292; dev_attr_version.attr.ignore_lockdep = 0; dev_attr_version.attr.key = 0; dev_attr_version.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_version.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_version.show = &(show_version); dev_attr_version.store = 0; dev_attr_model.attr.name = "model"; dev_attr_model.attr.mode = 292; dev_attr_model.attr.ignore_lockdep = 0; dev_attr_model.attr.key = 0; dev_attr_model.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_model.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_model.show = &(show_model); dev_attr_model.store = 0; dev_attr_hue.attr.name = "hue"; dev_attr_hue.attr.mode = 292; dev_attr_hue.attr.ignore_lockdep = 0; dev_attr_hue.attr.key = 0; dev_attr_hue.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_hue.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_hue.show = &(show_hue); dev_attr_hue.store = 0; dev_attr_contrast.attr.name = "contrast"; dev_attr_contrast.attr.mode = 292; dev_attr_contrast.attr.ignore_lockdep = 0; dev_attr_contrast.attr.key = 0; dev_attr_contrast.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_contrast.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_contrast.show = &(show_contrast); dev_attr_contrast.store = 0; dev_attr_brightness.attr.name = "brightness"; dev_attr_brightness.attr.mode = 292; dev_attr_brightness.attr.ignore_lockdep = 0; dev_attr_brightness.attr.key = 0; dev_attr_brightness.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_brightness.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_brightness.show = &(show_brightness); dev_attr_brightness.store = 0; dev_attr_saturation.attr.name = "saturation"; dev_attr_saturation.attr.mode = 292; dev_attr_saturation.attr.ignore_lockdep = 0; dev_attr_saturation.attr.key = 0; dev_attr_saturation.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_saturation.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_saturation.show = &(show_saturation); dev_attr_saturation.store = 0; dev_attr_streaming.attr.name = "streaming"; dev_attr_streaming.attr.mode = 292; dev_attr_streaming.attr.ignore_lockdep = 0; dev_attr_streaming.attr.key = 0; dev_attr_streaming.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_streaming.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_streaming.show = &(show_streaming); dev_attr_streaming.store = 0; dev_attr_compression.attr.name = "compression"; dev_attr_compression.attr.mode = 292; dev_attr_compression.attr.ignore_lockdep = 0; dev_attr_compression.attr.key = 0; dev_attr_compression.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_compression.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_compression.show = &(show_compression); dev_attr_compression.store = 0; dev_attr_bridge.attr.name = "bridge"; dev_attr_bridge.attr.mode = 292; dev_attr_bridge.attr.ignore_lockdep = 0; dev_attr_bridge.attr.key = 0; dev_attr_bridge.attr.skey.subkeys[ 0 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 1 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 2 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 3 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 4 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 5 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 6 ].__one_byte = 0; dev_attr_bridge.attr.skey.subkeys[ 7 ].__one_byte = 0; dev_attr_bridge.show = &(show_device_bridge); dev_attr_bridge.store = 0; usbvision_fops.owner = &(__this_module); usbvision_fops.read = &(usbvision_v4l2_read); usbvision_fops.write = 0; usbvision_fops.poll = 0; usbvision_fops.ioctl = 0; usbvision_fops.unlocked_ioctl = &(video_ioctl2); usbvision_fops.compat_ioctl32 = 0; usbvision_fops.get_unmapped_area = 0; usbvision_fops.mmap = &(usbvision_v4l2_mmap); usbvision_fops.open = &(usbvision_v4l2_open); usbvision_fops.release = &(usbvision_v4l2_close); usbvision_ioctl_ops.vidioc_querycap = &(vidioc_querycap); usbvision_ioctl_ops.vidioc_g_priority = 0; usbvision_ioctl_ops.vidioc_s_priority = 0; usbvision_ioctl_ops.vidioc_enum_fmt_vid_cap = &(vidioc_enum_fmt_vid_cap); usbvision_ioctl_ops.vidioc_enum_fmt_vid_overlay = 0; usbvision_ioctl_ops.vidioc_enum_fmt_vid_out = 0; usbvision_ioctl_ops.vidioc_enum_fmt_vid_cap_mplane = 0; usbvision_ioctl_ops.vidioc_enum_fmt_vid_out_mplane = 0; usbvision_ioctl_ops.vidioc_enum_fmt_sdr_cap = 0; usbvision_ioctl_ops.vidioc_g_fmt_vid_cap = &(vidioc_g_fmt_vid_cap); usbvision_ioctl_ops.vidioc_g_fmt_vid_overlay = 0; usbvision_ioctl_ops.vidioc_g_fmt_vid_out = 0; usbvision_ioctl_ops.vidioc_g_fmt_vid_out_overlay = 0; usbvision_ioctl_ops.vidioc_g_fmt_vbi_cap = 0; usbvision_ioctl_ops.vidioc_g_fmt_vbi_out = 0; usbvision_ioctl_ops.vidioc_g_fmt_sliced_vbi_cap = 0; usbvision_ioctl_ops.vidioc_g_fmt_sliced_vbi_out = 0; usbvision_ioctl_ops.vidioc_g_fmt_vid_cap_mplane = 0; usbvision_ioctl_ops.vidioc_g_fmt_vid_out_mplane = 0; usbvision_ioctl_ops.vidioc_g_fmt_sdr_cap = 0; usbvision_ioctl_ops.vidioc_s_fmt_vid_cap = &(vidioc_s_fmt_vid_cap); usbvision_ioctl_ops.vidioc_s_fmt_vid_overlay = 0; usbvision_ioctl_ops.vidioc_s_fmt_vid_out = 0; usbvision_ioctl_ops.vidioc_s_fmt_vid_out_overlay = 0; usbvision_ioctl_ops.vidioc_s_fmt_vbi_cap = 0; usbvision_ioctl_ops.vidioc_s_fmt_vbi_out = 0; usbvision_ioctl_ops.vidioc_s_fmt_sliced_vbi_cap = 0; usbvision_ioctl_ops.vidioc_s_fmt_sliced_vbi_out = 0; usbvision_ioctl_ops.vidioc_s_fmt_vid_cap_mplane = 0; usbvision_ioctl_ops.vidioc_s_fmt_vid_out_mplane = 0; usbvision_ioctl_ops.vidioc_s_fmt_sdr_cap = 0; usbvision_ioctl_ops.vidioc_try_fmt_vid_cap = &(vidioc_try_fmt_vid_cap); usbvision_ioctl_ops.vidioc_try_fmt_vid_overlay = 0; usbvision_ioctl_ops.vidioc_try_fmt_vid_out = 0; usbvision_ioctl_ops.vidioc_try_fmt_vid_out_overlay = 0; usbvision_ioctl_ops.vidioc_try_fmt_vbi_cap = 0; usbvision_ioctl_ops.vidioc_try_fmt_vbi_out = 0; usbvision_ioctl_ops.vidioc_try_fmt_sliced_vbi_cap = 0; usbvision_ioctl_ops.vidioc_try_fmt_sliced_vbi_out = 0; usbvision_ioctl_ops.vidioc_try_fmt_vid_cap_mplane = 0; usbvision_ioctl_ops.vidioc_try_fmt_vid_out_mplane = 0; usbvision_ioctl_ops.vidioc_try_fmt_sdr_cap = 0; usbvision_ioctl_ops.vidioc_reqbufs = &(vidioc_reqbufs); usbvision_ioctl_ops.vidioc_querybuf = &(vidioc_querybuf); usbvision_ioctl_ops.vidioc_qbuf = &(vidioc_qbuf); usbvision_ioctl_ops.vidioc_expbuf = 0; usbvision_ioctl_ops.vidioc_dqbuf = &(vidioc_dqbuf); usbvision_ioctl_ops.vidioc_create_bufs = 0; usbvision_ioctl_ops.vidioc_prepare_buf = 0; usbvision_ioctl_ops.vidioc_overlay = 0; usbvision_ioctl_ops.vidioc_g_fbuf = 0; usbvision_ioctl_ops.vidioc_s_fbuf = 0; usbvision_ioctl_ops.vidioc_streamon = &(vidioc_streamon); usbvision_ioctl_ops.vidioc_streamoff = &(vidioc_streamoff); usbvision_ioctl_ops.vidioc_g_std = &(vidioc_g_std); usbvision_ioctl_ops.vidioc_s_std = &(vidioc_s_std); usbvision_ioctl_ops.vidioc_querystd = 0; usbvision_ioctl_ops.vidioc_enum_input = &(vidioc_enum_input); usbvision_ioctl_ops.vidioc_g_input = &(vidioc_g_input); usbvision_ioctl_ops.vidioc_s_input = &(vidioc_s_input); usbvision_ioctl_ops.vidioc_enum_output = 0; usbvision_ioctl_ops.vidioc_g_output = 0; usbvision_ioctl_ops.vidioc_s_output = 0; usbvision_ioctl_ops.vidioc_queryctrl = &(vidioc_queryctrl); usbvision_ioctl_ops.vidioc_query_ext_ctrl = 0; usbvision_ioctl_ops.vidioc_g_ctrl = &(vidioc_g_ctrl); usbvision_ioctl_ops.vidioc_s_ctrl = &(vidioc_s_ctrl); usbvision_ioctl_ops.vidioc_g_ext_ctrls = 0; usbvision_ioctl_ops.vidioc_s_ext_ctrls = 0; usbvision_ioctl_ops.vidioc_try_ext_ctrls = 0; usbvision_ioctl_ops.vidioc_querymenu = 0; usbvision_ioctl_ops.vidioc_enumaudio = 0; usbvision_ioctl_ops.vidioc_g_audio = &(vidioc_g_audio); usbvision_ioctl_ops.vidioc_s_audio = &(vidioc_s_audio); usbvision_ioctl_ops.vidioc_enumaudout = 0; usbvision_ioctl_ops.vidioc_g_audout = 0; usbvision_ioctl_ops.vidioc_s_audout = 0; usbvision_ioctl_ops.vidioc_g_modulator = 0; usbvision_ioctl_ops.vidioc_s_modulator = 0; usbvision_ioctl_ops.vidioc_cropcap = 0; usbvision_ioctl_ops.vidioc_g_crop = 0; usbvision_ioctl_ops.vidioc_s_crop = 0; usbvision_ioctl_ops.vidioc_g_selection = 0; usbvision_ioctl_ops.vidioc_s_selection = 0; usbvision_ioctl_ops.vidioc_g_jpegcomp = 0; usbvision_ioctl_ops.vidioc_s_jpegcomp = 0; usbvision_ioctl_ops.vidioc_g_enc_index = 0; usbvision_ioctl_ops.vidioc_encoder_cmd = 0; usbvision_ioctl_ops.vidioc_try_encoder_cmd = 0; usbvision_ioctl_ops.vidioc_decoder_cmd = 0; usbvision_ioctl_ops.vidioc_try_decoder_cmd = 0; usbvision_ioctl_ops.vidioc_g_parm = 0; usbvision_ioctl_ops.vidioc_s_parm = 0; usbvision_ioctl_ops.vidioc_g_tuner = &(vidioc_g_tuner); usbvision_ioctl_ops.vidioc_s_tuner = &(vidioc_s_tuner); usbvision_ioctl_ops.vidioc_g_frequency = &(vidioc_g_frequency); usbvision_ioctl_ops.vidioc_s_frequency = &(vidioc_s_frequency); usbvision_ioctl_ops.vidioc_enum_freq_bands = 0; usbvision_ioctl_ops.vidioc_g_sliced_vbi_cap = 0; usbvision_ioctl_ops.vidioc_log_status = 0; usbvision_ioctl_ops.vidioc_s_hw_freq_seek = 0; usbvision_ioctl_ops.vidioc_g_register = &(vidioc_g_register); usbvision_ioctl_ops.vidioc_s_register = &(vidioc_s_register); usbvision_ioctl_ops.vidioc_g_chip_info = 0; usbvision_ioctl_ops.vidioc_enum_framesizes = 0; usbvision_ioctl_ops.vidioc_enum_frameintervals = 0; usbvision_ioctl_ops.vidioc_s_dv_timings = 0; usbvision_ioctl_ops.vidioc_g_dv_timings = 0; usbvision_ioctl_ops.vidioc_query_dv_timings = 0; usbvision_ioctl_ops.vidioc_enum_dv_timings = 0; usbvision_ioctl_ops.vidioc_dv_timings_cap = 0; usbvision_ioctl_ops.vidioc_g_edid = 0; usbvision_ioctl_ops.vidioc_s_edid = 0; usbvision_ioctl_ops.vidioc_subscribe_event = 0; usbvision_ioctl_ops.vidioc_unsubscribe_event = 0; usbvision_ioctl_ops.vidioc_default = 0; usbvision_video_template.entity.list.next = 0; usbvision_video_template.entity.list.prev = 0; usbvision_video_template.entity.parent = 0; usbvision_video_template.entity.id = 0; usbvision_video_template.entity.name = 0; usbvision_video_template.entity.type = 0; usbvision_video_template.entity.revision = 0; usbvision_video_template.entity.flags = 0; usbvision_video_template.entity.group_id = 0; usbvision_video_template.entity.num_pads = 0; usbvision_video_template.entity.num_links = 0; usbvision_video_template.entity.num_backlinks = 0; usbvision_video_template.entity.max_links = 0; usbvision_video_template.entity.pads = 0; usbvision_video_template.entity.links = 0; usbvision_video_template.entity.ops = 0; usbvision_video_template.entity.stream_count = 0; usbvision_video_template.entity.use_count = 0; usbvision_video_template.entity.pipe = 0; usbvision_video_template.entity.info.alsa.card = 0; usbvision_video_template.entity.info.alsa.device = 0; usbvision_video_template.entity.info.alsa.subdevice = 0; usbvision_video_template.fops = &(usbvision_fops); usbvision_video_template.dev.parent = 0; usbvision_video_template.dev.p = 0; usbvision_video_template.dev.kobj.name = 0; usbvision_video_template.dev.kobj.entry.next = 0; usbvision_video_template.dev.kobj.entry.prev = 0; usbvision_video_template.dev.kobj.parent = 0; usbvision_video_template.dev.kobj.kset = 0; usbvision_video_template.dev.kobj.ktype = 0; usbvision_video_template.dev.kobj.sd = 0; usbvision_video_template.dev.kobj.kref.refcount.counter = 0; usbvision_video_template.dev.kobj.release.work.data.counter = 0; usbvision_video_template.dev.kobj.release.work.entry.next = 0; usbvision_video_template.dev.kobj.release.work.entry.prev = 0; usbvision_video_template.dev.kobj.release.work.func = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.key = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.name = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.cpu = 0; usbvision_video_template.dev.kobj.release.work.lockdep_map.ip = 0; usbvision_video_template.dev.kobj.release.timer.entry.next = 0; usbvision_video_template.dev.kobj.release.timer.entry.prev = 0; usbvision_video_template.dev.kobj.release.timer.expires = 0; usbvision_video_template.dev.kobj.release.timer.base = 0; usbvision_video_template.dev.kobj.release.timer.function = 0; usbvision_video_template.dev.kobj.release.timer.data = 0; usbvision_video_template.dev.kobj.release.timer.slack = 0; usbvision_video_template.dev.kobj.release.timer.start_pid = 0; usbvision_video_template.dev.kobj.release.timer.start_site = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 0 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 1 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 2 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 3 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 4 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 5 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 6 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 7 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 8 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 9 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 10 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 11 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 12 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 13 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 14 ] = 0; usbvision_video_template.dev.kobj.release.timer.start_comm[ 15 ] = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.key = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.name = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.cpu = 0; usbvision_video_template.dev.kobj.release.timer.lockdep_map.ip = 0; usbvision_video_template.dev.kobj.release.wq = 0; usbvision_video_template.dev.kobj.release.cpu = 0; usbvision_video_template.dev.kobj.state_initialized = 0; usbvision_video_template.dev.kobj.state_in_sysfs = 0; usbvision_video_template.dev.kobj.state_add_uevent_sent = 0; usbvision_video_template.dev.kobj.state_remove_uevent_sent = 0; usbvision_video_template.dev.kobj.uevent_suppress = 0; usbvision_video_template.dev.init_name = 0; usbvision_video_template.dev.type = 0; usbvision_video_template.dev.mutex.count.counter = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.dev.mutex.wait_list.next = 0; usbvision_video_template.dev.mutex.wait_list.prev = 0; usbvision_video_template.dev.mutex.owner = 0; usbvision_video_template.dev.mutex.magic = 0; usbvision_video_template.dev.mutex.dep_map.key = 0; usbvision_video_template.dev.mutex.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.mutex.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.mutex.dep_map.name = 0; usbvision_video_template.dev.mutex.dep_map.cpu = 0; usbvision_video_template.dev.mutex.dep_map.ip = 0; usbvision_video_template.dev.bus = 0; usbvision_video_template.dev.driver = 0; usbvision_video_template.dev.platform_data = 0; usbvision_video_template.dev.driver_data = 0; usbvision_video_template.dev.power.power_state.event = 0; usbvision_video_template.dev.power.can_wakeup = 0; usbvision_video_template.dev.power.async_suspend = 0; usbvision_video_template.dev.power.is_prepared = 0; usbvision_video_template.dev.power.is_suspended = 0; usbvision_video_template.dev.power.is_noirq_suspended = 0; usbvision_video_template.dev.power.is_late_suspended = 0; usbvision_video_template.dev.power.ignore_children = 0; usbvision_video_template.dev.power.early_init = 0; usbvision_video_template.dev.power.direct_complete = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.dev.power.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.dev.power.entry.next = 0; usbvision_video_template.dev.power.entry.prev = 0; usbvision_video_template.dev.power.completion.done = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.dev.power.completion.wait.task_list.next = 0; usbvision_video_template.dev.power.completion.wait.task_list.prev = 0; usbvision_video_template.dev.power.wakeup = 0; usbvision_video_template.dev.power.wakeup_path = 0; usbvision_video_template.dev.power.syscore = 0; usbvision_video_template.dev.power.suspend_timer.entry.next = 0; usbvision_video_template.dev.power.suspend_timer.entry.prev = 0; usbvision_video_template.dev.power.suspend_timer.expires = 0; usbvision_video_template.dev.power.suspend_timer.base = 0; usbvision_video_template.dev.power.suspend_timer.function = 0; usbvision_video_template.dev.power.suspend_timer.data = 0; usbvision_video_template.dev.power.suspend_timer.slack = 0; usbvision_video_template.dev.power.suspend_timer.start_pid = 0; usbvision_video_template.dev.power.suspend_timer.start_site = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 0 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 1 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 2 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 3 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 4 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 5 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 6 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 7 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 8 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 9 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 10 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 11 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 12 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 13 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 14 ] = 0; usbvision_video_template.dev.power.suspend_timer.start_comm[ 15 ] = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.key = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.name = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.cpu = 0; usbvision_video_template.dev.power.suspend_timer.lockdep_map.ip = 0; usbvision_video_template.dev.power.timer_expires = 0; usbvision_video_template.dev.power.work.data.counter = 0; usbvision_video_template.dev.power.work.entry.next = 0; usbvision_video_template.dev.power.work.entry.prev = 0; usbvision_video_template.dev.power.work.func = 0; usbvision_video_template.dev.power.work.lockdep_map.key = 0; usbvision_video_template.dev.power.work.lockdep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.power.work.lockdep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.power.work.lockdep_map.name = 0; usbvision_video_template.dev.power.work.lockdep_map.cpu = 0; usbvision_video_template.dev.power.work.lockdep_map.ip = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.dev.power.wait_queue.task_list.next = 0; usbvision_video_template.dev.power.wait_queue.task_list.prev = 0; usbvision_video_template.dev.power.usage_count.counter = 0; usbvision_video_template.dev.power.child_count.counter = 0; usbvision_video_template.dev.power.disable_depth = 0; usbvision_video_template.dev.power.idle_notification = 0; usbvision_video_template.dev.power.request_pending = 0; usbvision_video_template.dev.power.deferred_resume = 0; usbvision_video_template.dev.power.run_wake = 0; usbvision_video_template.dev.power.runtime_auto = 0; usbvision_video_template.dev.power.no_callbacks = 0; usbvision_video_template.dev.power.irq_safe = 0; usbvision_video_template.dev.power.use_autosuspend = 0; usbvision_video_template.dev.power.timer_autosuspends = 0; usbvision_video_template.dev.power.memalloc_noio = 0; usbvision_video_template.dev.power.request = 0; usbvision_video_template.dev.power.runtime_status = 0; usbvision_video_template.dev.power.runtime_error = 0; usbvision_video_template.dev.power.autosuspend_delay = 0; usbvision_video_template.dev.power.last_busy = 0; usbvision_video_template.dev.power.active_jiffies = 0; usbvision_video_template.dev.power.suspended_jiffies = 0; usbvision_video_template.dev.power.accounting_timestamp = 0; usbvision_video_template.dev.power.subsys_data = 0; usbvision_video_template.dev.power.set_latency_tolerance = 0; usbvision_video_template.dev.power.qos = 0; usbvision_video_template.dev.pm_domain = 0; usbvision_video_template.dev.pins = 0; usbvision_video_template.dev.numa_node = 0; usbvision_video_template.dev.dma_mask = 0; usbvision_video_template.dev.coherent_dma_mask = 0; usbvision_video_template.dev.dma_pfn_offset = 0; usbvision_video_template.dev.dma_parms = 0; usbvision_video_template.dev.dma_pools.next = 0; usbvision_video_template.dev.dma_pools.prev = 0; usbvision_video_template.dev.dma_mem = 0; usbvision_video_template.dev.cma_area = 0; usbvision_video_template.dev.archdata.dma_ops = 0; usbvision_video_template.dev.archdata.iommu = 0; usbvision_video_template.dev.of_node = 0; usbvision_video_template.dev.acpi_node.companion = 0; usbvision_video_template.dev.devt = 0; usbvision_video_template.dev.id = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.dev.devres_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.dev.devres_head.next = 0; usbvision_video_template.dev.devres_head.prev = 0; usbvision_video_template.dev.knode_class.n_klist = 0; usbvision_video_template.dev.knode_class.n_node.next = 0; usbvision_video_template.dev.knode_class.n_node.prev = 0; usbvision_video_template.dev.knode_class.n_ref.refcount.counter = 0; usbvision_video_template.dev.class = 0; usbvision_video_template.dev.groups = 0; usbvision_video_template.dev.release = 0; usbvision_video_template.dev.iommu_group = 0; usbvision_video_template.dev.offline_disabled = 0; usbvision_video_template.dev.offline = 0; usbvision_video_template.cdev = 0; usbvision_video_template.v4l2_dev = 0; usbvision_video_template.dev_parent = 0; usbvision_video_template.ctrl_handler = 0; usbvision_video_template.queue = 0; usbvision_video_template.prio = 0; usbvision_video_template.name[ 0 ] = 117; usbvision_video_template.name[ 1 ] = 115; usbvision_video_template.name[ 2 ] = 98; usbvision_video_template.name[ 3 ] = 118; usbvision_video_template.name[ 4 ] = 105; usbvision_video_template.name[ 5 ] = 115; usbvision_video_template.name[ 6 ] = 105; usbvision_video_template.name[ 7 ] = 111; usbvision_video_template.name[ 8 ] = 110; usbvision_video_template.name[ 9 ] = 45; usbvision_video_template.name[ 10 ] = 118; usbvision_video_template.name[ 11 ] = 105; usbvision_video_template.name[ 12 ] = 100; usbvision_video_template.name[ 13 ] = 101; usbvision_video_template.name[ 14 ] = 111; usbvision_video_template.name[ 15 ] = 0; usbvision_video_template.name[ 16 ] = 0; usbvision_video_template.name[ 17 ] = 0; usbvision_video_template.name[ 18 ] = 0; usbvision_video_template.name[ 19 ] = 0; usbvision_video_template.name[ 20 ] = 0; usbvision_video_template.name[ 21 ] = 0; usbvision_video_template.name[ 22 ] = 0; usbvision_video_template.name[ 23 ] = 0; usbvision_video_template.name[ 24 ] = 0; usbvision_video_template.name[ 25 ] = 0; usbvision_video_template.name[ 26 ] = 0; usbvision_video_template.name[ 27 ] = 0; usbvision_video_template.name[ 28 ] = 0; usbvision_video_template.name[ 29 ] = 0; usbvision_video_template.name[ 30 ] = 0; usbvision_video_template.name[ 31 ] = 0; usbvision_video_template.vfl_type = 0; usbvision_video_template.vfl_dir = 0; usbvision_video_template.minor = 0; usbvision_video_template.num = 0; usbvision_video_template.flags = 0; usbvision_video_template.index = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.magic = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.owner = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_video_template.fh_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_video_template.fh_list.next = 0; usbvision_video_template.fh_list.prev = 0; usbvision_video_template.dev_debug = 0; usbvision_video_template.tvnorms = 16757247; usbvision_video_template.release = &(video_device_release); usbvision_video_template.ioctl_ops = &(usbvision_ioctl_ops); usbvision_video_template.valid_ioctls[ 0 ] = 0; usbvision_video_template.valid_ioctls[ 1 ] = 0; usbvision_video_template.valid_ioctls[ 2 ] = 0; usbvision_video_template.disable_locking[ 0 ] = 0; usbvision_video_template.disable_locking[ 1 ] = 0; usbvision_video_template.disable_locking[ 2 ] = 0; usbvision_video_template.lock = 0; usbvision_radio_fops.owner = &(__this_module); usbvision_radio_fops.read = 0; usbvision_radio_fops.write = 0; usbvision_radio_fops.poll = 0; usbvision_radio_fops.ioctl = 0; usbvision_radio_fops.unlocked_ioctl = &(video_ioctl2); usbvision_radio_fops.compat_ioctl32 = 0; usbvision_radio_fops.get_unmapped_area = 0; usbvision_radio_fops.mmap = 0; usbvision_radio_fops.open = &(usbvision_radio_open); usbvision_radio_fops.release = &(usbvision_radio_close); usbvision_radio_ioctl_ops.vidioc_querycap = &(vidioc_querycap); usbvision_radio_ioctl_ops.vidioc_g_priority = 0; usbvision_radio_ioctl_ops.vidioc_s_priority = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_vid_cap = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_vid_overlay = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_vid_out = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_vid_cap_mplane = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_vid_out_mplane = 0; usbvision_radio_ioctl_ops.vidioc_enum_fmt_sdr_cap = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_cap = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_overlay = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_out = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_out_overlay = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_sliced_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_sliced_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_cap_mplane = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_vid_out_mplane = 0; usbvision_radio_ioctl_ops.vidioc_g_fmt_sdr_cap = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_cap = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_overlay = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_out = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_out_overlay = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_sliced_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_sliced_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_cap_mplane = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_vid_out_mplane = 0; usbvision_radio_ioctl_ops.vidioc_s_fmt_sdr_cap = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_cap = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_overlay = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_out = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_out_overlay = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_sliced_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_sliced_vbi_out = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_cap_mplane = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_vid_out_mplane = 0; usbvision_radio_ioctl_ops.vidioc_try_fmt_sdr_cap = 0; usbvision_radio_ioctl_ops.vidioc_reqbufs = 0; usbvision_radio_ioctl_ops.vidioc_querybuf = 0; usbvision_radio_ioctl_ops.vidioc_qbuf = 0; usbvision_radio_ioctl_ops.vidioc_expbuf = 0; usbvision_radio_ioctl_ops.vidioc_dqbuf = 0; usbvision_radio_ioctl_ops.vidioc_create_bufs = 0; usbvision_radio_ioctl_ops.vidioc_prepare_buf = 0; usbvision_radio_ioctl_ops.vidioc_overlay = 0; usbvision_radio_ioctl_ops.vidioc_g_fbuf = 0; usbvision_radio_ioctl_ops.vidioc_s_fbuf = 0; usbvision_radio_ioctl_ops.vidioc_streamon = 0; usbvision_radio_ioctl_ops.vidioc_streamoff = 0; usbvision_radio_ioctl_ops.vidioc_g_std = 0; usbvision_radio_ioctl_ops.vidioc_s_std = 0; usbvision_radio_ioctl_ops.vidioc_querystd = 0; usbvision_radio_ioctl_ops.vidioc_enum_input = &(vidioc_enum_input); usbvision_radio_ioctl_ops.vidioc_g_input = &(vidioc_g_input); usbvision_radio_ioctl_ops.vidioc_s_input = &(vidioc_s_input); usbvision_radio_ioctl_ops.vidioc_enum_output = 0; usbvision_radio_ioctl_ops.vidioc_g_output = 0; usbvision_radio_ioctl_ops.vidioc_s_output = 0; usbvision_radio_ioctl_ops.vidioc_queryctrl = &(vidioc_queryctrl); usbvision_radio_ioctl_ops.vidioc_query_ext_ctrl = 0; usbvision_radio_ioctl_ops.vidioc_g_ctrl = &(vidioc_g_ctrl); usbvision_radio_ioctl_ops.vidioc_s_ctrl = &(vidioc_s_ctrl); usbvision_radio_ioctl_ops.vidioc_g_ext_ctrls = 0; usbvision_radio_ioctl_ops.vidioc_s_ext_ctrls = 0; usbvision_radio_ioctl_ops.vidioc_try_ext_ctrls = 0; usbvision_radio_ioctl_ops.vidioc_querymenu = 0; usbvision_radio_ioctl_ops.vidioc_enumaudio = 0; usbvision_radio_ioctl_ops.vidioc_g_audio = &(vidioc_g_audio); usbvision_radio_ioctl_ops.vidioc_s_audio = &(vidioc_s_audio); usbvision_radio_ioctl_ops.vidioc_enumaudout = 0; usbvision_radio_ioctl_ops.vidioc_g_audout = 0; usbvision_radio_ioctl_ops.vidioc_s_audout = 0; usbvision_radio_ioctl_ops.vidioc_g_modulator = 0; usbvision_radio_ioctl_ops.vidioc_s_modulator = 0; usbvision_radio_ioctl_ops.vidioc_cropcap = 0; usbvision_radio_ioctl_ops.vidioc_g_crop = 0; usbvision_radio_ioctl_ops.vidioc_s_crop = 0; usbvision_radio_ioctl_ops.vidioc_g_selection = 0; usbvision_radio_ioctl_ops.vidioc_s_selection = 0; usbvision_radio_ioctl_ops.vidioc_g_jpegcomp = 0; usbvision_radio_ioctl_ops.vidioc_s_jpegcomp = 0; usbvision_radio_ioctl_ops.vidioc_g_enc_index = 0; usbvision_radio_ioctl_ops.vidioc_encoder_cmd = 0; usbvision_radio_ioctl_ops.vidioc_try_encoder_cmd = 0; usbvision_radio_ioctl_ops.vidioc_decoder_cmd = 0; usbvision_radio_ioctl_ops.vidioc_try_decoder_cmd = 0; usbvision_radio_ioctl_ops.vidioc_g_parm = 0; usbvision_radio_ioctl_ops.vidioc_s_parm = 0; usbvision_radio_ioctl_ops.vidioc_g_tuner = &(vidioc_g_tuner); usbvision_radio_ioctl_ops.vidioc_s_tuner = &(vidioc_s_tuner); usbvision_radio_ioctl_ops.vidioc_g_frequency = &(vidioc_g_frequency); usbvision_radio_ioctl_ops.vidioc_s_frequency = &(vidioc_s_frequency); usbvision_radio_ioctl_ops.vidioc_enum_freq_bands = 0; usbvision_radio_ioctl_ops.vidioc_g_sliced_vbi_cap = 0; usbvision_radio_ioctl_ops.vidioc_log_status = 0; usbvision_radio_ioctl_ops.vidioc_s_hw_freq_seek = 0; usbvision_radio_ioctl_ops.vidioc_g_register = 0; usbvision_radio_ioctl_ops.vidioc_s_register = 0; usbvision_radio_ioctl_ops.vidioc_g_chip_info = 0; usbvision_radio_ioctl_ops.vidioc_enum_framesizes = 0; usbvision_radio_ioctl_ops.vidioc_enum_frameintervals = 0; usbvision_radio_ioctl_ops.vidioc_s_dv_timings = 0; usbvision_radio_ioctl_ops.vidioc_g_dv_timings = 0; usbvision_radio_ioctl_ops.vidioc_query_dv_timings = 0; usbvision_radio_ioctl_ops.vidioc_enum_dv_timings = 0; usbvision_radio_ioctl_ops.vidioc_dv_timings_cap = 0; usbvision_radio_ioctl_ops.vidioc_g_edid = 0; usbvision_radio_ioctl_ops.vidioc_s_edid = 0; usbvision_radio_ioctl_ops.vidioc_subscribe_event = 0; usbvision_radio_ioctl_ops.vidioc_unsubscribe_event = 0; usbvision_radio_ioctl_ops.vidioc_default = 0; usbvision_radio_template.entity.list.next = 0; usbvision_radio_template.entity.list.prev = 0; usbvision_radio_template.entity.parent = 0; usbvision_radio_template.entity.id = 0; usbvision_radio_template.entity.name = 0; usbvision_radio_template.entity.type = 0; usbvision_radio_template.entity.revision = 0; usbvision_radio_template.entity.flags = 0; usbvision_radio_template.entity.group_id = 0; usbvision_radio_template.entity.num_pads = 0; usbvision_radio_template.entity.num_links = 0; usbvision_radio_template.entity.num_backlinks = 0; usbvision_radio_template.entity.max_links = 0; usbvision_radio_template.entity.pads = 0; usbvision_radio_template.entity.links = 0; usbvision_radio_template.entity.ops = 0; usbvision_radio_template.entity.stream_count = 0; usbvision_radio_template.entity.use_count = 0; usbvision_radio_template.entity.pipe = 0; usbvision_radio_template.entity.info.alsa.card = 0; usbvision_radio_template.entity.info.alsa.device = 0; usbvision_radio_template.entity.info.alsa.subdevice = 0; usbvision_radio_template.fops = &(usbvision_radio_fops); usbvision_radio_template.dev.parent = 0; usbvision_radio_template.dev.p = 0; usbvision_radio_template.dev.kobj.name = 0; usbvision_radio_template.dev.kobj.entry.next = 0; usbvision_radio_template.dev.kobj.entry.prev = 0; usbvision_radio_template.dev.kobj.parent = 0; usbvision_radio_template.dev.kobj.kset = 0; usbvision_radio_template.dev.kobj.ktype = 0; usbvision_radio_template.dev.kobj.sd = 0; usbvision_radio_template.dev.kobj.kref.refcount.counter = 0; usbvision_radio_template.dev.kobj.release.work.data.counter = 0; usbvision_radio_template.dev.kobj.release.work.entry.next = 0; usbvision_radio_template.dev.kobj.release.work.entry.prev = 0; usbvision_radio_template.dev.kobj.release.work.func = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.key = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.name = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.cpu = 0; usbvision_radio_template.dev.kobj.release.work.lockdep_map.ip = 0; usbvision_radio_template.dev.kobj.release.timer.entry.next = 0; usbvision_radio_template.dev.kobj.release.timer.entry.prev = 0; usbvision_radio_template.dev.kobj.release.timer.expires = 0; usbvision_radio_template.dev.kobj.release.timer.base = 0; usbvision_radio_template.dev.kobj.release.timer.function = 0; usbvision_radio_template.dev.kobj.release.timer.data = 0; usbvision_radio_template.dev.kobj.release.timer.slack = 0; usbvision_radio_template.dev.kobj.release.timer.start_pid = 0; usbvision_radio_template.dev.kobj.release.timer.start_site = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 0 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 1 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 2 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 3 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 4 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 5 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 6 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 7 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 8 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 9 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 10 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 11 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 12 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 13 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 14 ] = 0; usbvision_radio_template.dev.kobj.release.timer.start_comm[ 15 ] = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.key = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.name = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.cpu = 0; usbvision_radio_template.dev.kobj.release.timer.lockdep_map.ip = 0; usbvision_radio_template.dev.kobj.release.wq = 0; usbvision_radio_template.dev.kobj.release.cpu = 0; usbvision_radio_template.dev.kobj.state_initialized = 0; usbvision_radio_template.dev.kobj.state_in_sysfs = 0; usbvision_radio_template.dev.kobj.state_add_uevent_sent = 0; usbvision_radio_template.dev.kobj.state_remove_uevent_sent = 0; usbvision_radio_template.dev.kobj.uevent_suppress = 0; usbvision_radio_template.dev.init_name = 0; usbvision_radio_template.dev.type = 0; usbvision_radio_template.dev.mutex.count.counter = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.dev.mutex.wait_list.next = 0; usbvision_radio_template.dev.mutex.wait_list.prev = 0; usbvision_radio_template.dev.mutex.owner = 0; usbvision_radio_template.dev.mutex.magic = 0; usbvision_radio_template.dev.mutex.dep_map.key = 0; usbvision_radio_template.dev.mutex.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.mutex.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.mutex.dep_map.name = 0; usbvision_radio_template.dev.mutex.dep_map.cpu = 0; usbvision_radio_template.dev.mutex.dep_map.ip = 0; usbvision_radio_template.dev.bus = 0; usbvision_radio_template.dev.driver = 0; usbvision_radio_template.dev.platform_data = 0; usbvision_radio_template.dev.driver_data = 0; usbvision_radio_template.dev.power.power_state.event = 0; usbvision_radio_template.dev.power.can_wakeup = 0; usbvision_radio_template.dev.power.async_suspend = 0; usbvision_radio_template.dev.power.is_prepared = 0; usbvision_radio_template.dev.power.is_suspended = 0; usbvision_radio_template.dev.power.is_noirq_suspended = 0; usbvision_radio_template.dev.power.is_late_suspended = 0; usbvision_radio_template.dev.power.ignore_children = 0; usbvision_radio_template.dev.power.early_init = 0; usbvision_radio_template.dev.power.direct_complete = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.dev.power.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.dev.power.entry.next = 0; usbvision_radio_template.dev.power.entry.prev = 0; usbvision_radio_template.dev.power.completion.done = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.dev.power.completion.wait.task_list.next = 0; usbvision_radio_template.dev.power.completion.wait.task_list.prev = 0; usbvision_radio_template.dev.power.wakeup = 0; usbvision_radio_template.dev.power.wakeup_path = 0; usbvision_radio_template.dev.power.syscore = 0; usbvision_radio_template.dev.power.suspend_timer.entry.next = 0; usbvision_radio_template.dev.power.suspend_timer.entry.prev = 0; usbvision_radio_template.dev.power.suspend_timer.expires = 0; usbvision_radio_template.dev.power.suspend_timer.base = 0; usbvision_radio_template.dev.power.suspend_timer.function = 0; usbvision_radio_template.dev.power.suspend_timer.data = 0; usbvision_radio_template.dev.power.suspend_timer.slack = 0; usbvision_radio_template.dev.power.suspend_timer.start_pid = 0; usbvision_radio_template.dev.power.suspend_timer.start_site = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 0 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 1 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 2 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 3 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 4 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 5 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 6 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 7 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 8 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 9 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 10 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 11 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 12 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 13 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 14 ] = 0; usbvision_radio_template.dev.power.suspend_timer.start_comm[ 15 ] = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.key = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.name = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.cpu = 0; usbvision_radio_template.dev.power.suspend_timer.lockdep_map.ip = 0; usbvision_radio_template.dev.power.timer_expires = 0; usbvision_radio_template.dev.power.work.data.counter = 0; usbvision_radio_template.dev.power.work.entry.next = 0; usbvision_radio_template.dev.power.work.entry.prev = 0; usbvision_radio_template.dev.power.work.func = 0; usbvision_radio_template.dev.power.work.lockdep_map.key = 0; usbvision_radio_template.dev.power.work.lockdep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.power.work.lockdep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.power.work.lockdep_map.name = 0; usbvision_radio_template.dev.power.work.lockdep_map.cpu = 0; usbvision_radio_template.dev.power.work.lockdep_map.ip = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.dev.power.wait_queue.task_list.next = 0; usbvision_radio_template.dev.power.wait_queue.task_list.prev = 0; usbvision_radio_template.dev.power.usage_count.counter = 0; usbvision_radio_template.dev.power.child_count.counter = 0; usbvision_radio_template.dev.power.disable_depth = 0; usbvision_radio_template.dev.power.idle_notification = 0; usbvision_radio_template.dev.power.request_pending = 0; usbvision_radio_template.dev.power.deferred_resume = 0; usbvision_radio_template.dev.power.run_wake = 0; usbvision_radio_template.dev.power.runtime_auto = 0; usbvision_radio_template.dev.power.no_callbacks = 0; usbvision_radio_template.dev.power.irq_safe = 0; usbvision_radio_template.dev.power.use_autosuspend = 0; usbvision_radio_template.dev.power.timer_autosuspends = 0; usbvision_radio_template.dev.power.memalloc_noio = 0; usbvision_radio_template.dev.power.request = 0; usbvision_radio_template.dev.power.runtime_status = 0; usbvision_radio_template.dev.power.runtime_error = 0; usbvision_radio_template.dev.power.autosuspend_delay = 0; usbvision_radio_template.dev.power.last_busy = 0; usbvision_radio_template.dev.power.active_jiffies = 0; usbvision_radio_template.dev.power.suspended_jiffies = 0; usbvision_radio_template.dev.power.accounting_timestamp = 0; usbvision_radio_template.dev.power.subsys_data = 0; usbvision_radio_template.dev.power.set_latency_tolerance = 0; usbvision_radio_template.dev.power.qos = 0; usbvision_radio_template.dev.pm_domain = 0; usbvision_radio_template.dev.pins = 0; usbvision_radio_template.dev.numa_node = 0; usbvision_radio_template.dev.dma_mask = 0; usbvision_radio_template.dev.coherent_dma_mask = 0; usbvision_radio_template.dev.dma_pfn_offset = 0; usbvision_radio_template.dev.dma_parms = 0; usbvision_radio_template.dev.dma_pools.next = 0; usbvision_radio_template.dev.dma_pools.prev = 0; usbvision_radio_template.dev.dma_mem = 0; usbvision_radio_template.dev.cma_area = 0; usbvision_radio_template.dev.archdata.dma_ops = 0; usbvision_radio_template.dev.archdata.iommu = 0; usbvision_radio_template.dev.of_node = 0; usbvision_radio_template.dev.acpi_node.companion = 0; usbvision_radio_template.dev.devt = 0; usbvision_radio_template.dev.id = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.dev.devres_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.dev.devres_head.next = 0; usbvision_radio_template.dev.devres_head.prev = 0; usbvision_radio_template.dev.knode_class.n_klist = 0; usbvision_radio_template.dev.knode_class.n_node.next = 0; usbvision_radio_template.dev.knode_class.n_node.prev = 0; usbvision_radio_template.dev.knode_class.n_ref.refcount.counter = 0; usbvision_radio_template.dev.class = 0; usbvision_radio_template.dev.groups = 0; usbvision_radio_template.dev.release = 0; usbvision_radio_template.dev.iommu_group = 0; usbvision_radio_template.dev.offline_disabled = 0; usbvision_radio_template.dev.offline = 0; usbvision_radio_template.cdev = 0; usbvision_radio_template.v4l2_dev = 0; usbvision_radio_template.dev_parent = 0; usbvision_radio_template.ctrl_handler = 0; usbvision_radio_template.queue = 0; usbvision_radio_template.prio = 0; usbvision_radio_template.name[ 0 ] = 117; usbvision_radio_template.name[ 1 ] = 115; usbvision_radio_template.name[ 2 ] = 98; usbvision_radio_template.name[ 3 ] = 118; usbvision_radio_template.name[ 4 ] = 105; usbvision_radio_template.name[ 5 ] = 115; usbvision_radio_template.name[ 6 ] = 105; usbvision_radio_template.name[ 7 ] = 111; usbvision_radio_template.name[ 8 ] = 110; usbvision_radio_template.name[ 9 ] = 45; usbvision_radio_template.name[ 10 ] = 114; usbvision_radio_template.name[ 11 ] = 97; usbvision_radio_template.name[ 12 ] = 100; usbvision_radio_template.name[ 13 ] = 105; usbvision_radio_template.name[ 14 ] = 111; usbvision_radio_template.name[ 15 ] = 0; usbvision_radio_template.name[ 16 ] = 0; usbvision_radio_template.name[ 17 ] = 0; usbvision_radio_template.name[ 18 ] = 0; usbvision_radio_template.name[ 19 ] = 0; usbvision_radio_template.name[ 20 ] = 0; usbvision_radio_template.name[ 21 ] = 0; usbvision_radio_template.name[ 22 ] = 0; usbvision_radio_template.name[ 23 ] = 0; usbvision_radio_template.name[ 24 ] = 0; usbvision_radio_template.name[ 25 ] = 0; usbvision_radio_template.name[ 26 ] = 0; usbvision_radio_template.name[ 27 ] = 0; usbvision_radio_template.name[ 28 ] = 0; usbvision_radio_template.name[ 29 ] = 0; usbvision_radio_template.name[ 30 ] = 0; usbvision_radio_template.name[ 31 ] = 0; usbvision_radio_template.vfl_type = 0; usbvision_radio_template.vfl_dir = 0; usbvision_radio_template.minor = 0; usbvision_radio_template.num = 0; usbvision_radio_template.flags = 0; usbvision_radio_template.index = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.magic = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.owner = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_radio_template.fh_lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_radio_template.fh_list.next = 0; usbvision_radio_template.fh_list.prev = 0; usbvision_radio_template.dev_debug = 0; usbvision_radio_template.tvnorms = 0; usbvision_radio_template.release = &(video_device_release); usbvision_radio_template.ioctl_ops = &(usbvision_radio_ioctl_ops); usbvision_radio_template.valid_ioctls[ 0 ] = 0; usbvision_radio_template.valid_ioctls[ 1 ] = 0; usbvision_radio_template.valid_ioctls[ 2 ] = 0; usbvision_radio_template.disable_locking[ 0 ] = 0; usbvision_radio_template.disable_locking[ 1 ] = 0; usbvision_radio_template.disable_locking[ 2 ] = 0; usbvision_radio_template.lock = 0; usbvision_driver.name = "usbvision"; usbvision_driver.probe = &(usbvision_probe); usbvision_driver.disconnect = &(usbvision_disconnect); usbvision_driver.unlocked_ioctl = 0; usbvision_driver.suspend = 0; usbvision_driver.resume = 0; usbvision_driver.reset_resume = 0; usbvision_driver.pre_reset = 0; usbvision_driver.post_reset = 0; usbvision_driver.id_table = &(usbvision_table); usbvision_driver.dynids.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.magic = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.owner_cpu = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.owner = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.key = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.name = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.cpu = 0; usbvision_driver.dynids.lock.__annonCompField19.rlock.dep_map.ip = 0; usbvision_driver.dynids.list.next = 0; usbvision_driver.dynids.list.prev = 0; usbvision_driver.drvwrap.driver.name = 0; usbvision_driver.drvwrap.driver.bus = 0; usbvision_driver.drvwrap.driver.owner = 0; usbvision_driver.drvwrap.driver.mod_name = 0; usbvision_driver.drvwrap.driver.suppress_bind_attrs = 0; usbvision_driver.drvwrap.driver.of_match_table = 0; usbvision_driver.drvwrap.driver.acpi_match_table = 0; usbvision_driver.drvwrap.driver.probe = 0; usbvision_driver.drvwrap.driver.remove = 0; usbvision_driver.drvwrap.driver.shutdown = 0; usbvision_driver.drvwrap.driver.suspend = 0; usbvision_driver.drvwrap.driver.resume = 0; usbvision_driver.drvwrap.driver.groups = 0; usbvision_driver.drvwrap.driver.pm = 0; usbvision_driver.drvwrap.driver.p = 0; usbvision_driver.drvwrap.for_devices = 0; usbvision_driver.no_dynamic_id = 0; usbvision_driver.supports_autosuspend = 0; usbvision_driver.disable_hub_initiated_lpm = 0; usbvision_driver.soft_unbind = 0; return ; } -__BLAST_initialize_/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/rcv/132_1a/main-ldv_main1_sequence_infinite_withcheck_stateful/preprocess/1-cpp/drivers/media/usb/usbvision/usbvision-i2c.o.i() { 171 -usbvision_algo.master_xfer = &(usbvision_i2c_xfer); usbvision_algo.smbus_xfer = 0; usbvision_algo.functionality = &(functionality); usbvision_algo.reg_slave = 0; usbvision_algo.unreg_slave = 0; i2c_adap_template.owner = &(__this_module); i2c_adap_template.class = 0; i2c_adap_template.algo = 0; i2c_adap_template.algo_data = 0; i2c_adap_template.bus_lock.wait_lock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.bus_lock.wait_lock.magic = 0; i2c_adap_template.bus_lock.wait_lock.owner_cpu = 0; i2c_adap_template.bus_lock.wait_lock.owner = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.key = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.name = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.cpu = 0; i2c_adap_template.bus_lock.wait_lock.dep_map.ip = 0; i2c_adap_template.bus_lock.waiters.rb_node = 0; i2c_adap_template.bus_lock.waiters_leftmost = 0; i2c_adap_template.bus_lock.owner = 0; i2c_adap_template.bus_lock.save_state = 0; i2c_adap_template.bus_lock.name = 0; i2c_adap_template.bus_lock.file = 0; i2c_adap_template.bus_lock.line = 0; i2c_adap_template.bus_lock.magic = 0; i2c_adap_template.timeout = 0; i2c_adap_template.retries = 0; i2c_adap_template.dev.parent = 0; i2c_adap_template.dev.p = 0; i2c_adap_template.dev.kobj.name = 0; i2c_adap_template.dev.kobj.entry.next = 0; i2c_adap_template.dev.kobj.entry.prev = 0; i2c_adap_template.dev.kobj.parent = 0; i2c_adap_template.dev.kobj.kset = 0; i2c_adap_template.dev.kobj.ktype = 0; i2c_adap_template.dev.kobj.sd = 0; i2c_adap_template.dev.kobj.kref.refcount.counter = 0; i2c_adap_template.dev.kobj.release.work.data.counter = 0; i2c_adap_template.dev.kobj.release.work.entry.next = 0; i2c_adap_template.dev.kobj.release.work.entry.prev = 0; i2c_adap_template.dev.kobj.release.work.func = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.key = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.name = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.cpu = 0; i2c_adap_template.dev.kobj.release.work.lockdep_map.ip = 0; i2c_adap_template.dev.kobj.release.timer.entry.next = 0; i2c_adap_template.dev.kobj.release.timer.entry.prev = 0; i2c_adap_template.dev.kobj.release.timer.expires = 0; i2c_adap_template.dev.kobj.release.timer.base = 0; i2c_adap_template.dev.kobj.release.timer.function = 0; i2c_adap_template.dev.kobj.release.timer.data = 0; i2c_adap_template.dev.kobj.release.timer.slack = 0; i2c_adap_template.dev.kobj.release.timer.start_pid = 0; i2c_adap_template.dev.kobj.release.timer.start_site = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 0 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 1 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 2 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 3 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 4 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 5 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 6 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 7 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 8 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 9 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 10 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 11 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 12 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 13 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 14 ] = 0; i2c_adap_template.dev.kobj.release.timer.start_comm[ 15 ] = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.key = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.name = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.cpu = 0; i2c_adap_template.dev.kobj.release.timer.lockdep_map.ip = 0; i2c_adap_template.dev.kobj.release.wq = 0; i2c_adap_template.dev.kobj.release.cpu = 0; i2c_adap_template.dev.kobj.state_initialized = 0; i2c_adap_template.dev.kobj.state_in_sysfs = 0; i2c_adap_template.dev.kobj.state_add_uevent_sent = 0; i2c_adap_template.dev.kobj.state_remove_uevent_sent = 0; i2c_adap_template.dev.kobj.uevent_suppress = 0; i2c_adap_template.dev.init_name = 0; i2c_adap_template.dev.type = 0; i2c_adap_template.dev.mutex.count.counter = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev.mutex.wait_lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev.mutex.wait_list.next = 0; i2c_adap_template.dev.mutex.wait_list.prev = 0; i2c_adap_template.dev.mutex.owner = 0; i2c_adap_template.dev.mutex.magic = 0; i2c_adap_template.dev.mutex.dep_map.key = 0; i2c_adap_template.dev.mutex.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.mutex.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.mutex.dep_map.name = 0; i2c_adap_template.dev.mutex.dep_map.cpu = 0; i2c_adap_template.dev.mutex.dep_map.ip = 0; i2c_adap_template.dev.bus = 0; i2c_adap_template.dev.driver = 0; i2c_adap_template.dev.platform_data = 0; i2c_adap_template.dev.driver_data = 0; i2c_adap_template.dev.power.power_state.event = 0; i2c_adap_template.dev.power.can_wakeup = 0; i2c_adap_template.dev.power.async_suspend = 0; i2c_adap_template.dev.power.is_prepared = 0; i2c_adap_template.dev.power.is_suspended = 0; i2c_adap_template.dev.power.is_noirq_suspended = 0; i2c_adap_template.dev.power.is_late_suspended = 0; i2c_adap_template.dev.power.ignore_children = 0; i2c_adap_template.dev.power.early_init = 0; i2c_adap_template.dev.power.direct_complete = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev.power.lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev.power.entry.next = 0; i2c_adap_template.dev.power.entry.prev = 0; i2c_adap_template.dev.power.completion.done = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev.power.completion.wait.lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev.power.completion.wait.task_list.next = 0; i2c_adap_template.dev.power.completion.wait.task_list.prev = 0; i2c_adap_template.dev.power.wakeup = 0; i2c_adap_template.dev.power.wakeup_path = 0; i2c_adap_template.dev.power.syscore = 0; i2c_adap_template.dev.power.suspend_timer.entry.next = 0; i2c_adap_template.dev.power.suspend_timer.entry.prev = 0; i2c_adap_template.dev.power.suspend_timer.expires = 0; i2c_adap_template.dev.power.suspend_timer.base = 0; i2c_adap_template.dev.power.suspend_timer.function = 0; i2c_adap_template.dev.power.suspend_timer.data = 0; i2c_adap_template.dev.power.suspend_timer.slack = 0; i2c_adap_template.dev.power.suspend_timer.start_pid = 0; i2c_adap_template.dev.power.suspend_timer.start_site = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 0 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 1 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 2 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 3 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 4 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 5 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 6 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 7 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 8 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 9 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 10 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 11 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 12 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 13 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 14 ] = 0; i2c_adap_template.dev.power.suspend_timer.start_comm[ 15 ] = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.key = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.name = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.cpu = 0; i2c_adap_template.dev.power.suspend_timer.lockdep_map.ip = 0; i2c_adap_template.dev.power.timer_expires = 0; i2c_adap_template.dev.power.work.data.counter = 0; i2c_adap_template.dev.power.work.entry.next = 0; i2c_adap_template.dev.power.work.entry.prev = 0; i2c_adap_template.dev.power.work.func = 0; i2c_adap_template.dev.power.work.lockdep_map.key = 0; i2c_adap_template.dev.power.work.lockdep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.power.work.lockdep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.power.work.lockdep_map.name = 0; i2c_adap_template.dev.power.work.lockdep_map.cpu = 0; i2c_adap_template.dev.power.work.lockdep_map.ip = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev.power.wait_queue.lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev.power.wait_queue.task_list.next = 0; i2c_adap_template.dev.power.wait_queue.task_list.prev = 0; i2c_adap_template.dev.power.usage_count.counter = 0; i2c_adap_template.dev.power.child_count.counter = 0; i2c_adap_template.dev.power.disable_depth = 0; i2c_adap_template.dev.power.idle_notification = 0; i2c_adap_template.dev.power.request_pending = 0; i2c_adap_template.dev.power.deferred_resume = 0; i2c_adap_template.dev.power.run_wake = 0; i2c_adap_template.dev.power.runtime_auto = 0; i2c_adap_template.dev.power.no_callbacks = 0; i2c_adap_template.dev.power.irq_safe = 0; i2c_adap_template.dev.power.use_autosuspend = 0; i2c_adap_template.dev.power.timer_autosuspends = 0; i2c_adap_template.dev.power.memalloc_noio = 0; i2c_adap_template.dev.power.request = 0; i2c_adap_template.dev.power.runtime_status = 0; i2c_adap_template.dev.power.runtime_error = 0; i2c_adap_template.dev.power.autosuspend_delay = 0; i2c_adap_template.dev.power.last_busy = 0; i2c_adap_template.dev.power.active_jiffies = 0; i2c_adap_template.dev.power.suspended_jiffies = 0; i2c_adap_template.dev.power.accounting_timestamp = 0; i2c_adap_template.dev.power.subsys_data = 0; i2c_adap_template.dev.power.set_latency_tolerance = 0; i2c_adap_template.dev.power.qos = 0; i2c_adap_template.dev.pm_domain = 0; i2c_adap_template.dev.pins = 0; i2c_adap_template.dev.numa_node = 0; i2c_adap_template.dev.dma_mask = 0; i2c_adap_template.dev.coherent_dma_mask = 0; i2c_adap_template.dev.dma_pfn_offset = 0; i2c_adap_template.dev.dma_parms = 0; i2c_adap_template.dev.dma_pools.next = 0; i2c_adap_template.dev.dma_pools.prev = 0; i2c_adap_template.dev.dma_mem = 0; i2c_adap_template.dev.cma_area = 0; i2c_adap_template.dev.archdata.dma_ops = 0; i2c_adap_template.dev.archdata.iommu = 0; i2c_adap_template.dev.of_node = 0; i2c_adap_template.dev.acpi_node.companion = 0; i2c_adap_template.dev.devt = 0; i2c_adap_template.dev.id = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev.devres_lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev.devres_head.next = 0; i2c_adap_template.dev.devres_head.prev = 0; i2c_adap_template.dev.knode_class.n_klist = 0; i2c_adap_template.dev.knode_class.n_node.next = 0; i2c_adap_template.dev.knode_class.n_node.prev = 0; i2c_adap_template.dev.knode_class.n_ref.refcount.counter = 0; i2c_adap_template.dev.class = 0; i2c_adap_template.dev.groups = 0; i2c_adap_template.dev.release = 0; i2c_adap_template.dev.iommu_group = 0; i2c_adap_template.dev.offline_disabled = 0; i2c_adap_template.dev.offline = 0; i2c_adap_template.nr = 0; i2c_adap_template.name[ 0 ] = 117; i2c_adap_template.name[ 1 ] = 115; i2c_adap_template.name[ 2 ] = 98; i2c_adap_template.name[ 3 ] = 118; i2c_adap_template.name[ 4 ] = 105; i2c_adap_template.name[ 5 ] = 115; i2c_adap_template.name[ 6 ] = 105; i2c_adap_template.name[ 7 ] = 111; i2c_adap_template.name[ 8 ] = 110; i2c_adap_template.name[ 9 ] = 0; i2c_adap_template.dev_released.done = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.dev_released.wait.lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.dev_released.wait.task_list.next = 0; i2c_adap_template.dev_released.wait.task_list.prev = 0; i2c_adap_template.userspace_clients_lock.count.counter = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.raw_lock.__annonCompField7.head_tail = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.magic = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.owner_cpu = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.owner = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.key = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.name = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.cpu = 0; i2c_adap_template.userspace_clients_lock.wait_lock.__annonCompField19.rlock.dep_map.ip = 0; i2c_adap_template.userspace_clients_lock.wait_list.next = 0; i2c_adap_template.userspace_clients_lock.wait_list.prev = 0; i2c_adap_template.userspace_clients_lock.owner = 0; i2c_adap_template.userspace_clients_lock.magic = 0; i2c_adap_template.userspace_clients_lock.dep_map.key = 0; i2c_adap_template.userspace_clients_lock.dep_map.class_cache[ 0 ] = 0; i2c_adap_template.userspace_clients_lock.dep_map.class_cache[ 1 ] = 0; i2c_adap_template.userspace_clients_lock.dep_map.name = 0; i2c_adap_template.userspace_clients_lock.dep_map.cpu = 0; i2c_adap_template.userspace_clients_lock.dep_map.ip = 0; i2c_adap_template.userspace_clients.next = 0; i2c_adap_template.userspace_clients.prev = 0; i2c_adap_template.bus_recovery_info = 0; return ; } -__BLAST_initialize_/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/rcv/132_1a/main-ldv_main1_sequence_infinite_withcheck_stateful/preprocess/1-cpp/drivers/media/usb/usbvision/usbvision-cards.o.i() { 34 -usbvision_device_data[ 0 ].video_norm = 45056; usbvision_device_data[ 0 ].model_string = "Xanboo"; usbvision_device_data[ 0 ].interface = -1; usbvision_device_data[ 0 ].codec = 7113; usbvision_device_data[ 0 ].video_channels = 4; usbvision_device_data[ 0 ].audio_channels = 1; usbvision_device_data[ 0 ].radio = 0; usbvision_device_data[ 0 ].vbi = 1; usbvision_device_data[ 0 ].tuner = 0; usbvision_device_data[ 0 ].vin_reg1_override = 0; usbvision_device_data[ 0 ].vin_reg2_override = 0; usbvision_device_data[ 0 ].dvi_yuv_override = 0; usbvision_device_data[ 0 ].vin_reg1 = 0; usbvision_device_data[ 0 ].vin_reg2 = 0; usbvision_device_data[ 0 ].dvi_yuv = 0; usbvision_device_data[ 0 ].tuner_type = 0; usbvision_device_data[ 0 ].x_offset = -1; usbvision_device_data[ 0 ].y_offset = -1; usbvision_device_data[ 1 ].video_norm = 255; usbvision_device_data[ 1 ].model_string = "Belkin USB VideoBus II Adapter"; usbvision_device_data[ 1 ].interface = -1; usbvision_device_data[ 1 ].codec = 7113; usbvision_device_data[ 1 ].video_channels = 2; usbvision_device_data[ 1 ].audio_channels = 1; usbvision_device_data[ 1 ].radio = 0; usbvision_device_data[ 1 ].vbi = 1; usbvision_device_data[ 1 ].tuner = 0; usbvision_device_data[ 1 ].vin_reg1_override = 0; usbvision_device_data[ 1 ].vin_reg2_override = 0; usbvision_device_data[ 1 ].dvi_yuv_override = 1; usbvision_device_data[ 1 ].vin_reg1 = 0; usbvision_device_data[ 1 ].vin_reg2 = 0; usbvision_device_data[ 1 ].dvi_yuv = 7; usbvision_device_data[ 1 ].tuner_type = 0; usbvision_device_data[ 1 ].x_offset = 0; usbvision_device_data[ 1 ].y_offset = 3; usbvision_device_data[ 2 ].video_norm = 45056; usbvision_device_data[ 2 ].model_string = "Belkin Components USB VideoBus"; usbvision_device_data[ 2 ].interface = -1; usbvision_device_data[ 2 ].codec = 7111; usbvision_device_data[ 2 ].video_channels = 2; usbvision_device_data[ 2 ].audio_channels = 1; usbvision_device_data[ 2 ].radio = 0; usbvision_device_data[ 2 ].vbi = 1; usbvision_device_data[ 2 ].tuner = 0; usbvision_device_data[ 2 ].vin_reg1_override = 0; usbvision_device_data[ 2 ].vin_reg2_override = 0; usbvision_device_data[ 2 ].dvi_yuv_override = 0; usbvision_device_data[ 2 ].vin_reg1 = 0; usbvision_device_data[ 2 ].vin_reg2 = 0; usbvision_device_data[ 2 ].dvi_yuv = 0; usbvision_device_data[ 2 ].tuner_type = 0; usbvision_device_data[ 2 ].x_offset = -1; usbvision_device_data[ 2 ].y_offset = -1; usbvision_device_data[ 3 ].video_norm = 45056; usbvision_device_data[ 3 ].model_string = "Belkin USB VideoBus II"; usbvision_device_data[ 3 ].interface = -1; usbvision_device_data[ 3 ].codec = 7113; usbvision_device_data[ 3 ].video_channels = 2; usbvision_device_data[ 3 ].audio_channels = 1; usbvision_device_data[ 3 ].radio = 0; usbvision_device_data[ 3 ].vbi = 1; usbvision_device_data[ 3 ].tuner = 0; usbvision_device_data[ 3 ].vin_reg1_override = 0; usbvision_device_data[ 3 ].vin_reg2_override = 0; usbvision_device_data[ 3 ].dvi_yuv_override = 1; usbvision_device_data[ 3 ].vin_reg1 = 0; usbvision_device_data[ 3 ].vin_reg2 = 0; usbvision_device_data[ 3 ].dvi_yuv = 7; usbvision_device_data[ 3 ].tuner_type = 0; usbvision_device_data[ 3 ].x_offset = 0; usbvision_device_data[ 3 ].y_offset = 3; usbvision_device_data[ 4 ].video_norm = 255; usbvision_device_data[ 4 ].model_string = "echoFX InterView Lite"; usbvision_device_data[ 4 ].interface = 0; usbvision_device_data[ 4 ].codec = 7111; usbvision_device_data[ 4 ].video_channels = 2; usbvision_device_data[ 4 ].audio_channels = 0; usbvision_device_data[ 4 ].radio = 0; usbvision_device_data[ 4 ].vbi = 1; usbvision_device_data[ 4 ].tuner = 0; usbvision_device_data[ 4 ].vin_reg1_override = 0; usbvision_device_data[ 4 ].vin_reg2_override = 0; usbvision_device_data[ 4 ].dvi_yuv_override = 1; usbvision_device_data[ 4 ].vin_reg1 = 0; usbvision_device_data[ 4 ].vin_reg2 = 0; usbvision_device_data[ 4 ].dvi_yuv = 7; usbvision_device_data[ 4 ].tuner_type = 0; usbvision_device_data[ 4 ].x_offset = -1; usbvision_device_data[ 4 ].y_offset = -1; usbvision_device_data[ 5 ].video_norm = 45056; usbvision_device_data[ 5 ].model_string = "USBGear USBG-V1 resp. HAMA USB"; usbvision_device_data[ 5 ].interface = -1; usbvision_device_data[ 5 ].codec = 7111; usbvision_device_data[ 5 ].video_channels = 2; usbvision_device_data[ 5 ].audio_channels = 1; usbvision_device_data[ 5 ].radio = 0; usbvision_device_data[ 5 ].vbi = 1; usbvision_device_data[ 5 ].tuner = 0; usbvision_device_data[ 5 ].vin_reg1_override = 0; usbvision_device_data[ 5 ].vin_reg2_override = 0; usbvision_device_data[ 5 ].dvi_yuv_override = 0; usbvision_device_data[ 5 ].vin_reg1 = 0; usbvision_device_data[ 5 ].vin_reg2 = 0; usbvision_device_data[ 5 ].dvi_yuv = 0; usbvision_device_data[ 5 ].tuner_type = 0; usbvision_device_data[ 5 ].x_offset = -1; usbvision_device_data[ 5 ].y_offset = -1; usbvision_device_data[ 6 ].video_norm = 45056; usbvision_device_data[ 6 ].model_string = "D-Link V100"; usbvision_device_data[ 6 ].interface = -1; usbvision_device_data[ 6 ].codec = 7113; usbvision_device_data[ 6 ].video_channels = 4; usbvision_device_data[ 6 ].audio_channels = 0; usbvision_device_data[ 6 ].radio = 0; usbvision_device_data[ 6 ].vbi = 1; usbvision_device_data[ 6 ].tuner = 0; usbvision_device_data[ 6 ].vin_reg1_override = 0; usbvision_device_data[ 6 ].vin_reg2_override = 0; usbvision_device_data[ 6 ].dvi_yuv_override = 1; usbvision_device_data[ 6 ].vin_reg1 = 0; usbvision_device_data[ 6 ].vin_reg2 = 0; usbvision_device_data[ 6 ].dvi_yuv = 7; usbvision_device_data[ 6 ].tuner_type = 0; usbvision_device_data[ 6 ].x_offset = 0; usbvision_device_data[ 6 ].y_offset = 3; usbvision_device_data[ 7 ].video_norm = 45056; usbvision_device_data[ 7 ].model_string = "X10 USB Camera"; usbvision_device_data[ 7 ].interface = -1; usbvision_device_data[ 7 ].codec = 7111; usbvision_device_data[ 7 ].video_channels = 2; usbvision_device_data[ 7 ].audio_channels = 1; usbvision_device_data[ 7 ].radio = 0; usbvision_device_data[ 7 ].vbi = 1; usbvision_device_data[ 7 ].tuner = 0; usbvision_device_data[ 7 ].vin_reg1_override = 0; usbvision_device_data[ 7 ].vin_reg2_override = 0; usbvision_device_data[ 7 ].dvi_yuv_override = 0; usbvision_device_data[ 7 ].vin_reg1 = 0; usbvision_device_data[ 7 ].vin_reg2 = 0; usbvision_device_data[ 7 ].dvi_yuv = 0; usbvision_device_data[ 7 ].tuner_type = 0; usbvision_device_data[ 7 ].x_offset = -1; usbvision_device_data[ 7 ].y_offset = -1; usbvision_device_data[ 8 ].video_norm = 255; usbvision_device_data[ 8 ].model_string = "Hauppauge WinTV USB Live (PAL B/G)"; usbvision_device_data[ 8 ].interface = -1; usbvision_device_data[ 8 ].codec = 7111; usbvision_device_data[ 8 ].video_channels = 2; usbvision_device_data[ 8 ].audio_channels = 1; usbvision_device_data[ 8 ].radio = 0; usbvision_device_data[ 8 ].vbi = 1; usbvision_device_data[ 8 ].tuner = 0; usbvision_device_data[ 8 ].vin_reg1_override = 0; usbvision_device_data[ 8 ].vin_reg2_override = 0; usbvision_device_data[ 8 ].dvi_yuv_override = 1; usbvision_device_data[ 8 ].vin_reg1 = 0; usbvision_device_data[ 8 ].vin_reg2 = 0; usbvision_device_data[ 8 ].dvi_yuv = 7; usbvision_device_data[ 8 ].tuner_type = 0; usbvision_device_data[ 8 ].x_offset = -1; usbvision_device_data[ 8 ].y_offset = 3; usbvision_device_data[ 9 ].video_norm = 45056; usbvision_device_data[ 9 ].model_string = "Hauppauge WinTV USB Live Pro (NTSC M/N)"; usbvision_device_data[ 9 ].interface = -1; usbvision_device_data[ 9 ].codec = 7113; usbvision_device_data[ 9 ].video_channels = 2; usbvision_device_data[ 9 ].audio_channels = 0; usbvision_device_data[ 9 ].radio = 0; usbvision_device_data[ 9 ].vbi = 1; usbvision_device_data[ 9 ].tuner = 0; usbvision_device_data[ 9 ].vin_reg1_override = 0; usbvision_device_data[ 9 ].vin_reg2_override = 0; usbvision_device_data[ 9 ].dvi_yuv_override = 1; usbvision_device_data[ 9 ].vin_reg1 = 0; usbvision_device_data[ 9 ].vin_reg2 = 0; usbvision_device_data[ 9 ].dvi_yuv = 7; usbvision_device_data[ 9 ].tuner_type = 0; usbvision_device_data[ 9 ].x_offset = 0; usbvision_device_data[ 9 ].y_offset = 3; usbvision_device_data[ 10 ].video_norm = 255; usbvision_device_data[ 10 ].model_string = "Zoran Co. PMD (Nogatech) AV-grabber Manhattan"; usbvision_device_data[ 10 ].interface = -1; usbvision_device_data[ 10 ].codec = 7113; usbvision_device_data[ 10 ].video_channels = 2; usbvision_device_data[ 10 ].audio_channels = 2; usbvision_device_data[ 10 ].radio = 0; usbvision_device_data[ 10 ].vbi = 1; usbvision_device_data[ 10 ].tuner = 0; usbvision_device_data[ 10 ].vin_reg1_override = 0; usbvision_device_data[ 10 ].vin_reg2_override = 0; usbvision_device_data[ 10 ].dvi_yuv_override = 1; usbvision_device_data[ 10 ].vin_reg1 = 0; usbvision_device_data[ 10 ].vin_reg2 = 0; usbvision_device_data[ 10 ].dvi_yuv = 7; usbvision_device_data[ 10 ].tuner_type = 0; usbvision_device_data[ 10 ].x_offset = 0; usbvision_device_data[ 10 ].y_offset = 3; usbvision_device_data[ 11 ].video_norm = 45056; usbvision_device_data[ 11 ].model_string = "Nogatech USB-TV (NTSC) FM"; usbvision_device_data[ 11 ].interface = -1; usbvision_device_data[ 11 ].codec = 7111; usbvision_device_data[ 11 ].video_channels = 3; usbvision_device_data[ 11 ].audio_channels = 1; usbvision_device_data[ 11 ].radio = 1; usbvision_device_data[ 11 ].vbi = 1; usbvision_device_data[ 11 ].tuner = 1; usbvision_device_data[ 11 ].vin_reg1_override = 0; usbvision_device_data[ 11 ].vin_reg2_override = 0; usbvision_device_data[ 11 ].dvi_yuv_override = 0; usbvision_device_data[ 11 ].vin_reg1 = 0; usbvision_device_data[ 11 ].vin_reg2 = 0; usbvision_device_data[ 11 ].dvi_yuv = 0; usbvision_device_data[ 11 ].tuner_type = 17; usbvision_device_data[ 11 ].x_offset = -1; usbvision_device_data[ 11 ].y_offset = 20; usbvision_device_data[ 12 ].video_norm = 45056; usbvision_device_data[ 12 ].model_string = "PNY USB-TV (NTSC) FM"; usbvision_device_data[ 12 ].interface = -1; usbvision_device_data[ 12 ].codec = 7111; usbvision_device_data[ 12 ].video_channels = 3; usbvision_device_data[ 12 ].audio_channels = 1; usbvision_device_data[ 12 ].radio = 1; usbvision_device_data[ 12 ].vbi = 1; usbvision_device_data[ 12 ].tuner = 1; usbvision_device_data[ 12 ].vin_reg1_override = 0; usbvision_device_data[ 12 ].vin_reg2_override = 0; usbvision_device_data[ 12 ].dvi_yuv_override = 0; usbvision_device_data[ 12 ].vin_reg1 = 0; usbvision_device_data[ 12 ].vin_reg2 = 0; usbvision_device_data[ 12 ].dvi_yuv = 0; usbvision_device_data[ 12 ].tuner_type = 17; usbvision_device_data[ 12 ].x_offset = -1; usbvision_device_data[ 12 ].y_offset = 20; usbvision_device_data[ 13 ].video_norm = 255; usbvision_device_data[ 13 ].model_string = "PixelView PlayTv-USB PRO (PAL) FM"; usbvision_device_data[ 13 ].interface = 0; usbvision_device_data[ 13 ].codec = 7113; usbvision_device_data[ 13 ].video_channels = 3; usbvision_device_data[ 13 ].audio_channels = 1; usbvision_device_data[ 13 ].radio = 1; usbvision_device_data[ 13 ].vbi = 1; usbvision_device_data[ 13 ].tuner = 1; usbvision_device_data[ 13 ].vin_reg1_override = 0; usbvision_device_data[ 13 ].vin_reg2_override = 0; usbvision_device_data[ 13 ].dvi_yuv_override = 1; usbvision_device_data[ 13 ].vin_reg1 = 0; usbvision_device_data[ 13 ].vin_reg2 = 0; usbvision_device_data[ 13 ].dvi_yuv = 7; usbvision_device_data[ 13 ].tuner_type = 5; usbvision_device_data[ 13 ].x_offset = 0; usbvision_device_data[ 13 ].y_offset = 3; usbvision_device_data[ 14 ].video_norm = 255; usbvision_device_data[ 14 ].model_string = "ZTV ZT-721 2.4GHz USB A/V Receiver"; usbvision_device_data[ 14 ].interface = 0; usbvision_device_data[ 14 ].codec = 7113; usbvision_device_data[ 14 ].video_channels = 3; usbvision_device_data[ 14 ].audio_channels = 1; usbvision_device_data[ 14 ].radio = 1; usbvision_device_data[ 14 ].vbi = 1; usbvision_device_data[ 14 ].tuner = 1; usbvision_device_data[ 14 ].vin_reg1_override = 0; usbvision_device_data[ 14 ].vin_reg2_override = 0; usbvision_device_data[ 14 ].dvi_yuv_override = 1; usbvision_device_data[ 14 ].vin_reg1 = 0; usbvision_device_data[ 14 ].vin_reg2 = 0; usbvision_device_data[ 14 ].dvi_yuv = 7; usbvision_device_data[ 14 ].tuner_type = 5; usbvision_device_data[ 14 ].x_offset = 0; usbvision_device_data[ 14 ].y_offset = 3; usbvision_device_data[ 15 ].video_norm = 45056; usbvision_device_data[ 15 ].model_string = "Hauppauge WinTV USB (NTSC M/N)"; usbvision_device_data[ 15 ].interface = -1; usbvision_device_data[ 15 ].codec = 7111; usbvision_device_data[ 15 ].video_channels = 3; usbvision_device_data[ 15 ].audio_channels = 1; usbvision_device_data[ 15 ].radio = 0; usbvision_device_data[ 15 ].vbi = 1; usbvision_device_data[ 15 ].tuner = 1; usbvision_device_data[ 15 ].vin_reg1_override = 0; usbvision_device_data[ 15 ].vin_reg2_override = 0; usbvision_device_data[ 15 ].dvi_yuv_override = 0; usbvision_device_data[ 15 ].vin_reg1 = 0; usbvision_device_data[ 15 ].vin_reg2 = 0; usbvision_device_data[ 15 ].dvi_yuv = 0; usbvision_device_data[ 15 ].tuner_type = 17; usbvision_device_data[ 15 ].x_offset = -1; usbvision_device_data[ 15 ].y_offset = 20; usbvision_device_data[ 16 ].video_norm = 255; usbvision_device_data[ 16 ].model_string = "Hauppauge WinTV USB (PAL B/G)"; usbvision_device_data[ 16 ].interface = -1; usbvision_device_data[ 16 ].codec = 7111; usbvision_device_data[ 16 ].video_channels = 3; usbvision_device_data[ 16 ].audio_channels = 1; usbvision_device_data[ 16 ].radio = 0; usbvision_device_data[ 16 ].vbi = 1; usbvision_device_data[ 16 ].tuner = 1; usbvision_device_data[ 16 ].vin_reg1_override = 0; usbvision_device_data[ 16 ].vin_reg2_override = 0; usbvision_device_data[ 16 ].dvi_yuv_override = 0; usbvision_device_data[ 16 ].vin_reg1 = 0; usbvision_device_data[ 16 ].vin_reg2 = 0; usbvision_device_data[ 16 ].dvi_yuv = 0; usbvision_device_data[ 16 ].tuner_type = 5; usbvision_device_data[ 16 ].x_offset = -1; usbvision_device_data[ 16 ].y_offset = -1; usbvision_device_data[ 17 ].video_norm = 255; usbvision_device_data[ 17 ].model_string = "Hauppauge WinTV USB (PAL I)"; usbvision_device_data[ 17 ].interface = -1; usbvision_device_data[ 17 ].codec = 7111; usbvision_device_data[ 17 ].video_channels = 3; usbvision_device_data[ 17 ].audio_channels = 1; usbvision_device_data[ 17 ].radio = 0; usbvision_device_data[ 17 ].vbi = 1; usbvision_device_data[ 17 ].tuner = 1; usbvision_device_data[ 17 ].vin_reg1_override = 0; usbvision_device_data[ 17 ].vin_reg2_override = 0; usbvision_device_data[ 17 ].dvi_yuv_override = 0; usbvision_device_data[ 17 ].vin_reg1 = 0; usbvision_device_data[ 17 ].vin_reg2 = 0; usbvision_device_data[ 17 ].dvi_yuv = 0; usbvision_device_data[ 17 ].tuner_type = 5; usbvision_device_data[ 17 ].x_offset = -1; usbvision_device_data[ 17 ].y_offset = -1; usbvision_device_data[ 18 ].video_norm = 16711680; usbvision_device_data[ 18 ].model_string = "Hauppauge WinTV USB (PAL/SECAM L)"; usbvision_device_data[ 18 ].interface = -1; usbvision_device_data[ 18 ].codec = 7111; usbvision_device_data[ 18 ].video_channels = 3; usbvision_device_data[ 18 ].audio_channels = 1; usbvision_device_data[ 18 ].radio = 0; usbvision_device_data[ 18 ].vbi = 1; usbvision_device_data[ 18 ].tuner = 1; usbvision_device_data[ 18 ].vin_reg1_override = 0; usbvision_device_data[ 18 ].vin_reg2_override = 0; usbvision_device_data[ 18 ].dvi_yuv_override = 0; usbvision_device_data[ 18 ].vin_reg1 = 0; usbvision_device_data[ 18 ].vin_reg2 = 0; usbvision_device_data[ 18 ].dvi_yuv = 0; usbvision_device_data[ 18 ].tuner_type = 3; usbvision_device_data[ 18 ].x_offset = 128; usbvision_device_data[ 18 ].y_offset = 22; usbvision_device_data[ 19 ].video_norm = 255; usbvision_device_data[ 19 ].model_string = "Hauppauge WinTV USB (PAL D/K)"; usbvision_device_data[ 19 ].interface = -1; usbvision_device_data[ 19 ].codec = 7111; usbvision_device_data[ 19 ].video_channels = 3; usbvision_device_data[ 19 ].audio_channels = 1; usbvision_device_data[ 19 ].radio = 0; usbvision_device_data[ 19 ].vbi = 1; usbvision_device_data[ 19 ].tuner = 1; usbvision_device_data[ 19 ].vin_reg1_override = 0; usbvision_device_data[ 19 ].vin_reg2_override = 0; usbvision_device_data[ 19 ].dvi_yuv_override = 0; usbvision_device_data[ 19 ].vin_reg1 = 0; usbvision_device_data[ 19 ].vin_reg2 = 0; usbvision_device_data[ 19 ].dvi_yuv = 0; usbvision_device_data[ 19 ].tuner_type = 5; usbvision_device_data[ 19 ].x_offset = -1; usbvision_device_data[ 19 ].y_offset = -1; usbvision_device_data[ 20 ].video_norm = 45056; usbvision_device_data[ 20 ].model_string = "Hauppauge WinTV USB (NTSC FM)"; usbvision_device_data[ 20 ].interface = -1; usbvision_device_data[ 20 ].codec = 7111; usbvision_device_data[ 20 ].video_channels = 3; usbvision_device_data[ 20 ].audio_channels = 1; usbvision_device_data[ 20 ].radio = 1; usbvision_device_data[ 20 ].vbi = 1; usbvision_device_data[ 20 ].tuner = 1; usbvision_device_data[ 20 ].vin_reg1_override = 0; usbvision_device_data[ 20 ].vin_reg2_override = 0; usbvision_device_data[ 20 ].dvi_yuv_override = 0; usbvision_device_data[ 20 ].vin_reg1 = 0; usbvision_device_data[ 20 ].vin_reg2 = 0; usbvision_device_data[ 20 ].dvi_yuv = 0; usbvision_device_data[ 20 ].tuner_type = 17; usbvision_device_data[ 20 ].x_offset = -1; usbvision_device_data[ 20 ].y_offset = -1; usbvision_device_data[ 21 ].video_norm = 255; usbvision_device_data[ 21 ].model_string = "Hauppauge WinTV USB (PAL B/G FM)"; usbvision_device_data[ 21 ].interface = -1; usbvision_device_data[ 21 ].codec = 7111; usbvision_device_data[ 21 ].video_channels = 3; usbvision_device_data[ 21 ].audio_channels = 1; usbvision_device_data[ 21 ].radio = 1; usbvision_device_data[ 21 ].vbi = 1; usbvision_device_data[ 21 ].tuner = 1; usbvision_device_data[ 21 ].vin_reg1_override = 0; usbvision_device_data[ 21 ].vin_reg2_override = 0; usbvision_device_data[ 21 ].dvi_yuv_override = 0; usbvision_device_data[ 21 ].vin_reg1 = 0; usbvision_device_data[ 21 ].vin_reg2 = 0; usbvision_device_data[ 21 ].dvi_yuv = 0; usbvision_device_data[ 21 ].tuner_type = 5; usbvision_device_data[ 21 ].x_offset = -1; usbvision_device_data[ 21 ].y_offset = -1; usbvision_device_data[ 22 ].video_norm = 255; usbvision_device_data[ 22 ].model_string = "Hauppauge WinTV USB (PAL I FM)"; usbvision_device_data[ 22 ].interface = -1; usbvision_device_data[ 22 ].codec = 7111; usbvision_device_data[ 22 ].video_channels = 3; usbvision_device_data[ 22 ].audio_channels = 1; usbvision_device_data[ 22 ].radio = 1; usbvision_device_data[ 22 ].vbi = 1; usbvision_device_data[ 22 ].tuner = 1; usbvision_device_data[ 22 ].vin_reg1_override = 0; usbvision_device_data[ 22 ].vin_reg2_override = 0; usbvision_device_data[ 22 ].dvi_yuv_override = 0; usbvision_device_data[ 22 ].vin_reg1 = 0; usbvision_device_data[ 22 ].vin_reg2 = 0; usbvision_device_data[ 22 ].dvi_yuv = 0; usbvision_device_data[ 22 ].tuner_type = 5; usbvision_device_data[ 22 ].x_offset = -1; usbvision_device_data[ 22 ].y_offset = -1; usbvision_device_data[ 23 ].video_norm = 255; usbvision_device_data[ 23 ].model_string = "Hauppauge WinTV USB (PAL D/K FM)"; usbvision_device_data[ 23 ].interface = -1; usbvision_device_data[ 23 ].codec = 7111; usbvision_device_data[ 23 ].video_channels = 3; usbvision_device_data[ 23 ].audio_channels = 1; usbvision_device_data[ 23 ].radio = 1; usbvision_device_data[ 23 ].vbi = 1; usbvision_device_data[ 23 ].tuner = 1; usbvision_device_data[ 23 ].vin_reg1_override = 0; usbvision_device_data[ 23 ].vin_reg2_override = 0; usbvision_device_data[ 23 ].dvi_yuv_override = 0; usbvision_device_data[ 23 ].vin_reg1 = 0; usbvision_device_data[ 23 ].vin_reg2 = 0; usbvision_device_data[ 23 ].dvi_yuv = 0; usbvision_device_data[ 23 ].tuner_type = 5; usbvision_device_data[ 23 ].x_offset = -1; usbvision_device_data[ 23 ].y_offset = -1; usbvision_device_data[ 24 ].video_norm = 45056; usbvision_device_data[ 24 ].model_string = "Hauppauge WinTV USB Pro (NTSC M/N)"; usbvision_device_data[ 24 ].interface = 0; usbvision_device_data[ 24 ].codec = 7113; usbvision_device_data[ 24 ].video_channels = 3; usbvision_device_data[ 24 ].audio_channels = 1; usbvision_device_data[ 24 ].radio = 1; usbvision_device_data[ 24 ].vbi = 1; usbvision_device_data[ 24 ].tuner = 1; usbvision_device_data[ 24 ].vin_reg1_override = 0; usbvision_device_data[ 24 ].vin_reg2_override = 0; usbvision_device_data[ 24 ].dvi_yuv_override = 1; usbvision_device_data[ 24 ].vin_reg1 = 0; usbvision_device_data[ 24 ].vin_reg2 = 0; usbvision_device_data[ 24 ].dvi_yuv = 7; usbvision_device_data[ 24 ].tuner_type = 45; usbvision_device_data[ 24 ].x_offset = 0; usbvision_device_data[ 24 ].y_offset = 3; usbvision_device_data[ 25 ].video_norm = 45056; usbvision_device_data[ 25 ].model_string = "Hauppauge WinTV USB Pro (NTSC M/N) V2"; usbvision_device_data[ 25 ].interface = 0; usbvision_device_data[ 25 ].codec = 7113; usbvision_device_data[ 25 ].video_channels = 3; usbvision_device_data[ 25 ].audio_channels = 1; usbvision_device_data[ 25 ].radio = 1; usbvision_device_data[ 25 ].vbi = 1; usbvision_device_data[ 25 ].tuner = 1; usbvision_device_data[ 25 ].vin_reg1_override = 0; usbvision_device_data[ 25 ].vin_reg2_override = 0; usbvision_device_data[ 25 ].dvi_yuv_override = 1; usbvision_device_data[ 25 ].vin_reg1 = 0; usbvision_device_data[ 25 ].vin_reg2 = 0; usbvision_device_data[ 25 ].dvi_yuv = 7; usbvision_device_data[ 25 ].tuner_type = 45; usbvision_device_data[ 25 ].x_offset = 0; usbvision_device_data[ 25 ].y_offset = 3; usbvision_device_data[ 26 ].video_norm = 255; usbvision_device_data[ 26 ].model_string = "Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L)"; usbvision_device_data[ 26 ].interface = 0; usbvision_device_data[ 26 ].codec = 7113; usbvision_device_data[ 26 ].video_channels = 3; usbvision_device_data[ 26 ].audio_channels = 1; usbvision_device_data[ 26 ].radio = 0; usbvision_device_data[ 26 ].vbi = 1; usbvision_device_data[ 26 ].tuner = 1; usbvision_device_data[ 26 ].vin_reg1_override = 0; usbvision_device_data[ 26 ].vin_reg2_override = 0; usbvision_device_data[ 26 ].dvi_yuv_override = 1; usbvision_device_data[ 26 ].vin_reg1 = 0; usbvision_device_data[ 26 ].vin_reg2 = 0; usbvision_device_data[ 26 ].dvi_yuv = 7; usbvision_device_data[ 26 ].tuner_type = 38; usbvision_device_data[ 26 ].x_offset = 0; usbvision_device_data[ 26 ].y_offset = 3; usbvision_device_data[ 27 ].video_norm = 45056; usbvision_device_data[ 27 ].model_string = "Hauppauge WinTV USB Pro (NTSC M/N) V3"; usbvision_device_data[ 27 ].interface = 0; usbvision_device_data[ 27 ].codec = 7113; usbvision_device_data[ 27 ].video_channels = 3; usbvision_device_data[ 27 ].audio_channels = 1; usbvision_device_data[ 27 ].radio = 1; usbvision_device_data[ 27 ].vbi = 1; usbvision_device_data[ 27 ].tuner = 1; usbvision_device_data[ 27 ].vin_reg1_override = 0; usbvision_device_data[ 27 ].vin_reg2_override = 0; usbvision_device_data[ 27 ].dvi_yuv_override = 1; usbvision_device_data[ 27 ].vin_reg1 = 0; usbvision_device_data[ 27 ].vin_reg2 = 0; usbvision_device_data[ 27 ].dvi_yuv = 7; usbvision_device_data[ 27 ].tuner_type = 17; usbvision_device_data[ 27 ].x_offset = 0; usbvision_device_data[ 27 ].y_offset = 3; usbvision_device_data[ 28 ].video_norm = 255; usbvision_device_data[ 28 ].model_string = "Hauppauge WinTV USB Pro (PAL B/G)"; usbvision_device_data[ 28 ].interface = 0; usbvision_device_data[ 28 ].codec = 7113; usbvision_device_data[ 28 ].video_channels = 3; usbvision_device_data[ 28 ].audio_channels = 1; usbvision_device_data[ 28 ].radio = 0; usbvision_device_data[ 28 ].vbi = 1; usbvision_device_data[ 28 ].tuner = 1; usbvision_device_data[ 28 ].vin_reg1_override = 0; usbvision_device_data[ 28 ].vin_reg2_override = 0; usbvision_device_data[ 28 ].dvi_yuv_override = 1; usbvision_device_data[ 28 ].vin_reg1 = 0; usbvision_device_data[ 28 ].vin_reg2 = 0; usbvision_device_data[ 28 ].dvi_yuv = 7; usbvision_device_data[ 28 ].tuner_type = 5; usbvision_device_data[ 28 ].x_offset = 0; usbvision_device_data[ 28 ].y_offset = 3; usbvision_device_data[ 29 ].video_norm = 255; usbvision_device_data[ 29 ].model_string = "Hauppauge WinTV USB Pro (PAL I)"; usbvision_device_data[ 29 ].interface = 0; usbvision_device_data[ 29 ].codec = 7113; usbvision_device_data[ 29 ].video_channels = 3; usbvision_device_data[ 29 ].audio_channels = 1; usbvision_device_data[ 29 ].radio = 0; usbvision_device_data[ 29 ].vbi = 1; usbvision_device_data[ 29 ].tuner = 1; usbvision_device_data[ 29 ].vin_reg1_override = 0; usbvision_device_data[ 29 ].vin_reg2_override = 0; usbvision_device_data[ 29 ].dvi_yuv_override = 1; usbvision_device_data[ 29 ].vin_reg1 = 0; usbvision_device_data[ 29 ].vin_reg2 = 0; usbvision_device_data[ 29 ].dvi_yuv = 7; usbvision_device_data[ 29 ].tuner_type = 5; usbvision_device_data[ 29 ].x_offset = 0; usbvision_device_data[ 29 ].y_offset = 3; usbvision_device_data[ 30 ].video_norm = 16711680; usbvision_device_data[ 30 ].model_string = "Hauppauge WinTV USB Pro (PAL/SECAM L)"; usbvision_device_data[ 30 ].interface = -1; usbvision_device_data[ 30 ].codec = 7113; usbvision_device_data[ 30 ].video_channels = 3; usbvision_device_data[ 30 ].audio_channels = 1; usbvision_device_data[ 30 ].radio = 0; usbvision_device_data[ 30 ].vbi = 1; usbvision_device_data[ 30 ].tuner = 1; usbvision_device_data[ 30 ].vin_reg1_override = 0; usbvision_device_data[ 30 ].vin_reg2_override = 0; usbvision_device_data[ 30 ].dvi_yuv_override = 1; usbvision_device_data[ 30 ].vin_reg1 = 0; usbvision_device_data[ 30 ].vin_reg2 = 0; usbvision_device_data[ 30 ].dvi_yuv = 7; usbvision_device_data[ 30 ].tuner_type = 3; usbvision_device_data[ 30 ].x_offset = 0; usbvision_device_data[ 30 ].y_offset = 3; usbvision_device_data[ 31 ].video_norm = 255; usbvision_device_data[ 31 ].model_string = "Hauppauge WinTV USB Pro (PAL D/K)"; usbvision_device_data[ 31 ].interface = -1; usbvision_device_data[ 31 ].codec = 7113; usbvision_device_data[ 31 ].video_channels = 3; usbvision_device_data[ 31 ].audio_channels = 1; usbvision_device_data[ 31 ].radio = 0; usbvision_device_data[ 31 ].vbi = 1; usbvision_device_data[ 31 ].tuner = 1; usbvision_device_data[ 31 ].vin_reg1_override = 0; usbvision_device_data[ 31 ].vin_reg2_override = 0; usbvision_device_data[ 31 ].dvi_yuv_override = 1; usbvision_device_data[ 31 ].vin_reg1 = 0; usbvision_device_data[ 31 ].vin_reg2 = 0; usbvision_device_data[ 31 ].dvi_yuv = 7; usbvision_device_data[ 31 ].tuner_type = 5; usbvision_device_data[ 31 ].x_offset = 0; usbvision_device_data[ 31 ].y_offset = 3; usbvision_device_data[ 32 ].video_norm = 16711680; usbvision_device_data[ 32 ].model_string = "Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L)"; usbvision_device_data[ 32 ].interface = -1; usbvision_device_data[ 32 ].codec = 7113; usbvision_device_data[ 32 ].video_channels = 3; usbvision_device_data[ 32 ].audio_channels = 1; usbvision_device_data[ 32 ].radio = 0; usbvision_device_data[ 32 ].vbi = 1; usbvision_device_data[ 32 ].tuner = 1; usbvision_device_data[ 32 ].vin_reg1_override = 0; usbvision_device_data[ 32 ].vin_reg2_override = 0; usbvision_device_data[ 32 ].dvi_yuv_override = 1; usbvision_device_data[ 32 ].vin_reg1 = 0; usbvision_device_data[ 32 ].vin_reg2 = 0; usbvision_device_data[ 32 ].dvi_yuv = 7; usbvision_device_data[ 32 ].tuner_type = 3; usbvision_device_data[ 32 ].x_offset = 0; usbvision_device_data[ 32 ].y_offset = 3; usbvision_device_data[ 33 ].video_norm = 16711680; usbvision_device_data[ 33 ].model_string = "Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L) V2"; usbvision_device_data[ 33 ].interface = -1; usbvision_device_data[ 33 ].codec = 7113; usbvision_device_data[ 33 ].video_channels = 3; usbvision_device_data[ 33 ].audio_channels = 1; usbvision_device_data[ 33 ].radio = 0; usbvision_device_data[ 33 ].vbi = 1; usbvision_device_data[ 33 ].tuner = 1; usbvision_device_data[ 33 ].vin_reg1_override = 0; usbvision_device_data[ 33 ].vin_reg2_override = 0; usbvision_device_data[ 33 ].dvi_yuv_override = 1; usbvision_device_data[ 33 ].vin_reg1 = 0; usbvision_device_data[ 33 ].vin_reg2 = 0; usbvision_device_data[ 33 ].dvi_yuv = 7; usbvision_device_data[ 33 ].tuner_type = 3; usbvision_device_data[ 33 ].x_offset = 0; usbvision_device_data[ 33 ].y_offset = 3; usbvision_device_data[ 34 ].video_norm = 255; usbvision_device_data[ 34 ].model_string = "Hauppauge WinTV USB Pro (PAL B/G) V2"; usbvision_device_data[ 34 ].interface = -1; usbvision_device_data[ 34 ].codec = 7113; usbvision_device_data[ 34 ].video_channels = 3; usbvision_device_data[ 34 ].audio_channels = 1; usbvision_device_data[ 34 ].radio = 0; usbvision_device_data[ 34 ].vbi = 1; usbvision_device_data[ 34 ].tuner = 1; usbvision_device_data[ 34 ].vin_reg1_override = 0; usbvision_device_data[ 34 ].vin_reg2_override = 0; usbvision_device_data[ 34 ].dvi_yuv_override = 1; usbvision_device_data[ 34 ].vin_reg1 = 0; usbvision_device_data[ 34 ].vin_reg2 = 0; usbvision_device_data[ 34 ].dvi_yuv = 7; usbvision_device_data[ 34 ].tuner_type = 10; usbvision_device_data[ 34 ].x_offset = 0; usbvision_device_data[ 34 ].y_offset = 3; usbvision_device_data[ 35 ].video_norm = 255; usbvision_device_data[ 35 ].model_string = "Hauppauge WinTV USB Pro (PAL B/G,D/K)"; usbvision_device_data[ 35 ].interface = -1; usbvision_device_data[ 35 ].codec = 7113; usbvision_device_data[ 35 ].video_channels = 3; usbvision_device_data[ 35 ].audio_channels = 1; usbvision_device_data[ 35 ].radio = 0; usbvision_device_data[ 35 ].vbi = 1; usbvision_device_data[ 35 ].tuner = 1; usbvision_device_data[ 35 ].vin_reg1_override = 0; usbvision_device_data[ 35 ].vin_reg2_override = 0; usbvision_device_data[ 35 ].dvi_yuv_override = 1; usbvision_device_data[ 35 ].vin_reg1 = 0; usbvision_device_data[ 35 ].vin_reg2 = 0; usbvision_device_data[ 35 ].dvi_yuv = 7; usbvision_device_data[ 35 ].tuner_type = 10; usbvision_device_data[ 35 ].x_offset = 0; usbvision_device_data[ 35 ].y_offset = 3; usbvision_device_data[ 36 ].video_norm = 255; usbvision_device_data[ 36 ].model_string = "Hauppauge WinTV USB Pro (PAL I,D/K)"; usbvision_device_data[ 36 ].interface = -1; usbvision_device_data[ 36 ].codec = 7113; usbvision_device_data[ 36 ].video_channels = 3; usbvision_device_data[ 36 ].audio_channels = 1; usbvision_device_data[ 36 ].radio = 0; usbvision_device_data[ 36 ].vbi = 1; usbvision_device_data[ 36 ].tuner = 1; usbvision_device_data[ 36 ].vin_reg1_override = 0; usbvision_device_data[ 36 ].vin_reg2_override = 0; usbvision_device_data[ 36 ].dvi_yuv_override = 1; usbvision_device_data[ 36 ].vin_reg1 = 0; usbvision_device_data[ 36 ].vin_reg2 = 0; usbvision_device_data[ 36 ].dvi_yuv = 7; usbvision_device_data[ 36 ].tuner_type = 37; usbvision_device_data[ 36 ].x_offset = 0; usbvision_device_data[ 36 ].y_offset = 3; usbvision_device_data[ 37 ].video_norm = 45056; usbvision_device_data[ 37 ].model_string = "Hauppauge WinTV USB Pro (NTSC M/N FM)"; usbvision_device_data[ 37 ].interface = -1; usbvision_device_data[ 37 ].codec = 7113; usbvision_device_data[ 37 ].video_channels = 3; usbvision_device_data[ 37 ].audio_channels = 1; usbvision_device_data[ 37 ].radio = 1; usbvision_device_data[ 37 ].vbi = 1; usbvision_device_data[ 37 ].tuner = 1; usbvision_device_data[ 37 ].vin_reg1_override = 0; usbvision_device_data[ 37 ].vin_reg2_override = 0; usbvision_device_data[ 37 ].dvi_yuv_override = 1; usbvision_device_data[ 37 ].vin_reg1 = 0; usbvision_device_data[ 37 ].vin_reg2 = 0; usbvision_device_data[ 37 ].dvi_yuv = 7; usbvision_device_data[ 37 ].tuner_type = 17; usbvision_device_data[ 37 ].x_offset = 0; usbvision_device_data[ 37 ].y_offset = 3; usbvision_device_data[ 38 ].video_norm = 255; usbvision_device_data[ 38 ].model_string = "Hauppauge WinTV USB Pro (PAL B/G FM)"; usbvision_device_data[ 38 ].interface = 0; usbvision_device_data[ 38 ].codec = 7113; usbvision_device_data[ 38 ].video_channels = 3; usbvision_device_data[ 38 ].audio_channels = 1; usbvision_device_data[ 38 ].radio = 1; usbvision_device_data[ 38 ].vbi = 1; usbvision_device_data[ 38 ].tuner = 1; usbvision_device_data[ 38 ].vin_reg1_override = 0; usbvision_device_data[ 38 ].vin_reg2_override = 0; usbvision_device_data[ 38 ].dvi_yuv_override = 1; usbvision_device_data[ 38 ].vin_reg1 = 0; usbvision_device_data[ 38 ].vin_reg2 = 0; usbvision_device_data[ 38 ].dvi_yuv = 7; usbvision_device_data[ 38 ].tuner_type = 5; usbvision_device_data[ 38 ].x_offset = 0; usbvision_device_data[ 38 ].y_offset = 3; usbvision_device_data[ 39 ].video_norm = 255; usbvision_device_data[ 39 ].model_string = "Hauppauge WinTV USB Pro (PAL I FM)"; usbvision_device_data[ 39 ].interface = 0; usbvision_device_data[ 39 ].codec = 7113; usbvision_device_data[ 39 ].video_channels = 3; usbvision_device_data[ 39 ].audio_channels = 1; usbvision_device_data[ 39 ].radio = 1; usbvision_device_data[ 39 ].vbi = 1; usbvision_device_data[ 39 ].tuner = 1; usbvision_device_data[ 39 ].vin_reg1_override = 0; usbvision_device_data[ 39 ].vin_reg2_override = 0; usbvision_device_data[ 39 ].dvi_yuv_override = 1; usbvision_device_data[ 39 ].vin_reg1 = 0; usbvision_device_data[ 39 ].vin_reg2 = 0; usbvision_device_data[ 39 ].dvi_yuv = 7; usbvision_device_data[ 39 ].tuner_type = 5; usbvision_device_data[ 39 ].x_offset = 0; usbvision_device_data[ 39 ].y_offset = 3; usbvision_device_data[ 40 ].video_norm = 255; usbvision_device_data[ 40 ].model_string = "Hauppauge WinTV USB Pro (PAL D/K FM)"; usbvision_device_data[ 40 ].interface = 0; usbvision_device_data[ 40 ].codec = 7113; usbvision_device_data[ 40 ].video_channels = 3; usbvision_device_data[ 40 ].audio_channels = 1; usbvision_device_data[ 40 ].radio = 1; usbvision_device_data[ 40 ].vbi = 1; usbvision_device_data[ 40 ].tuner = 1; usbvision_device_data[ 40 ].vin_reg1_override = 0; usbvision_device_data[ 40 ].vin_reg2_override = 0; usbvision_device_data[ 40 ].dvi_yuv_override = 1; usbvision_device_data[ 40 ].vin_reg1 = 0; usbvision_device_data[ 40 ].vin_reg2 = 0; usbvision_device_data[ 40 ].dvi_yuv = 7; usbvision_device_data[ 40 ].tuner_type = 5; usbvision_device_data[ 40 ].x_offset = 0; usbvision_device_data[ 40 ].y_offset = 3; usbvision_device_data[ 41 ].video_norm = 255; usbvision_device_data[ 41 ].model_string = "Hauppauge WinTV USB Pro (Temic PAL/SECAM B/G/I/D/K/L FM)"; usbvision_device_data[ 41 ].interface = 0; usbvision_device_data[ 41 ].codec = 7113; usbvision_device_data[ 41 ].video_channels = 3; usbvision_device_data[ 41 ].audio_channels = 1; usbvision_device_data[ 41 ].radio = 1; usbvision_device_data[ 41 ].vbi = 1; usbvision_device_data[ 41 ].tuner = 1; usbvision_device_data[ 41 ].vin_reg1_override = 0; usbvision_device_data[ 41 ].vin_reg2_override = 0; usbvision_device_data[ 41 ].dvi_yuv_override = 1; usbvision_device_data[ 41 ].vin_reg1 = 0; usbvision_device_data[ 41 ].vin_reg2 = 0; usbvision_device_data[ 41 ].dvi_yuv = 7; usbvision_device_data[ 41 ].tuner_type = 45; usbvision_device_data[ 41 ].x_offset = 0; usbvision_device_data[ 41 ].y_offset = 3; usbvision_device_data[ 42 ].video_norm = 255; usbvision_device_data[ 42 ].model_string = "Hauppauge WinTV USB Pro (Temic PAL B/G FM)"; usbvision_device_data[ 42 ].interface = 0; usbvision_device_data[ 42 ].codec = 7113; usbvision_device_data[ 42 ].video_channels = 3; usbvision_device_data[ 42 ].audio_channels = 1; usbvision_device_data[ 42 ].radio = 1; usbvision_device_data[ 42 ].vbi = 1; usbvision_device_data[ 42 ].tuner = 1; usbvision_device_data[ 42 ].vin_reg1_override = 0; usbvision_device_data[ 42 ].vin_reg2_override = 0; usbvision_device_data[ 42 ].dvi_yuv_override = 1; usbvision_device_data[ 42 ].vin_reg1 = 0; usbvision_device_data[ 42 ].vin_reg2 = 0; usbvision_device_data[ 42 ].dvi_yuv = 7; usbvision_device_data[ 42 ].tuner_type = 45; usbvision_device_data[ 42 ].x_offset = 0; usbvision_device_data[ 42 ].y_offset = 3; usbvision_device_data[ 43 ].video_norm = 255; usbvision_device_data[ 43 ].model_string = "Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L FM)"; usbvision_device_data[ 43 ].interface = 0; usbvision_device_data[ 43 ].codec = 7113; usbvision_device_data[ 43 ].video_channels = 3; usbvision_device_data[ 43 ].audio_channels = 1; usbvision_device_data[ 43 ].radio = 1; usbvision_device_data[ 43 ].vbi = 1; usbvision_device_data[ 43 ].tuner = 1; usbvision_device_data[ 43 ].vin_reg1_override = 0; usbvision_device_data[ 43 ].vin_reg2_override = 0; usbvision_device_data[ 43 ].dvi_yuv_override = 1; usbvision_device_data[ 43 ].vin_reg1 = 0; usbvision_device_data[ 43 ].vin_reg2 = 0; usbvision_device_data[ 43 ].dvi_yuv = 7; usbvision_device_data[ 43 ].tuner_type = 38; usbvision_device_data[ 43 ].x_offset = 0; usbvision_device_data[ 43 ].y_offset = 3; usbvision_device_data[ 44 ].video_norm = 45056; usbvision_device_data[ 44 ].model_string = "Hauppauge WinTV USB Pro (NTSC M/N FM) V2"; usbvision_device_data[ 44 ].interface = 0; usbvision_device_data[ 44 ].codec = 7113; usbvision_device_data[ 44 ].video_channels = 3; usbvision_device_data[ 44 ].audio_channels = 1; usbvision_device_data[ 44 ].radio = 1; usbvision_device_data[ 44 ].vbi = 1; usbvision_device_data[ 44 ].tuner = 1; usbvision_device_data[ 44 ].vin_reg1_override = 0; usbvision_device_data[ 44 ].vin_reg2_override = 0; usbvision_device_data[ 44 ].dvi_yuv_override = 1; usbvision_device_data[ 44 ].vin_reg1 = 0; usbvision_device_data[ 44 ].vin_reg2 = 0; usbvision_device_data[ 44 ].dvi_yuv = 7; usbvision_device_data[ 44 ].tuner_type = 17; usbvision_device_data[ 44 ].x_offset = 0; usbvision_device_data[ 44 ].y_offset = 3; usbvision_device_data[ 45 ].video_norm = 45056; usbvision_device_data[ 45 ].model_string = "Camtel Technology USB TV Genie Pro FM Model TVB330"; usbvision_device_data[ 45 ].interface = -1; usbvision_device_data[ 45 ].codec = 7113; usbvision_device_data[ 45 ].video_channels = 3; usbvision_device_data[ 45 ].audio_channels = 1; usbvision_device_data[ 45 ].radio = 1; usbvision_device_data[ 45 ].vbi = 1; usbvision_device_data[ 45 ].tuner = 1; usbvision_device_data[ 45 ].vin_reg1_override = 0; usbvision_device_data[ 45 ].vin_reg2_override = 0; usbvision_device_data[ 45 ].dvi_yuv_override = 0; usbvision_device_data[ 45 ].vin_reg1 = 0; usbvision_device_data[ 45 ].vin_reg2 = 0; usbvision_device_data[ 45 ].dvi_yuv = 0; usbvision_device_data[ 45 ].tuner_type = 17; usbvision_device_data[ 45 ].x_offset = 5; usbvision_device_data[ 45 ].y_offset = 5; usbvision_device_data[ 46 ].video_norm = 255; usbvision_device_data[ 46 ].model_string = "Digital Video Creator I"; usbvision_device_data[ 46 ].interface = -1; usbvision_device_data[ 46 ].codec = 7113; usbvision_device_data[ 46 ].video_channels = 2; usbvision_device_data[ 46 ].audio_channels = 0; usbvision_device_data[ 46 ].radio = 0; usbvision_device_data[ 46 ].vbi = 1; usbvision_device_data[ 46 ].tuner = 0; usbvision_device_data[ 46 ].vin_reg1_override = 0; usbvision_device_data[ 46 ].vin_reg2_override = 0; usbvision_device_data[ 46 ].dvi_yuv_override = 1; usbvision_device_data[ 46 ].vin_reg1 = 0; usbvision_device_data[ 46 ].vin_reg2 = 0; usbvision_device_data[ 46 ].dvi_yuv = 7; usbvision_device_data[ 46 ].tuner_type = 0; usbvision_device_data[ 46 ].x_offset = 0; usbvision_device_data[ 46 ].y_offset = 3; usbvision_device_data[ 47 ].video_norm = 45056; usbvision_device_data[ 47 ].model_string = "Global Village GV-007 (NTSC)"; usbvision_device_data[ 47 ].interface = -1; usbvision_device_data[ 47 ].codec = 7111; usbvision_device_data[ 47 ].video_channels = 2; usbvision_device_data[ 47 ].audio_channels = 0; usbvision_device_data[ 47 ].radio = 0; usbvision_device_data[ 47 ].vbi = 1; usbvision_device_data[ 47 ].tuner = 0; usbvision_device_data[ 47 ].vin_reg1_override = 0; usbvision_device_data[ 47 ].vin_reg2_override = 0; usbvision_device_data[ 47 ].dvi_yuv_override = 1; usbvision_device_data[ 47 ].vin_reg1 = 0; usbvision_device_data[ 47 ].vin_reg2 = 0; usbvision_device_data[ 47 ].dvi_yuv = 7; usbvision_device_data[ 47 ].tuner_type = 0; usbvision_device_data[ 47 ].x_offset = 82; usbvision_device_data[ 47 ].y_offset = 20; usbvision_device_data[ 48 ].video_norm = 45056; usbvision_device_data[ 48 ].model_string = "Dazzle Fusion Model DVC-50 Rev 1 (NTSC)"; usbvision_device_data[ 48 ].interface = 0; usbvision_device_data[ 48 ].codec = 7113; usbvision_device_data[ 48 ].video_channels = 2; usbvision_device_data[ 48 ].audio_channels = 0; usbvision_device_data[ 48 ].radio = 0; usbvision_device_data[ 48 ].vbi = 1; usbvision_device_data[ 48 ].tuner = 0; usbvision_device_data[ 48 ].vin_reg1_override = 0; usbvision_device_data[ 48 ].vin_reg2_override = 0; usbvision_device_data[ 48 ].dvi_yuv_override = 1; usbvision_device_data[ 48 ].vin_reg1 = 0; usbvision_device_data[ 48 ].vin_reg2 = 0; usbvision_device_data[ 48 ].dvi_yuv = 7; usbvision_device_data[ 48 ].tuner_type = 0; usbvision_device_data[ 48 ].x_offset = 0; usbvision_device_data[ 48 ].y_offset = 3; usbvision_device_data[ 49 ].video_norm = 255; usbvision_device_data[ 49 ].model_string = "Dazzle Fusion Model DVC-80 Rev 1 (PAL)"; usbvision_device_data[ 49 ].interface = 0; usbvision_device_data[ 49 ].codec = 7113; usbvision_device_data[ 49 ].video_channels = 2; usbvision_device_data[ 49 ].audio_channels = 0; usbvision_device_data[ 49 ].radio = 0; usbvision_device_data[ 49 ].vbi = 1; usbvision_device_data[ 49 ].tuner = 0; usbvision_device_data[ 49 ].vin_reg1_override = 0; usbvision_device_data[ 49 ].vin_reg2_override = 0; usbvision_device_data[ 49 ].dvi_yuv_override = 1; usbvision_device_data[ 49 ].vin_reg1 = 0; usbvision_device_data[ 49 ].vin_reg2 = 0; usbvision_device_data[ 49 ].dvi_yuv = 7; usbvision_device_data[ 49 ].tuner_type = 0; usbvision_device_data[ 49 ].x_offset = 0; usbvision_device_data[ 49 ].y_offset = 3; usbvision_device_data[ 50 ].video_norm = 16711680; usbvision_device_data[ 50 ].model_string = "Dazzle Fusion Model DVC-90 Rev 1 (SECAM)"; usbvision_device_data[ 50 ].interface = 0; usbvision_device_data[ 50 ].codec = 7113; usbvision_device_data[ 50 ].video_channels = 2; usbvision_device_data[ 50 ].audio_channels = 0; usbvision_device_data[ 50 ].radio = 0; usbvision_device_data[ 50 ].vbi = 1; usbvision_device_data[ 50 ].tuner = 0; usbvision_device_data[ 50 ].vin_reg1_override = 0; usbvision_device_data[ 50 ].vin_reg2_override = 0; usbvision_device_data[ 50 ].dvi_yuv_override = 1; usbvision_device_data[ 50 ].vin_reg1 = 0; usbvision_device_data[ 50 ].vin_reg2 = 0; usbvision_device_data[ 50 ].dvi_yuv = 7; usbvision_device_data[ 50 ].tuner_type = 0; usbvision_device_data[ 50 ].x_offset = 0; usbvision_device_data[ 50 ].y_offset = 3; usbvision_device_data[ 51 ].video_norm = 255; usbvision_device_data[ 51 ].model_string = "Eskape Labs MyTV2Go"; usbvision_device_data[ 51 ].interface = 0; usbvision_device_data[ 51 ].codec = 7113; usbvision_device_data[ 51 ].video_channels = 2; usbvision_device_data[ 51 ].audio_channels = 1; usbvision_device_data[ 51 ].radio = 1; usbvision_device_data[ 51 ].vbi = 1; usbvision_device_data[ 51 ].tuner = 1; usbvision_device_data[ 51 ].vin_reg1_override = 0; usbvision_device_data[ 51 ].vin_reg2_override = 0; usbvision_device_data[ 51 ].dvi_yuv_override = 1; usbvision_device_data[ 51 ].vin_reg1 = 0; usbvision_device_data[ 51 ].vin_reg2 = 0; usbvision_device_data[ 51 ].dvi_yuv = 7; usbvision_device_data[ 51 ].tuner_type = 38; usbvision_device_data[ 51 ].x_offset = 0; usbvision_device_data[ 51 ].y_offset = 3; usbvision_device_data[ 52 ].video_norm = 255; usbvision_device_data[ 52 ].model_string = "Pinnacle Studio PCTV USB (PAL)"; usbvision_device_data[ 52 ].interface = -1; usbvision_device_data[ 52 ].codec = 7111; usbvision_device_data[ 52 ].video_channels = 3; usbvision_device_data[ 52 ].audio_channels = 1; usbvision_device_data[ 52 ].radio = 0; usbvision_device_data[ 52 ].vbi = 0; usbvision_device_data[ 52 ].tuner = 1; usbvision_device_data[ 52 ].vin_reg1_override = 0; usbvision_device_data[ 52 ].vin_reg2_override = 0; usbvision_device_data[ 52 ].dvi_yuv_override = 0; usbvision_device_data[ 52 ].vin_reg1 = 0; usbvision_device_data[ 52 ].vin_reg2 = 0; usbvision_device_data[ 52 ].dvi_yuv = 0; usbvision_device_data[ 52 ].tuner_type = 18; usbvision_device_data[ 52 ].x_offset = -1; usbvision_device_data[ 52 ].y_offset = -1; usbvision_device_data[ 53 ].video_norm = 16711680; usbvision_device_data[ 53 ].model_string = "Pinnacle Studio PCTV USB (SECAM)"; usbvision_device_data[ 53 ].interface = -1; usbvision_device_data[ 53 ].codec = 7111; usbvision_device_data[ 53 ].video_channels = 3; usbvision_device_data[ 53 ].audio_channels = 1; usbvision_device_data[ 53 ].radio = 0; usbvision_device_data[ 53 ].vbi = 1; usbvision_device_data[ 53 ].tuner = 1; usbvision_device_data[ 53 ].vin_reg1_override = 0; usbvision_device_data[ 53 ].vin_reg2_override = 0; usbvision_device_data[ 53 ].dvi_yuv_override = 0; usbvision_device_data[ 53 ].vin_reg1 = 0; usbvision_device_data[ 53 ].vin_reg2 = 0; usbvision_device_data[ 53 ].dvi_yuv = 0; usbvision_device_data[ 53 ].tuner_type = 3; usbvision_device_data[ 53 ].x_offset = -1; usbvision_device_data[ 53 ].y_offset = -1; usbvision_device_data[ 54 ].video_norm = 255; usbvision_device_data[ 54 ].model_string = "Pinnacle Studio PCTV USB (PAL) FM"; usbvision_device_data[ 54 ].interface = -1; usbvision_device_data[ 54 ].codec = 7111; usbvision_device_data[ 54 ].video_channels = 3; usbvision_device_data[ 54 ].audio_channels = 1; usbvision_device_data[ 54 ].radio = 1; usbvision_device_data[ 54 ].vbi = 1; usbvision_device_data[ 54 ].tuner = 1; usbvision_device_data[ 54 ].vin_reg1_override = 0; usbvision_device_data[ 54 ].vin_reg2_override = 0; usbvision_device_data[ 54 ].dvi_yuv_override = 0; usbvision_device_data[ 54 ].vin_reg1 = 0; usbvision_device_data[ 54 ].vin_reg2 = 0; usbvision_device_data[ 54 ].dvi_yuv = 0; usbvision_device_data[ 54 ].tuner_type = 5; usbvision_device_data[ 54 ].x_offset = 128; usbvision_device_data[ 54 ].y_offset = 23; usbvision_device_data[ 55 ].video_norm = 255; usbvision_device_data[ 55 ].model_string = "Miro PCTV USB"; usbvision_device_data[ 55 ].interface = -1; usbvision_device_data[ 55 ].codec = 7111; usbvision_device_data[ 55 ].video_channels = 3; usbvision_device_data[ 55 ].audio_channels = 1; usbvision_device_data[ 55 ].radio = 0; usbvision_device_data[ 55 ].vbi = 1; usbvision_device_data[ 55 ].tuner = 1; usbvision_device_data[ 55 ].vin_reg1_override = 0; usbvision_device_data[ 55 ].vin_reg2_override = 0; usbvision_device_data[ 55 ].dvi_yuv_override = 0; usbvision_device_data[ 55 ].vin_reg1 = 0; usbvision_device_data[ 55 ].vin_reg2 = 0; usbvision_device_data[ 55 ].dvi_yuv = 0; usbvision_device_data[ 55 ].tuner_type = 5; usbvision_device_data[ 55 ].x_offset = -1; usbvision_device_data[ 55 ].y_offset = -1; usbvision_device_data[ 56 ].video_norm = 45056; usbvision_device_data[ 56 ].model_string = "Pinnacle Studio PCTV USB (NTSC) FM"; usbvision_device_data[ 56 ].interface = -1; usbvision_device_data[ 56 ].codec = 7111; usbvision_device_data[ 56 ].video_channels = 3; usbvision_device_data[ 56 ].audio_channels = 1; usbvision_device_data[ 56 ].radio = 1; usbvision_device_data[ 56 ].vbi = 1; usbvision_device_data[ 56 ].tuner = 1; usbvision_device_data[ 56 ].vin_reg1_override = 0; usbvision_device_data[ 56 ].vin_reg2_override = 0; usbvision_device_data[ 56 ].dvi_yuv_override = 0; usbvision_device_data[ 56 ].vin_reg1 = 0; usbvision_device_data[ 56 ].vin_reg2 = 0; usbvision_device_data[ 56 ].dvi_yuv = 0; usbvision_device_data[ 56 ].tuner_type = 17; usbvision_device_data[ 56 ].x_offset = -1; usbvision_device_data[ 56 ].y_offset = -1; usbvision_device_data[ 57 ].video_norm = 255; usbvision_device_data[ 57 ].model_string = "Pinnacle Studio PCTV USB (PAL) FM V2"; usbvision_device_data[ 57 ].interface = -1; usbvision_device_data[ 57 ].codec = 7113; usbvision_device_data[ 57 ].video_channels = 3; usbvision_device_data[ 57 ].audio_channels = 1; usbvision_device_data[ 57 ].radio = 1; usbvision_device_data[ 57 ].vbi = 1; usbvision_device_data[ 57 ].tuner = 1; usbvision_device_data[ 57 ].vin_reg1_override = 0; usbvision_device_data[ 57 ].vin_reg2_override = 0; usbvision_device_data[ 57 ].dvi_yuv_override = 1; usbvision_device_data[ 57 ].vin_reg1 = 0; usbvision_device_data[ 57 ].vin_reg2 = 0; usbvision_device_data[ 57 ].dvi_yuv = 7; usbvision_device_data[ 57 ].tuner_type = 20; usbvision_device_data[ 57 ].x_offset = 0; usbvision_device_data[ 57 ].y_offset = 3; usbvision_device_data[ 58 ].video_norm = 45056; usbvision_device_data[ 58 ].model_string = "Pinnacle Studio PCTV USB (NTSC) FM V2"; usbvision_device_data[ 58 ].interface = -1; usbvision_device_data[ 58 ].codec = 7111; usbvision_device_data[ 58 ].video_channels = 3; usbvision_device_data[ 58 ].audio_channels = 1; usbvision_device_data[ 58 ].radio = 1; usbvision_device_data[ 58 ].vbi = 1; usbvision_device_data[ 58 ].tuner = 1; usbvision_device_data[ 58 ].vin_reg1_override = 0; usbvision_device_data[ 58 ].vin_reg2_override = 0; usbvision_device_data[ 58 ].dvi_yuv_override = 1; usbvision_device_data[ 58 ].vin_reg1 = 0; usbvision_device_data[ 58 ].vin_reg2 = 0; usbvision_device_data[ 58 ].dvi_yuv = 7; usbvision_device_data[ 58 ].tuner_type = 21; usbvision_device_data[ 58 ].x_offset = 0; usbvision_device_data[ 58 ].y_offset = 3; usbvision_device_data[ 59 ].video_norm = 255; usbvision_device_data[ 59 ].model_string = "Pinnacle Studio PCTV USB (PAL) FM V3"; usbvision_device_data[ 59 ].interface = -1; usbvision_device_data[ 59 ].codec = 7113; usbvision_device_data[ 59 ].video_channels = 3; usbvision_device_data[ 59 ].audio_channels = 1; usbvision_device_data[ 59 ].radio = 1; usbvision_device_data[ 59 ].vbi = 1; usbvision_device_data[ 59 ].tuner = 1; usbvision_device_data[ 59 ].vin_reg1_override = 0; usbvision_device_data[ 59 ].vin_reg2_override = 0; usbvision_device_data[ 59 ].dvi_yuv_override = 1; usbvision_device_data[ 59 ].vin_reg1 = 0; usbvision_device_data[ 59 ].vin_reg2 = 0; usbvision_device_data[ 59 ].dvi_yuv = 7; usbvision_device_data[ 59 ].tuner_type = 20; usbvision_device_data[ 59 ].x_offset = 0; usbvision_device_data[ 59 ].y_offset = 3; usbvision_device_data[ 60 ].video_norm = 45056; usbvision_device_data[ 60 ].model_string = "Pinnacle Studio Linx Video input cable (NTSC)"; usbvision_device_data[ 60 ].interface = -1; usbvision_device_data[ 60 ].codec = 7113; usbvision_device_data[ 60 ].video_channels = 2; usbvision_device_data[ 60 ].audio_channels = 1; usbvision_device_data[ 60 ].radio = 0; usbvision_device_data[ 60 ].vbi = 1; usbvision_device_data[ 60 ].tuner = 0; usbvision_device_data[ 60 ].vin_reg1_override = 0; usbvision_device_data[ 60 ].vin_reg2_override = 0; usbvision_device_data[ 60 ].dvi_yuv_override = 1; usbvision_device_data[ 60 ].vin_reg1 = 0; usbvision_device_data[ 60 ].vin_reg2 = 0; usbvision_device_data[ 60 ].dvi_yuv = 7; usbvision_device_data[ 60 ].tuner_type = 0; usbvision_device_data[ 60 ].x_offset = 0; usbvision_device_data[ 60 ].y_offset = 3; usbvision_device_data[ 61 ].video_norm = 255; usbvision_device_data[ 61 ].model_string = "Pinnacle Studio Linx Video input cable (PAL)"; usbvision_device_data[ 61 ].interface = -1; usbvision_device_data[ 61 ].codec = 7113; usbvision_device_data[ 61 ].video_channels = 2; usbvision_device_data[ 61 ].audio_channels = 1; usbvision_device_data[ 61 ].radio = 0; usbvision_device_data[ 61 ].vbi = 1; usbvision_device_data[ 61 ].tuner = 0; usbvision_device_data[ 61 ].vin_reg1_override = 0; usbvision_device_data[ 61 ].vin_reg2_override = 0; usbvision_device_data[ 61 ].dvi_yuv_override = 1; usbvision_device_data[ 61 ].vin_reg1 = 0; usbvision_device_data[ 61 ].vin_reg2 = 0; usbvision_device_data[ 61 ].dvi_yuv = 7; usbvision_device_data[ 61 ].tuner_type = 0; usbvision_device_data[ 61 ].x_offset = 0; usbvision_device_data[ 61 ].y_offset = 3; usbvision_device_data[ 62 ].video_norm = 255; usbvision_device_data[ 62 ].model_string = "Pinnacle PCTV Bungee USB (PAL) FM"; usbvision_device_data[ 62 ].interface = -1; usbvision_device_data[ 62 ].codec = 7113; usbvision_device_data[ 62 ].video_channels = 3; usbvision_device_data[ 62 ].audio_channels = 1; usbvision_device_data[ 62 ].radio = 1; usbvision_device_data[ 62 ].vbi = 1; usbvision_device_data[ 62 ].tuner = 1; usbvision_device_data[ 62 ].vin_reg1_override = 0; usbvision_device_data[ 62 ].vin_reg2_override = 0; usbvision_device_data[ 62 ].dvi_yuv_override = 1; usbvision_device_data[ 62 ].vin_reg1 = 0; usbvision_device_data[ 62 ].vin_reg2 = 0; usbvision_device_data[ 62 ].dvi_yuv = 7; usbvision_device_data[ 62 ].tuner_type = 20; usbvision_device_data[ 62 ].x_offset = 0; usbvision_device_data[ 62 ].y_offset = 3; usbvision_device_data[ 63 ].video_norm = 45056; usbvision_device_data[ 63 ].model_string = "Hauppauge WinTv-USB"; usbvision_device_data[ 63 ].interface = -1; usbvision_device_data[ 63 ].codec = 7111; usbvision_device_data[ 63 ].video_channels = 3; usbvision_device_data[ 63 ].audio_channels = 1; usbvision_device_data[ 63 ].radio = 0; usbvision_device_data[ 63 ].vbi = 1; usbvision_device_data[ 63 ].tuner = 1; usbvision_device_data[ 63 ].vin_reg1_override = 0; usbvision_device_data[ 63 ].vin_reg2_override = 0; usbvision_device_data[ 63 ].dvi_yuv_override = 0; usbvision_device_data[ 63 ].vin_reg1 = 0; usbvision_device_data[ 63 ].vin_reg2 = 0; usbvision_device_data[ 63 ].dvi_yuv = 0; usbvision_device_data[ 63 ].tuner_type = 17; usbvision_device_data[ 63 ].x_offset = -1; usbvision_device_data[ 63 ].y_offset = -1; usbvision_device_data[ 64 ].video_norm = 45056; usbvision_device_data[ 64 ].model_string = "Pinnacle Studio PCTV USB (NTSC) FM V3"; usbvision_device_data[ 64 ].interface = -1; usbvision_device_data[ 64 ].codec = 7111; usbvision_device_data[ 64 ].video_channels = 3; usbvision_device_data[ 64 ].audio_channels = 1; usbvision_device_data[ 64 ].radio = 1; usbvision_device_data[ 64 ].vbi = 1; usbvision_device_data[ 64 ].tuner = 1; usbvision_device_data[ 64 ].vin_reg1_override = 0; usbvision_device_data[ 64 ].vin_reg2_override = 0; usbvision_device_data[ 64 ].dvi_yuv_override = 0; usbvision_device_data[ 64 ].vin_reg1 = 0; usbvision_device_data[ 64 ].vin_reg2 = 0; usbvision_device_data[ 64 ].dvi_yuv = 0; usbvision_device_data[ 64 ].tuner_type = 17; usbvision_device_data[ 64 ].x_offset = -1; usbvision_device_data[ 64 ].y_offset = -1; usbvision_device_data[ 65 ].video_norm = 45056; usbvision_device_data[ 65 ].model_string = "Nogatech USB MicroCam NTSC (NV3000N)"; usbvision_device_data[ 65 ].interface = -1; usbvision_device_data[ 65 ].codec = 3000; usbvision_device_data[ 65 ].video_channels = 1; usbvision_device_data[ 65 ].audio_channels = 0; usbvision_device_data[ 65 ].radio = 0; usbvision_device_data[ 65 ].vbi = 0; usbvision_device_data[ 65 ].tuner = 0; usbvision_device_data[ 65 ].vin_reg1_override = 0; usbvision_device_data[ 65 ].vin_reg2_override = 0; usbvision_device_data[ 65 ].dvi_yuv_override = 0; usbvision_device_data[ 65 ].vin_reg1 = 0; usbvision_device_data[ 65 ].vin_reg2 = 0; usbvision_device_data[ 65 ].dvi_yuv = 0; usbvision_device_data[ 65 ].tuner_type = 0; usbvision_device_data[ 65 ].x_offset = 71; usbvision_device_data[ 65 ].y_offset = 15; usbvision_device_data[ 66 ].video_norm = 255; usbvision_device_data[ 66 ].model_string = "Nogatech USB MicroCam PAL (NV3001P)"; usbvision_device_data[ 66 ].interface = -1; usbvision_device_data[ 66 ].codec = 3000; usbvision_device_data[ 66 ].video_channels = 1; usbvision_device_data[ 66 ].audio_channels = 0; usbvision_device_data[ 66 ].radio = 0; usbvision_device_data[ 66 ].vbi = 0; usbvision_device_data[ 66 ].tuner = 0; usbvision_device_data[ 66 ].vin_reg1_override = 0; usbvision_device_data[ 66 ].vin_reg2_override = 0; usbvision_device_data[ 66 ].dvi_yuv_override = 0; usbvision_device_data[ 66 ].vin_reg1 = 0; usbvision_device_data[ 66 ].vin_reg2 = 0; usbvision_device_data[ 66 ].dvi_yuv = 0; usbvision_device_data[ 66 ].tuner_type = 0; usbvision_device_data[ 66 ].x_offset = 71; usbvision_device_data[ 66 ].y_offset = 18; usbvision_device_data_size = 67; usbvision_table[ 0 ].match_flags = 3; usbvision_table[ 0 ].idVendor = 2671; usbvision_table[ 0 ].idProduct = 1024; usbvision_table[ 0 ].bcdDevice_lo = 0; usbvision_table[ 0 ].bcdDevice_hi = 0; usbvision_table[ 0 ].bDeviceClass = 0; usbvision_table[ 0 ].bDeviceSubClass = 0; usbvision_table[ 0 ].bDeviceProtocol = 0; usbvision_table[ 0 ].bInterfaceClass = 0; usbvision_table[ 0 ].bInterfaceSubClass = 0; usbvision_table[ 0 ].bInterfaceProtocol = 0; usbvision_table[ 0 ].bInterfaceNumber = 0; usbvision_table[ 0 ].driver_info = 0; usbvision_table[ 1 ].match_flags = 3; usbvision_table[ 1 ].idVendor = 1293; usbvision_table[ 1 ].idProduct = 262; usbvision_table[ 1 ].bcdDevice_lo = 0; usbvision_table[ 1 ].bcdDevice_hi = 0; usbvision_table[ 1 ].bDeviceClass = 0; usbvision_table[ 1 ].bDeviceSubClass = 0; usbvision_table[ 1 ].bDeviceProtocol = 0; usbvision_table[ 1 ].bInterfaceClass = 0; usbvision_table[ 1 ].bInterfaceSubClass = 0; usbvision_table[ 1 ].bInterfaceProtocol = 0; usbvision_table[ 1 ].bInterfaceNumber = 0; usbvision_table[ 1 ].driver_info = 1; usbvision_table[ 2 ].match_flags = 3; usbvision_table[ 2 ].idVendor = 1293; usbvision_table[ 2 ].idProduct = 519; usbvision_table[ 2 ].bcdDevice_lo = 0; usbvision_table[ 2 ].bcdDevice_hi = 0; usbvision_table[ 2 ].bDeviceClass = 0; usbvision_table[ 2 ].bDeviceSubClass = 0; usbvision_table[ 2 ].bDeviceProtocol = 0; usbvision_table[ 2 ].bInterfaceClass = 0; usbvision_table[ 2 ].bInterfaceSubClass = 0; usbvision_table[ 2 ].bInterfaceProtocol = 0; usbvision_table[ 2 ].bInterfaceNumber = 0; usbvision_table[ 2 ].driver_info = 2; usbvision_table[ 3 ].match_flags = 3; usbvision_table[ 3 ].idVendor = 1293; usbvision_table[ 3 ].idProduct = 520; usbvision_table[ 3 ].bcdDevice_lo = 0; usbvision_table[ 3 ].bcdDevice_hi = 0; usbvision_table[ 3 ].bDeviceClass = 0; usbvision_table[ 3 ].bDeviceSubClass = 0; usbvision_table[ 3 ].bDeviceProtocol = 0; usbvision_table[ 3 ].bInterfaceClass = 0; usbvision_table[ 3 ].bInterfaceSubClass = 0; usbvision_table[ 3 ].bInterfaceProtocol = 0; usbvision_table[ 3 ].bInterfaceNumber = 0; usbvision_table[ 3 ].driver_info = 3; usbvision_table[ 4 ].match_flags = 3; usbvision_table[ 4 ].idVendor = 1393; usbvision_table[ 4 ].idProduct = 2; usbvision_table[ 4 ].bcdDevice_lo = 0; usbvision_table[ 4 ].bcdDevice_hi = 0; usbvision_table[ 4 ].bDeviceClass = 0; usbvision_table[ 4 ].bDeviceSubClass = 0; usbvision_table[ 4 ].bDeviceProtocol = 0; usbvision_table[ 4 ].bInterfaceClass = 0; usbvision_table[ 4 ].bInterfaceSubClass = 0; usbvision_table[ 4 ].bInterfaceProtocol = 0; usbvision_table[ 4 ].bInterfaceNumber = 0; usbvision_table[ 4 ].driver_info = 4; usbvision_table[ 5 ].match_flags = 3; usbvision_table[ 5 ].idVendor = 1395; usbvision_table[ 5 ].idProduct = 3; usbvision_table[ 5 ].bcdDevice_lo = 0; usbvision_table[ 5 ].bcdDevice_hi = 0; usbvision_table[ 5 ].bDeviceClass = 0; usbvision_table[ 5 ].bDeviceSubClass = 0; usbvision_table[ 5 ].bDeviceProtocol = 0; usbvision_table[ 5 ].bInterfaceClass = 0; usbvision_table[ 5 ].bInterfaceSubClass = 0; usbvision_table[ 5 ].bInterfaceProtocol = 0; usbvision_table[ 5 ].bInterfaceNumber = 0; usbvision_table[ 5 ].driver_info = 5; usbvision_table[ 6 ].match_flags = 3; usbvision_table[ 6 ].idVendor = 1395; usbvision_table[ 6 ].idProduct = 1024; usbvision_table[ 6 ].bcdDevice_lo = 0; usbvision_table[ 6 ].bcdDevice_hi = 0; usbvision_table[ 6 ].bDeviceClass = 0; usbvision_table[ 6 ].bDeviceSubClass = 0; usbvision_table[ 6 ].bDeviceProtocol = 0; usbvision_table[ 6 ].bInterfaceClass = 0; usbvision_table[ 6 ].bInterfaceSubClass = 0; usbvision_table[ 6 ].bInterfaceProtocol = 0; usbvision_table[ 6 ].bInterfaceNumber = 0; usbvision_table[ 6 ].driver_info = 6; usbvision_table[ 7 ].match_flags = 3; usbvision_table[ 7 ].idVendor = 1395; usbvision_table[ 7 ].idProduct = 8192; usbvision_table[ 7 ].bcdDevice_lo = 0; usbvision_table[ 7 ].bcdDevice_hi = 0; usbvision_table[ 7 ].bDeviceClass = 0; usbvision_table[ 7 ].bDeviceSubClass = 0; usbvision_table[ 7 ].bDeviceProtocol = 0; usbvision_table[ 7 ].bInterfaceClass = 0; usbvision_table[ 7 ].bInterfaceSubClass = 0; usbvision_table[ 7 ].bInterfaceProtocol = 0; usbvision_table[ 7 ].bInterfaceNumber = 0; usbvision_table[ 7 ].driver_info = 7; usbvision_table[ 8 ].match_flags = 3; usbvision_table[ 8 ].idVendor = 1395; usbvision_table[ 8 ].idProduct = 11520; usbvision_table[ 8 ].bcdDevice_lo = 0; usbvision_table[ 8 ].bcdDevice_hi = 0; usbvision_table[ 8 ].bDeviceClass = 0; usbvision_table[ 8 ].bDeviceSubClass = 0; usbvision_table[ 8 ].bDeviceProtocol = 0; usbvision_table[ 8 ].bInterfaceClass = 0; usbvision_table[ 8 ].bInterfaceSubClass = 0; usbvision_table[ 8 ].bInterfaceProtocol = 0; usbvision_table[ 8 ].bInterfaceNumber = 0; usbvision_table[ 8 ].driver_info = 8; usbvision_table[ 9 ].match_flags = 3; usbvision_table[ 9 ].idVendor = 1395; usbvision_table[ 9 ].idProduct = 11521; usbvision_table[ 9 ].bcdDevice_lo = 0; usbvision_table[ 9 ].bcdDevice_hi = 0; usbvision_table[ 9 ].bDeviceClass = 0; usbvision_table[ 9 ].bDeviceSubClass = 0; usbvision_table[ 9 ].bDeviceProtocol = 0; usbvision_table[ 9 ].bInterfaceClass = 0; usbvision_table[ 9 ].bInterfaceSubClass = 0; usbvision_table[ 9 ].bInterfaceProtocol = 0; usbvision_table[ 9 ].bInterfaceNumber = 0; usbvision_table[ 9 ].driver_info = 9; usbvision_table[ 10 ].match_flags = 3; usbvision_table[ 10 ].idVendor = 1395; usbvision_table[ 10 ].idProduct = 8449; usbvision_table[ 10 ].bcdDevice_lo = 0; usbvision_table[ 10 ].bcdDevice_hi = 0; usbvision_table[ 10 ].bDeviceClass = 0; usbvision_table[ 10 ].bDeviceSubClass = 0; usbvision_table[ 10 ].bDeviceProtocol = 0; usbvision_table[ 10 ].bInterfaceClass = 0; usbvision_table[ 10 ].bInterfaceSubClass = 0; usbvision_table[ 10 ].bInterfaceProtocol = 0; usbvision_table[ 10 ].bInterfaceNumber = 0; usbvision_table[ 10 ].driver_info = 10; usbvision_table[ 11 ].match_flags = 3; usbvision_table[ 11 ].idVendor = 1395; usbvision_table[ 11 ].idProduct = 12288; usbvision_table[ 11 ].bcdDevice_lo = 0; usbvision_table[ 11 ].bcdDevice_hi = 0; usbvision_table[ 11 ].bDeviceClass = 0; usbvision_table[ 11 ].bDeviceSubClass = 0; usbvision_table[ 11 ].bDeviceProtocol = 0; usbvision_table[ 11 ].bInterfaceClass = 0; usbvision_table[ 11 ].bInterfaceSubClass = 0; usbvision_table[ 11 ].bInterfaceProtocol = 0; usbvision_table[ 11 ].bInterfaceNumber = 0; usbvision_table[ 11 ].driver_info = 65; usbvision_table[ 12 ].match_flags = 3; usbvision_table[ 12 ].idVendor = 1395; usbvision_table[ 12 ].idProduct = 12289; usbvision_table[ 12 ].bcdDevice_lo = 0; usbvision_table[ 12 ].bcdDevice_hi = 0; usbvision_table[ 12 ].bDeviceClass = 0; usbvision_table[ 12 ].bDeviceSubClass = 0; usbvision_table[ 12 ].bDeviceProtocol = 0; usbvision_table[ 12 ].bInterfaceClass = 0; usbvision_table[ 12 ].bInterfaceSubClass = 0; usbvision_table[ 12 ].bInterfaceProtocol = 0; usbvision_table[ 12 ].bInterfaceNumber = 0; usbvision_table[ 12 ].driver_info = 66; usbvision_table[ 13 ].match_flags = 3; usbvision_table[ 13 ].idVendor = 1395; usbvision_table[ 13 ].idProduct = 16640; usbvision_table[ 13 ].bcdDevice_lo = 0; usbvision_table[ 13 ].bcdDevice_hi = 0; usbvision_table[ 13 ].bDeviceClass = 0; usbvision_table[ 13 ].bDeviceSubClass = 0; usbvision_table[ 13 ].bDeviceProtocol = 0; usbvision_table[ 13 ].bInterfaceClass = 0; usbvision_table[ 13 ].bInterfaceSubClass = 0; usbvision_table[ 13 ].bInterfaceProtocol = 0; usbvision_table[ 13 ].bInterfaceNumber = 0; usbvision_table[ 13 ].driver_info = 11; usbvision_table[ 14 ].match_flags = 3; usbvision_table[ 14 ].idVendor = 1395; usbvision_table[ 14 ].idProduct = 16656; usbvision_table[ 14 ].bcdDevice_lo = 0; usbvision_table[ 14 ].bcdDevice_hi = 0; usbvision_table[ 14 ].bDeviceClass = 0; usbvision_table[ 14 ].bDeviceSubClass = 0; usbvision_table[ 14 ].bDeviceProtocol = 0; usbvision_table[ 14 ].bInterfaceClass = 0; usbvision_table[ 14 ].bInterfaceSubClass = 0; usbvision_table[ 14 ].bInterfaceProtocol = 0; usbvision_table[ 14 ].bInterfaceNumber = 0; usbvision_table[ 14 ].driver_info = 12; usbvision_table[ 15 ].match_flags = 3; usbvision_table[ 15 ].idVendor = 1395; usbvision_table[ 15 ].idProduct = 17488; usbvision_table[ 15 ].bcdDevice_lo = 0; usbvision_table[ 15 ].bcdDevice_hi = 0; usbvision_table[ 15 ].bDeviceClass = 0; usbvision_table[ 15 ].bDeviceSubClass = 0; usbvision_table[ 15 ].bDeviceProtocol = 0; usbvision_table[ 15 ].bInterfaceClass = 0; usbvision_table[ 15 ].bInterfaceSubClass = 0; usbvision_table[ 15 ].bInterfaceProtocol = 0; usbvision_table[ 15 ].bInterfaceNumber = 0; usbvision_table[ 15 ].driver_info = 13; usbvision_table[ 16 ].match_flags = 3; usbvision_table[ 16 ].idVendor = 1395; usbvision_table[ 16 ].idProduct = 17744; usbvision_table[ 16 ].bcdDevice_lo = 0; usbvision_table[ 16 ].bcdDevice_hi = 0; usbvision_table[ 16 ].bDeviceClass = 0; usbvision_table[ 16 ].bDeviceSubClass = 0; usbvision_table[ 16 ].bDeviceProtocol = 0; usbvision_table[ 16 ].bInterfaceClass = 0; usbvision_table[ 16 ].bInterfaceSubClass = 0; usbvision_table[ 16 ].bInterfaceProtocol = 0; usbvision_table[ 16 ].bInterfaceNumber = 0; usbvision_table[ 16 ].driver_info = 14; usbvision_table[ 17 ].match_flags = 3; usbvision_table[ 17 ].idVendor = 1395; usbvision_table[ 17 ].idProduct = 19712; usbvision_table[ 17 ].bcdDevice_lo = 0; usbvision_table[ 17 ].bcdDevice_hi = 0; usbvision_table[ 17 ].bDeviceClass = 0; usbvision_table[ 17 ].bDeviceSubClass = 0; usbvision_table[ 17 ].bDeviceProtocol = 0; usbvision_table[ 17 ].bInterfaceClass = 0; usbvision_table[ 17 ].bInterfaceSubClass = 0; usbvision_table[ 17 ].bInterfaceProtocol = 0; usbvision_table[ 17 ].bInterfaceNumber = 0; usbvision_table[ 17 ].driver_info = 15; usbvision_table[ 18 ].match_flags = 3; usbvision_table[ 18 ].idVendor = 1395; usbvision_table[ 18 ].idProduct = 19713; usbvision_table[ 18 ].bcdDevice_lo = 0; usbvision_table[ 18 ].bcdDevice_hi = 0; usbvision_table[ 18 ].bDeviceClass = 0; usbvision_table[ 18 ].bDeviceSubClass = 0; usbvision_table[ 18 ].bDeviceProtocol = 0; usbvision_table[ 18 ].bInterfaceClass = 0; usbvision_table[ 18 ].bInterfaceSubClass = 0; usbvision_table[ 18 ].bInterfaceProtocol = 0; usbvision_table[ 18 ].bInterfaceNumber = 0; usbvision_table[ 18 ].driver_info = 16; usbvision_table[ 19 ].match_flags = 3; usbvision_table[ 19 ].idVendor = 1395; usbvision_table[ 19 ].idProduct = 19714; usbvision_table[ 19 ].bcdDevice_lo = 0; usbvision_table[ 19 ].bcdDevice_hi = 0; usbvision_table[ 19 ].bDeviceClass = 0; usbvision_table[ 19 ].bDeviceSubClass = 0; usbvision_table[ 19 ].bDeviceProtocol = 0; usbvision_table[ 19 ].bInterfaceClass = 0; usbvision_table[ 19 ].bInterfaceSubClass = 0; usbvision_table[ 19 ].bInterfaceProtocol = 0; usbvision_table[ 19 ].bInterfaceNumber = 0; usbvision_table[ 19 ].driver_info = 17; usbvision_table[ 20 ].match_flags = 3; usbvision_table[ 20 ].idVendor = 1395; usbvision_table[ 20 ].idProduct = 19715; usbvision_table[ 20 ].bcdDevice_lo = 0; usbvision_table[ 20 ].bcdDevice_hi = 0; usbvision_table[ 20 ].bDeviceClass = 0; usbvision_table[ 20 ].bDeviceSubClass = 0; usbvision_table[ 20 ].bDeviceProtocol = 0; usbvision_table[ 20 ].bInterfaceClass = 0; usbvision_table[ 20 ].bInterfaceSubClass = 0; usbvision_table[ 20 ].bInterfaceProtocol = 0; usbvision_table[ 20 ].bInterfaceNumber = 0; usbvision_table[ 20 ].driver_info = 18; usbvision_table[ 21 ].match_flags = 3; usbvision_table[ 21 ].idVendor = 1395; usbvision_table[ 21 ].idProduct = 19716; usbvision_table[ 21 ].bcdDevice_lo = 0; usbvision_table[ 21 ].bcdDevice_hi = 0; usbvision_table[ 21 ].bDeviceClass = 0; usbvision_table[ 21 ].bDeviceSubClass = 0; usbvision_table[ 21 ].bDeviceProtocol = 0; usbvision_table[ 21 ].bInterfaceClass = 0; usbvision_table[ 21 ].bInterfaceSubClass = 0; usbvision_table[ 21 ].bInterfaceProtocol = 0; usbvision_table[ 21 ].bInterfaceNumber = 0; usbvision_table[ 21 ].driver_info = 19; usbvision_table[ 22 ].match_flags = 3; usbvision_table[ 22 ].idVendor = 1395; usbvision_table[ 22 ].idProduct = 19728; usbvision_table[ 22 ].bcdDevice_lo = 0; usbvision_table[ 22 ].bcdDevice_hi = 0; usbvision_table[ 22 ].bDeviceClass = 0; usbvision_table[ 22 ].bDeviceSubClass = 0; usbvision_table[ 22 ].bDeviceProtocol = 0; usbvision_table[ 22 ].bInterfaceClass = 0; usbvision_table[ 22 ].bInterfaceSubClass = 0; usbvision_table[ 22 ].bInterfaceProtocol = 0; usbvision_table[ 22 ].bInterfaceNumber = 0; usbvision_table[ 22 ].driver_info = 20; usbvision_table[ 23 ].match_flags = 3; usbvision_table[ 23 ].idVendor = 1395; usbvision_table[ 23 ].idProduct = 19729; usbvision_table[ 23 ].bcdDevice_lo = 0; usbvision_table[ 23 ].bcdDevice_hi = 0; usbvision_table[ 23 ].bDeviceClass = 0; usbvision_table[ 23 ].bDeviceSubClass = 0; usbvision_table[ 23 ].bDeviceProtocol = 0; usbvision_table[ 23 ].bInterfaceClass = 0; usbvision_table[ 23 ].bInterfaceSubClass = 0; usbvision_table[ 23 ].bInterfaceProtocol = 0; usbvision_table[ 23 ].bInterfaceNumber = 0; usbvision_table[ 23 ].driver_info = 21; usbvision_table[ 24 ].match_flags = 3; usbvision_table[ 24 ].idVendor = 1395; usbvision_table[ 24 ].idProduct = 19730; usbvision_table[ 24 ].bcdDevice_lo = 0; usbvision_table[ 24 ].bcdDevice_hi = 0; usbvision_table[ 24 ].bDeviceClass = 0; usbvision_table[ 24 ].bDeviceSubClass = 0; usbvision_table[ 24 ].bDeviceProtocol = 0; usbvision_table[ 24 ].bInterfaceClass = 0; usbvision_table[ 24 ].bInterfaceSubClass = 0; usbvision_table[ 24 ].bInterfaceProtocol = 0; usbvision_table[ 24 ].bInterfaceNumber = 0; usbvision_table[ 24 ].driver_info = 22; usbvision_table[ 25 ].match_flags = 3; usbvision_table[ 25 ].idVendor = 1395; usbvision_table[ 25 ].idProduct = 19732; usbvision_table[ 25 ].bcdDevice_lo = 0; usbvision_table[ 25 ].bcdDevice_hi = 0; usbvision_table[ 25 ].bDeviceClass = 0; usbvision_table[ 25 ].bDeviceSubClass = 0; usbvision_table[ 25 ].bDeviceProtocol = 0; usbvision_table[ 25 ].bInterfaceClass = 0; usbvision_table[ 25 ].bInterfaceSubClass = 0; usbvision_table[ 25 ].bInterfaceProtocol = 0; usbvision_table[ 25 ].bInterfaceNumber = 0; usbvision_table[ 25 ].driver_info = 23; usbvision_table[ 26 ].match_flags = 3; usbvision_table[ 26 ].idVendor = 1395; usbvision_table[ 26 ].idProduct = 19754; usbvision_table[ 26 ].bcdDevice_lo = 0; usbvision_table[ 26 ].bcdDevice_hi = 0; usbvision_table[ 26 ].bDeviceClass = 0; usbvision_table[ 26 ].bDeviceSubClass = 0; usbvision_table[ 26 ].bDeviceProtocol = 0; usbvision_table[ 26 ].bInterfaceClass = 0; usbvision_table[ 26 ].bInterfaceSubClass = 0; usbvision_table[ 26 ].bInterfaceProtocol = 0; usbvision_table[ 26 ].bInterfaceNumber = 0; usbvision_table[ 26 ].driver_info = 24; usbvision_table[ 27 ].match_flags = 3; usbvision_table[ 27 ].idVendor = 1395; usbvision_table[ 27 ].idProduct = 19755; usbvision_table[ 27 ].bcdDevice_lo = 0; usbvision_table[ 27 ].bcdDevice_hi = 0; usbvision_table[ 27 ].bDeviceClass = 0; usbvision_table[ 27 ].bDeviceSubClass = 0; usbvision_table[ 27 ].bDeviceProtocol = 0; usbvision_table[ 27 ].bInterfaceClass = 0; usbvision_table[ 27 ].bInterfaceSubClass = 0; usbvision_table[ 27 ].bInterfaceProtocol = 0; usbvision_table[ 27 ].bInterfaceNumber = 0; usbvision_table[ 27 ].driver_info = 25; usbvision_table[ 28 ].match_flags = 3; usbvision_table[ 28 ].idVendor = 1395; usbvision_table[ 28 ].idProduct = 19756; usbvision_table[ 28 ].bcdDevice_lo = 0; usbvision_table[ 28 ].bcdDevice_hi = 0; usbvision_table[ 28 ].bDeviceClass = 0; usbvision_table[ 28 ].bDeviceSubClass = 0; usbvision_table[ 28 ].bDeviceProtocol = 0; usbvision_table[ 28 ].bInterfaceClass = 0; usbvision_table[ 28 ].bInterfaceSubClass = 0; usbvision_table[ 28 ].bInterfaceProtocol = 0; usbvision_table[ 28 ].bInterfaceNumber = 0; usbvision_table[ 28 ].driver_info = 26; usbvision_table[ 29 ].match_flags = 3; usbvision_table[ 29 ].idVendor = 1395; usbvision_table[ 29 ].idProduct = 19744; usbvision_table[ 29 ].bcdDevice_lo = 0; usbvision_table[ 29 ].bcdDevice_hi = 0; usbvision_table[ 29 ].bDeviceClass = 0; usbvision_table[ 29 ].bDeviceSubClass = 0; usbvision_table[ 29 ].bDeviceProtocol = 0; usbvision_table[ 29 ].bInterfaceClass = 0; usbvision_table[ 29 ].bInterfaceSubClass = 0; usbvision_table[ 29 ].bInterfaceProtocol = 0; usbvision_table[ 29 ].bInterfaceNumber = 0; usbvision_table[ 29 ].driver_info = 27; usbvision_table[ 30 ].match_flags = 3; usbvision_table[ 30 ].idVendor = 1395; usbvision_table[ 30 ].idProduct = 19745; usbvision_table[ 30 ].bcdDevice_lo = 0; usbvision_table[ 30 ].bcdDevice_hi = 0; usbvision_table[ 30 ].bDeviceClass = 0; usbvision_table[ 30 ].bDeviceSubClass = 0; usbvision_table[ 30 ].bDeviceProtocol = 0; usbvision_table[ 30 ].bInterfaceClass = 0; usbvision_table[ 30 ].bInterfaceSubClass = 0; usbvision_table[ 30 ].bInterfaceProtocol = 0; usbvision_table[ 30 ].bInterfaceNumber = 0; usbvision_table[ 30 ].driver_info = 28; usbvision_table[ 31 ].match_flags = 3; usbvision_table[ 31 ].idVendor = 1395; usbvision_table[ 31 ].idProduct = 19746; usbvision_table[ 31 ].bcdDevice_lo = 0; usbvision_table[ 31 ].bcdDevice_hi = 0; usbvision_table[ 31 ].bDeviceClass = 0; usbvision_table[ 31 ].bDeviceSubClass = 0; usbvision_table[ 31 ].bDeviceProtocol = 0; usbvision_table[ 31 ].bInterfaceClass = 0; usbvision_table[ 31 ].bInterfaceSubClass = 0; usbvision_table[ 31 ].bInterfaceProtocol = 0; usbvision_table[ 31 ].bInterfaceNumber = 0; usbvision_table[ 31 ].driver_info = 29; usbvision_table[ 32 ].match_flags = 3; usbvision_table[ 32 ].idVendor = 1395; usbvision_table[ 32 ].idProduct = 19747; usbvision_table[ 32 ].bcdDevice_lo = 0; usbvision_table[ 32 ].bcdDevice_hi = 0; usbvision_table[ 32 ].bDeviceClass = 0; usbvision_table[ 32 ].bDeviceSubClass = 0; usbvision_table[ 32 ].bDeviceProtocol = 0; usbvision_table[ 32 ].bInterfaceClass = 0; usbvision_table[ 32 ].bInterfaceSubClass = 0; usbvision_table[ 32 ].bInterfaceProtocol = 0; usbvision_table[ 32 ].bInterfaceNumber = 0; usbvision_table[ 32 ].driver_info = 30; usbvision_table[ 33 ].match_flags = 3; usbvision_table[ 33 ].idVendor = 1395; usbvision_table[ 33 ].idProduct = 19748; usbvision_table[ 33 ].bcdDevice_lo = 0; usbvision_table[ 33 ].bcdDevice_hi = 0; usbvision_table[ 33 ].bDeviceClass = 0; usbvision_table[ 33 ].bDeviceSubClass = 0; usbvision_table[ 33 ].bDeviceProtocol = 0; usbvision_table[ 33 ].bInterfaceClass = 0; usbvision_table[ 33 ].bInterfaceSubClass = 0; usbvision_table[ 33 ].bInterfaceProtocol = 0; usbvision_table[ 33 ].bInterfaceNumber = 0; usbvision_table[ 33 ].driver_info = 31; usbvision_table[ 34 ].match_flags = 3; usbvision_table[ 34 ].idVendor = 1395; usbvision_table[ 34 ].idProduct = 19749; usbvision_table[ 34 ].bcdDevice_lo = 0; usbvision_table[ 34 ].bcdDevice_hi = 0; usbvision_table[ 34 ].bDeviceClass = 0; usbvision_table[ 34 ].bDeviceSubClass = 0; usbvision_table[ 34 ].bDeviceProtocol = 0; usbvision_table[ 34 ].bInterfaceClass = 0; usbvision_table[ 34 ].bInterfaceSubClass = 0; usbvision_table[ 34 ].bInterfaceProtocol = 0; usbvision_table[ 34 ].bInterfaceNumber = 0; usbvision_table[ 34 ].driver_info = 32; usbvision_table[ 35 ].match_flags = 3; usbvision_table[ 35 ].idVendor = 1395; usbvision_table[ 35 ].idProduct = 19750; usbvision_table[ 35 ].bcdDevice_lo = 0; usbvision_table[ 35 ].bcdDevice_hi = 0; usbvision_table[ 35 ].bDeviceClass = 0; usbvision_table[ 35 ].bDeviceSubClass = 0; usbvision_table[ 35 ].bDeviceProtocol = 0; usbvision_table[ 35 ].bInterfaceClass = 0; usbvision_table[ 35 ].bInterfaceSubClass = 0; usbvision_table[ 35 ].bInterfaceProtocol = 0; usbvision_table[ 35 ].bInterfaceNumber = 0; usbvision_table[ 35 ].driver_info = 33; usbvision_table[ 36 ].match_flags = 3; usbvision_table[ 36 ].idVendor = 1395; usbvision_table[ 36 ].idProduct = 19751; usbvision_table[ 36 ].bcdDevice_lo = 0; usbvision_table[ 36 ].bcdDevice_hi = 0; usbvision_table[ 36 ].bDeviceClass = 0; usbvision_table[ 36 ].bDeviceSubClass = 0; usbvision_table[ 36 ].bDeviceProtocol = 0; usbvision_table[ 36 ].bInterfaceClass = 0; usbvision_table[ 36 ].bInterfaceSubClass = 0; usbvision_table[ 36 ].bInterfaceProtocol = 0; usbvision_table[ 36 ].bInterfaceNumber = 0; usbvision_table[ 36 ].driver_info = 34; usbvision_table[ 37 ].match_flags = 3; usbvision_table[ 37 ].idVendor = 1395; usbvision_table[ 37 ].idProduct = 19752; usbvision_table[ 37 ].bcdDevice_lo = 0; usbvision_table[ 37 ].bcdDevice_hi = 0; usbvision_table[ 37 ].bDeviceClass = 0; usbvision_table[ 37 ].bDeviceSubClass = 0; usbvision_table[ 37 ].bDeviceProtocol = 0; usbvision_table[ 37 ].bInterfaceClass = 0; usbvision_table[ 37 ].bInterfaceSubClass = 0; usbvision_table[ 37 ].bInterfaceProtocol = 0; usbvision_table[ 37 ].bInterfaceNumber = 0; usbvision_table[ 37 ].driver_info = 35; usbvision_table[ 38 ].match_flags = 3; usbvision_table[ 38 ].idVendor = 1395; usbvision_table[ 38 ].idProduct = 19753; usbvision_table[ 38 ].bcdDevice_lo = 0; usbvision_table[ 38 ].bcdDevice_hi = 0; usbvision_table[ 38 ].bDeviceClass = 0; usbvision_table[ 38 ].bDeviceSubClass = 0; usbvision_table[ 38 ].bDeviceProtocol = 0; usbvision_table[ 38 ].bInterfaceClass = 0; usbvision_table[ 38 ].bInterfaceSubClass = 0; usbvision_table[ 38 ].bInterfaceProtocol = 0; usbvision_table[ 38 ].bInterfaceNumber = 0; usbvision_table[ 38 ].driver_info = 36; usbvision_table[ 39 ].match_flags = 3; usbvision_table[ 39 ].idVendor = 1395; usbvision_table[ 39 ].idProduct = 19760; usbvision_table[ 39 ].bcdDevice_lo = 0; usbvision_table[ 39 ].bcdDevice_hi = 0; usbvision_table[ 39 ].bDeviceClass = 0; usbvision_table[ 39 ].bDeviceSubClass = 0; usbvision_table[ 39 ].bDeviceProtocol = 0; usbvision_table[ 39 ].bInterfaceClass = 0; usbvision_table[ 39 ].bInterfaceSubClass = 0; usbvision_table[ 39 ].bInterfaceProtocol = 0; usbvision_table[ 39 ].bInterfaceNumber = 0; usbvision_table[ 39 ].driver_info = 37; usbvision_table[ 40 ].match_flags = 3; usbvision_table[ 40 ].idVendor = 1395; usbvision_table[ 40 ].idProduct = 19761; usbvision_table[ 40 ].bcdDevice_lo = 0; usbvision_table[ 40 ].bcdDevice_hi = 0; usbvision_table[ 40 ].bDeviceClass = 0; usbvision_table[ 40 ].bDeviceSubClass = 0; usbvision_table[ 40 ].bDeviceProtocol = 0; usbvision_table[ 40 ].bInterfaceClass = 0; usbvision_table[ 40 ].bInterfaceSubClass = 0; usbvision_table[ 40 ].bInterfaceProtocol = 0; usbvision_table[ 40 ].bInterfaceNumber = 0; usbvision_table[ 40 ].driver_info = 38; usbvision_table[ 41 ].match_flags = 3; usbvision_table[ 41 ].idVendor = 1395; usbvision_table[ 41 ].idProduct = 19762; usbvision_table[ 41 ].bcdDevice_lo = 0; usbvision_table[ 41 ].bcdDevice_hi = 0; usbvision_table[ 41 ].bDeviceClass = 0; usbvision_table[ 41 ].bDeviceSubClass = 0; usbvision_table[ 41 ].bDeviceProtocol = 0; usbvision_table[ 41 ].bInterfaceClass = 0; usbvision_table[ 41 ].bInterfaceSubClass = 0; usbvision_table[ 41 ].bInterfaceProtocol = 0; usbvision_table[ 41 ].bInterfaceNumber = 0; usbvision_table[ 41 ].driver_info = 39; usbvision_table[ 42 ].match_flags = 3; usbvision_table[ 42 ].idVendor = 1395; usbvision_table[ 42 ].idProduct = 19764; usbvision_table[ 42 ].bcdDevice_lo = 0; usbvision_table[ 42 ].bcdDevice_hi = 0; usbvision_table[ 42 ].bDeviceClass = 0; usbvision_table[ 42 ].bDeviceSubClass = 0; usbvision_table[ 42 ].bDeviceProtocol = 0; usbvision_table[ 42 ].bInterfaceClass = 0; usbvision_table[ 42 ].bInterfaceSubClass = 0; usbvision_table[ 42 ].bInterfaceProtocol = 0; usbvision_table[ 42 ].bInterfaceNumber = 0; usbvision_table[ 42 ].driver_info = 40; usbvision_table[ 43 ].match_flags = 3; usbvision_table[ 43 ].idVendor = 1395; usbvision_table[ 43 ].idProduct = 19765; usbvision_table[ 43 ].bcdDevice_lo = 0; usbvision_table[ 43 ].bcdDevice_hi = 0; usbvision_table[ 43 ].bDeviceClass = 0; usbvision_table[ 43 ].bDeviceSubClass = 0; usbvision_table[ 43 ].bDeviceProtocol = 0; usbvision_table[ 43 ].bInterfaceClass = 0; usbvision_table[ 43 ].bInterfaceSubClass = 0; usbvision_table[ 43 ].bInterfaceProtocol = 0; usbvision_table[ 43 ].bInterfaceNumber = 0; usbvision_table[ 43 ].driver_info = 41; usbvision_table[ 44 ].match_flags = 3; usbvision_table[ 44 ].idVendor = 1395; usbvision_table[ 44 ].idProduct = 19766; usbvision_table[ 44 ].bcdDevice_lo = 0; usbvision_table[ 44 ].bcdDevice_hi = 0; usbvision_table[ 44 ].bDeviceClass = 0; usbvision_table[ 44 ].bDeviceSubClass = 0; usbvision_table[ 44 ].bDeviceProtocol = 0; usbvision_table[ 44 ].bInterfaceClass = 0; usbvision_table[ 44 ].bInterfaceSubClass = 0; usbvision_table[ 44 ].bInterfaceProtocol = 0; usbvision_table[ 44 ].bInterfaceNumber = 0; usbvision_table[ 44 ].driver_info = 42; usbvision_table[ 45 ].match_flags = 3; usbvision_table[ 45 ].idVendor = 1395; usbvision_table[ 45 ].idProduct = 19767; usbvision_table[ 45 ].bcdDevice_lo = 0; usbvision_table[ 45 ].bcdDevice_hi = 0; usbvision_table[ 45 ].bDeviceClass = 0; usbvision_table[ 45 ].bDeviceSubClass = 0; usbvision_table[ 45 ].bDeviceProtocol = 0; usbvision_table[ 45 ].bInterfaceClass = 0; usbvision_table[ 45 ].bInterfaceSubClass = 0; usbvision_table[ 45 ].bInterfaceProtocol = 0; usbvision_table[ 45 ].bInterfaceNumber = 0; usbvision_table[ 45 ].driver_info = 43; usbvision_table[ 46 ].match_flags = 3; usbvision_table[ 46 ].idVendor = 1395; usbvision_table[ 46 ].idProduct = 19768; usbvision_table[ 46 ].bcdDevice_lo = 0; usbvision_table[ 46 ].bcdDevice_hi = 0; usbvision_table[ 46 ].bDeviceClass = 0; usbvision_table[ 46 ].bDeviceSubClass = 0; usbvision_table[ 46 ].bDeviceProtocol = 0; usbvision_table[ 46 ].bInterfaceClass = 0; usbvision_table[ 46 ].bInterfaceSubClass = 0; usbvision_table[ 46 ].bInterfaceProtocol = 0; usbvision_table[ 46 ].bInterfaceNumber = 0; usbvision_table[ 46 ].driver_info = 44; usbvision_table[ 47 ].match_flags = 3; usbvision_table[ 47 ].idVendor = 1896; usbvision_table[ 47 ].idProduct = 6; usbvision_table[ 47 ].bcdDevice_lo = 0; usbvision_table[ 47 ].bcdDevice_hi = 0; usbvision_table[ 47 ].bDeviceClass = 0; usbvision_table[ 47 ].bDeviceSubClass = 0; usbvision_table[ 47 ].bDeviceProtocol = 0; usbvision_table[ 47 ].bInterfaceClass = 0; usbvision_table[ 47 ].bInterfaceSubClass = 0; usbvision_table[ 47 ].bInterfaceProtocol = 0; usbvision_table[ 47 ].bInterfaceNumber = 0; usbvision_table[ 47 ].driver_info = 45; usbvision_table[ 48 ].match_flags = 3; usbvision_table[ 48 ].idVendor = 2000; usbvision_table[ 48 ].idProduct = 1; usbvision_table[ 48 ].bcdDevice_lo = 0; usbvision_table[ 48 ].bcdDevice_hi = 0; usbvision_table[ 48 ].bDeviceClass = 0; usbvision_table[ 48 ].bDeviceSubClass = 0; usbvision_table[ 48 ].bDeviceProtocol = 0; usbvision_table[ 48 ].bInterfaceClass = 0; usbvision_table[ 48 ].bInterfaceSubClass = 0; usbvision_table[ 48 ].bInterfaceProtocol = 0; usbvision_table[ 48 ].bInterfaceNumber = 0; usbvision_table[ 48 ].driver_info = 46; usbvision_table[ 49 ].match_flags = 3; usbvision_table[ 49 ].idVendor = 2000; usbvision_table[ 49 ].idProduct = 2; usbvision_table[ 49 ].bcdDevice_lo = 0; usbvision_table[ 49 ].bcdDevice_hi = 0; usbvision_table[ 49 ].bDeviceClass = 0; usbvision_table[ 49 ].bDeviceSubClass = 0; usbvision_table[ 49 ].bDeviceProtocol = 0; usbvision_table[ 49 ].bInterfaceClass = 0; usbvision_table[ 49 ].bInterfaceSubClass = 0; usbvision_table[ 49 ].bInterfaceProtocol = 0; usbvision_table[ 49 ].bInterfaceNumber = 0; usbvision_table[ 49 ].driver_info = 47; usbvision_table[ 50 ].match_flags = 3; usbvision_table[ 50 ].idVendor = 2000; usbvision_table[ 50 ].idProduct = 3; usbvision_table[ 50 ].bcdDevice_lo = 0; usbvision_table[ 50 ].bcdDevice_hi = 0; usbvision_table[ 50 ].bDeviceClass = 0; usbvision_table[ 50 ].bDeviceSubClass = 0; usbvision_table[ 50 ].bDeviceProtocol = 0; usbvision_table[ 50 ].bInterfaceClass = 0; usbvision_table[ 50 ].bInterfaceSubClass = 0; usbvision_table[ 50 ].bInterfaceProtocol = 0; usbvision_table[ 50 ].bInterfaceNumber = 0; usbvision_table[ 50 ].driver_info = 48; usbvision_table[ 51 ].match_flags = 3; usbvision_table[ 51 ].idVendor = 2000; usbvision_table[ 51 ].idProduct = 4; usbvision_table[ 51 ].bcdDevice_lo = 0; usbvision_table[ 51 ].bcdDevice_hi = 0; usbvision_table[ 51 ].bDeviceClass = 0; usbvision_table[ 51 ].bDeviceSubClass = 0; usbvision_table[ 51 ].bDeviceProtocol = 0; usbvision_table[ 51 ].bInterfaceClass = 0; usbvision_table[ 51 ].bInterfaceSubClass = 0; usbvision_table[ 51 ].bInterfaceProtocol = 0; usbvision_table[ 51 ].bInterfaceNumber = 0; usbvision_table[ 51 ].driver_info = 49; usbvision_table[ 52 ].match_flags = 3; usbvision_table[ 52 ].idVendor = 2000; usbvision_table[ 52 ].idProduct = 5; usbvision_table[ 52 ].bcdDevice_lo = 0; usbvision_table[ 52 ].bcdDevice_hi = 0; usbvision_table[ 52 ].bDeviceClass = 0; usbvision_table[ 52 ].bDeviceSubClass = 0; usbvision_table[ 52 ].bDeviceProtocol = 0; usbvision_table[ 52 ].bInterfaceClass = 0; usbvision_table[ 52 ].bInterfaceSubClass = 0; usbvision_table[ 52 ].bInterfaceProtocol = 0; usbvision_table[ 52 ].bInterfaceNumber = 0; usbvision_table[ 52 ].driver_info = 50; usbvision_table[ 53 ].match_flags = 3; usbvision_table[ 53 ].idVendor = 2040; usbvision_table[ 53 ].idProduct = 37124; usbvision_table[ 53 ].bcdDevice_lo = 0; usbvision_table[ 53 ].bcdDevice_hi = 0; usbvision_table[ 53 ].bDeviceClass = 0; usbvision_table[ 53 ].bDeviceSubClass = 0; usbvision_table[ 53 ].bDeviceProtocol = 0; usbvision_table[ 53 ].bInterfaceClass = 0; usbvision_table[ 53 ].bInterfaceSubClass = 0; usbvision_table[ 53 ].bInterfaceProtocol = 0; usbvision_table[ 53 ].bInterfaceNumber = 0; usbvision_table[ 53 ].driver_info = 51; usbvision_table[ 54 ].match_flags = 3; usbvision_table[ 54 ].idVendor = 8964; usbvision_table[ 54 ].idProduct = 269; usbvision_table[ 54 ].bcdDevice_lo = 0; usbvision_table[ 54 ].bcdDevice_hi = 0; usbvision_table[ 54 ].bDeviceClass = 0; usbvision_table[ 54 ].bDeviceSubClass = 0; usbvision_table[ 54 ].bDeviceProtocol = 0; usbvision_table[ 54 ].bInterfaceClass = 0; usbvision_table[ 54 ].bInterfaceSubClass = 0; usbvision_table[ 54 ].bInterfaceProtocol = 0; usbvision_table[ 54 ].bInterfaceNumber = 0; usbvision_table[ 54 ].driver_info = 52; usbvision_table[ 55 ].match_flags = 3; usbvision_table[ 55 ].idVendor = 8964; usbvision_table[ 55 ].idProduct = 265; usbvision_table[ 55 ].bcdDevice_lo = 0; usbvision_table[ 55 ].bcdDevice_hi = 0; usbvision_table[ 55 ].bDeviceClass = 0; usbvision_table[ 55 ].bDeviceSubClass = 0; usbvision_table[ 55 ].bDeviceProtocol = 0; usbvision_table[ 55 ].bInterfaceClass = 0; usbvision_table[ 55 ].bInterfaceSubClass = 0; usbvision_table[ 55 ].bInterfaceProtocol = 0; usbvision_table[ 55 ].bInterfaceNumber = 0; usbvision_table[ 55 ].driver_info = 53; usbvision_table[ 56 ].match_flags = 3; usbvision_table[ 56 ].idVendor = 8964; usbvision_table[ 56 ].idProduct = 272; usbvision_table[ 56 ].bcdDevice_lo = 0; usbvision_table[ 56 ].bcdDevice_hi = 0; usbvision_table[ 56 ].bDeviceClass = 0; usbvision_table[ 56 ].bDeviceSubClass = 0; usbvision_table[ 56 ].bDeviceProtocol = 0; usbvision_table[ 56 ].bInterfaceClass = 0; usbvision_table[ 56 ].bInterfaceSubClass = 0; usbvision_table[ 56 ].bInterfaceProtocol = 0; usbvision_table[ 56 ].bInterfaceNumber = 0; usbvision_table[ 56 ].driver_info = 54; usbvision_table[ 57 ].match_flags = 3; usbvision_table[ 57 ].idVendor = 8964; usbvision_table[ 57 ].idProduct = 273; usbvision_table[ 57 ].bcdDevice_lo = 0; usbvision_table[ 57 ].bcdDevice_hi = 0; usbvision_table[ 57 ].bDeviceClass = 0; usbvision_table[ 57 ].bDeviceSubClass = 0; usbvision_table[ 57 ].bDeviceProtocol = 0; usbvision_table[ 57 ].bInterfaceClass = 0; usbvision_table[ 57 ].bInterfaceSubClass = 0; usbvision_table[ 57 ].bInterfaceProtocol = 0; usbvision_table[ 57 ].bInterfaceNumber = 0; usbvision_table[ 57 ].driver_info = 55; usbvision_table[ 58 ].match_flags = 3; usbvision_table[ 58 ].idVendor = 8964; usbvision_table[ 58 ].idProduct = 274; usbvision_table[ 58 ].bcdDevice_lo = 0; usbvision_table[ 58 ].bcdDevice_hi = 0; usbvision_table[ 58 ].bDeviceClass = 0; usbvision_table[ 58 ].bDeviceSubClass = 0; usbvision_table[ 58 ].bDeviceProtocol = 0; usbvision_table[ 58 ].bInterfaceClass = 0; usbvision_table[ 58 ].bInterfaceSubClass = 0; usbvision_table[ 58 ].bInterfaceProtocol = 0; usbvision_table[ 58 ].bInterfaceNumber = 0; usbvision_table[ 58 ].driver_info = 56; usbvision_table[ 59 ].match_flags = 3; usbvision_table[ 59 ].idVendor = 8964; usbvision_table[ 59 ].idProduct = 275; usbvision_table[ 59 ].bcdDevice_lo = 0; usbvision_table[ 59 ].bcdDevice_hi = 0; usbvision_table[ 59 ].bDeviceClass = 0; usbvision_table[ 59 ].bDeviceSubClass = 0; usbvision_table[ 59 ].bDeviceProtocol = 0; usbvision_table[ 59 ].bInterfaceClass = 0; usbvision_table[ 59 ].bInterfaceSubClass = 0; usbvision_table[ 59 ].bInterfaceProtocol = 0; usbvision_table[ 59 ].bInterfaceNumber = 0; usbvision_table[ 59 ].driver_info = 64; usbvision_table[ 60 ].match_flags = 3; usbvision_table[ 60 ].idVendor = 8964; usbvision_table[ 60 ].idProduct = 528; usbvision_table[ 60 ].bcdDevice_lo = 0; usbvision_table[ 60 ].bcdDevice_hi = 0; usbvision_table[ 60 ].bDeviceClass = 0; usbvision_table[ 60 ].bDeviceSubClass = 0; usbvision_table[ 60 ].bDeviceProtocol = 0; usbvision_table[ 60 ].bInterfaceClass = 0; usbvision_table[ 60 ].bInterfaceSubClass = 0; usbvision_table[ 60 ].bInterfaceProtocol = 0; usbvision_table[ 60 ].bInterfaceNumber = 0; usbvision_table[ 60 ].driver_info = 57; usbvision_table[ 61 ].match_flags = 3; usbvision_table[ 61 ].idVendor = 8964; usbvision_table[ 61 ].idProduct = 530; usbvision_table[ 61 ].bcdDevice_lo = 0; usbvision_table[ 61 ].bcdDevice_hi = 0; usbvision_table[ 61 ].bDeviceClass = 0; usbvision_table[ 61 ].bDeviceSubClass = 0; usbvision_table[ 61 ].bDeviceProtocol = 0; usbvision_table[ 61 ].bInterfaceClass = 0; usbvision_table[ 61 ].bInterfaceSubClass = 0; usbvision_table[ 61 ].bInterfaceProtocol = 0; usbvision_table[ 61 ].bInterfaceNumber = 0; usbvision_table[ 61 ].driver_info = 58; usbvision_table[ 62 ].match_flags = 3; usbvision_table[ 62 ].idVendor = 8964; usbvision_table[ 62 ].idProduct = 532; usbvision_table[ 62 ].bcdDevice_lo = 0; usbvision_table[ 62 ].bcdDevice_hi = 0; usbvision_table[ 62 ].bDeviceClass = 0; usbvision_table[ 62 ].bDeviceSubClass = 0; usbvision_table[ 62 ].bDeviceProtocol = 0; usbvision_table[ 62 ].bInterfaceClass = 0; usbvision_table[ 62 ].bInterfaceSubClass = 0; usbvision_table[ 62 ].bInterfaceProtocol = 0; usbvision_table[ 62 ].bInterfaceNumber = 0; usbvision_table[ 62 ].driver_info = 59; usbvision_table[ 63 ].match_flags = 3; usbvision_table[ 63 ].idVendor = 8964; usbvision_table[ 63 ].idProduct = 768; usbvision_table[ 63 ].bcdDevice_lo = 0; usbvision_table[ 63 ].bcdDevice_hi = 0; usbvision_table[ 63 ].bDeviceClass = 0; usbvision_table[ 63 ].bDeviceSubClass = 0; usbvision_table[ 63 ].bDeviceProtocol = 0; usbvision_table[ 63 ].bInterfaceClass = 0; usbvision_table[ 63 ].bInterfaceSubClass = 0; usbvision_table[ 63 ].bInterfaceProtocol = 0; usbvision_table[ 63 ].bInterfaceNumber = 0; usbvision_table[ 63 ].driver_info = 60; usbvision_table[ 64 ].match_flags = 3; usbvision_table[ 64 ].idVendor = 8964; usbvision_table[ 64 ].idProduct = 769; usbvision_table[ 64 ].bcdDevice_lo = 0; usbvision_table[ 64 ].bcdDevice_hi = 0; usbvision_table[ 64 ].bDeviceClass = 0; usbvision_table[ 64 ].bDeviceSubClass = 0; usbvision_table[ 64 ].bDeviceProtocol = 0; usbvision_table[ 64 ].bInterfaceClass = 0; usbvision_table[ 64 ].bInterfaceSubClass = 0; usbvision_table[ 64 ].bInterfaceProtocol = 0; usbvision_table[ 64 ].bInterfaceNumber = 0; usbvision_table[ 64 ].driver_info = 61; usbvision_table[ 65 ].match_flags = 3; usbvision_table[ 65 ].idVendor = 8964; usbvision_table[ 65 ].idProduct = 1049; usbvision_table[ 65 ].bcdDevice_lo = 0; usbvision_table[ 65 ].bcdDevice_hi = 0; usbvision_table[ 65 ].bDeviceClass = 0; usbvision_table[ 65 ].bDeviceSubClass = 0; usbvision_table[ 65 ].bDeviceProtocol = 0; usbvision_table[ 65 ].bInterfaceClass = 0; usbvision_table[ 65 ].bInterfaceSubClass = 0; usbvision_table[ 65 ].bInterfaceProtocol = 0; usbvision_table[ 65 ].bInterfaceNumber = 0; usbvision_table[ 65 ].driver_info = 62; usbvision_table[ 66 ].match_flags = 3; usbvision_table[ 66 ].idVendor = 9216; usbvision_table[ 66 ].idProduct = 16896; usbvision_table[ 66 ].bcdDevice_lo = 0; usbvision_table[ 66 ].bcdDevice_hi = 0; usbvision_table[ 66 ].bDeviceClass = 0; usbvision_table[ 66 ].bDeviceSubClass = 0; usbvision_table[ 66 ].bDeviceProtocol = 0; usbvision_table[ 66 ].bInterfaceClass = 0; usbvision_table[ 66 ].bInterfaceSubClass = 0; usbvision_table[ 66 ].bInterfaceProtocol = 0; usbvision_table[ 66 ].bInterfaceNumber = 0; usbvision_table[ 66 ].driver_info = 63; usbvision_table[ 67 ].match_flags = 0; usbvision_table[ 67 ].idVendor = 0; usbvision_table[ 67 ].idProduct = 0; usbvision_table[ 67 ].bcdDevice_lo = 0; usbvision_table[ 67 ].bcdDevice_hi = 0; usbvision_table[ 67 ].bDeviceClass = 0; usbvision_table[ 67 ].bDeviceSubClass = 0; usbvision_table[ 67 ].bDeviceProtocol = 0; usbvision_table[ 67 ].bInterfaceClass = 0; usbvision_table[ 67 ].bInterfaceSubClass = 0; usbvision_table[ 67 ].bInterfaceProtocol = 0; usbvision_table[ 67 ].bInterfaceNumber = 0; usbvision_table[ 67 ].driver_info = 0; return ; } -__BLAST_initialize_/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/rcv/132_1a/main-ldv_main1_sequence_infinite_withcheck_stateful/preprocess/1-cpp//work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/rule-instrumentor/132_1a/common-model/ldv_common_model.o.i() { 3535 -ldv_s_usbvision_fops_v4l2_file_operations = 0; ldv_s_usbvision_radio_fops_v4l2_file_operations = 0; ldv_s_usbvision_driver_usb_driver = 0; LDV_IN_INTERRUPT = 1; 3497 ldv_initialize() { /* Function call is skipped due to function is undefined */} 3532 ldv_handler_precall() { /* Function call is skipped due to function is undefined */} { 1701 err_code = usb_register_driver(&(usbvision_driver), &(__this_module), "usbvision") { /* Function call is skipped due to function is undefined */} 1704 printk("\014USBVision USB Video Device Driver for Linux : 0.9.11\n") { /* Function call is skipped due to function is undefined */} } 3547 tmp___1 = nondet_int() { /* Function call is skipped due to function is undefined */} 3553 tmp___0 = nondet_int() { /* Function call is skipped due to function is undefined */} 5806 -res_usbvision_probe_53 = usbvision_probe(var_group3 /* intf */, var_usbvision_probe_53_p1 /* devid */) { { 43 tmp = usb_get_dev(ldv_func_arg1) { /* Function call is skipped due to function is undefined */} 43 ldv_func_res = tmp; } 1535 model = *(devid).driver_info; 1538 __retres29 = -19; } 5807 ldv_check_return_value(res_usbvision_probe_53) { /* Function call is skipped due to function is undefined */} } | Source code 1
2 /*
3 * USB USBVISION Video device driver 0.9.10
4 *
5 *
6 *
7 * Copyright (c) 1999-2005 Joerg Heckenbach <joerg@heckenbach-aw.de>
8 *
9 * This module is part of usbvision driver project.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 * Let's call the version 0.... until compression decoding is completely
26 * implemented.
27 *
28 * This driver is written by Jose Ignacio Gijon and Joerg Heckenbach.
29 * It was based on USB CPiA driver written by Peter Pregler,
30 * Scott J. Bertin and Johannes Erdfelt
31 * Ideas are taken from bttv driver by Ralph Metzler, Marcus Metzler &
32 * Gerd Knorr and zoran 36120/36125 driver by Pauline Middelink
33 * Updates to driver completed by Dwaine P. Garden
34 *
35 *
36 * TODO:
37 * - use submit_urb for all setup packets
38 * - Fix memory settings for nt1004. It is 4 times as big as the
39 * nt1003 memory.
40 * - Add audio on endpoint 3 for nt1004 chip.
41 * Seems impossible, needs a codec interface. Which one?
42 * - Clean up the driver.
43 * - optimization for performance.
44 * - Add Videotext capability (VBI). Working on it.....
45 * - Check audio for other devices
46 *
47 */
48
49 #include <linux/kernel.h>
50 #include <linux/list.h>
51 #include <linux/timer.h>
52 #include <linux/slab.h>
53 #include <linux/mm.h>
54 #include <linux/highmem.h>
55 #include <linux/vmalloc.h>
56 #include <linux/module.h>
57 #include <linux/init.h>
58 #include <linux/spinlock.h>
59 #include <linux/io.h>
60 #include <linux/videodev2.h>
61 #include <linux/i2c.h>
62
63 #include <media/saa7115.h>
64 #include <media/v4l2-common.h>
65 #include <media/v4l2-ioctl.h>
66 #include <media/tuner.h>
67
68 #include <linux/workqueue.h>
69
70 #include "usbvision.h"
71 #include "usbvision-cards.h"
72
73 #define DRIVER_AUTHOR \
74 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
75 "Dwaine Garden <DwaineGarden@rogers.com>"
76 #define DRIVER_NAME "usbvision"
77 #define DRIVER_ALIAS "USBVision"
78 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
79 #define DRIVER_LICENSE "GPL"
80 #define USBVISION_VERSION_STRING "0.9.11"
81
82 #define ENABLE_HEXDUMP 0 /* Enable if you need it */
83
84
85 #ifdef USBVISION_DEBUG
86 #define PDEBUG(level, fmt, args...) { \
87 if (video_debug & (level)) \
88 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
89 __func__, __LINE__ , ## args); \
90 }
91 #else
92 #define PDEBUG(level, fmt, args...) do {} while (0)
93 #endif
94
95 #define DBG_IO (1 << 1)
96 #define DBG_PROBE (1 << 2)
97 #define DBG_MMAP (1 << 3)
98
99 /* String operations */
100 #define rmspace(str) while (*str == ' ') str++;
101 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
102
103
104 /* sequential number of usbvision device */
105 static int usbvision_nr;
106
107 static struct usbvision_v4l2_format_st usbvision_v4l2_format[] = {
108 { 1, 1, 8, V4L2_PIX_FMT_GREY , "GREY" },
109 { 1, 2, 16, V4L2_PIX_FMT_RGB565 , "RGB565" },
110 { 1, 3, 24, V4L2_PIX_FMT_RGB24 , "RGB24" },
111 { 1, 4, 32, V4L2_PIX_FMT_RGB32 , "RGB32" },
112 { 1, 2, 16, V4L2_PIX_FMT_RGB555 , "RGB555" },
113 { 1, 2, 16, V4L2_PIX_FMT_YUYV , "YUV422" },
114 { 1, 2, 12, V4L2_PIX_FMT_YVU420 , "YUV420P" }, /* 1.5 ! */
115 { 1, 2, 16, V4L2_PIX_FMT_YUV422P , "YUV422P" }
116 };
117
118 /* Function prototypes */
119 static void usbvision_release(struct usb_usbvision *usbvision);
120
121 /* Default initialization of device driver parameters */
122 /* Set the default format for ISOC endpoint */
123 static int isoc_mode = ISOC_MODE_COMPRESS;
124 /* Set the default Debug Mode of the device driver */
125 static int video_debug;
126 /* Set the default device to power on at startup */
127 static int power_on_at_open = 1;
128 /* Sequential Number of Video Device */
129 static int video_nr = -1;
130 /* Sequential Number of Radio Device */
131 static int radio_nr = -1;
132
133 /* Grab parameters for the device driver */
134
135 /* Showing parameters under SYSFS */
136 module_param(isoc_mode, int, 0444);
137 module_param(video_debug, int, 0444);
138 module_param(power_on_at_open, int, 0444);
139 module_param(video_nr, int, 0444);
140 module_param(radio_nr, int, 0444);
141
142 MODULE_PARM_DESC(isoc_mode, " Set the default format for ISOC endpoint. Default: 0x60 (Compression On)");
143 MODULE_PARM_DESC(video_debug, " Set the default Debug Mode of the device driver. Default: 0 (Off)");
144 MODULE_PARM_DESC(power_on_at_open, " Set the default device to power on when device is opened. Default: 1 (On)");
145 MODULE_PARM_DESC(video_nr, "Set video device number (/dev/videoX). Default: -1 (autodetect)");
146 MODULE_PARM_DESC(radio_nr, "Set radio device number (/dev/radioX). Default: -1 (autodetect)");
147
148
149 /* Misc stuff */
150 MODULE_AUTHOR(DRIVER_AUTHOR);
151 MODULE_DESCRIPTION(DRIVER_DESC);
152 MODULE_LICENSE(DRIVER_LICENSE);
153 MODULE_VERSION(USBVISION_VERSION_STRING);
154 MODULE_ALIAS(DRIVER_ALIAS);
155
156
157 /*****************************************************************************/
158 /* SYSFS Code - Copied from the stv680.c usb module. */
159 /* Device information is located at /sys/class/video4linux/video0 */
160 /* Device parameters information is located at /sys/module/usbvision */
161 /* Device USB Information is located at */
162 /* /sys/bus/usb/drivers/USBVision Video Grabber */
163 /*****************************************************************************/
164
165 #define YES_NO(x) ((x) ? "Yes" : "No")
166
167 static inline struct usb_usbvision *cd_to_usbvision(struct device *cd)
168 {
169 struct video_device *vdev =
170 container_of(cd, struct video_device, dev);
171 return video_get_drvdata(vdev);
172 }
173
174 static ssize_t show_version(struct device *cd,
175 struct device_attribute *attr, char *buf)
176 {
177 return sprintf(buf, "%s\n", USBVISION_VERSION_STRING);
178 }
179 static DEVICE_ATTR(version, S_IRUGO, show_version, NULL);
180
181 static ssize_t show_model(struct device *cd,
182 struct device_attribute *attr, char *buf)
183 {
184 struct video_device *vdev =
185 container_of(cd, struct video_device, dev);
186 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
187 return sprintf(buf, "%s\n",
188 usbvision_device_data[usbvision->dev_model].model_string);
189 }
190 static DEVICE_ATTR(model, S_IRUGO, show_model, NULL);
191
192 static ssize_t show_hue(struct device *cd,
193 struct device_attribute *attr, char *buf)
194 {
195 struct video_device *vdev =
196 container_of(cd, struct video_device, dev);
197 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
198 struct v4l2_control ctrl;
199 ctrl.id = V4L2_CID_HUE;
200 ctrl.value = 0;
201 if (usbvision->user)
202 call_all(usbvision, core, g_ctrl, &ctrl);
203 return sprintf(buf, "%d\n", ctrl.value);
204 }
205 static DEVICE_ATTR(hue, S_IRUGO, show_hue, NULL);
206
207 static ssize_t show_contrast(struct device *cd,
208 struct device_attribute *attr, char *buf)
209 {
210 struct video_device *vdev =
211 container_of(cd, struct video_device, dev);
212 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
213 struct v4l2_control ctrl;
214 ctrl.id = V4L2_CID_CONTRAST;
215 ctrl.value = 0;
216 if (usbvision->user)
217 call_all(usbvision, core, g_ctrl, &ctrl);
218 return sprintf(buf, "%d\n", ctrl.value);
219 }
220 static DEVICE_ATTR(contrast, S_IRUGO, show_contrast, NULL);
221
222 static ssize_t show_brightness(struct device *cd,
223 struct device_attribute *attr, char *buf)
224 {
225 struct video_device *vdev =
226 container_of(cd, struct video_device, dev);
227 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
228 struct v4l2_control ctrl;
229 ctrl.id = V4L2_CID_BRIGHTNESS;
230 ctrl.value = 0;
231 if (usbvision->user)
232 call_all(usbvision, core, g_ctrl, &ctrl);
233 return sprintf(buf, "%d\n", ctrl.value);
234 }
235 static DEVICE_ATTR(brightness, S_IRUGO, show_brightness, NULL);
236
237 static ssize_t show_saturation(struct device *cd,
238 struct device_attribute *attr, char *buf)
239 {
240 struct video_device *vdev =
241 container_of(cd, struct video_device, dev);
242 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
243 struct v4l2_control ctrl;
244 ctrl.id = V4L2_CID_SATURATION;
245 ctrl.value = 0;
246 if (usbvision->user)
247 call_all(usbvision, core, g_ctrl, &ctrl);
248 return sprintf(buf, "%d\n", ctrl.value);
249 }
250 static DEVICE_ATTR(saturation, S_IRUGO, show_saturation, NULL);
251
252 static ssize_t show_streaming(struct device *cd,
253 struct device_attribute *attr, char *buf)
254 {
255 struct video_device *vdev =
256 container_of(cd, struct video_device, dev);
257 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
258 return sprintf(buf, "%s\n",
259 YES_NO(usbvision->streaming == stream_on ? 1 : 0));
260 }
261 static DEVICE_ATTR(streaming, S_IRUGO, show_streaming, NULL);
262
263 static ssize_t show_compression(struct device *cd,
264 struct device_attribute *attr, char *buf)
265 {
266 struct video_device *vdev =
267 container_of(cd, struct video_device, dev);
268 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
269 return sprintf(buf, "%s\n",
270 YES_NO(usbvision->isoc_mode == ISOC_MODE_COMPRESS));
271 }
272 static DEVICE_ATTR(compression, S_IRUGO, show_compression, NULL);
273
274 static ssize_t show_device_bridge(struct device *cd,
275 struct device_attribute *attr, char *buf)
276 {
277 struct video_device *vdev =
278 container_of(cd, struct video_device, dev);
279 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
280 return sprintf(buf, "%d\n", usbvision->bridge_type);
281 }
282 static DEVICE_ATTR(bridge, S_IRUGO, show_device_bridge, NULL);
283
284 static void usbvision_create_sysfs(struct video_device *vdev)
285 {
286 int res;
287
288 if (!vdev)
289 return;
290 do {
291 res = device_create_file(&vdev->dev, &dev_attr_version);
292 if (res < 0)
293 break;
294 res = device_create_file(&vdev->dev, &dev_attr_model);
295 if (res < 0)
296 break;
297 res = device_create_file(&vdev->dev, &dev_attr_hue);
298 if (res < 0)
299 break;
300 res = device_create_file(&vdev->dev, &dev_attr_contrast);
301 if (res < 0)
302 break;
303 res = device_create_file(&vdev->dev, &dev_attr_brightness);
304 if (res < 0)
305 break;
306 res = device_create_file(&vdev->dev, &dev_attr_saturation);
307 if (res < 0)
308 break;
309 res = device_create_file(&vdev->dev, &dev_attr_streaming);
310 if (res < 0)
311 break;
312 res = device_create_file(&vdev->dev, &dev_attr_compression);
313 if (res < 0)
314 break;
315 res = device_create_file(&vdev->dev, &dev_attr_bridge);
316 if (res >= 0)
317 return;
318 } while (0);
319
320 dev_err(&vdev->dev, "%s error: %d\n", __func__, res);
321 }
322
323 static void usbvision_remove_sysfs(struct video_device *vdev)
324 {
325 if (vdev) {
326 device_remove_file(&vdev->dev, &dev_attr_version);
327 device_remove_file(&vdev->dev, &dev_attr_model);
328 device_remove_file(&vdev->dev, &dev_attr_hue);
329 device_remove_file(&vdev->dev, &dev_attr_contrast);
330 device_remove_file(&vdev->dev, &dev_attr_brightness);
331 device_remove_file(&vdev->dev, &dev_attr_saturation);
332 device_remove_file(&vdev->dev, &dev_attr_streaming);
333 device_remove_file(&vdev->dev, &dev_attr_compression);
334 device_remove_file(&vdev->dev, &dev_attr_bridge);
335 }
336 }
337
338 /*
339 * usbvision_open()
340 *
341 * This is part of Video 4 Linux API. The driver can be opened by one
342 * client only (checks internal counter 'usbvision->user'). The procedure
343 * then allocates buffers needed for video processing.
344 *
345 */
346 static int usbvision_v4l2_open(struct file *file)
347 {
348 struct usb_usbvision *usbvision = video_drvdata(file);
349 int err_code = 0;
350
351 PDEBUG(DBG_IO, "open");
352
353 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
354 return -ERESTARTSYS;
355 usbvision_reset_power_off_timer(usbvision);
356
357 if (usbvision->user)
358 err_code = -EBUSY;
359 else {
360 /* Allocate memory for the scratch ring buffer */
361 err_code = usbvision_scratch_alloc(usbvision);
362 if (isoc_mode == ISOC_MODE_COMPRESS) {
363 /* Allocate intermediate decompression buffers
364 only if needed */
365 err_code = usbvision_decompress_alloc(usbvision);
366 }
367 if (err_code) {
368 /* Deallocate all buffers if trouble */
369 usbvision_scratch_free(usbvision);
370 usbvision_decompress_free(usbvision);
371 }
372 }
373
374 /* If so far no errors then we shall start the camera */
375 if (!err_code) {
376 if (usbvision->power == 0) {
377 usbvision_power_on(usbvision);
378 usbvision_i2c_register(usbvision);
379 }
380
381 /* Send init sequence only once, it's large! */
382 if (!usbvision->initialized) {
383 int setup_ok = 0;
384 setup_ok = usbvision_setup(usbvision, isoc_mode);
385 if (setup_ok)
386 usbvision->initialized = 1;
387 else
388 err_code = -EBUSY;
389 }
390
391 if (!err_code) {
392 usbvision_begin_streaming(usbvision);
393 err_code = usbvision_init_isoc(usbvision);
394 /* device must be initialized before isoc transfer */
395 usbvision_muxsel(usbvision, 0);
396 usbvision->user++;
397 } else {
398 if (power_on_at_open) {
399 usbvision_i2c_unregister(usbvision);
400 usbvision_power_off(usbvision);
401 usbvision->initialized = 0;
402 }
403 }
404 }
405
406 /* prepare queues */
407 usbvision_empty_framequeues(usbvision);
408 mutex_unlock(&usbvision->v4l2_lock);
409
410 PDEBUG(DBG_IO, "success");
411 return err_code;
412 }
413
414 /*
415 * usbvision_v4l2_close()
416 *
417 * This is part of Video 4 Linux API. The procedure
418 * stops streaming and deallocates all buffers that were earlier
419 * allocated in usbvision_v4l2_open().
420 *
421 */
422 static int usbvision_v4l2_close(struct file *file)
423 {
424 struct usb_usbvision *usbvision = video_drvdata(file);
425
426 PDEBUG(DBG_IO, "close");
427
428 mutex_lock(&usbvision->v4l2_lock);
429 usbvision_audio_off(usbvision);
430 usbvision_restart_isoc(usbvision);
431 usbvision_stop_isoc(usbvision);
432
433 usbvision_decompress_free(usbvision);
434 usbvision_frames_free(usbvision);
435 usbvision_empty_framequeues(usbvision);
436 usbvision_scratch_free(usbvision);
437
438 usbvision->user--;
439
440 if (power_on_at_open) {
441 /* power off in a little while
442 to avoid off/on every close/open short sequences */
443 usbvision_set_power_off_timer(usbvision);
444 usbvision->initialized = 0;
445 }
446
447 if (usbvision->remove_pending) {
448 printk(KERN_INFO "%s: Final disconnect\n", __func__);
449 usbvision_release(usbvision);
450 return 0;
451 }
452 mutex_unlock(&usbvision->v4l2_lock);
453
454 PDEBUG(DBG_IO, "success");
455 return 0;
456 }
457
458
459 /*
460 * usbvision_ioctl()
461 *
462 * This is part of Video 4 Linux API. The procedure handles ioctl() calls.
463 *
464 */
465 #ifdef CONFIG_VIDEO_ADV_DEBUG
466 static int vidioc_g_register(struct file *file, void *priv,
467 struct v4l2_dbg_register *reg)
468 {
469 struct usb_usbvision *usbvision = video_drvdata(file);
470 int err_code;
471
472 /* NT100x has a 8-bit register space */
473 err_code = usbvision_read_reg(usbvision, reg->reg&0xff);
474 if (err_code < 0) {
475 dev_err(&usbvision->vdev->dev,
476 "%s: VIDIOC_DBG_G_REGISTER failed: error %d\n",
477 __func__, err_code);
478 return err_code;
479 }
480 reg->val = err_code;
481 reg->size = 1;
482 return 0;
483 }
484
485 static int vidioc_s_register(struct file *file, void *priv,
486 const struct v4l2_dbg_register *reg)
487 {
488 struct usb_usbvision *usbvision = video_drvdata(file);
489 int err_code;
490
491 /* NT100x has a 8-bit register space */
492 err_code = usbvision_write_reg(usbvision, reg->reg & 0xff, reg->val);
493 if (err_code < 0) {
494 dev_err(&usbvision->vdev->dev,
495 "%s: VIDIOC_DBG_S_REGISTER failed: error %d\n",
496 __func__, err_code);
497 return err_code;
498 }
499 return 0;
500 }
501 #endif
502
503 static int vidioc_querycap(struct file *file, void *priv,
504 struct v4l2_capability *vc)
505 {
506 struct usb_usbvision *usbvision = video_drvdata(file);
507
508 strlcpy(vc->driver, "USBVision", sizeof(vc->driver));
509 strlcpy(vc->card,
510 usbvision_device_data[usbvision->dev_model].model_string,
511 sizeof(vc->card));
512 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
513 vc->device_caps = V4L2_CAP_VIDEO_CAPTURE |
514 V4L2_CAP_AUDIO |
515 V4L2_CAP_READWRITE |
516 V4L2_CAP_STREAMING |
517 (usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
518 vc->capabilities = vc->device_caps | V4L2_CAP_DEVICE_CAPS;
519 return 0;
520 }
521
522 static int vidioc_enum_input(struct file *file, void *priv,
523 struct v4l2_input *vi)
524 {
525 struct usb_usbvision *usbvision = video_drvdata(file);
526 int chan;
527
528 if (vi->index >= usbvision->video_inputs)
529 return -EINVAL;
530 if (usbvision->have_tuner)
531 chan = vi->index;
532 else
533 chan = vi->index + 1; /* skip Television string*/
534
535 /* Determine the requested input characteristics
536 specific for each usbvision card model */
537 switch (chan) {
538 case 0:
539 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) {
540 strcpy(vi->name, "White Video Input");
541 } else {
542 strcpy(vi->name, "Television");
543 vi->type = V4L2_INPUT_TYPE_TUNER;
544 vi->audioset = 1;
545 vi->tuner = chan;
546 vi->std = USBVISION_NORMS;
547 }
548 break;
549 case 1:
550 vi->type = V4L2_INPUT_TYPE_CAMERA;
551 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
552 strcpy(vi->name, "Green Video Input");
553 else
554 strcpy(vi->name, "Composite Video Input");
555 vi->std = V4L2_STD_PAL;
556 break;
557 case 2:
558 vi->type = V4L2_INPUT_TYPE_CAMERA;
559 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
560 strcpy(vi->name, "Yellow Video Input");
561 else
562 strcpy(vi->name, "S-Video Input");
563 vi->std = V4L2_STD_PAL;
564 break;
565 case 3:
566 vi->type = V4L2_INPUT_TYPE_CAMERA;
567 strcpy(vi->name, "Red Video Input");
568 vi->std = V4L2_STD_PAL;
569 break;
570 }
571 return 0;
572 }
573
574 static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)
575 {
576 struct usb_usbvision *usbvision = video_drvdata(file);
577
578 *input = usbvision->ctl_input;
579 return 0;
580 }
581
582 static int vidioc_s_input(struct file *file, void *priv, unsigned int input)
583 {
584 struct usb_usbvision *usbvision = video_drvdata(file);
585
586 if (input >= usbvision->video_inputs)
587 return -EINVAL;
588
589 usbvision_muxsel(usbvision, input);
590 usbvision_set_input(usbvision);
591 usbvision_set_output(usbvision,
592 usbvision->curwidth,
593 usbvision->curheight);
594 return 0;
595 }
596
597 static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)
598 {
599 struct usb_usbvision *usbvision = video_drvdata(file);
600
601 usbvision->tvnorm_id = id;
602
603 call_all(usbvision, video, s_std, usbvision->tvnorm_id);
604 /* propagate the change to the decoder */
605 usbvision_muxsel(usbvision, usbvision->ctl_input);
606
607 return 0;
608 }
609
610 static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)
611 {
612 struct usb_usbvision *usbvision = video_drvdata(file);
613
614 *id = usbvision->tvnorm_id;
615 return 0;
616 }
617
618 static int vidioc_g_tuner(struct file *file, void *priv,
619 struct v4l2_tuner *vt)
620 {
621 struct usb_usbvision *usbvision = video_drvdata(file);
622
623 if (!usbvision->have_tuner || vt->index) /* Only tuner 0 */
624 return -EINVAL;
625 if (usbvision->radio) {
626 strcpy(vt->name, "Radio");
627 vt->type = V4L2_TUNER_RADIO;
628 } else {
629 strcpy(vt->name, "Television");
630 }
631 /* Let clients fill in the remainder of this struct */
632 call_all(usbvision, tuner, g_tuner, vt);
633
634 return 0;
635 }
636
637 static int vidioc_s_tuner(struct file *file, void *priv,
638 const struct v4l2_tuner *vt)
639 {
640 struct usb_usbvision *usbvision = video_drvdata(file);
641
642 /* Only no or one tuner for now */
643 if (!usbvision->have_tuner || vt->index)
644 return -EINVAL;
645 /* let clients handle this */
646 call_all(usbvision, tuner, s_tuner, vt);
647
648 return 0;
649 }
650
651 static int vidioc_g_frequency(struct file *file, void *priv,
652 struct v4l2_frequency *freq)
653 {
654 struct usb_usbvision *usbvision = video_drvdata(file);
655
656 freq->tuner = 0; /* Only one tuner */
657 if (usbvision->radio)
658 freq->type = V4L2_TUNER_RADIO;
659 else
660 freq->type = V4L2_TUNER_ANALOG_TV;
661 freq->frequency = usbvision->freq;
662
663 return 0;
664 }
665
666 static int vidioc_s_frequency(struct file *file, void *priv,
667 const struct v4l2_frequency *freq)
668 {
669 struct usb_usbvision *usbvision = video_drvdata(file);
670
671 /* Only no or one tuner for now */
672 if (!usbvision->have_tuner || freq->tuner)
673 return -EINVAL;
674
675 usbvision->freq = freq->frequency;
676 call_all(usbvision, tuner, s_frequency, freq);
677
678 return 0;
679 }
680
681 static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)
682 {
683 struct usb_usbvision *usbvision = video_drvdata(file);
684
685 if (usbvision->radio)
686 strcpy(a->name, "Radio");
687 else
688 strcpy(a->name, "TV");
689
690 return 0;
691 }
692
693 static int vidioc_s_audio(struct file *file, void *fh,
694 const struct v4l2_audio *a)
695 {
696 if (a->index)
697 return -EINVAL;
698 return 0;
699 }
700
701 static int vidioc_queryctrl(struct file *file, void *priv,
702 struct v4l2_queryctrl *ctrl)
703 {
704 struct usb_usbvision *usbvision = video_drvdata(file);
705
706 call_all(usbvision, core, queryctrl, ctrl);
707
708 if (!ctrl->type)
709 return -EINVAL;
710
711 return 0;
712 }
713
714 static int vidioc_g_ctrl(struct file *file, void *priv,
715 struct v4l2_control *ctrl)
716 {
717 struct usb_usbvision *usbvision = video_drvdata(file);
718
719 call_all(usbvision, core, g_ctrl, ctrl);
720 return 0;
721 }
722
723 static int vidioc_s_ctrl(struct file *file, void *priv,
724 struct v4l2_control *ctrl)
725 {
726 struct usb_usbvision *usbvision = video_drvdata(file);
727
728 call_all(usbvision, core, s_ctrl, ctrl);
729 return 0;
730 }
731
732 static int vidioc_reqbufs(struct file *file,
733 void *priv, struct v4l2_requestbuffers *vr)
734 {
735 struct usb_usbvision *usbvision = video_drvdata(file);
736 int ret;
737
738 RESTRICT_TO_RANGE(vr->count, 1, USBVISION_NUMFRAMES);
739
740 /* Check input validity:
741 the user must do a VIDEO CAPTURE and MMAP method. */
742 if (vr->memory != V4L2_MEMORY_MMAP)
743 return -EINVAL;
744
745 if (usbvision->streaming == stream_on) {
746 ret = usbvision_stream_interrupt(usbvision);
747 if (ret)
748 return ret;
749 }
750
751 usbvision_frames_free(usbvision);
752 usbvision_empty_framequeues(usbvision);
753 vr->count = usbvision_frames_alloc(usbvision, vr->count);
754
755 usbvision->cur_frame = NULL;
756
757 return 0;
758 }
759
760 static int vidioc_querybuf(struct file *file,
761 void *priv, struct v4l2_buffer *vb)
762 {
763 struct usb_usbvision *usbvision = video_drvdata(file);
764 struct usbvision_frame *frame;
765
766 /* FIXME : must control
767 that buffers are mapped (VIDIOC_REQBUFS has been called) */
768 if (vb->index >= usbvision->num_frames)
769 return -EINVAL;
770 /* Updating the corresponding frame state */
771 vb->flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
772 frame = &usbvision->frame[vb->index];
773 if (frame->grabstate >= frame_state_ready)
774 vb->flags |= V4L2_BUF_FLAG_QUEUED;
775 if (frame->grabstate >= frame_state_done)
776 vb->flags |= V4L2_BUF_FLAG_DONE;
777 if (frame->grabstate == frame_state_unused)
778 vb->flags |= V4L2_BUF_FLAG_MAPPED;
779 vb->memory = V4L2_MEMORY_MMAP;
780
781 vb->m.offset = vb->index * PAGE_ALIGN(usbvision->max_frame_size);
782
783 vb->memory = V4L2_MEMORY_MMAP;
784 vb->field = V4L2_FIELD_NONE;
785 vb->length = usbvision->curwidth *
786 usbvision->curheight *
787 usbvision->palette.bytes_per_pixel;
788 vb->timestamp = usbvision->frame[vb->index].timestamp;
789 vb->sequence = usbvision->frame[vb->index].sequence;
790 return 0;
791 }
792
793 static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)
794 {
795 struct usb_usbvision *usbvision = video_drvdata(file);
796 struct usbvision_frame *frame;
797 unsigned long lock_flags;
798
799 /* FIXME : works only on VIDEO_CAPTURE MODE, MMAP. */
800 if (vb->index >= usbvision->num_frames)
801 return -EINVAL;
802
803 frame = &usbvision->frame[vb->index];
804
805 if (frame->grabstate != frame_state_unused)
806 return -EAGAIN;
807
808 /* Mark it as ready and enqueue frame */
809 frame->grabstate = frame_state_ready;
810 frame->scanstate = scan_state_scanning;
811 frame->scanlength = 0; /* Accumulated in usbvision_parse_data() */
812
813 vb->flags &= ~V4L2_BUF_FLAG_DONE;
814
815 /* set v4l2_format index */
816 frame->v4l2_format = usbvision->palette;
817
818 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
819 list_add_tail(&usbvision->frame[vb->index].frame, &usbvision->inqueue);
820 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
821
822 return 0;
823 }
824
825 static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)
826 {
827 struct usb_usbvision *usbvision = video_drvdata(file);
828 int ret;
829 struct usbvision_frame *f;
830 unsigned long lock_flags;
831
832 if (list_empty(&(usbvision->outqueue))) {
833 if (usbvision->streaming == stream_idle)
834 return -EINVAL;
835 ret = wait_event_interruptible
836 (usbvision->wait_frame,
837 !list_empty(&(usbvision->outqueue)));
838 if (ret)
839 return ret;
840 }
841
842 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
843 f = list_entry(usbvision->outqueue.next,
844 struct usbvision_frame, frame);
845 list_del(usbvision->outqueue.next);
846 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
847
848 f->grabstate = frame_state_unused;
849
850 vb->memory = V4L2_MEMORY_MMAP;
851 vb->flags = V4L2_BUF_FLAG_MAPPED |
852 V4L2_BUF_FLAG_QUEUED |
853 V4L2_BUF_FLAG_DONE |
854 V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
855 vb->index = f->index;
856 vb->sequence = f->sequence;
857 vb->timestamp = f->timestamp;
858 vb->field = V4L2_FIELD_NONE;
859 vb->bytesused = f->scanlength;
860
861 return 0;
862 }
863
864 static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
865 {
866 struct usb_usbvision *usbvision = video_drvdata(file);
867
868 usbvision->streaming = stream_on;
869 call_all(usbvision, video, s_stream, 1);
870
871 return 0;
872 }
873
874 static int vidioc_streamoff(struct file *file,
875 void *priv, enum v4l2_buf_type type)
876 {
877 struct usb_usbvision *usbvision = video_drvdata(file);
878
879 if (type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
880 return -EINVAL;
881
882 if (usbvision->streaming == stream_on) {
883 usbvision_stream_interrupt(usbvision);
884 /* Stop all video streamings */
885 call_all(usbvision, video, s_stream, 0);
886 }
887 usbvision_empty_framequeues(usbvision);
888
889 return 0;
890 }
891
892 static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
893 struct v4l2_fmtdesc *vfd)
894 {
895 if (vfd->index >= USBVISION_SUPPORTED_PALETTES - 1)
896 return -EINVAL;
897 strcpy(vfd->description, usbvision_v4l2_format[vfd->index].desc);
898 vfd->pixelformat = usbvision_v4l2_format[vfd->index].format;
899 return 0;
900 }
901
902 static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
903 struct v4l2_format *vf)
904 {
905 struct usb_usbvision *usbvision = video_drvdata(file);
906 vf->fmt.pix.width = usbvision->curwidth;
907 vf->fmt.pix.height = usbvision->curheight;
908 vf->fmt.pix.pixelformat = usbvision->palette.format;
909 vf->fmt.pix.bytesperline =
910 usbvision->curwidth * usbvision->palette.bytes_per_pixel;
911 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline * usbvision->curheight;
912 vf->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
913 vf->fmt.pix.field = V4L2_FIELD_NONE; /* Always progressive image */
914
915 return 0;
916 }
917
918 static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
919 struct v4l2_format *vf)
920 {
921 struct usb_usbvision *usbvision = video_drvdata(file);
922 int format_idx;
923
924 /* Find requested format in available ones */
925 for (format_idx = 0; format_idx < USBVISION_SUPPORTED_PALETTES; format_idx++) {
926 if (vf->fmt.pix.pixelformat ==
927 usbvision_v4l2_format[format_idx].format) {
928 usbvision->palette = usbvision_v4l2_format[format_idx];
929 break;
930 }
931 }
932 /* robustness */
933 if (format_idx == USBVISION_SUPPORTED_PALETTES)
934 return -EINVAL;
935 RESTRICT_TO_RANGE(vf->fmt.pix.width, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);
936 RESTRICT_TO_RANGE(vf->fmt.pix.height, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);
937
938 vf->fmt.pix.bytesperline = vf->fmt.pix.width*
939 usbvision->palette.bytes_per_pixel;
940 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline*vf->fmt.pix.height;
941
942 return 0;
943 }
944
945 static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
946 struct v4l2_format *vf)
947 {
948 struct usb_usbvision *usbvision = video_drvdata(file);
949 int ret;
950
951 ret = vidioc_try_fmt_vid_cap(file, priv, vf);
952 if (ret)
953 return ret;
954
955 /* stop io in case it is already in progress */
956 if (usbvision->streaming == stream_on) {
957 ret = usbvision_stream_interrupt(usbvision);
958 if (ret)
959 return ret;
960 }
961 usbvision_frames_free(usbvision);
962 usbvision_empty_framequeues(usbvision);
963
964 usbvision->cur_frame = NULL;
965
966 /* by now we are committed to the new data... */
967 usbvision_set_output(usbvision, vf->fmt.pix.width, vf->fmt.pix.height);
968
969 return 0;
970 }
971
972 static ssize_t usbvision_read(struct file *file, char __user *buf,
973 size_t count, loff_t *ppos)
974 {
975 struct usb_usbvision *usbvision = video_drvdata(file);
976 int noblock = file->f_flags & O_NONBLOCK;
977 unsigned long lock_flags;
978 int ret, i;
979 struct usbvision_frame *frame;
980
981 PDEBUG(DBG_IO, "%s: %ld bytes, noblock=%d", __func__,
982 (unsigned long)count, noblock);
983
984 if (!USBVISION_IS_OPERATIONAL(usbvision) || (buf == NULL))
985 return -EFAULT;
986
987 /* This entry point is compatible with the mmap routines
988 so that a user can do either VIDIOC_QBUF/VIDIOC_DQBUF
989 to get frames or call read on the device. */
990 if (!usbvision->num_frames) {
991 /* First, allocate some frames to work with
992 if this has not been done with VIDIOC_REQBUF */
993 usbvision_frames_free(usbvision);
994 usbvision_empty_framequeues(usbvision);
995 usbvision_frames_alloc(usbvision, USBVISION_NUMFRAMES);
996 }
997
998 if (usbvision->streaming != stream_on) {
999 /* no stream is running, make it running ! */
1000 usbvision->streaming = stream_on;
1001 call_all(usbvision, video, s_stream, 1);
1002 }
1003
1004 /* Then, enqueue as many frames as possible
1005 (like a user of VIDIOC_QBUF would do) */
1006 for (i = 0; i < usbvision->num_frames; i++) {
1007 frame = &usbvision->frame[i];
1008 if (frame->grabstate == frame_state_unused) {
1009 /* Mark it as ready and enqueue frame */
1010 frame->grabstate = frame_state_ready;
1011 frame->scanstate = scan_state_scanning;
1012 /* Accumulated in usbvision_parse_data() */
1013 frame->scanlength = 0;
1014
1015 /* set v4l2_format index */
1016 frame->v4l2_format = usbvision->palette;
1017
1018 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1019 list_add_tail(&frame->frame, &usbvision->inqueue);
1020 spin_unlock_irqrestore(&usbvision->queue_lock,
1021 lock_flags);
1022 }
1023 }
1024
1025 /* Then try to steal a frame (like a VIDIOC_DQBUF would do) */
1026 if (list_empty(&(usbvision->outqueue))) {
1027 if (noblock)
1028 return -EAGAIN;
1029
1030 ret = wait_event_interruptible
1031 (usbvision->wait_frame,
1032 !list_empty(&(usbvision->outqueue)));
1033 if (ret)
1034 return ret;
1035 }
1036
1037 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1038 frame = list_entry(usbvision->outqueue.next,
1039 struct usbvision_frame, frame);
1040 list_del(usbvision->outqueue.next);
1041 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
1042
1043 /* An error returns an empty frame */
1044 if (frame->grabstate == frame_state_error) {
1045 frame->bytes_read = 0;
1046 return 0;
1047 }
1048
1049 PDEBUG(DBG_IO, "%s: frmx=%d, bytes_read=%ld, scanlength=%ld",
1050 __func__,
1051 frame->index, frame->bytes_read, frame->scanlength);
1052
1053 /* copy bytes to user space; we allow for partials reads */
1054 if ((count + frame->bytes_read) > (unsigned long)frame->scanlength)
1055 count = frame->scanlength - frame->bytes_read;
1056
1057 if (copy_to_user(buf, frame->data + frame->bytes_read, count))
1058 return -EFAULT;
1059
1060 frame->bytes_read += count;
1061 PDEBUG(DBG_IO, "%s: {copy} count used=%ld, new bytes_read=%ld",
1062 __func__,
1063 (unsigned long)count, frame->bytes_read);
1064
1065 /* For now, forget the frame if it has not been read in one shot. */
1066 /* if (frame->bytes_read >= frame->scanlength) {*/ /* All data has been read */
1067 frame->bytes_read = 0;
1068
1069 /* Mark it as available to be used again. */
1070 frame->grabstate = frame_state_unused;
1071 /* } */
1072
1073 return count;
1074 }
1075
1076 static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf,
1077 size_t count, loff_t *ppos)
1078 {
1079 struct usb_usbvision *usbvision = video_drvdata(file);
1080 int res;
1081
1082 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1083 return -ERESTARTSYS;
1084 res = usbvision_read(file, buf, count, ppos);
1085 mutex_unlock(&usbvision->v4l2_lock);
1086 return res;
1087 }
1088
1089 static int usbvision_mmap(struct file *file, struct vm_area_struct *vma)
1090 {
1091 unsigned long size = vma->vm_end - vma->vm_start,
1092 start = vma->vm_start;
1093 void *pos;
1094 u32 i;
1095 struct usb_usbvision *usbvision = video_drvdata(file);
1096
1097 PDEBUG(DBG_MMAP, "mmap");
1098
1099 if (!USBVISION_IS_OPERATIONAL(usbvision))
1100 return -EFAULT;
1101
1102 if (!(vma->vm_flags & VM_WRITE) ||
1103 size != PAGE_ALIGN(usbvision->max_frame_size)) {
1104 return -EINVAL;
1105 }
1106
1107 for (i = 0; i < usbvision->num_frames; i++) {
1108 if (((PAGE_ALIGN(usbvision->max_frame_size)*i) >> PAGE_SHIFT) ==
1109 vma->vm_pgoff)
1110 break;
1111 }
1112 if (i == usbvision->num_frames) {
1113 PDEBUG(DBG_MMAP,
1114 "mmap: user supplied mapping address is out of range");
1115 return -EINVAL;
1116 }
1117
1118 /* VM_IO is eventually going to replace PageReserved altogether */
1119 vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
1120
1121 pos = usbvision->frame[i].data;
1122 while (size > 0) {
1123 if (vm_insert_page(vma, start, vmalloc_to_page(pos))) {
1124 PDEBUG(DBG_MMAP, "mmap: vm_insert_page failed");
1125 return -EAGAIN;
1126 }
1127 start += PAGE_SIZE;
1128 pos += PAGE_SIZE;
1129 size -= PAGE_SIZE;
1130 }
1131
1132 return 0;
1133 }
1134
1135 static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
1136 {
1137 struct usb_usbvision *usbvision = video_drvdata(file);
1138 int res;
1139
1140 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1141 return -ERESTARTSYS;
1142 res = usbvision_mmap(file, vma);
1143 mutex_unlock(&usbvision->v4l2_lock);
1144 return res;
1145 }
1146
1147 /*
1148 * Here comes the stuff for radio on usbvision based devices
1149 *
1150 */
1151 static int usbvision_radio_open(struct file *file)
1152 {
1153 struct usb_usbvision *usbvision = video_drvdata(file);
1154 int err_code = 0;
1155
1156 PDEBUG(DBG_IO, "%s:", __func__);
1157
1158 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1159 return -ERESTARTSYS;
1160 if (usbvision->user) {
1161 dev_err(&usbvision->rdev->dev,
1162 "%s: Someone tried to open an already opened USBVision Radio!\n",
1163 __func__);
1164 err_code = -EBUSY;
1165 } else {
1166 if (power_on_at_open) {
1167 usbvision_reset_power_off_timer(usbvision);
1168 if (usbvision->power == 0) {
1169 usbvision_power_on(usbvision);
1170 usbvision_i2c_register(usbvision);
1171 }
1172 }
1173
1174 /* Alternate interface 1 is is the biggest frame size */
1175 err_code = usbvision_set_alternate(usbvision);
1176 if (err_code < 0) {
1177 usbvision->last_error = err_code;
1178 err_code = -EBUSY;
1179 goto out;
1180 }
1181
1182 /* If so far no errors then we shall start the radio */
1183 usbvision->radio = 1;
1184 call_all(usbvision, tuner, s_radio);
1185 usbvision_set_audio(usbvision, USBVISION_AUDIO_RADIO);
1186 usbvision->user++;
1187 }
1188
1189 if (err_code) {
1190 if (power_on_at_open) {
1191 usbvision_i2c_unregister(usbvision);
1192 usbvision_power_off(usbvision);
1193 usbvision->initialized = 0;
1194 }
1195 }
1196 out:
1197 mutex_unlock(&usbvision->v4l2_lock);
1198 return err_code;
1199 }
1200
1201
1202 static int usbvision_radio_close(struct file *file)
1203 {
1204 struct usb_usbvision *usbvision = video_drvdata(file);
1205 int err_code = 0;
1206
1207 PDEBUG(DBG_IO, "");
1208
1209 mutex_lock(&usbvision->v4l2_lock);
1210 /* Set packet size to 0 */
1211 usbvision->iface_alt = 0;
1212 err_code = usb_set_interface(usbvision->dev, usbvision->iface,
1213 usbvision->iface_alt);
1214
1215 usbvision_audio_off(usbvision);
1216 usbvision->radio = 0;
1217 usbvision->user--;
1218
1219 if (power_on_at_open) {
1220 usbvision_set_power_off_timer(usbvision);
1221 usbvision->initialized = 0;
1222 }
1223
1224 if (usbvision->remove_pending) {
1225 printk(KERN_INFO "%s: Final disconnect\n", __func__);
1226 usbvision_release(usbvision);
1227 return err_code;
1228 }
1229
1230 mutex_unlock(&usbvision->v4l2_lock);
1231 PDEBUG(DBG_IO, "success");
1232 return err_code;
1233 }
1234
1235 /* Video registration stuff */
1236
1237 /* Video template */
1238 static const struct v4l2_file_operations usbvision_fops = {
1239 .owner = THIS_MODULE,
1240 .open = usbvision_v4l2_open,
1241 .release = usbvision_v4l2_close,
1242 .read = usbvision_v4l2_read,
1243 .mmap = usbvision_v4l2_mmap,
1244 .unlocked_ioctl = video_ioctl2,
1245 /* .poll = video_poll, */
1246 };
1247
1248 static const struct v4l2_ioctl_ops usbvision_ioctl_ops = {
1249 .vidioc_querycap = vidioc_querycap,
1250 .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
1251 .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap,
1252 .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap,
1253 .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap,
1254 .vidioc_reqbufs = vidioc_reqbufs,
1255 .vidioc_querybuf = vidioc_querybuf,
1256 .vidioc_qbuf = vidioc_qbuf,
1257 .vidioc_dqbuf = vidioc_dqbuf,
1258 .vidioc_s_std = vidioc_s_std,
1259 .vidioc_g_std = vidioc_g_std,
1260 .vidioc_enum_input = vidioc_enum_input,
1261 .vidioc_g_input = vidioc_g_input,
1262 .vidioc_s_input = vidioc_s_input,
1263 .vidioc_queryctrl = vidioc_queryctrl,
1264 .vidioc_g_audio = vidioc_g_audio,
1265 .vidioc_s_audio = vidioc_s_audio,
1266 .vidioc_g_ctrl = vidioc_g_ctrl,
1267 .vidioc_s_ctrl = vidioc_s_ctrl,
1268 .vidioc_streamon = vidioc_streamon,
1269 .vidioc_streamoff = vidioc_streamoff,
1270 .vidioc_g_tuner = vidioc_g_tuner,
1271 .vidioc_s_tuner = vidioc_s_tuner,
1272 .vidioc_g_frequency = vidioc_g_frequency,
1273 .vidioc_s_frequency = vidioc_s_frequency,
1274 #ifdef CONFIG_VIDEO_ADV_DEBUG
1275 .vidioc_g_register = vidioc_g_register,
1276 .vidioc_s_register = vidioc_s_register,
1277 #endif
1278 };
1279
1280 static struct video_device usbvision_video_template = {
1281 .fops = &usbvision_fops,
1282 .ioctl_ops = &usbvision_ioctl_ops,
1283 .name = "usbvision-video",
1284 .release = video_device_release,
1285 .tvnorms = USBVISION_NORMS,
1286 };
1287
1288
1289 /* Radio template */
1290 static const struct v4l2_file_operations usbvision_radio_fops = {
1291 .owner = THIS_MODULE,
1292 .open = usbvision_radio_open,
1293 .release = usbvision_radio_close,
1294 .unlocked_ioctl = video_ioctl2,
1295 };
1296
1297 static const struct v4l2_ioctl_ops usbvision_radio_ioctl_ops = {
1298 .vidioc_querycap = vidioc_querycap,
1299 .vidioc_enum_input = vidioc_enum_input,
1300 .vidioc_g_input = vidioc_g_input,
1301 .vidioc_s_input = vidioc_s_input,
1302 .vidioc_queryctrl = vidioc_queryctrl,
1303 .vidioc_g_audio = vidioc_g_audio,
1304 .vidioc_s_audio = vidioc_s_audio,
1305 .vidioc_g_ctrl = vidioc_g_ctrl,
1306 .vidioc_s_ctrl = vidioc_s_ctrl,
1307 .vidioc_g_tuner = vidioc_g_tuner,
1308 .vidioc_s_tuner = vidioc_s_tuner,
1309 .vidioc_g_frequency = vidioc_g_frequency,
1310 .vidioc_s_frequency = vidioc_s_frequency,
1311 };
1312
1313 static struct video_device usbvision_radio_template = {
1314 .fops = &usbvision_radio_fops,
1315 .name = "usbvision-radio",
1316 .release = video_device_release,
1317 .ioctl_ops = &usbvision_radio_ioctl_ops,
1318 };
1319
1320
1321 static struct video_device *usbvision_vdev_init(struct usb_usbvision *usbvision,
1322 struct video_device *vdev_template,
1323 char *name)
1324 {
1325 struct usb_device *usb_dev = usbvision->dev;
1326 struct video_device *vdev;
1327
1328 if (usb_dev == NULL) {
1329 dev_err(&usbvision->dev->dev,
1330 "%s: usbvision->dev is not set\n", __func__);
1331 return NULL;
1332 }
1333
1334 vdev = video_device_alloc();
1335 if (NULL == vdev)
1336 return NULL;
1337 *vdev = *vdev_template;
1338 vdev->lock = &usbvision->v4l2_lock;
1339 vdev->v4l2_dev = &usbvision->v4l2_dev;
1340 snprintf(vdev->name, sizeof(vdev->name), "%s", name);
1341 video_set_drvdata(vdev, usbvision);
1342 return vdev;
1343 }
1344
1345 /* unregister video4linux devices */
1346 static void usbvision_unregister_video(struct usb_usbvision *usbvision)
1347 {
1348 /* Radio Device: */
1349 if (usbvision->rdev) {
1350 PDEBUG(DBG_PROBE, "unregister %s [v4l2]",
1351 video_device_node_name(usbvision->rdev));
1352 if (video_is_registered(usbvision->rdev))
1353 video_unregister_device(usbvision->rdev);
1354 else
1355 video_device_release(usbvision->rdev);
1356 usbvision->rdev = NULL;
1357 }
1358
1359 /* Video Device: */
1360 if (usbvision->vdev) {
1361 PDEBUG(DBG_PROBE, "unregister %s [v4l2]",
1362 video_device_node_name(usbvision->vdev));
1363 if (video_is_registered(usbvision->vdev))
1364 video_unregister_device(usbvision->vdev);
1365 else
1366 video_device_release(usbvision->vdev);
1367 usbvision->vdev = NULL;
1368 }
1369 }
1370
1371 /* register video4linux devices */
1372 static int usbvision_register_video(struct usb_usbvision *usbvision)
1373 {
1374 /* Video Device: */
1375 usbvision->vdev = usbvision_vdev_init(usbvision,
1376 &usbvision_video_template,
1377 "USBVision Video");
1378 if (usbvision->vdev == NULL)
1379 goto err_exit;
1380 if (video_register_device(usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0)
1381 goto err_exit;
1382 printk(KERN_INFO "USBVision[%d]: registered USBVision Video device %s [v4l2]\n",
1383 usbvision->nr, video_device_node_name(usbvision->vdev));
1384
1385 /* Radio Device: */
1386 if (usbvision_device_data[usbvision->dev_model].radio) {
1387 /* usbvision has radio */
1388 usbvision->rdev = usbvision_vdev_init(usbvision,
1389 &usbvision_radio_template,
1390 "USBVision Radio");
1391 if (usbvision->rdev == NULL)
1392 goto err_exit;
1393 if (video_register_device(usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0)
1394 goto err_exit;
1395 printk(KERN_INFO "USBVision[%d]: registered USBVision Radio device %s [v4l2]\n",
1396 usbvision->nr, video_device_node_name(usbvision->rdev));
1397 }
1398 /* all done */
1399 return 0;
1400
1401 err_exit:
1402 dev_err(&usbvision->dev->dev,
1403 "USBVision[%d]: video_register_device() failed\n",
1404 usbvision->nr);
1405 usbvision_unregister_video(usbvision);
1406 return -1;
1407 }
1408
1409 /*
1410 * usbvision_alloc()
1411 *
1412 * This code allocates the struct usb_usbvision.
1413 * It is filled with default values.
1414 *
1415 * Returns NULL on error, a pointer to usb_usbvision else.
1416 *
1417 */
1418 static struct usb_usbvision *usbvision_alloc(struct usb_device *dev,
1419 struct usb_interface *intf)
1420 {
1421 struct usb_usbvision *usbvision;
1422
1423 usbvision = kzalloc(sizeof(struct usb_usbvision), GFP_KERNEL);
1424 if (usbvision == NULL)
1425 return NULL;
1426
1427 usbvision->dev = dev;
1428 if (v4l2_device_register(&intf->dev, &usbvision->v4l2_dev))
1429 goto err_free;
1430
1431 mutex_init(&usbvision->v4l2_lock);
1432
1433 /* prepare control urb for control messages during interrupts */
1434 usbvision->ctrl_urb = usb_alloc_urb(USBVISION_URB_FRAMES, GFP_KERNEL);
1435 if (usbvision->ctrl_urb == NULL)
1436 goto err_unreg;
1437 init_waitqueue_head(&usbvision->ctrl_urb_wq);
1438
1439 usbvision_init_power_off_timer(usbvision);
1440
1441 return usbvision;
1442
1443 err_unreg:
1444 v4l2_device_unregister(&usbvision->v4l2_dev);
1445 err_free:
1446 kfree(usbvision);
1447 return NULL;
1448 }
1449
1450 /*
1451 * usbvision_release()
1452 *
1453 * This code does final release of struct usb_usbvision. This happens
1454 * after the device is disconnected -and- all clients closed their files.
1455 *
1456 */
1457 static void usbvision_release(struct usb_usbvision *usbvision)
1458 {
1459 PDEBUG(DBG_PROBE, "");
1460
1461 usbvision_reset_power_off_timer(usbvision);
1462
1463 usbvision->initialized = 0;
1464
1465 usbvision_remove_sysfs(usbvision->vdev);
1466 usbvision_unregister_video(usbvision);
1467 kfree(usbvision->alt_max_pkt_size);
1468
1469 usb_free_urb(usbvision->ctrl_urb);
1470
1471 v4l2_device_unregister(&usbvision->v4l2_dev);
1472 kfree(usbvision);
1473
1474 PDEBUG(DBG_PROBE, "success");
1475 }
1476
1477
1478 /*********************** usb interface **********************************/
1479
1480 static void usbvision_configure_video(struct usb_usbvision *usbvision)
1481 {
1482 int model;
1483
1484 if (usbvision == NULL)
1485 return;
1486
1487 model = usbvision->dev_model;
1488 usbvision->palette = usbvision_v4l2_format[2]; /* V4L2_PIX_FMT_RGB24; */
1489
1490 if (usbvision_device_data[usbvision->dev_model].vin_reg2_override) {
1491 usbvision->vin_reg2_preset =
1492 usbvision_device_data[usbvision->dev_model].vin_reg2;
1493 } else {
1494 usbvision->vin_reg2_preset = 0;
1495 }
1496
1497 usbvision->tvnorm_id = usbvision_device_data[model].video_norm;
1498
1499 usbvision->video_inputs = usbvision_device_data[model].video_channels;
1500 usbvision->ctl_input = 0;
1501
1502 /* This should be here to make i2c clients to be able to register */
1503 /* first switch off audio */
1504 if (usbvision_device_data[model].audio_channels > 0)
1505 usbvision_audio_off(usbvision);
1506 if (!power_on_at_open) {
1507 /* and then power up the noisy tuner */
1508 usbvision_power_on(usbvision);
1509 usbvision_i2c_register(usbvision);
1510 }
1511 }
1512
1513 /*
1514 * usbvision_probe()
1515 *
1516 * This procedure queries device descriptor and accepts the interface
1517 * if it looks like USBVISION video device
1518 *
1519 */
1520 static int usbvision_probe(struct usb_interface *intf,
1521 const struct usb_device_id *devid)
1522 {
1523 struct usb_device *dev = usb_get_dev(interface_to_usbdev(intf));
1524 struct usb_interface *uif;
1525 __u8 ifnum = intf->altsetting->desc.bInterfaceNumber;
1526 const struct usb_host_interface *interface;
1527 struct usb_usbvision *usbvision = NULL;
1528 const struct usb_endpoint_descriptor *endpoint;
1529 int model, i;
1530
1531 PDEBUG(DBG_PROBE, "VID=%#04x, PID=%#04x, ifnum=%u",
1532 dev->descriptor.idVendor,
1533 dev->descriptor.idProduct, ifnum);
1534
1535 model = devid->driver_info;
1536 if (model < 0 || model >= usbvision_device_data_size) {
1537 PDEBUG(DBG_PROBE, "model out of bounds %d", model);
1538 return -ENODEV;
1539 }
1540 printk(KERN_INFO "%s: %s found\n", __func__,
1541 usbvision_device_data[model].model_string);
1542
1543 if (usbvision_device_data[model].interface >= 0)
1544 interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0];
1545 else
1546 interface = &dev->actconfig->interface[ifnum]->altsetting[0];
1547 endpoint = &interface->endpoint[1].desc;
1548 if (!usb_endpoint_xfer_isoc(endpoint)) {
1549 dev_err(&intf->dev, "%s: interface %d. has non-ISO endpoint!\n",
1550 __func__, ifnum);
1551 dev_err(&intf->dev, "%s: Endpoint attributes %d",
1552 __func__, endpoint->bmAttributes);
1553 return -ENODEV;
1554 }
1555 if (usb_endpoint_dir_out(endpoint)) {
1556 dev_err(&intf->dev, "%s: interface %d. has ISO OUT endpoint!\n",
1557 __func__, ifnum);
1558 return -ENODEV;
1559 }
1560
1561 usbvision = usbvision_alloc(dev, intf);
1562 if (usbvision == NULL) {
1563 dev_err(&intf->dev, "%s: couldn't allocate USBVision struct\n", __func__);
1564 return -ENOMEM;
1565 }
1566
1567 if (dev->descriptor.bNumConfigurations > 1)
1568 usbvision->bridge_type = BRIDGE_NT1004;
1569 else if (model == DAZZLE_DVC_90_REV_1_SECAM)
1570 usbvision->bridge_type = BRIDGE_NT1005;
1571 else
1572 usbvision->bridge_type = BRIDGE_NT1003;
1573 PDEBUG(DBG_PROBE, "bridge_type %d", usbvision->bridge_type);
1574
1575 /* compute alternate max packet sizes */
1576 uif = dev->actconfig->interface[0];
1577
1578 usbvision->num_alt = uif->num_altsetting;
1579 PDEBUG(DBG_PROBE, "Alternate settings: %i", usbvision->num_alt);
1580 usbvision->alt_max_pkt_size = kmalloc(32 * usbvision->num_alt, GFP_KERNEL);
1581 if (usbvision->alt_max_pkt_size == NULL) {
1582 dev_err(&intf->dev, "usbvision: out of memory!\n");
1583 usbvision_release(usbvision);
1584 return -ENOMEM;
1585 }
1586
1587 for (i = 0; i < usbvision->num_alt; i++) {
1588 u16 tmp = le16_to_cpu(uif->altsetting[i].endpoint[1].desc.
1589 wMaxPacketSize);
1590 usbvision->alt_max_pkt_size[i] =
1591 (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
1592 PDEBUG(DBG_PROBE, "Alternate setting %i, max size= %i", i,
1593 usbvision->alt_max_pkt_size[i]);
1594 }
1595
1596
1597 usbvision->nr = usbvision_nr++;
1598
1599 usbvision->have_tuner = usbvision_device_data[model].tuner;
1600 if (usbvision->have_tuner)
1601 usbvision->tuner_type = usbvision_device_data[model].tuner_type;
1602
1603 usbvision->dev_model = model;
1604 usbvision->remove_pending = 0;
1605 usbvision->iface = ifnum;
1606 usbvision->iface_alt = 0;
1607 usbvision->video_endp = endpoint->bEndpointAddress;
1608 usbvision->isoc_packet_size = 0;
1609 usbvision->usb_bandwidth = 0;
1610 usbvision->user = 0;
1611 usbvision->streaming = stream_off;
1612 usbvision_configure_video(usbvision);
1613 usbvision_register_video(usbvision);
1614
1615 usbvision_create_sysfs(usbvision->vdev);
1616
1617 PDEBUG(DBG_PROBE, "success");
1618 return 0;
1619 }
1620
1621
1622 /*
1623 * usbvision_disconnect()
1624 *
1625 * This procedure stops all driver activity, deallocates interface-private
1626 * structure (pointed by 'ptr') and after that driver should be removable
1627 * with no ill consequences.
1628 *
1629 */
1630 static void usbvision_disconnect(struct usb_interface *intf)
1631 {
1632 struct usb_usbvision *usbvision = to_usbvision(usb_get_intfdata(intf));
1633
1634 PDEBUG(DBG_PROBE, "");
1635
1636 if (usbvision == NULL) {
1637 pr_err("%s: usb_get_intfdata() failed\n", __func__);
1638 return;
1639 }
1640
1641 mutex_lock(&usbvision->v4l2_lock);
1642
1643 /* At this time we ask to cancel outstanding URBs */
1644 usbvision_stop_isoc(usbvision);
1645
1646 v4l2_device_disconnect(&usbvision->v4l2_dev);
1647
1648 if (usbvision->power) {
1649 usbvision_i2c_unregister(usbvision);
1650 usbvision_power_off(usbvision);
1651 }
1652 usbvision->remove_pending = 1; /* Now all ISO data will be ignored */
1653
1654 usb_put_dev(usbvision->dev);
1655 usbvision->dev = NULL; /* USB device is no more */
1656
1657 mutex_unlock(&usbvision->v4l2_lock);
1658
1659 if (usbvision->user) {
1660 printk(KERN_INFO "%s: In use, disconnect pending\n",
1661 __func__);
1662 wake_up_interruptible(&usbvision->wait_frame);
1663 wake_up_interruptible(&usbvision->wait_stream);
1664 } else {
1665 usbvision_release(usbvision);
1666 }
1667
1668 PDEBUG(DBG_PROBE, "success");
1669 }
1670
1671 static struct usb_driver usbvision_driver = {
1672 .name = "usbvision",
1673 .id_table = usbvision_table,
1674 .probe = usbvision_probe,
1675 .disconnect = usbvision_disconnect,
1676 };
1677
1678 /*
1679 * usbvision_init()
1680 *
1681 * This code is run to initialize the driver.
1682 *
1683 */
1684 static int __init usbvision_init(void)
1685 {
1686 int err_code;
1687
1688 PDEBUG(DBG_PROBE, "");
1689
1690 PDEBUG(DBG_IO, "IO debugging is enabled [video]");
1691 PDEBUG(DBG_PROBE, "PROBE debugging is enabled [video]");
1692 PDEBUG(DBG_MMAP, "MMAP debugging is enabled [video]");
1693
1694 /* disable planar mode support unless compression enabled */
1695 if (isoc_mode != ISOC_MODE_COMPRESS) {
1696 /* FIXME : not the right way to set supported flag */
1697 usbvision_v4l2_format[6].supported = 0; /* V4L2_PIX_FMT_YVU420 */
1698 usbvision_v4l2_format[7].supported = 0; /* V4L2_PIX_FMT_YUV422P */
1699 }
1700
1701 err_code = usb_register(&usbvision_driver);
1702
1703 if (err_code == 0) {
1704 printk(KERN_INFO DRIVER_DESC " : " USBVISION_VERSION_STRING "\n");
1705 PDEBUG(DBG_PROBE, "success");
1706 }
1707 return err_code;
1708 }
1709
1710 static void __exit usbvision_exit(void)
1711 {
1712 PDEBUG(DBG_PROBE, "");
1713
1714 usb_deregister(&usbvision_driver);
1715 PDEBUG(DBG_PROBE, "success");
1716 }
1717
1718 module_init(usbvision_init);
1719 module_exit(usbvision_exit);
1720
1721
1722
1723
1724
1725 /* LDV_COMMENT_BEGIN_MAIN */
1726 #ifdef LDV_MAIN1_sequence_infinite_withcheck_stateful
1727
1728 /*###########################################################################*/
1729
1730 /*############## Driver Environment Generator 0.2 output ####################*/
1731
1732 /*###########################################################################*/
1733
1734
1735
1736 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test if all kernel resources are correctly released by driver before driver will be unloaded. */
1737 void ldv_check_final_state(void);
1738
1739 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result. */
1740 void ldv_check_return_value(int res);
1741
1742 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result of probe() function. */
1743 void ldv_check_return_value_probe(int res);
1744
1745 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Initializes the model. */
1746 void ldv_initialize(void);
1747
1748 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Reinitializes the model between distinct model function calls. */
1749 void ldv_handler_precall(void);
1750
1751 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Returns arbitrary interger value. */
1752 int nondet_int(void);
1753
1754 /* LDV_COMMENT_VAR_DECLARE_LDV Special variable for LDV verifier. */
1755 int LDV_IN_INTERRUPT;
1756
1757 /* LDV_COMMENT_FUNCTION_MAIN Main function for LDV verifier. */
1758 void ldv_main1_sequence_infinite_withcheck_stateful(void) {
1759
1760
1761
1762 /* LDV_COMMENT_BEGIN_VARIABLE_DECLARATION_PART */
1763 /*============================= VARIABLE DECLARATION PART =============================*/
1764 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
1765 /* content: static int usbvision_v4l2_open(struct file *file)*/
1766 /* LDV_COMMENT_BEGIN_PREP */
1767 #define DRIVER_AUTHOR \
1768 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1769 "Dwaine Garden <DwaineGarden@rogers.com>"
1770 #define DRIVER_NAME "usbvision"
1771 #define DRIVER_ALIAS "USBVision"
1772 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1773 #define DRIVER_LICENSE "GPL"
1774 #define USBVISION_VERSION_STRING "0.9.11"
1775 #define ENABLE_HEXDUMP 0
1776 #ifdef USBVISION_DEBUG
1777 #define PDEBUG(level, fmt, args...) { \
1778 if (video_debug & (level)) \
1779 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1780 __func__, __LINE__ , ## args); \
1781 }
1782 #else
1783 #define PDEBUG(level, fmt, args...) do {} while (0)
1784 #endif
1785 #define DBG_IO (1 << 1)
1786 #define DBG_PROBE (1 << 2)
1787 #define DBG_MMAP (1 << 3)
1788 #define rmspace(str) while (*str == ' ') str++;
1789 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1790 #define YES_NO(x) ((x) ? "Yes" : "No")
1791 /* LDV_COMMENT_END_PREP */
1792 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_open" */
1793 struct file * var_group1;
1794 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_v4l2_open" */
1795 static int res_usbvision_v4l2_open_12;
1796 /* LDV_COMMENT_BEGIN_PREP */
1797 #ifdef CONFIG_VIDEO_ADV_DEBUG
1798 #endif
1799 #ifdef CONFIG_VIDEO_ADV_DEBUG
1800 #endif
1801 /* LDV_COMMENT_END_PREP */
1802 /* content: static int usbvision_v4l2_close(struct file *file)*/
1803 /* LDV_COMMENT_BEGIN_PREP */
1804 #define DRIVER_AUTHOR \
1805 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1806 "Dwaine Garden <DwaineGarden@rogers.com>"
1807 #define DRIVER_NAME "usbvision"
1808 #define DRIVER_ALIAS "USBVision"
1809 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1810 #define DRIVER_LICENSE "GPL"
1811 #define USBVISION_VERSION_STRING "0.9.11"
1812 #define ENABLE_HEXDUMP 0
1813 #ifdef USBVISION_DEBUG
1814 #define PDEBUG(level, fmt, args...) { \
1815 if (video_debug & (level)) \
1816 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1817 __func__, __LINE__ , ## args); \
1818 }
1819 #else
1820 #define PDEBUG(level, fmt, args...) do {} while (0)
1821 #endif
1822 #define DBG_IO (1 << 1)
1823 #define DBG_PROBE (1 << 2)
1824 #define DBG_MMAP (1 << 3)
1825 #define rmspace(str) while (*str == ' ') str++;
1826 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1827 #define YES_NO(x) ((x) ? "Yes" : "No")
1828 /* LDV_COMMENT_END_PREP */
1829 /* LDV_COMMENT_BEGIN_PREP */
1830 #ifdef CONFIG_VIDEO_ADV_DEBUG
1831 #endif
1832 #ifdef CONFIG_VIDEO_ADV_DEBUG
1833 #endif
1834 /* LDV_COMMENT_END_PREP */
1835 /* content: static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)*/
1836 /* LDV_COMMENT_BEGIN_PREP */
1837 #define DRIVER_AUTHOR \
1838 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1839 "Dwaine Garden <DwaineGarden@rogers.com>"
1840 #define DRIVER_NAME "usbvision"
1841 #define DRIVER_ALIAS "USBVision"
1842 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1843 #define DRIVER_LICENSE "GPL"
1844 #define USBVISION_VERSION_STRING "0.9.11"
1845 #define ENABLE_HEXDUMP 0
1846 #ifdef USBVISION_DEBUG
1847 #define PDEBUG(level, fmt, args...) { \
1848 if (video_debug & (level)) \
1849 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1850 __func__, __LINE__ , ## args); \
1851 }
1852 #else
1853 #define PDEBUG(level, fmt, args...) do {} while (0)
1854 #endif
1855 #define DBG_IO (1 << 1)
1856 #define DBG_PROBE (1 << 2)
1857 #define DBG_MMAP (1 << 3)
1858 #define rmspace(str) while (*str == ' ') str++;
1859 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1860 #define YES_NO(x) ((x) ? "Yes" : "No")
1861 #ifdef CONFIG_VIDEO_ADV_DEBUG
1862 #endif
1863 /* LDV_COMMENT_END_PREP */
1864 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1865 char __user * var_usbvision_v4l2_read_42_p1;
1866 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1867 size_t var_usbvision_v4l2_read_42_p2;
1868 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1869 loff_t * var_usbvision_v4l2_read_42_p3;
1870 /* LDV_COMMENT_BEGIN_PREP */
1871 #ifdef CONFIG_VIDEO_ADV_DEBUG
1872 #endif
1873 /* LDV_COMMENT_END_PREP */
1874 /* content: static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)*/
1875 /* LDV_COMMENT_BEGIN_PREP */
1876 #define DRIVER_AUTHOR \
1877 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1878 "Dwaine Garden <DwaineGarden@rogers.com>"
1879 #define DRIVER_NAME "usbvision"
1880 #define DRIVER_ALIAS "USBVision"
1881 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1882 #define DRIVER_LICENSE "GPL"
1883 #define USBVISION_VERSION_STRING "0.9.11"
1884 #define ENABLE_HEXDUMP 0
1885 #ifdef USBVISION_DEBUG
1886 #define PDEBUG(level, fmt, args...) { \
1887 if (video_debug & (level)) \
1888 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1889 __func__, __LINE__ , ## args); \
1890 }
1891 #else
1892 #define PDEBUG(level, fmt, args...) do {} while (0)
1893 #endif
1894 #define DBG_IO (1 << 1)
1895 #define DBG_PROBE (1 << 2)
1896 #define DBG_MMAP (1 << 3)
1897 #define rmspace(str) while (*str == ' ') str++;
1898 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1899 #define YES_NO(x) ((x) ? "Yes" : "No")
1900 #ifdef CONFIG_VIDEO_ADV_DEBUG
1901 #endif
1902 /* LDV_COMMENT_END_PREP */
1903 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_mmap" */
1904 struct vm_area_struct * var_group2;
1905 /* LDV_COMMENT_BEGIN_PREP */
1906 #ifdef CONFIG_VIDEO_ADV_DEBUG
1907 #endif
1908 /* LDV_COMMENT_END_PREP */
1909
1910 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
1911 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
1912 /* LDV_COMMENT_BEGIN_PREP */
1913 #define DRIVER_AUTHOR \
1914 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1915 "Dwaine Garden <DwaineGarden@rogers.com>"
1916 #define DRIVER_NAME "usbvision"
1917 #define DRIVER_ALIAS "USBVision"
1918 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1919 #define DRIVER_LICENSE "GPL"
1920 #define USBVISION_VERSION_STRING "0.9.11"
1921 #define ENABLE_HEXDUMP 0
1922 #ifdef USBVISION_DEBUG
1923 #define PDEBUG(level, fmt, args...) { \
1924 if (video_debug & (level)) \
1925 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1926 __func__, __LINE__ , ## args); \
1927 }
1928 #else
1929 #define PDEBUG(level, fmt, args...) do {} while (0)
1930 #endif
1931 #define DBG_IO (1 << 1)
1932 #define DBG_PROBE (1 << 2)
1933 #define DBG_MMAP (1 << 3)
1934 #define rmspace(str) while (*str == ' ') str++;
1935 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1936 #define YES_NO(x) ((x) ? "Yes" : "No")
1937 #ifdef CONFIG_VIDEO_ADV_DEBUG
1938 #endif
1939 /* LDV_COMMENT_END_PREP */
1940 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querycap" */
1941 void * var_vidioc_querycap_16_p1;
1942 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querycap" */
1943 struct v4l2_capability * var_vidioc_querycap_16_p2;
1944 /* LDV_COMMENT_BEGIN_PREP */
1945 #ifdef CONFIG_VIDEO_ADV_DEBUG
1946 #endif
1947 /* LDV_COMMENT_END_PREP */
1948 /* content: static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *vfd)*/
1949 /* LDV_COMMENT_BEGIN_PREP */
1950 #define DRIVER_AUTHOR \
1951 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1952 "Dwaine Garden <DwaineGarden@rogers.com>"
1953 #define DRIVER_NAME "usbvision"
1954 #define DRIVER_ALIAS "USBVision"
1955 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1956 #define DRIVER_LICENSE "GPL"
1957 #define USBVISION_VERSION_STRING "0.9.11"
1958 #define ENABLE_HEXDUMP 0
1959 #ifdef USBVISION_DEBUG
1960 #define PDEBUG(level, fmt, args...) { \
1961 if (video_debug & (level)) \
1962 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1963 __func__, __LINE__ , ## args); \
1964 }
1965 #else
1966 #define PDEBUG(level, fmt, args...) do {} while (0)
1967 #endif
1968 #define DBG_IO (1 << 1)
1969 #define DBG_PROBE (1 << 2)
1970 #define DBG_MMAP (1 << 3)
1971 #define rmspace(str) while (*str == ' ') str++;
1972 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1973 #define YES_NO(x) ((x) ? "Yes" : "No")
1974 #ifdef CONFIG_VIDEO_ADV_DEBUG
1975 #endif
1976 /* LDV_COMMENT_END_PREP */
1977 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_fmt_vid_cap" */
1978 void * var_vidioc_enum_fmt_vid_cap_37_p1;
1979 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_fmt_vid_cap" */
1980 struct v4l2_fmtdesc * var_vidioc_enum_fmt_vid_cap_37_p2;
1981 /* LDV_COMMENT_BEGIN_PREP */
1982 #ifdef CONFIG_VIDEO_ADV_DEBUG
1983 #endif
1984 /* LDV_COMMENT_END_PREP */
1985 /* content: static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
1986 /* LDV_COMMENT_BEGIN_PREP */
1987 #define DRIVER_AUTHOR \
1988 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1989 "Dwaine Garden <DwaineGarden@rogers.com>"
1990 #define DRIVER_NAME "usbvision"
1991 #define DRIVER_ALIAS "USBVision"
1992 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1993 #define DRIVER_LICENSE "GPL"
1994 #define USBVISION_VERSION_STRING "0.9.11"
1995 #define ENABLE_HEXDUMP 0
1996 #ifdef USBVISION_DEBUG
1997 #define PDEBUG(level, fmt, args...) { \
1998 if (video_debug & (level)) \
1999 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2000 __func__, __LINE__ , ## args); \
2001 }
2002 #else
2003 #define PDEBUG(level, fmt, args...) do {} while (0)
2004 #endif
2005 #define DBG_IO (1 << 1)
2006 #define DBG_PROBE (1 << 2)
2007 #define DBG_MMAP (1 << 3)
2008 #define rmspace(str) while (*str == ' ') str++;
2009 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2010 #define YES_NO(x) ((x) ? "Yes" : "No")
2011 #ifdef CONFIG_VIDEO_ADV_DEBUG
2012 #endif
2013 /* LDV_COMMENT_END_PREP */
2014 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_fmt_vid_cap" */
2015 void * var_vidioc_g_fmt_vid_cap_38_p1;
2016 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_fmt_vid_cap" */
2017 struct v4l2_format * var_vidioc_g_fmt_vid_cap_38_p2;
2018 /* LDV_COMMENT_BEGIN_PREP */
2019 #ifdef CONFIG_VIDEO_ADV_DEBUG
2020 #endif
2021 /* LDV_COMMENT_END_PREP */
2022 /* content: static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
2023 /* LDV_COMMENT_BEGIN_PREP */
2024 #define DRIVER_AUTHOR \
2025 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2026 "Dwaine Garden <DwaineGarden@rogers.com>"
2027 #define DRIVER_NAME "usbvision"
2028 #define DRIVER_ALIAS "USBVision"
2029 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2030 #define DRIVER_LICENSE "GPL"
2031 #define USBVISION_VERSION_STRING "0.9.11"
2032 #define ENABLE_HEXDUMP 0
2033 #ifdef USBVISION_DEBUG
2034 #define PDEBUG(level, fmt, args...) { \
2035 if (video_debug & (level)) \
2036 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2037 __func__, __LINE__ , ## args); \
2038 }
2039 #else
2040 #define PDEBUG(level, fmt, args...) do {} while (0)
2041 #endif
2042 #define DBG_IO (1 << 1)
2043 #define DBG_PROBE (1 << 2)
2044 #define DBG_MMAP (1 << 3)
2045 #define rmspace(str) while (*str == ' ') str++;
2046 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2047 #define YES_NO(x) ((x) ? "Yes" : "No")
2048 #ifdef CONFIG_VIDEO_ADV_DEBUG
2049 #endif
2050 /* LDV_COMMENT_END_PREP */
2051 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_try_fmt_vid_cap" */
2052 void * var_vidioc_try_fmt_vid_cap_39_p1;
2053 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_try_fmt_vid_cap" */
2054 struct v4l2_format * var_vidioc_try_fmt_vid_cap_39_p2;
2055 /* LDV_COMMENT_BEGIN_PREP */
2056 #ifdef CONFIG_VIDEO_ADV_DEBUG
2057 #endif
2058 /* LDV_COMMENT_END_PREP */
2059 /* content: static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
2060 /* LDV_COMMENT_BEGIN_PREP */
2061 #define DRIVER_AUTHOR \
2062 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2063 "Dwaine Garden <DwaineGarden@rogers.com>"
2064 #define DRIVER_NAME "usbvision"
2065 #define DRIVER_ALIAS "USBVision"
2066 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2067 #define DRIVER_LICENSE "GPL"
2068 #define USBVISION_VERSION_STRING "0.9.11"
2069 #define ENABLE_HEXDUMP 0
2070 #ifdef USBVISION_DEBUG
2071 #define PDEBUG(level, fmt, args...) { \
2072 if (video_debug & (level)) \
2073 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2074 __func__, __LINE__ , ## args); \
2075 }
2076 #else
2077 #define PDEBUG(level, fmt, args...) do {} while (0)
2078 #endif
2079 #define DBG_IO (1 << 1)
2080 #define DBG_PROBE (1 << 2)
2081 #define DBG_MMAP (1 << 3)
2082 #define rmspace(str) while (*str == ' ') str++;
2083 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2084 #define YES_NO(x) ((x) ? "Yes" : "No")
2085 #ifdef CONFIG_VIDEO_ADV_DEBUG
2086 #endif
2087 /* LDV_COMMENT_END_PREP */
2088 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_fmt_vid_cap" */
2089 void * var_vidioc_s_fmt_vid_cap_40_p1;
2090 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_fmt_vid_cap" */
2091 struct v4l2_format * var_vidioc_s_fmt_vid_cap_40_p2;
2092 /* LDV_COMMENT_BEGIN_PREP */
2093 #ifdef CONFIG_VIDEO_ADV_DEBUG
2094 #endif
2095 /* LDV_COMMENT_END_PREP */
2096 /* content: static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *vr)*/
2097 /* LDV_COMMENT_BEGIN_PREP */
2098 #define DRIVER_AUTHOR \
2099 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2100 "Dwaine Garden <DwaineGarden@rogers.com>"
2101 #define DRIVER_NAME "usbvision"
2102 #define DRIVER_ALIAS "USBVision"
2103 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2104 #define DRIVER_LICENSE "GPL"
2105 #define USBVISION_VERSION_STRING "0.9.11"
2106 #define ENABLE_HEXDUMP 0
2107 #ifdef USBVISION_DEBUG
2108 #define PDEBUG(level, fmt, args...) { \
2109 if (video_debug & (level)) \
2110 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2111 __func__, __LINE__ , ## args); \
2112 }
2113 #else
2114 #define PDEBUG(level, fmt, args...) do {} while (0)
2115 #endif
2116 #define DBG_IO (1 << 1)
2117 #define DBG_PROBE (1 << 2)
2118 #define DBG_MMAP (1 << 3)
2119 #define rmspace(str) while (*str == ' ') str++;
2120 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2121 #define YES_NO(x) ((x) ? "Yes" : "No")
2122 #ifdef CONFIG_VIDEO_ADV_DEBUG
2123 #endif
2124 /* LDV_COMMENT_END_PREP */
2125 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_reqbufs" */
2126 void * var_vidioc_reqbufs_31_p1;
2127 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_reqbufs" */
2128 struct v4l2_requestbuffers * var_vidioc_reqbufs_31_p2;
2129 /* LDV_COMMENT_BEGIN_PREP */
2130 #ifdef CONFIG_VIDEO_ADV_DEBUG
2131 #endif
2132 /* LDV_COMMENT_END_PREP */
2133 /* content: static int vidioc_querybuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2134 /* LDV_COMMENT_BEGIN_PREP */
2135 #define DRIVER_AUTHOR \
2136 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2137 "Dwaine Garden <DwaineGarden@rogers.com>"
2138 #define DRIVER_NAME "usbvision"
2139 #define DRIVER_ALIAS "USBVision"
2140 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2141 #define DRIVER_LICENSE "GPL"
2142 #define USBVISION_VERSION_STRING "0.9.11"
2143 #define ENABLE_HEXDUMP 0
2144 #ifdef USBVISION_DEBUG
2145 #define PDEBUG(level, fmt, args...) { \
2146 if (video_debug & (level)) \
2147 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2148 __func__, __LINE__ , ## args); \
2149 }
2150 #else
2151 #define PDEBUG(level, fmt, args...) do {} while (0)
2152 #endif
2153 #define DBG_IO (1 << 1)
2154 #define DBG_PROBE (1 << 2)
2155 #define DBG_MMAP (1 << 3)
2156 #define rmspace(str) while (*str == ' ') str++;
2157 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2158 #define YES_NO(x) ((x) ? "Yes" : "No")
2159 #ifdef CONFIG_VIDEO_ADV_DEBUG
2160 #endif
2161 /* LDV_COMMENT_END_PREP */
2162 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querybuf" */
2163 void * var_vidioc_querybuf_32_p1;
2164 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querybuf" */
2165 struct v4l2_buffer * var_vidioc_querybuf_32_p2;
2166 /* LDV_COMMENT_BEGIN_PREP */
2167 #ifdef CONFIG_VIDEO_ADV_DEBUG
2168 #endif
2169 /* LDV_COMMENT_END_PREP */
2170 /* content: static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2171 /* LDV_COMMENT_BEGIN_PREP */
2172 #define DRIVER_AUTHOR \
2173 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2174 "Dwaine Garden <DwaineGarden@rogers.com>"
2175 #define DRIVER_NAME "usbvision"
2176 #define DRIVER_ALIAS "USBVision"
2177 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2178 #define DRIVER_LICENSE "GPL"
2179 #define USBVISION_VERSION_STRING "0.9.11"
2180 #define ENABLE_HEXDUMP 0
2181 #ifdef USBVISION_DEBUG
2182 #define PDEBUG(level, fmt, args...) { \
2183 if (video_debug & (level)) \
2184 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2185 __func__, __LINE__ , ## args); \
2186 }
2187 #else
2188 #define PDEBUG(level, fmt, args...) do {} while (0)
2189 #endif
2190 #define DBG_IO (1 << 1)
2191 #define DBG_PROBE (1 << 2)
2192 #define DBG_MMAP (1 << 3)
2193 #define rmspace(str) while (*str == ' ') str++;
2194 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2195 #define YES_NO(x) ((x) ? "Yes" : "No")
2196 #ifdef CONFIG_VIDEO_ADV_DEBUG
2197 #endif
2198 /* LDV_COMMENT_END_PREP */
2199 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_qbuf" */
2200 void * var_vidioc_qbuf_33_p1;
2201 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_qbuf" */
2202 struct v4l2_buffer * var_vidioc_qbuf_33_p2;
2203 /* LDV_COMMENT_BEGIN_PREP */
2204 #ifdef CONFIG_VIDEO_ADV_DEBUG
2205 #endif
2206 /* LDV_COMMENT_END_PREP */
2207 /* content: static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2208 /* LDV_COMMENT_BEGIN_PREP */
2209 #define DRIVER_AUTHOR \
2210 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2211 "Dwaine Garden <DwaineGarden@rogers.com>"
2212 #define DRIVER_NAME "usbvision"
2213 #define DRIVER_ALIAS "USBVision"
2214 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2215 #define DRIVER_LICENSE "GPL"
2216 #define USBVISION_VERSION_STRING "0.9.11"
2217 #define ENABLE_HEXDUMP 0
2218 #ifdef USBVISION_DEBUG
2219 #define PDEBUG(level, fmt, args...) { \
2220 if (video_debug & (level)) \
2221 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2222 __func__, __LINE__ , ## args); \
2223 }
2224 #else
2225 #define PDEBUG(level, fmt, args...) do {} while (0)
2226 #endif
2227 #define DBG_IO (1 << 1)
2228 #define DBG_PROBE (1 << 2)
2229 #define DBG_MMAP (1 << 3)
2230 #define rmspace(str) while (*str == ' ') str++;
2231 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2232 #define YES_NO(x) ((x) ? "Yes" : "No")
2233 #ifdef CONFIG_VIDEO_ADV_DEBUG
2234 #endif
2235 /* LDV_COMMENT_END_PREP */
2236 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_dqbuf" */
2237 void * var_vidioc_dqbuf_34_p1;
2238 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_dqbuf" */
2239 struct v4l2_buffer * var_vidioc_dqbuf_34_p2;
2240 /* LDV_COMMENT_BEGIN_PREP */
2241 #ifdef CONFIG_VIDEO_ADV_DEBUG
2242 #endif
2243 /* LDV_COMMENT_END_PREP */
2244 /* content: static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)*/
2245 /* LDV_COMMENT_BEGIN_PREP */
2246 #define DRIVER_AUTHOR \
2247 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2248 "Dwaine Garden <DwaineGarden@rogers.com>"
2249 #define DRIVER_NAME "usbvision"
2250 #define DRIVER_ALIAS "USBVision"
2251 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2252 #define DRIVER_LICENSE "GPL"
2253 #define USBVISION_VERSION_STRING "0.9.11"
2254 #define ENABLE_HEXDUMP 0
2255 #ifdef USBVISION_DEBUG
2256 #define PDEBUG(level, fmt, args...) { \
2257 if (video_debug & (level)) \
2258 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2259 __func__, __LINE__ , ## args); \
2260 }
2261 #else
2262 #define PDEBUG(level, fmt, args...) do {} while (0)
2263 #endif
2264 #define DBG_IO (1 << 1)
2265 #define DBG_PROBE (1 << 2)
2266 #define DBG_MMAP (1 << 3)
2267 #define rmspace(str) while (*str == ' ') str++;
2268 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2269 #define YES_NO(x) ((x) ? "Yes" : "No")
2270 #ifdef CONFIG_VIDEO_ADV_DEBUG
2271 #endif
2272 /* LDV_COMMENT_END_PREP */
2273 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_std" */
2274 void * var_vidioc_s_std_20_p1;
2275 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_std" */
2276 v4l2_std_id var_vidioc_s_std_20_p2;
2277 /* LDV_COMMENT_BEGIN_PREP */
2278 #ifdef CONFIG_VIDEO_ADV_DEBUG
2279 #endif
2280 /* LDV_COMMENT_END_PREP */
2281 /* content: static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)*/
2282 /* LDV_COMMENT_BEGIN_PREP */
2283 #define DRIVER_AUTHOR \
2284 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2285 "Dwaine Garden <DwaineGarden@rogers.com>"
2286 #define DRIVER_NAME "usbvision"
2287 #define DRIVER_ALIAS "USBVision"
2288 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2289 #define DRIVER_LICENSE "GPL"
2290 #define USBVISION_VERSION_STRING "0.9.11"
2291 #define ENABLE_HEXDUMP 0
2292 #ifdef USBVISION_DEBUG
2293 #define PDEBUG(level, fmt, args...) { \
2294 if (video_debug & (level)) \
2295 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2296 __func__, __LINE__ , ## args); \
2297 }
2298 #else
2299 #define PDEBUG(level, fmt, args...) do {} while (0)
2300 #endif
2301 #define DBG_IO (1 << 1)
2302 #define DBG_PROBE (1 << 2)
2303 #define DBG_MMAP (1 << 3)
2304 #define rmspace(str) while (*str == ' ') str++;
2305 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2306 #define YES_NO(x) ((x) ? "Yes" : "No")
2307 #ifdef CONFIG_VIDEO_ADV_DEBUG
2308 #endif
2309 /* LDV_COMMENT_END_PREP */
2310 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_std" */
2311 void * var_vidioc_g_std_21_p1;
2312 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_std" */
2313 v4l2_std_id * var_vidioc_g_std_21_p2;
2314 /* LDV_COMMENT_BEGIN_PREP */
2315 #ifdef CONFIG_VIDEO_ADV_DEBUG
2316 #endif
2317 /* LDV_COMMENT_END_PREP */
2318 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
2319 /* LDV_COMMENT_BEGIN_PREP */
2320 #define DRIVER_AUTHOR \
2321 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2322 "Dwaine Garden <DwaineGarden@rogers.com>"
2323 #define DRIVER_NAME "usbvision"
2324 #define DRIVER_ALIAS "USBVision"
2325 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2326 #define DRIVER_LICENSE "GPL"
2327 #define USBVISION_VERSION_STRING "0.9.11"
2328 #define ENABLE_HEXDUMP 0
2329 #ifdef USBVISION_DEBUG
2330 #define PDEBUG(level, fmt, args...) { \
2331 if (video_debug & (level)) \
2332 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2333 __func__, __LINE__ , ## args); \
2334 }
2335 #else
2336 #define PDEBUG(level, fmt, args...) do {} while (0)
2337 #endif
2338 #define DBG_IO (1 << 1)
2339 #define DBG_PROBE (1 << 2)
2340 #define DBG_MMAP (1 << 3)
2341 #define rmspace(str) while (*str == ' ') str++;
2342 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2343 #define YES_NO(x) ((x) ? "Yes" : "No")
2344 #ifdef CONFIG_VIDEO_ADV_DEBUG
2345 #endif
2346 /* LDV_COMMENT_END_PREP */
2347 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_input" */
2348 void * var_vidioc_enum_input_17_p1;
2349 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_input" */
2350 struct v4l2_input * var_vidioc_enum_input_17_p2;
2351 /* LDV_COMMENT_BEGIN_PREP */
2352 #ifdef CONFIG_VIDEO_ADV_DEBUG
2353 #endif
2354 /* LDV_COMMENT_END_PREP */
2355 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
2356 /* LDV_COMMENT_BEGIN_PREP */
2357 #define DRIVER_AUTHOR \
2358 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2359 "Dwaine Garden <DwaineGarden@rogers.com>"
2360 #define DRIVER_NAME "usbvision"
2361 #define DRIVER_ALIAS "USBVision"
2362 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2363 #define DRIVER_LICENSE "GPL"
2364 #define USBVISION_VERSION_STRING "0.9.11"
2365 #define ENABLE_HEXDUMP 0
2366 #ifdef USBVISION_DEBUG
2367 #define PDEBUG(level, fmt, args...) { \
2368 if (video_debug & (level)) \
2369 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2370 __func__, __LINE__ , ## args); \
2371 }
2372 #else
2373 #define PDEBUG(level, fmt, args...) do {} while (0)
2374 #endif
2375 #define DBG_IO (1 << 1)
2376 #define DBG_PROBE (1 << 2)
2377 #define DBG_MMAP (1 << 3)
2378 #define rmspace(str) while (*str == ' ') str++;
2379 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2380 #define YES_NO(x) ((x) ? "Yes" : "No")
2381 #ifdef CONFIG_VIDEO_ADV_DEBUG
2382 #endif
2383 /* LDV_COMMENT_END_PREP */
2384 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_input" */
2385 void * var_vidioc_g_input_18_p1;
2386 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_input" */
2387 unsigned int * var_vidioc_g_input_18_p2;
2388 /* LDV_COMMENT_BEGIN_PREP */
2389 #ifdef CONFIG_VIDEO_ADV_DEBUG
2390 #endif
2391 /* LDV_COMMENT_END_PREP */
2392 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
2393 /* LDV_COMMENT_BEGIN_PREP */
2394 #define DRIVER_AUTHOR \
2395 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2396 "Dwaine Garden <DwaineGarden@rogers.com>"
2397 #define DRIVER_NAME "usbvision"
2398 #define DRIVER_ALIAS "USBVision"
2399 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2400 #define DRIVER_LICENSE "GPL"
2401 #define USBVISION_VERSION_STRING "0.9.11"
2402 #define ENABLE_HEXDUMP 0
2403 #ifdef USBVISION_DEBUG
2404 #define PDEBUG(level, fmt, args...) { \
2405 if (video_debug & (level)) \
2406 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2407 __func__, __LINE__ , ## args); \
2408 }
2409 #else
2410 #define PDEBUG(level, fmt, args...) do {} while (0)
2411 #endif
2412 #define DBG_IO (1 << 1)
2413 #define DBG_PROBE (1 << 2)
2414 #define DBG_MMAP (1 << 3)
2415 #define rmspace(str) while (*str == ' ') str++;
2416 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2417 #define YES_NO(x) ((x) ? "Yes" : "No")
2418 #ifdef CONFIG_VIDEO_ADV_DEBUG
2419 #endif
2420 /* LDV_COMMENT_END_PREP */
2421 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_input" */
2422 void * var_vidioc_s_input_19_p1;
2423 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_input" */
2424 unsigned int var_vidioc_s_input_19_p2;
2425 /* LDV_COMMENT_BEGIN_PREP */
2426 #ifdef CONFIG_VIDEO_ADV_DEBUG
2427 #endif
2428 /* LDV_COMMENT_END_PREP */
2429 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
2430 /* LDV_COMMENT_BEGIN_PREP */
2431 #define DRIVER_AUTHOR \
2432 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2433 "Dwaine Garden <DwaineGarden@rogers.com>"
2434 #define DRIVER_NAME "usbvision"
2435 #define DRIVER_ALIAS "USBVision"
2436 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2437 #define DRIVER_LICENSE "GPL"
2438 #define USBVISION_VERSION_STRING "0.9.11"
2439 #define ENABLE_HEXDUMP 0
2440 #ifdef USBVISION_DEBUG
2441 #define PDEBUG(level, fmt, args...) { \
2442 if (video_debug & (level)) \
2443 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2444 __func__, __LINE__ , ## args); \
2445 }
2446 #else
2447 #define PDEBUG(level, fmt, args...) do {} while (0)
2448 #endif
2449 #define DBG_IO (1 << 1)
2450 #define DBG_PROBE (1 << 2)
2451 #define DBG_MMAP (1 << 3)
2452 #define rmspace(str) while (*str == ' ') str++;
2453 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2454 #define YES_NO(x) ((x) ? "Yes" : "No")
2455 #ifdef CONFIG_VIDEO_ADV_DEBUG
2456 #endif
2457 /* LDV_COMMENT_END_PREP */
2458 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_queryctrl" */
2459 void * var_vidioc_queryctrl_28_p1;
2460 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_queryctrl" */
2461 struct v4l2_queryctrl * var_vidioc_queryctrl_28_p2;
2462 /* LDV_COMMENT_BEGIN_PREP */
2463 #ifdef CONFIG_VIDEO_ADV_DEBUG
2464 #endif
2465 /* LDV_COMMENT_END_PREP */
2466 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
2467 /* LDV_COMMENT_BEGIN_PREP */
2468 #define DRIVER_AUTHOR \
2469 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2470 "Dwaine Garden <DwaineGarden@rogers.com>"
2471 #define DRIVER_NAME "usbvision"
2472 #define DRIVER_ALIAS "USBVision"
2473 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2474 #define DRIVER_LICENSE "GPL"
2475 #define USBVISION_VERSION_STRING "0.9.11"
2476 #define ENABLE_HEXDUMP 0
2477 #ifdef USBVISION_DEBUG
2478 #define PDEBUG(level, fmt, args...) { \
2479 if (video_debug & (level)) \
2480 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2481 __func__, __LINE__ , ## args); \
2482 }
2483 #else
2484 #define PDEBUG(level, fmt, args...) do {} while (0)
2485 #endif
2486 #define DBG_IO (1 << 1)
2487 #define DBG_PROBE (1 << 2)
2488 #define DBG_MMAP (1 << 3)
2489 #define rmspace(str) while (*str == ' ') str++;
2490 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2491 #define YES_NO(x) ((x) ? "Yes" : "No")
2492 #ifdef CONFIG_VIDEO_ADV_DEBUG
2493 #endif
2494 /* LDV_COMMENT_END_PREP */
2495 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_audio" */
2496 void * var_vidioc_g_audio_26_p1;
2497 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_audio" */
2498 struct v4l2_audio * var_vidioc_g_audio_26_p2;
2499 /* LDV_COMMENT_BEGIN_PREP */
2500 #ifdef CONFIG_VIDEO_ADV_DEBUG
2501 #endif
2502 /* LDV_COMMENT_END_PREP */
2503 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
2504 /* LDV_COMMENT_BEGIN_PREP */
2505 #define DRIVER_AUTHOR \
2506 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2507 "Dwaine Garden <DwaineGarden@rogers.com>"
2508 #define DRIVER_NAME "usbvision"
2509 #define DRIVER_ALIAS "USBVision"
2510 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2511 #define DRIVER_LICENSE "GPL"
2512 #define USBVISION_VERSION_STRING "0.9.11"
2513 #define ENABLE_HEXDUMP 0
2514 #ifdef USBVISION_DEBUG
2515 #define PDEBUG(level, fmt, args...) { \
2516 if (video_debug & (level)) \
2517 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2518 __func__, __LINE__ , ## args); \
2519 }
2520 #else
2521 #define PDEBUG(level, fmt, args...) do {} while (0)
2522 #endif
2523 #define DBG_IO (1 << 1)
2524 #define DBG_PROBE (1 << 2)
2525 #define DBG_MMAP (1 << 3)
2526 #define rmspace(str) while (*str == ' ') str++;
2527 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2528 #define YES_NO(x) ((x) ? "Yes" : "No")
2529 #ifdef CONFIG_VIDEO_ADV_DEBUG
2530 #endif
2531 /* LDV_COMMENT_END_PREP */
2532 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_audio" */
2533 void * var_vidioc_s_audio_27_p1;
2534 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_audio" */
2535 const struct v4l2_audio * var_vidioc_s_audio_27_p2;
2536 /* LDV_COMMENT_BEGIN_PREP */
2537 #ifdef CONFIG_VIDEO_ADV_DEBUG
2538 #endif
2539 /* LDV_COMMENT_END_PREP */
2540 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
2541 /* LDV_COMMENT_BEGIN_PREP */
2542 #define DRIVER_AUTHOR \
2543 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2544 "Dwaine Garden <DwaineGarden@rogers.com>"
2545 #define DRIVER_NAME "usbvision"
2546 #define DRIVER_ALIAS "USBVision"
2547 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2548 #define DRIVER_LICENSE "GPL"
2549 #define USBVISION_VERSION_STRING "0.9.11"
2550 #define ENABLE_HEXDUMP 0
2551 #ifdef USBVISION_DEBUG
2552 #define PDEBUG(level, fmt, args...) { \
2553 if (video_debug & (level)) \
2554 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2555 __func__, __LINE__ , ## args); \
2556 }
2557 #else
2558 #define PDEBUG(level, fmt, args...) do {} while (0)
2559 #endif
2560 #define DBG_IO (1 << 1)
2561 #define DBG_PROBE (1 << 2)
2562 #define DBG_MMAP (1 << 3)
2563 #define rmspace(str) while (*str == ' ') str++;
2564 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2565 #define YES_NO(x) ((x) ? "Yes" : "No")
2566 #ifdef CONFIG_VIDEO_ADV_DEBUG
2567 #endif
2568 /* LDV_COMMENT_END_PREP */
2569 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_ctrl" */
2570 void * var_vidioc_g_ctrl_29_p1;
2571 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_ctrl" */
2572 struct v4l2_control * var_vidioc_g_ctrl_29_p2;
2573 /* LDV_COMMENT_BEGIN_PREP */
2574 #ifdef CONFIG_VIDEO_ADV_DEBUG
2575 #endif
2576 /* LDV_COMMENT_END_PREP */
2577 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
2578 /* LDV_COMMENT_BEGIN_PREP */
2579 #define DRIVER_AUTHOR \
2580 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2581 "Dwaine Garden <DwaineGarden@rogers.com>"
2582 #define DRIVER_NAME "usbvision"
2583 #define DRIVER_ALIAS "USBVision"
2584 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2585 #define DRIVER_LICENSE "GPL"
2586 #define USBVISION_VERSION_STRING "0.9.11"
2587 #define ENABLE_HEXDUMP 0
2588 #ifdef USBVISION_DEBUG
2589 #define PDEBUG(level, fmt, args...) { \
2590 if (video_debug & (level)) \
2591 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2592 __func__, __LINE__ , ## args); \
2593 }
2594 #else
2595 #define PDEBUG(level, fmt, args...) do {} while (0)
2596 #endif
2597 #define DBG_IO (1 << 1)
2598 #define DBG_PROBE (1 << 2)
2599 #define DBG_MMAP (1 << 3)
2600 #define rmspace(str) while (*str == ' ') str++;
2601 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2602 #define YES_NO(x) ((x) ? "Yes" : "No")
2603 #ifdef CONFIG_VIDEO_ADV_DEBUG
2604 #endif
2605 /* LDV_COMMENT_END_PREP */
2606 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_ctrl" */
2607 void * var_vidioc_s_ctrl_30_p1;
2608 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_ctrl" */
2609 struct v4l2_control * var_vidioc_s_ctrl_30_p2;
2610 /* LDV_COMMENT_BEGIN_PREP */
2611 #ifdef CONFIG_VIDEO_ADV_DEBUG
2612 #endif
2613 /* LDV_COMMENT_END_PREP */
2614 /* content: static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)*/
2615 /* LDV_COMMENT_BEGIN_PREP */
2616 #define DRIVER_AUTHOR \
2617 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2618 "Dwaine Garden <DwaineGarden@rogers.com>"
2619 #define DRIVER_NAME "usbvision"
2620 #define DRIVER_ALIAS "USBVision"
2621 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2622 #define DRIVER_LICENSE "GPL"
2623 #define USBVISION_VERSION_STRING "0.9.11"
2624 #define ENABLE_HEXDUMP 0
2625 #ifdef USBVISION_DEBUG
2626 #define PDEBUG(level, fmt, args...) { \
2627 if (video_debug & (level)) \
2628 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2629 __func__, __LINE__ , ## args); \
2630 }
2631 #else
2632 #define PDEBUG(level, fmt, args...) do {} while (0)
2633 #endif
2634 #define DBG_IO (1 << 1)
2635 #define DBG_PROBE (1 << 2)
2636 #define DBG_MMAP (1 << 3)
2637 #define rmspace(str) while (*str == ' ') str++;
2638 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2639 #define YES_NO(x) ((x) ? "Yes" : "No")
2640 #ifdef CONFIG_VIDEO_ADV_DEBUG
2641 #endif
2642 /* LDV_COMMENT_END_PREP */
2643 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamon" */
2644 void * var_vidioc_streamon_35_p1;
2645 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamon" */
2646 enum v4l2_buf_type var_vidioc_streamon_35_p2;
2647 /* LDV_COMMENT_BEGIN_PREP */
2648 #ifdef CONFIG_VIDEO_ADV_DEBUG
2649 #endif
2650 /* LDV_COMMENT_END_PREP */
2651 /* content: static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type type)*/
2652 /* LDV_COMMENT_BEGIN_PREP */
2653 #define DRIVER_AUTHOR \
2654 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2655 "Dwaine Garden <DwaineGarden@rogers.com>"
2656 #define DRIVER_NAME "usbvision"
2657 #define DRIVER_ALIAS "USBVision"
2658 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2659 #define DRIVER_LICENSE "GPL"
2660 #define USBVISION_VERSION_STRING "0.9.11"
2661 #define ENABLE_HEXDUMP 0
2662 #ifdef USBVISION_DEBUG
2663 #define PDEBUG(level, fmt, args...) { \
2664 if (video_debug & (level)) \
2665 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2666 __func__, __LINE__ , ## args); \
2667 }
2668 #else
2669 #define PDEBUG(level, fmt, args...) do {} while (0)
2670 #endif
2671 #define DBG_IO (1 << 1)
2672 #define DBG_PROBE (1 << 2)
2673 #define DBG_MMAP (1 << 3)
2674 #define rmspace(str) while (*str == ' ') str++;
2675 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2676 #define YES_NO(x) ((x) ? "Yes" : "No")
2677 #ifdef CONFIG_VIDEO_ADV_DEBUG
2678 #endif
2679 /* LDV_COMMENT_END_PREP */
2680 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamoff" */
2681 void * var_vidioc_streamoff_36_p1;
2682 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamoff" */
2683 enum v4l2_buf_type var_vidioc_streamoff_36_p2;
2684 /* LDV_COMMENT_BEGIN_PREP */
2685 #ifdef CONFIG_VIDEO_ADV_DEBUG
2686 #endif
2687 /* LDV_COMMENT_END_PREP */
2688 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
2689 /* LDV_COMMENT_BEGIN_PREP */
2690 #define DRIVER_AUTHOR \
2691 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2692 "Dwaine Garden <DwaineGarden@rogers.com>"
2693 #define DRIVER_NAME "usbvision"
2694 #define DRIVER_ALIAS "USBVision"
2695 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2696 #define DRIVER_LICENSE "GPL"
2697 #define USBVISION_VERSION_STRING "0.9.11"
2698 #define ENABLE_HEXDUMP 0
2699 #ifdef USBVISION_DEBUG
2700 #define PDEBUG(level, fmt, args...) { \
2701 if (video_debug & (level)) \
2702 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2703 __func__, __LINE__ , ## args); \
2704 }
2705 #else
2706 #define PDEBUG(level, fmt, args...) do {} while (0)
2707 #endif
2708 #define DBG_IO (1 << 1)
2709 #define DBG_PROBE (1 << 2)
2710 #define DBG_MMAP (1 << 3)
2711 #define rmspace(str) while (*str == ' ') str++;
2712 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2713 #define YES_NO(x) ((x) ? "Yes" : "No")
2714 #ifdef CONFIG_VIDEO_ADV_DEBUG
2715 #endif
2716 /* LDV_COMMENT_END_PREP */
2717 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_tuner" */
2718 void * var_vidioc_g_tuner_22_p1;
2719 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_tuner" */
2720 struct v4l2_tuner * var_vidioc_g_tuner_22_p2;
2721 /* LDV_COMMENT_BEGIN_PREP */
2722 #ifdef CONFIG_VIDEO_ADV_DEBUG
2723 #endif
2724 /* LDV_COMMENT_END_PREP */
2725 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
2726 /* LDV_COMMENT_BEGIN_PREP */
2727 #define DRIVER_AUTHOR \
2728 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2729 "Dwaine Garden <DwaineGarden@rogers.com>"
2730 #define DRIVER_NAME "usbvision"
2731 #define DRIVER_ALIAS "USBVision"
2732 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2733 #define DRIVER_LICENSE "GPL"
2734 #define USBVISION_VERSION_STRING "0.9.11"
2735 #define ENABLE_HEXDUMP 0
2736 #ifdef USBVISION_DEBUG
2737 #define PDEBUG(level, fmt, args...) { \
2738 if (video_debug & (level)) \
2739 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2740 __func__, __LINE__ , ## args); \
2741 }
2742 #else
2743 #define PDEBUG(level, fmt, args...) do {} while (0)
2744 #endif
2745 #define DBG_IO (1 << 1)
2746 #define DBG_PROBE (1 << 2)
2747 #define DBG_MMAP (1 << 3)
2748 #define rmspace(str) while (*str == ' ') str++;
2749 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2750 #define YES_NO(x) ((x) ? "Yes" : "No")
2751 #ifdef CONFIG_VIDEO_ADV_DEBUG
2752 #endif
2753 /* LDV_COMMENT_END_PREP */
2754 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_tuner" */
2755 void * var_vidioc_s_tuner_23_p1;
2756 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_tuner" */
2757 const struct v4l2_tuner * var_vidioc_s_tuner_23_p2;
2758 /* LDV_COMMENT_BEGIN_PREP */
2759 #ifdef CONFIG_VIDEO_ADV_DEBUG
2760 #endif
2761 /* LDV_COMMENT_END_PREP */
2762 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
2763 /* LDV_COMMENT_BEGIN_PREP */
2764 #define DRIVER_AUTHOR \
2765 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2766 "Dwaine Garden <DwaineGarden@rogers.com>"
2767 #define DRIVER_NAME "usbvision"
2768 #define DRIVER_ALIAS "USBVision"
2769 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2770 #define DRIVER_LICENSE "GPL"
2771 #define USBVISION_VERSION_STRING "0.9.11"
2772 #define ENABLE_HEXDUMP 0
2773 #ifdef USBVISION_DEBUG
2774 #define PDEBUG(level, fmt, args...) { \
2775 if (video_debug & (level)) \
2776 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2777 __func__, __LINE__ , ## args); \
2778 }
2779 #else
2780 #define PDEBUG(level, fmt, args...) do {} while (0)
2781 #endif
2782 #define DBG_IO (1 << 1)
2783 #define DBG_PROBE (1 << 2)
2784 #define DBG_MMAP (1 << 3)
2785 #define rmspace(str) while (*str == ' ') str++;
2786 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2787 #define YES_NO(x) ((x) ? "Yes" : "No")
2788 #ifdef CONFIG_VIDEO_ADV_DEBUG
2789 #endif
2790 /* LDV_COMMENT_END_PREP */
2791 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_frequency" */
2792 void * var_vidioc_g_frequency_24_p1;
2793 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_frequency" */
2794 struct v4l2_frequency * var_vidioc_g_frequency_24_p2;
2795 /* LDV_COMMENT_BEGIN_PREP */
2796 #ifdef CONFIG_VIDEO_ADV_DEBUG
2797 #endif
2798 /* LDV_COMMENT_END_PREP */
2799 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
2800 /* LDV_COMMENT_BEGIN_PREP */
2801 #define DRIVER_AUTHOR \
2802 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2803 "Dwaine Garden <DwaineGarden@rogers.com>"
2804 #define DRIVER_NAME "usbvision"
2805 #define DRIVER_ALIAS "USBVision"
2806 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2807 #define DRIVER_LICENSE "GPL"
2808 #define USBVISION_VERSION_STRING "0.9.11"
2809 #define ENABLE_HEXDUMP 0
2810 #ifdef USBVISION_DEBUG
2811 #define PDEBUG(level, fmt, args...) { \
2812 if (video_debug & (level)) \
2813 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2814 __func__, __LINE__ , ## args); \
2815 }
2816 #else
2817 #define PDEBUG(level, fmt, args...) do {} while (0)
2818 #endif
2819 #define DBG_IO (1 << 1)
2820 #define DBG_PROBE (1 << 2)
2821 #define DBG_MMAP (1 << 3)
2822 #define rmspace(str) while (*str == ' ') str++;
2823 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2824 #define YES_NO(x) ((x) ? "Yes" : "No")
2825 #ifdef CONFIG_VIDEO_ADV_DEBUG
2826 #endif
2827 /* LDV_COMMENT_END_PREP */
2828 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_frequency" */
2829 void * var_vidioc_s_frequency_25_p1;
2830 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_frequency" */
2831 const struct v4l2_frequency * var_vidioc_s_frequency_25_p2;
2832 /* LDV_COMMENT_BEGIN_PREP */
2833 #ifdef CONFIG_VIDEO_ADV_DEBUG
2834 #endif
2835 /* LDV_COMMENT_END_PREP */
2836 /* content: static int vidioc_g_register(struct file *file, void *priv, struct v4l2_dbg_register *reg)*/
2837 /* LDV_COMMENT_BEGIN_PREP */
2838 #define DRIVER_AUTHOR \
2839 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2840 "Dwaine Garden <DwaineGarden@rogers.com>"
2841 #define DRIVER_NAME "usbvision"
2842 #define DRIVER_ALIAS "USBVision"
2843 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2844 #define DRIVER_LICENSE "GPL"
2845 #define USBVISION_VERSION_STRING "0.9.11"
2846 #define ENABLE_HEXDUMP 0
2847 #ifdef USBVISION_DEBUG
2848 #define PDEBUG(level, fmt, args...) { \
2849 if (video_debug & (level)) \
2850 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2851 __func__, __LINE__ , ## args); \
2852 }
2853 #else
2854 #define PDEBUG(level, fmt, args...) do {} while (0)
2855 #endif
2856 #define DBG_IO (1 << 1)
2857 #define DBG_PROBE (1 << 2)
2858 #define DBG_MMAP (1 << 3)
2859 #define rmspace(str) while (*str == ' ') str++;
2860 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2861 #define YES_NO(x) ((x) ? "Yes" : "No")
2862 #ifdef CONFIG_VIDEO_ADV_DEBUG
2863 /* LDV_COMMENT_END_PREP */
2864 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_register" */
2865 void * var_vidioc_g_register_14_p1;
2866 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_register" */
2867 struct v4l2_dbg_register * var_vidioc_g_register_14_p2;
2868 /* LDV_COMMENT_BEGIN_PREP */
2869 #endif
2870 #ifdef CONFIG_VIDEO_ADV_DEBUG
2871 #endif
2872 /* LDV_COMMENT_END_PREP */
2873 /* content: static int vidioc_s_register(struct file *file, void *priv, const struct v4l2_dbg_register *reg)*/
2874 /* LDV_COMMENT_BEGIN_PREP */
2875 #define DRIVER_AUTHOR \
2876 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2877 "Dwaine Garden <DwaineGarden@rogers.com>"
2878 #define DRIVER_NAME "usbvision"
2879 #define DRIVER_ALIAS "USBVision"
2880 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2881 #define DRIVER_LICENSE "GPL"
2882 #define USBVISION_VERSION_STRING "0.9.11"
2883 #define ENABLE_HEXDUMP 0
2884 #ifdef USBVISION_DEBUG
2885 #define PDEBUG(level, fmt, args...) { \
2886 if (video_debug & (level)) \
2887 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2888 __func__, __LINE__ , ## args); \
2889 }
2890 #else
2891 #define PDEBUG(level, fmt, args...) do {} while (0)
2892 #endif
2893 #define DBG_IO (1 << 1)
2894 #define DBG_PROBE (1 << 2)
2895 #define DBG_MMAP (1 << 3)
2896 #define rmspace(str) while (*str == ' ') str++;
2897 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2898 #define YES_NO(x) ((x) ? "Yes" : "No")
2899 #ifdef CONFIG_VIDEO_ADV_DEBUG
2900 /* LDV_COMMENT_END_PREP */
2901 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_register" */
2902 void * var_vidioc_s_register_15_p1;
2903 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_register" */
2904 const struct v4l2_dbg_register * var_vidioc_s_register_15_p2;
2905 /* LDV_COMMENT_BEGIN_PREP */
2906 #endif
2907 #ifdef CONFIG_VIDEO_ADV_DEBUG
2908 #endif
2909 /* LDV_COMMENT_END_PREP */
2910
2911 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
2912 /* content: static int usbvision_radio_open(struct file *file)*/
2913 /* LDV_COMMENT_BEGIN_PREP */
2914 #define DRIVER_AUTHOR \
2915 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2916 "Dwaine Garden <DwaineGarden@rogers.com>"
2917 #define DRIVER_NAME "usbvision"
2918 #define DRIVER_ALIAS "USBVision"
2919 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2920 #define DRIVER_LICENSE "GPL"
2921 #define USBVISION_VERSION_STRING "0.9.11"
2922 #define ENABLE_HEXDUMP 0
2923 #ifdef USBVISION_DEBUG
2924 #define PDEBUG(level, fmt, args...) { \
2925 if (video_debug & (level)) \
2926 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2927 __func__, __LINE__ , ## args); \
2928 }
2929 #else
2930 #define PDEBUG(level, fmt, args...) do {} while (0)
2931 #endif
2932 #define DBG_IO (1 << 1)
2933 #define DBG_PROBE (1 << 2)
2934 #define DBG_MMAP (1 << 3)
2935 #define rmspace(str) while (*str == ' ') str++;
2936 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2937 #define YES_NO(x) ((x) ? "Yes" : "No")
2938 #ifdef CONFIG_VIDEO_ADV_DEBUG
2939 #endif
2940 /* LDV_COMMENT_END_PREP */
2941 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_radio_open" */
2942 static int res_usbvision_radio_open_45;
2943 /* LDV_COMMENT_BEGIN_PREP */
2944 #ifdef CONFIG_VIDEO_ADV_DEBUG
2945 #endif
2946 /* LDV_COMMENT_END_PREP */
2947 /* content: static int usbvision_radio_close(struct file *file)*/
2948 /* LDV_COMMENT_BEGIN_PREP */
2949 #define DRIVER_AUTHOR \
2950 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2951 "Dwaine Garden <DwaineGarden@rogers.com>"
2952 #define DRIVER_NAME "usbvision"
2953 #define DRIVER_ALIAS "USBVision"
2954 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2955 #define DRIVER_LICENSE "GPL"
2956 #define USBVISION_VERSION_STRING "0.9.11"
2957 #define ENABLE_HEXDUMP 0
2958 #ifdef USBVISION_DEBUG
2959 #define PDEBUG(level, fmt, args...) { \
2960 if (video_debug & (level)) \
2961 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2962 __func__, __LINE__ , ## args); \
2963 }
2964 #else
2965 #define PDEBUG(level, fmt, args...) do {} while (0)
2966 #endif
2967 #define DBG_IO (1 << 1)
2968 #define DBG_PROBE (1 << 2)
2969 #define DBG_MMAP (1 << 3)
2970 #define rmspace(str) while (*str == ' ') str++;
2971 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2972 #define YES_NO(x) ((x) ? "Yes" : "No")
2973 #ifdef CONFIG_VIDEO_ADV_DEBUG
2974 #endif
2975 /* LDV_COMMENT_END_PREP */
2976 /* LDV_COMMENT_BEGIN_PREP */
2977 #ifdef CONFIG_VIDEO_ADV_DEBUG
2978 #endif
2979 /* LDV_COMMENT_END_PREP */
2980
2981 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
2982 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
2983 /* LDV_COMMENT_BEGIN_PREP */
2984 #define DRIVER_AUTHOR \
2985 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2986 "Dwaine Garden <DwaineGarden@rogers.com>"
2987 #define DRIVER_NAME "usbvision"
2988 #define DRIVER_ALIAS "USBVision"
2989 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2990 #define DRIVER_LICENSE "GPL"
2991 #define USBVISION_VERSION_STRING "0.9.11"
2992 #define ENABLE_HEXDUMP 0
2993 #ifdef USBVISION_DEBUG
2994 #define PDEBUG(level, fmt, args...) { \
2995 if (video_debug & (level)) \
2996 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2997 __func__, __LINE__ , ## args); \
2998 }
2999 #else
3000 #define PDEBUG(level, fmt, args...) do {} while (0)
3001 #endif
3002 #define DBG_IO (1 << 1)
3003 #define DBG_PROBE (1 << 2)
3004 #define DBG_MMAP (1 << 3)
3005 #define rmspace(str) while (*str == ' ') str++;
3006 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3007 #define YES_NO(x) ((x) ? "Yes" : "No")
3008 #ifdef CONFIG_VIDEO_ADV_DEBUG
3009 #endif
3010 /* LDV_COMMENT_END_PREP */
3011 /* LDV_COMMENT_BEGIN_PREP */
3012 #ifdef CONFIG_VIDEO_ADV_DEBUG
3013 #endif
3014 /* LDV_COMMENT_END_PREP */
3015 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
3016 /* LDV_COMMENT_BEGIN_PREP */
3017 #define DRIVER_AUTHOR \
3018 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3019 "Dwaine Garden <DwaineGarden@rogers.com>"
3020 #define DRIVER_NAME "usbvision"
3021 #define DRIVER_ALIAS "USBVision"
3022 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3023 #define DRIVER_LICENSE "GPL"
3024 #define USBVISION_VERSION_STRING "0.9.11"
3025 #define ENABLE_HEXDUMP 0
3026 #ifdef USBVISION_DEBUG
3027 #define PDEBUG(level, fmt, args...) { \
3028 if (video_debug & (level)) \
3029 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3030 __func__, __LINE__ , ## args); \
3031 }
3032 #else
3033 #define PDEBUG(level, fmt, args...) do {} while (0)
3034 #endif
3035 #define DBG_IO (1 << 1)
3036 #define DBG_PROBE (1 << 2)
3037 #define DBG_MMAP (1 << 3)
3038 #define rmspace(str) while (*str == ' ') str++;
3039 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3040 #define YES_NO(x) ((x) ? "Yes" : "No")
3041 #ifdef CONFIG_VIDEO_ADV_DEBUG
3042 #endif
3043 /* LDV_COMMENT_END_PREP */
3044 /* LDV_COMMENT_BEGIN_PREP */
3045 #ifdef CONFIG_VIDEO_ADV_DEBUG
3046 #endif
3047 /* LDV_COMMENT_END_PREP */
3048 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
3049 /* LDV_COMMENT_BEGIN_PREP */
3050 #define DRIVER_AUTHOR \
3051 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3052 "Dwaine Garden <DwaineGarden@rogers.com>"
3053 #define DRIVER_NAME "usbvision"
3054 #define DRIVER_ALIAS "USBVision"
3055 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3056 #define DRIVER_LICENSE "GPL"
3057 #define USBVISION_VERSION_STRING "0.9.11"
3058 #define ENABLE_HEXDUMP 0
3059 #ifdef USBVISION_DEBUG
3060 #define PDEBUG(level, fmt, args...) { \
3061 if (video_debug & (level)) \
3062 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3063 __func__, __LINE__ , ## args); \
3064 }
3065 #else
3066 #define PDEBUG(level, fmt, args...) do {} while (0)
3067 #endif
3068 #define DBG_IO (1 << 1)
3069 #define DBG_PROBE (1 << 2)
3070 #define DBG_MMAP (1 << 3)
3071 #define rmspace(str) while (*str == ' ') str++;
3072 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3073 #define YES_NO(x) ((x) ? "Yes" : "No")
3074 #ifdef CONFIG_VIDEO_ADV_DEBUG
3075 #endif
3076 /* LDV_COMMENT_END_PREP */
3077 /* LDV_COMMENT_BEGIN_PREP */
3078 #ifdef CONFIG_VIDEO_ADV_DEBUG
3079 #endif
3080 /* LDV_COMMENT_END_PREP */
3081 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
3082 /* LDV_COMMENT_BEGIN_PREP */
3083 #define DRIVER_AUTHOR \
3084 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3085 "Dwaine Garden <DwaineGarden@rogers.com>"
3086 #define DRIVER_NAME "usbvision"
3087 #define DRIVER_ALIAS "USBVision"
3088 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3089 #define DRIVER_LICENSE "GPL"
3090 #define USBVISION_VERSION_STRING "0.9.11"
3091 #define ENABLE_HEXDUMP 0
3092 #ifdef USBVISION_DEBUG
3093 #define PDEBUG(level, fmt, args...) { \
3094 if (video_debug & (level)) \
3095 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3096 __func__, __LINE__ , ## args); \
3097 }
3098 #else
3099 #define PDEBUG(level, fmt, args...) do {} while (0)
3100 #endif
3101 #define DBG_IO (1 << 1)
3102 #define DBG_PROBE (1 << 2)
3103 #define DBG_MMAP (1 << 3)
3104 #define rmspace(str) while (*str == ' ') str++;
3105 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3106 #define YES_NO(x) ((x) ? "Yes" : "No")
3107 #ifdef CONFIG_VIDEO_ADV_DEBUG
3108 #endif
3109 /* LDV_COMMENT_END_PREP */
3110 /* LDV_COMMENT_BEGIN_PREP */
3111 #ifdef CONFIG_VIDEO_ADV_DEBUG
3112 #endif
3113 /* LDV_COMMENT_END_PREP */
3114 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
3115 /* LDV_COMMENT_BEGIN_PREP */
3116 #define DRIVER_AUTHOR \
3117 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3118 "Dwaine Garden <DwaineGarden@rogers.com>"
3119 #define DRIVER_NAME "usbvision"
3120 #define DRIVER_ALIAS "USBVision"
3121 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3122 #define DRIVER_LICENSE "GPL"
3123 #define USBVISION_VERSION_STRING "0.9.11"
3124 #define ENABLE_HEXDUMP 0
3125 #ifdef USBVISION_DEBUG
3126 #define PDEBUG(level, fmt, args...) { \
3127 if (video_debug & (level)) \
3128 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3129 __func__, __LINE__ , ## args); \
3130 }
3131 #else
3132 #define PDEBUG(level, fmt, args...) do {} while (0)
3133 #endif
3134 #define DBG_IO (1 << 1)
3135 #define DBG_PROBE (1 << 2)
3136 #define DBG_MMAP (1 << 3)
3137 #define rmspace(str) while (*str == ' ') str++;
3138 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3139 #define YES_NO(x) ((x) ? "Yes" : "No")
3140 #ifdef CONFIG_VIDEO_ADV_DEBUG
3141 #endif
3142 /* LDV_COMMENT_END_PREP */
3143 /* LDV_COMMENT_BEGIN_PREP */
3144 #ifdef CONFIG_VIDEO_ADV_DEBUG
3145 #endif
3146 /* LDV_COMMENT_END_PREP */
3147 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
3148 /* LDV_COMMENT_BEGIN_PREP */
3149 #define DRIVER_AUTHOR \
3150 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3151 "Dwaine Garden <DwaineGarden@rogers.com>"
3152 #define DRIVER_NAME "usbvision"
3153 #define DRIVER_ALIAS "USBVision"
3154 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3155 #define DRIVER_LICENSE "GPL"
3156 #define USBVISION_VERSION_STRING "0.9.11"
3157 #define ENABLE_HEXDUMP 0
3158 #ifdef USBVISION_DEBUG
3159 #define PDEBUG(level, fmt, args...) { \
3160 if (video_debug & (level)) \
3161 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3162 __func__, __LINE__ , ## args); \
3163 }
3164 #else
3165 #define PDEBUG(level, fmt, args...) do {} while (0)
3166 #endif
3167 #define DBG_IO (1 << 1)
3168 #define DBG_PROBE (1 << 2)
3169 #define DBG_MMAP (1 << 3)
3170 #define rmspace(str) while (*str == ' ') str++;
3171 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3172 #define YES_NO(x) ((x) ? "Yes" : "No")
3173 #ifdef CONFIG_VIDEO_ADV_DEBUG
3174 #endif
3175 /* LDV_COMMENT_END_PREP */
3176 /* LDV_COMMENT_BEGIN_PREP */
3177 #ifdef CONFIG_VIDEO_ADV_DEBUG
3178 #endif
3179 /* LDV_COMMENT_END_PREP */
3180 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
3181 /* LDV_COMMENT_BEGIN_PREP */
3182 #define DRIVER_AUTHOR \
3183 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3184 "Dwaine Garden <DwaineGarden@rogers.com>"
3185 #define DRIVER_NAME "usbvision"
3186 #define DRIVER_ALIAS "USBVision"
3187 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3188 #define DRIVER_LICENSE "GPL"
3189 #define USBVISION_VERSION_STRING "0.9.11"
3190 #define ENABLE_HEXDUMP 0
3191 #ifdef USBVISION_DEBUG
3192 #define PDEBUG(level, fmt, args...) { \
3193 if (video_debug & (level)) \
3194 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3195 __func__, __LINE__ , ## args); \
3196 }
3197 #else
3198 #define PDEBUG(level, fmt, args...) do {} while (0)
3199 #endif
3200 #define DBG_IO (1 << 1)
3201 #define DBG_PROBE (1 << 2)
3202 #define DBG_MMAP (1 << 3)
3203 #define rmspace(str) while (*str == ' ') str++;
3204 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3205 #define YES_NO(x) ((x) ? "Yes" : "No")
3206 #ifdef CONFIG_VIDEO_ADV_DEBUG
3207 #endif
3208 /* LDV_COMMENT_END_PREP */
3209 /* LDV_COMMENT_BEGIN_PREP */
3210 #ifdef CONFIG_VIDEO_ADV_DEBUG
3211 #endif
3212 /* LDV_COMMENT_END_PREP */
3213 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
3214 /* LDV_COMMENT_BEGIN_PREP */
3215 #define DRIVER_AUTHOR \
3216 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3217 "Dwaine Garden <DwaineGarden@rogers.com>"
3218 #define DRIVER_NAME "usbvision"
3219 #define DRIVER_ALIAS "USBVision"
3220 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3221 #define DRIVER_LICENSE "GPL"
3222 #define USBVISION_VERSION_STRING "0.9.11"
3223 #define ENABLE_HEXDUMP 0
3224 #ifdef USBVISION_DEBUG
3225 #define PDEBUG(level, fmt, args...) { \
3226 if (video_debug & (level)) \
3227 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3228 __func__, __LINE__ , ## args); \
3229 }
3230 #else
3231 #define PDEBUG(level, fmt, args...) do {} while (0)
3232 #endif
3233 #define DBG_IO (1 << 1)
3234 #define DBG_PROBE (1 << 2)
3235 #define DBG_MMAP (1 << 3)
3236 #define rmspace(str) while (*str == ' ') str++;
3237 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3238 #define YES_NO(x) ((x) ? "Yes" : "No")
3239 #ifdef CONFIG_VIDEO_ADV_DEBUG
3240 #endif
3241 /* LDV_COMMENT_END_PREP */
3242 /* LDV_COMMENT_BEGIN_PREP */
3243 #ifdef CONFIG_VIDEO_ADV_DEBUG
3244 #endif
3245 /* LDV_COMMENT_END_PREP */
3246 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
3247 /* LDV_COMMENT_BEGIN_PREP */
3248 #define DRIVER_AUTHOR \
3249 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3250 "Dwaine Garden <DwaineGarden@rogers.com>"
3251 #define DRIVER_NAME "usbvision"
3252 #define DRIVER_ALIAS "USBVision"
3253 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3254 #define DRIVER_LICENSE "GPL"
3255 #define USBVISION_VERSION_STRING "0.9.11"
3256 #define ENABLE_HEXDUMP 0
3257 #ifdef USBVISION_DEBUG
3258 #define PDEBUG(level, fmt, args...) { \
3259 if (video_debug & (level)) \
3260 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3261 __func__, __LINE__ , ## args); \
3262 }
3263 #else
3264 #define PDEBUG(level, fmt, args...) do {} while (0)
3265 #endif
3266 #define DBG_IO (1 << 1)
3267 #define DBG_PROBE (1 << 2)
3268 #define DBG_MMAP (1 << 3)
3269 #define rmspace(str) while (*str == ' ') str++;
3270 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3271 #define YES_NO(x) ((x) ? "Yes" : "No")
3272 #ifdef CONFIG_VIDEO_ADV_DEBUG
3273 #endif
3274 /* LDV_COMMENT_END_PREP */
3275 /* LDV_COMMENT_BEGIN_PREP */
3276 #ifdef CONFIG_VIDEO_ADV_DEBUG
3277 #endif
3278 /* LDV_COMMENT_END_PREP */
3279 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
3280 /* LDV_COMMENT_BEGIN_PREP */
3281 #define DRIVER_AUTHOR \
3282 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3283 "Dwaine Garden <DwaineGarden@rogers.com>"
3284 #define DRIVER_NAME "usbvision"
3285 #define DRIVER_ALIAS "USBVision"
3286 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3287 #define DRIVER_LICENSE "GPL"
3288 #define USBVISION_VERSION_STRING "0.9.11"
3289 #define ENABLE_HEXDUMP 0
3290 #ifdef USBVISION_DEBUG
3291 #define PDEBUG(level, fmt, args...) { \
3292 if (video_debug & (level)) \
3293 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3294 __func__, __LINE__ , ## args); \
3295 }
3296 #else
3297 #define PDEBUG(level, fmt, args...) do {} while (0)
3298 #endif
3299 #define DBG_IO (1 << 1)
3300 #define DBG_PROBE (1 << 2)
3301 #define DBG_MMAP (1 << 3)
3302 #define rmspace(str) while (*str == ' ') str++;
3303 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3304 #define YES_NO(x) ((x) ? "Yes" : "No")
3305 #ifdef CONFIG_VIDEO_ADV_DEBUG
3306 #endif
3307 /* LDV_COMMENT_END_PREP */
3308 /* LDV_COMMENT_BEGIN_PREP */
3309 #ifdef CONFIG_VIDEO_ADV_DEBUG
3310 #endif
3311 /* LDV_COMMENT_END_PREP */
3312 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
3313 /* LDV_COMMENT_BEGIN_PREP */
3314 #define DRIVER_AUTHOR \
3315 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3316 "Dwaine Garden <DwaineGarden@rogers.com>"
3317 #define DRIVER_NAME "usbvision"
3318 #define DRIVER_ALIAS "USBVision"
3319 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3320 #define DRIVER_LICENSE "GPL"
3321 #define USBVISION_VERSION_STRING "0.9.11"
3322 #define ENABLE_HEXDUMP 0
3323 #ifdef USBVISION_DEBUG
3324 #define PDEBUG(level, fmt, args...) { \
3325 if (video_debug & (level)) \
3326 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3327 __func__, __LINE__ , ## args); \
3328 }
3329 #else
3330 #define PDEBUG(level, fmt, args...) do {} while (0)
3331 #endif
3332 #define DBG_IO (1 << 1)
3333 #define DBG_PROBE (1 << 2)
3334 #define DBG_MMAP (1 << 3)
3335 #define rmspace(str) while (*str == ' ') str++;
3336 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3337 #define YES_NO(x) ((x) ? "Yes" : "No")
3338 #ifdef CONFIG_VIDEO_ADV_DEBUG
3339 #endif
3340 /* LDV_COMMENT_END_PREP */
3341 /* LDV_COMMENT_BEGIN_PREP */
3342 #ifdef CONFIG_VIDEO_ADV_DEBUG
3343 #endif
3344 /* LDV_COMMENT_END_PREP */
3345 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
3346 /* LDV_COMMENT_BEGIN_PREP */
3347 #define DRIVER_AUTHOR \
3348 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3349 "Dwaine Garden <DwaineGarden@rogers.com>"
3350 #define DRIVER_NAME "usbvision"
3351 #define DRIVER_ALIAS "USBVision"
3352 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3353 #define DRIVER_LICENSE "GPL"
3354 #define USBVISION_VERSION_STRING "0.9.11"
3355 #define ENABLE_HEXDUMP 0
3356 #ifdef USBVISION_DEBUG
3357 #define PDEBUG(level, fmt, args...) { \
3358 if (video_debug & (level)) \
3359 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3360 __func__, __LINE__ , ## args); \
3361 }
3362 #else
3363 #define PDEBUG(level, fmt, args...) do {} while (0)
3364 #endif
3365 #define DBG_IO (1 << 1)
3366 #define DBG_PROBE (1 << 2)
3367 #define DBG_MMAP (1 << 3)
3368 #define rmspace(str) while (*str == ' ') str++;
3369 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3370 #define YES_NO(x) ((x) ? "Yes" : "No")
3371 #ifdef CONFIG_VIDEO_ADV_DEBUG
3372 #endif
3373 /* LDV_COMMENT_END_PREP */
3374 /* LDV_COMMENT_BEGIN_PREP */
3375 #ifdef CONFIG_VIDEO_ADV_DEBUG
3376 #endif
3377 /* LDV_COMMENT_END_PREP */
3378 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
3379 /* LDV_COMMENT_BEGIN_PREP */
3380 #define DRIVER_AUTHOR \
3381 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3382 "Dwaine Garden <DwaineGarden@rogers.com>"
3383 #define DRIVER_NAME "usbvision"
3384 #define DRIVER_ALIAS "USBVision"
3385 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3386 #define DRIVER_LICENSE "GPL"
3387 #define USBVISION_VERSION_STRING "0.9.11"
3388 #define ENABLE_HEXDUMP 0
3389 #ifdef USBVISION_DEBUG
3390 #define PDEBUG(level, fmt, args...) { \
3391 if (video_debug & (level)) \
3392 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3393 __func__, __LINE__ , ## args); \
3394 }
3395 #else
3396 #define PDEBUG(level, fmt, args...) do {} while (0)
3397 #endif
3398 #define DBG_IO (1 << 1)
3399 #define DBG_PROBE (1 << 2)
3400 #define DBG_MMAP (1 << 3)
3401 #define rmspace(str) while (*str == ' ') str++;
3402 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3403 #define YES_NO(x) ((x) ? "Yes" : "No")
3404 #ifdef CONFIG_VIDEO_ADV_DEBUG
3405 #endif
3406 /* LDV_COMMENT_END_PREP */
3407 /* LDV_COMMENT_BEGIN_PREP */
3408 #ifdef CONFIG_VIDEO_ADV_DEBUG
3409 #endif
3410 /* LDV_COMMENT_END_PREP */
3411
3412 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
3413 /* content: static int usbvision_probe(struct usb_interface *intf, const struct usb_device_id *devid)*/
3414 /* LDV_COMMENT_BEGIN_PREP */
3415 #define DRIVER_AUTHOR \
3416 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3417 "Dwaine Garden <DwaineGarden@rogers.com>"
3418 #define DRIVER_NAME "usbvision"
3419 #define DRIVER_ALIAS "USBVision"
3420 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3421 #define DRIVER_LICENSE "GPL"
3422 #define USBVISION_VERSION_STRING "0.9.11"
3423 #define ENABLE_HEXDUMP 0
3424 #ifdef USBVISION_DEBUG
3425 #define PDEBUG(level, fmt, args...) { \
3426 if (video_debug & (level)) \
3427 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3428 __func__, __LINE__ , ## args); \
3429 }
3430 #else
3431 #define PDEBUG(level, fmt, args...) do {} while (0)
3432 #endif
3433 #define DBG_IO (1 << 1)
3434 #define DBG_PROBE (1 << 2)
3435 #define DBG_MMAP (1 << 3)
3436 #define rmspace(str) while (*str == ' ') str++;
3437 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3438 #define YES_NO(x) ((x) ? "Yes" : "No")
3439 #ifdef CONFIG_VIDEO_ADV_DEBUG
3440 #endif
3441 #ifdef CONFIG_VIDEO_ADV_DEBUG
3442 #endif
3443 /* LDV_COMMENT_END_PREP */
3444 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_probe" */
3445 struct usb_interface * var_group3;
3446 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_probe" */
3447 const struct usb_device_id * var_usbvision_probe_53_p1;
3448 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_probe" */
3449 static int res_usbvision_probe_53;
3450 /* content: static void usbvision_disconnect(struct usb_interface *intf)*/
3451 /* LDV_COMMENT_BEGIN_PREP */
3452 #define DRIVER_AUTHOR \
3453 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3454 "Dwaine Garden <DwaineGarden@rogers.com>"
3455 #define DRIVER_NAME "usbvision"
3456 #define DRIVER_ALIAS "USBVision"
3457 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3458 #define DRIVER_LICENSE "GPL"
3459 #define USBVISION_VERSION_STRING "0.9.11"
3460 #define ENABLE_HEXDUMP 0
3461 #ifdef USBVISION_DEBUG
3462 #define PDEBUG(level, fmt, args...) { \
3463 if (video_debug & (level)) \
3464 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3465 __func__, __LINE__ , ## args); \
3466 }
3467 #else
3468 #define PDEBUG(level, fmt, args...) do {} while (0)
3469 #endif
3470 #define DBG_IO (1 << 1)
3471 #define DBG_PROBE (1 << 2)
3472 #define DBG_MMAP (1 << 3)
3473 #define rmspace(str) while (*str == ' ') str++;
3474 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3475 #define YES_NO(x) ((x) ? "Yes" : "No")
3476 #ifdef CONFIG_VIDEO_ADV_DEBUG
3477 #endif
3478 #ifdef CONFIG_VIDEO_ADV_DEBUG
3479 #endif
3480 /* LDV_COMMENT_END_PREP */
3481
3482
3483
3484
3485 /* LDV_COMMENT_END_VARIABLE_DECLARATION_PART */
3486 /* LDV_COMMENT_BEGIN_VARIABLE_INITIALIZING_PART */
3487 /*============================= VARIABLE INITIALIZING PART =============================*/
3488 LDV_IN_INTERRUPT=1;
3489
3490
3491
3492
3493 /* LDV_COMMENT_END_VARIABLE_INITIALIZING_PART */
3494 /* LDV_COMMENT_BEGIN_FUNCTION_CALL_SECTION */
3495 /*============================= FUNCTION CALL SECTION =============================*/
3496 /* LDV_COMMENT_FUNCTION_CALL Initialize LDV model. */
3497 ldv_initialize();
3498
3499 /** INIT: init_type: ST_MODULE_INIT **/
3500 /* content: static int __init usbvision_init(void)*/
3501 /* LDV_COMMENT_BEGIN_PREP */
3502 #define DRIVER_AUTHOR \
3503 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3504 "Dwaine Garden <DwaineGarden@rogers.com>"
3505 #define DRIVER_NAME "usbvision"
3506 #define DRIVER_ALIAS "USBVision"
3507 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3508 #define DRIVER_LICENSE "GPL"
3509 #define USBVISION_VERSION_STRING "0.9.11"
3510 #define ENABLE_HEXDUMP 0
3511 #ifdef USBVISION_DEBUG
3512 #define PDEBUG(level, fmt, args...) { \
3513 if (video_debug & (level)) \
3514 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3515 __func__, __LINE__ , ## args); \
3516 }
3517 #else
3518 #define PDEBUG(level, fmt, args...) do {} while (0)
3519 #endif
3520 #define DBG_IO (1 << 1)
3521 #define DBG_PROBE (1 << 2)
3522 #define DBG_MMAP (1 << 3)
3523 #define rmspace(str) while (*str == ' ') str++;
3524 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3525 #define YES_NO(x) ((x) ? "Yes" : "No")
3526 #ifdef CONFIG_VIDEO_ADV_DEBUG
3527 #endif
3528 #ifdef CONFIG_VIDEO_ADV_DEBUG
3529 #endif
3530 /* LDV_COMMENT_END_PREP */
3531 /* LDV_COMMENT_FUNCTION_CALL Kernel calls driver init function after driver loading to kernel. This function declared as "MODULE_INIT(function name)". */
3532 ldv_handler_precall();
3533 if(usbvision_init())
3534 goto ldv_final;
3535 int ldv_s_usbvision_fops_v4l2_file_operations = 0;
3536
3537
3538
3539
3540 int ldv_s_usbvision_radio_fops_v4l2_file_operations = 0;
3541
3542
3543
3544 int ldv_s_usbvision_driver_usb_driver = 0;
3545
3546
3547 while( nondet_int()
3548 || !(ldv_s_usbvision_fops_v4l2_file_operations == 0)
3549 || !(ldv_s_usbvision_radio_fops_v4l2_file_operations == 0)
3550 || !(ldv_s_usbvision_driver_usb_driver == 0)
3551 ) {
3552
3553 switch(nondet_int()) {
3554
3555 case 0: {
3556
3557 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3558 if(ldv_s_usbvision_fops_v4l2_file_operations==0) {
3559
3560 /* content: static int usbvision_v4l2_open(struct file *file)*/
3561 /* LDV_COMMENT_BEGIN_PREP */
3562 #define DRIVER_AUTHOR \
3563 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3564 "Dwaine Garden <DwaineGarden@rogers.com>"
3565 #define DRIVER_NAME "usbvision"
3566 #define DRIVER_ALIAS "USBVision"
3567 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3568 #define DRIVER_LICENSE "GPL"
3569 #define USBVISION_VERSION_STRING "0.9.11"
3570 #define ENABLE_HEXDUMP 0
3571 #ifdef USBVISION_DEBUG
3572 #define PDEBUG(level, fmt, args...) { \
3573 if (video_debug & (level)) \
3574 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3575 __func__, __LINE__ , ## args); \
3576 }
3577 #else
3578 #define PDEBUG(level, fmt, args...) do {} while (0)
3579 #endif
3580 #define DBG_IO (1 << 1)
3581 #define DBG_PROBE (1 << 2)
3582 #define DBG_MMAP (1 << 3)
3583 #define rmspace(str) while (*str == ' ') str++;
3584 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3585 #define YES_NO(x) ((x) ? "Yes" : "No")
3586 /* LDV_COMMENT_END_PREP */
3587 /* LDV_COMMENT_FUNCTION_CALL Function from field "open" from driver structure with callbacks "usbvision_fops". Standart function test for correct return result. */
3588 ldv_handler_precall();
3589 res_usbvision_v4l2_open_12 = usbvision_v4l2_open( var_group1);
3590 ldv_check_return_value(res_usbvision_v4l2_open_12);
3591 if(res_usbvision_v4l2_open_12)
3592 goto ldv_module_exit;
3593 /* LDV_COMMENT_BEGIN_PREP */
3594 #ifdef CONFIG_VIDEO_ADV_DEBUG
3595 #endif
3596 #ifdef CONFIG_VIDEO_ADV_DEBUG
3597 #endif
3598 /* LDV_COMMENT_END_PREP */
3599 ldv_s_usbvision_fops_v4l2_file_operations++;
3600
3601 }
3602
3603 }
3604
3605 break;
3606 case 1: {
3607
3608 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3609 if(ldv_s_usbvision_fops_v4l2_file_operations==1) {
3610
3611 /* content: static int usbvision_v4l2_close(struct file *file)*/
3612 /* LDV_COMMENT_BEGIN_PREP */
3613 #define DRIVER_AUTHOR \
3614 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3615 "Dwaine Garden <DwaineGarden@rogers.com>"
3616 #define DRIVER_NAME "usbvision"
3617 #define DRIVER_ALIAS "USBVision"
3618 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3619 #define DRIVER_LICENSE "GPL"
3620 #define USBVISION_VERSION_STRING "0.9.11"
3621 #define ENABLE_HEXDUMP 0
3622 #ifdef USBVISION_DEBUG
3623 #define PDEBUG(level, fmt, args...) { \
3624 if (video_debug & (level)) \
3625 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3626 __func__, __LINE__ , ## args); \
3627 }
3628 #else
3629 #define PDEBUG(level, fmt, args...) do {} while (0)
3630 #endif
3631 #define DBG_IO (1 << 1)
3632 #define DBG_PROBE (1 << 2)
3633 #define DBG_MMAP (1 << 3)
3634 #define rmspace(str) while (*str == ' ') str++;
3635 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3636 #define YES_NO(x) ((x) ? "Yes" : "No")
3637 /* LDV_COMMENT_END_PREP */
3638 /* LDV_COMMENT_FUNCTION_CALL Function from field "release" from driver structure with callbacks "usbvision_fops" */
3639 ldv_handler_precall();
3640 usbvision_v4l2_close( var_group1);
3641 /* LDV_COMMENT_BEGIN_PREP */
3642 #ifdef CONFIG_VIDEO_ADV_DEBUG
3643 #endif
3644 #ifdef CONFIG_VIDEO_ADV_DEBUG
3645 #endif
3646 /* LDV_COMMENT_END_PREP */
3647 ldv_s_usbvision_fops_v4l2_file_operations=0;
3648
3649 }
3650
3651 }
3652
3653 break;
3654 case 2: {
3655
3656 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3657
3658
3659 /* content: static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)*/
3660 /* LDV_COMMENT_BEGIN_PREP */
3661 #define DRIVER_AUTHOR \
3662 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3663 "Dwaine Garden <DwaineGarden@rogers.com>"
3664 #define DRIVER_NAME "usbvision"
3665 #define DRIVER_ALIAS "USBVision"
3666 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3667 #define DRIVER_LICENSE "GPL"
3668 #define USBVISION_VERSION_STRING "0.9.11"
3669 #define ENABLE_HEXDUMP 0
3670 #ifdef USBVISION_DEBUG
3671 #define PDEBUG(level, fmt, args...) { \
3672 if (video_debug & (level)) \
3673 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3674 __func__, __LINE__ , ## args); \
3675 }
3676 #else
3677 #define PDEBUG(level, fmt, args...) do {} while (0)
3678 #endif
3679 #define DBG_IO (1 << 1)
3680 #define DBG_PROBE (1 << 2)
3681 #define DBG_MMAP (1 << 3)
3682 #define rmspace(str) while (*str == ' ') str++;
3683 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3684 #define YES_NO(x) ((x) ? "Yes" : "No")
3685 #ifdef CONFIG_VIDEO_ADV_DEBUG
3686 #endif
3687 /* LDV_COMMENT_END_PREP */
3688 /* LDV_COMMENT_FUNCTION_CALL Function from field "read" from driver structure with callbacks "usbvision_fops" */
3689 ldv_handler_precall();
3690 usbvision_v4l2_read( var_group1, var_usbvision_v4l2_read_42_p1, var_usbvision_v4l2_read_42_p2, var_usbvision_v4l2_read_42_p3);
3691 /* LDV_COMMENT_BEGIN_PREP */
3692 #ifdef CONFIG_VIDEO_ADV_DEBUG
3693 #endif
3694 /* LDV_COMMENT_END_PREP */
3695
3696
3697
3698
3699 }
3700
3701 break;
3702 case 3: {
3703
3704 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3705
3706
3707 /* content: static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)*/
3708 /* LDV_COMMENT_BEGIN_PREP */
3709 #define DRIVER_AUTHOR \
3710 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3711 "Dwaine Garden <DwaineGarden@rogers.com>"
3712 #define DRIVER_NAME "usbvision"
3713 #define DRIVER_ALIAS "USBVision"
3714 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3715 #define DRIVER_LICENSE "GPL"
3716 #define USBVISION_VERSION_STRING "0.9.11"
3717 #define ENABLE_HEXDUMP 0
3718 #ifdef USBVISION_DEBUG
3719 #define PDEBUG(level, fmt, args...) { \
3720 if (video_debug & (level)) \
3721 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3722 __func__, __LINE__ , ## args); \
3723 }
3724 #else
3725 #define PDEBUG(level, fmt, args...) do {} while (0)
3726 #endif
3727 #define DBG_IO (1 << 1)
3728 #define DBG_PROBE (1 << 2)
3729 #define DBG_MMAP (1 << 3)
3730 #define rmspace(str) while (*str == ' ') str++;
3731 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3732 #define YES_NO(x) ((x) ? "Yes" : "No")
3733 #ifdef CONFIG_VIDEO_ADV_DEBUG
3734 #endif
3735 /* LDV_COMMENT_END_PREP */
3736 /* LDV_COMMENT_FUNCTION_CALL Function from field "mmap" from driver structure with callbacks "usbvision_fops" */
3737 ldv_handler_precall();
3738 usbvision_v4l2_mmap( var_group1, var_group2);
3739 /* LDV_COMMENT_BEGIN_PREP */
3740 #ifdef CONFIG_VIDEO_ADV_DEBUG
3741 #endif
3742 /* LDV_COMMENT_END_PREP */
3743
3744
3745
3746
3747 }
3748
3749 break;
3750 case 4: {
3751
3752 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3753
3754
3755 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
3756 /* LDV_COMMENT_BEGIN_PREP */
3757 #define DRIVER_AUTHOR \
3758 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3759 "Dwaine Garden <DwaineGarden@rogers.com>"
3760 #define DRIVER_NAME "usbvision"
3761 #define DRIVER_ALIAS "USBVision"
3762 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3763 #define DRIVER_LICENSE "GPL"
3764 #define USBVISION_VERSION_STRING "0.9.11"
3765 #define ENABLE_HEXDUMP 0
3766 #ifdef USBVISION_DEBUG
3767 #define PDEBUG(level, fmt, args...) { \
3768 if (video_debug & (level)) \
3769 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3770 __func__, __LINE__ , ## args); \
3771 }
3772 #else
3773 #define PDEBUG(level, fmt, args...) do {} while (0)
3774 #endif
3775 #define DBG_IO (1 << 1)
3776 #define DBG_PROBE (1 << 2)
3777 #define DBG_MMAP (1 << 3)
3778 #define rmspace(str) while (*str == ' ') str++;
3779 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3780 #define YES_NO(x) ((x) ? "Yes" : "No")
3781 #ifdef CONFIG_VIDEO_ADV_DEBUG
3782 #endif
3783 /* LDV_COMMENT_END_PREP */
3784 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querycap" from driver structure with callbacks "usbvision_ioctl_ops" */
3785 ldv_handler_precall();
3786 vidioc_querycap( var_group1, var_vidioc_querycap_16_p1, var_vidioc_querycap_16_p2);
3787 /* LDV_COMMENT_BEGIN_PREP */
3788 #ifdef CONFIG_VIDEO_ADV_DEBUG
3789 #endif
3790 /* LDV_COMMENT_END_PREP */
3791
3792
3793
3794
3795 }
3796
3797 break;
3798 case 5: {
3799
3800 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3801
3802
3803 /* content: static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *vfd)*/
3804 /* LDV_COMMENT_BEGIN_PREP */
3805 #define DRIVER_AUTHOR \
3806 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3807 "Dwaine Garden <DwaineGarden@rogers.com>"
3808 #define DRIVER_NAME "usbvision"
3809 #define DRIVER_ALIAS "USBVision"
3810 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3811 #define DRIVER_LICENSE "GPL"
3812 #define USBVISION_VERSION_STRING "0.9.11"
3813 #define ENABLE_HEXDUMP 0
3814 #ifdef USBVISION_DEBUG
3815 #define PDEBUG(level, fmt, args...) { \
3816 if (video_debug & (level)) \
3817 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3818 __func__, __LINE__ , ## args); \
3819 }
3820 #else
3821 #define PDEBUG(level, fmt, args...) do {} while (0)
3822 #endif
3823 #define DBG_IO (1 << 1)
3824 #define DBG_PROBE (1 << 2)
3825 #define DBG_MMAP (1 << 3)
3826 #define rmspace(str) while (*str == ' ') str++;
3827 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3828 #define YES_NO(x) ((x) ? "Yes" : "No")
3829 #ifdef CONFIG_VIDEO_ADV_DEBUG
3830 #endif
3831 /* LDV_COMMENT_END_PREP */
3832 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3833 ldv_handler_precall();
3834 vidioc_enum_fmt_vid_cap( var_group1, var_vidioc_enum_fmt_vid_cap_37_p1, var_vidioc_enum_fmt_vid_cap_37_p2);
3835 /* LDV_COMMENT_BEGIN_PREP */
3836 #ifdef CONFIG_VIDEO_ADV_DEBUG
3837 #endif
3838 /* LDV_COMMENT_END_PREP */
3839
3840
3841
3842
3843 }
3844
3845 break;
3846 case 6: {
3847
3848 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3849
3850
3851 /* content: static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3852 /* LDV_COMMENT_BEGIN_PREP */
3853 #define DRIVER_AUTHOR \
3854 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3855 "Dwaine Garden <DwaineGarden@rogers.com>"
3856 #define DRIVER_NAME "usbvision"
3857 #define DRIVER_ALIAS "USBVision"
3858 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3859 #define DRIVER_LICENSE "GPL"
3860 #define USBVISION_VERSION_STRING "0.9.11"
3861 #define ENABLE_HEXDUMP 0
3862 #ifdef USBVISION_DEBUG
3863 #define PDEBUG(level, fmt, args...) { \
3864 if (video_debug & (level)) \
3865 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3866 __func__, __LINE__ , ## args); \
3867 }
3868 #else
3869 #define PDEBUG(level, fmt, args...) do {} while (0)
3870 #endif
3871 #define DBG_IO (1 << 1)
3872 #define DBG_PROBE (1 << 2)
3873 #define DBG_MMAP (1 << 3)
3874 #define rmspace(str) while (*str == ' ') str++;
3875 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3876 #define YES_NO(x) ((x) ? "Yes" : "No")
3877 #ifdef CONFIG_VIDEO_ADV_DEBUG
3878 #endif
3879 /* LDV_COMMENT_END_PREP */
3880 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3881 ldv_handler_precall();
3882 vidioc_g_fmt_vid_cap( var_group1, var_vidioc_g_fmt_vid_cap_38_p1, var_vidioc_g_fmt_vid_cap_38_p2);
3883 /* LDV_COMMENT_BEGIN_PREP */
3884 #ifdef CONFIG_VIDEO_ADV_DEBUG
3885 #endif
3886 /* LDV_COMMENT_END_PREP */
3887
3888
3889
3890
3891 }
3892
3893 break;
3894 case 7: {
3895
3896 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3897
3898
3899 /* content: static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3900 /* LDV_COMMENT_BEGIN_PREP */
3901 #define DRIVER_AUTHOR \
3902 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3903 "Dwaine Garden <DwaineGarden@rogers.com>"
3904 #define DRIVER_NAME "usbvision"
3905 #define DRIVER_ALIAS "USBVision"
3906 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3907 #define DRIVER_LICENSE "GPL"
3908 #define USBVISION_VERSION_STRING "0.9.11"
3909 #define ENABLE_HEXDUMP 0
3910 #ifdef USBVISION_DEBUG
3911 #define PDEBUG(level, fmt, args...) { \
3912 if (video_debug & (level)) \
3913 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3914 __func__, __LINE__ , ## args); \
3915 }
3916 #else
3917 #define PDEBUG(level, fmt, args...) do {} while (0)
3918 #endif
3919 #define DBG_IO (1 << 1)
3920 #define DBG_PROBE (1 << 2)
3921 #define DBG_MMAP (1 << 3)
3922 #define rmspace(str) while (*str == ' ') str++;
3923 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3924 #define YES_NO(x) ((x) ? "Yes" : "No")
3925 #ifdef CONFIG_VIDEO_ADV_DEBUG
3926 #endif
3927 /* LDV_COMMENT_END_PREP */
3928 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_try_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3929 ldv_handler_precall();
3930 vidioc_try_fmt_vid_cap( var_group1, var_vidioc_try_fmt_vid_cap_39_p1, var_vidioc_try_fmt_vid_cap_39_p2);
3931 /* LDV_COMMENT_BEGIN_PREP */
3932 #ifdef CONFIG_VIDEO_ADV_DEBUG
3933 #endif
3934 /* LDV_COMMENT_END_PREP */
3935
3936
3937
3938
3939 }
3940
3941 break;
3942 case 8: {
3943
3944 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3945
3946
3947 /* content: static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3948 /* LDV_COMMENT_BEGIN_PREP */
3949 #define DRIVER_AUTHOR \
3950 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3951 "Dwaine Garden <DwaineGarden@rogers.com>"
3952 #define DRIVER_NAME "usbvision"
3953 #define DRIVER_ALIAS "USBVision"
3954 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3955 #define DRIVER_LICENSE "GPL"
3956 #define USBVISION_VERSION_STRING "0.9.11"
3957 #define ENABLE_HEXDUMP 0
3958 #ifdef USBVISION_DEBUG
3959 #define PDEBUG(level, fmt, args...) { \
3960 if (video_debug & (level)) \
3961 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3962 __func__, __LINE__ , ## args); \
3963 }
3964 #else
3965 #define PDEBUG(level, fmt, args...) do {} while (0)
3966 #endif
3967 #define DBG_IO (1 << 1)
3968 #define DBG_PROBE (1 << 2)
3969 #define DBG_MMAP (1 << 3)
3970 #define rmspace(str) while (*str == ' ') str++;
3971 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3972 #define YES_NO(x) ((x) ? "Yes" : "No")
3973 #ifdef CONFIG_VIDEO_ADV_DEBUG
3974 #endif
3975 /* LDV_COMMENT_END_PREP */
3976 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3977 ldv_handler_precall();
3978 vidioc_s_fmt_vid_cap( var_group1, var_vidioc_s_fmt_vid_cap_40_p1, var_vidioc_s_fmt_vid_cap_40_p2);
3979 /* LDV_COMMENT_BEGIN_PREP */
3980 #ifdef CONFIG_VIDEO_ADV_DEBUG
3981 #endif
3982 /* LDV_COMMENT_END_PREP */
3983
3984
3985
3986
3987 }
3988
3989 break;
3990 case 9: {
3991
3992 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3993
3994
3995 /* content: static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *vr)*/
3996 /* LDV_COMMENT_BEGIN_PREP */
3997 #define DRIVER_AUTHOR \
3998 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3999 "Dwaine Garden <DwaineGarden@rogers.com>"
4000 #define DRIVER_NAME "usbvision"
4001 #define DRIVER_ALIAS "USBVision"
4002 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4003 #define DRIVER_LICENSE "GPL"
4004 #define USBVISION_VERSION_STRING "0.9.11"
4005 #define ENABLE_HEXDUMP 0
4006 #ifdef USBVISION_DEBUG
4007 #define PDEBUG(level, fmt, args...) { \
4008 if (video_debug & (level)) \
4009 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4010 __func__, __LINE__ , ## args); \
4011 }
4012 #else
4013 #define PDEBUG(level, fmt, args...) do {} while (0)
4014 #endif
4015 #define DBG_IO (1 << 1)
4016 #define DBG_PROBE (1 << 2)
4017 #define DBG_MMAP (1 << 3)
4018 #define rmspace(str) while (*str == ' ') str++;
4019 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4020 #define YES_NO(x) ((x) ? "Yes" : "No")
4021 #ifdef CONFIG_VIDEO_ADV_DEBUG
4022 #endif
4023 /* LDV_COMMENT_END_PREP */
4024 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_reqbufs" from driver structure with callbacks "usbvision_ioctl_ops" */
4025 ldv_handler_precall();
4026 vidioc_reqbufs( var_group1, var_vidioc_reqbufs_31_p1, var_vidioc_reqbufs_31_p2);
4027 /* LDV_COMMENT_BEGIN_PREP */
4028 #ifdef CONFIG_VIDEO_ADV_DEBUG
4029 #endif
4030 /* LDV_COMMENT_END_PREP */
4031
4032
4033
4034
4035 }
4036
4037 break;
4038 case 10: {
4039
4040 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4041
4042
4043 /* content: static int vidioc_querybuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4044 /* LDV_COMMENT_BEGIN_PREP */
4045 #define DRIVER_AUTHOR \
4046 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4047 "Dwaine Garden <DwaineGarden@rogers.com>"
4048 #define DRIVER_NAME "usbvision"
4049 #define DRIVER_ALIAS "USBVision"
4050 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4051 #define DRIVER_LICENSE "GPL"
4052 #define USBVISION_VERSION_STRING "0.9.11"
4053 #define ENABLE_HEXDUMP 0
4054 #ifdef USBVISION_DEBUG
4055 #define PDEBUG(level, fmt, args...) { \
4056 if (video_debug & (level)) \
4057 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4058 __func__, __LINE__ , ## args); \
4059 }
4060 #else
4061 #define PDEBUG(level, fmt, args...) do {} while (0)
4062 #endif
4063 #define DBG_IO (1 << 1)
4064 #define DBG_PROBE (1 << 2)
4065 #define DBG_MMAP (1 << 3)
4066 #define rmspace(str) while (*str == ' ') str++;
4067 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4068 #define YES_NO(x) ((x) ? "Yes" : "No")
4069 #ifdef CONFIG_VIDEO_ADV_DEBUG
4070 #endif
4071 /* LDV_COMMENT_END_PREP */
4072 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querybuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4073 ldv_handler_precall();
4074 vidioc_querybuf( var_group1, var_vidioc_querybuf_32_p1, var_vidioc_querybuf_32_p2);
4075 /* LDV_COMMENT_BEGIN_PREP */
4076 #ifdef CONFIG_VIDEO_ADV_DEBUG
4077 #endif
4078 /* LDV_COMMENT_END_PREP */
4079
4080
4081
4082
4083 }
4084
4085 break;
4086 case 11: {
4087
4088 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4089
4090
4091 /* content: static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4092 /* LDV_COMMENT_BEGIN_PREP */
4093 #define DRIVER_AUTHOR \
4094 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4095 "Dwaine Garden <DwaineGarden@rogers.com>"
4096 #define DRIVER_NAME "usbvision"
4097 #define DRIVER_ALIAS "USBVision"
4098 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4099 #define DRIVER_LICENSE "GPL"
4100 #define USBVISION_VERSION_STRING "0.9.11"
4101 #define ENABLE_HEXDUMP 0
4102 #ifdef USBVISION_DEBUG
4103 #define PDEBUG(level, fmt, args...) { \
4104 if (video_debug & (level)) \
4105 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4106 __func__, __LINE__ , ## args); \
4107 }
4108 #else
4109 #define PDEBUG(level, fmt, args...) do {} while (0)
4110 #endif
4111 #define DBG_IO (1 << 1)
4112 #define DBG_PROBE (1 << 2)
4113 #define DBG_MMAP (1 << 3)
4114 #define rmspace(str) while (*str == ' ') str++;
4115 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4116 #define YES_NO(x) ((x) ? "Yes" : "No")
4117 #ifdef CONFIG_VIDEO_ADV_DEBUG
4118 #endif
4119 /* LDV_COMMENT_END_PREP */
4120 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_qbuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4121 ldv_handler_precall();
4122 vidioc_qbuf( var_group1, var_vidioc_qbuf_33_p1, var_vidioc_qbuf_33_p2);
4123 /* LDV_COMMENT_BEGIN_PREP */
4124 #ifdef CONFIG_VIDEO_ADV_DEBUG
4125 #endif
4126 /* LDV_COMMENT_END_PREP */
4127
4128
4129
4130
4131 }
4132
4133 break;
4134 case 12: {
4135
4136 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4137
4138
4139 /* content: static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4140 /* LDV_COMMENT_BEGIN_PREP */
4141 #define DRIVER_AUTHOR \
4142 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4143 "Dwaine Garden <DwaineGarden@rogers.com>"
4144 #define DRIVER_NAME "usbvision"
4145 #define DRIVER_ALIAS "USBVision"
4146 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4147 #define DRIVER_LICENSE "GPL"
4148 #define USBVISION_VERSION_STRING "0.9.11"
4149 #define ENABLE_HEXDUMP 0
4150 #ifdef USBVISION_DEBUG
4151 #define PDEBUG(level, fmt, args...) { \
4152 if (video_debug & (level)) \
4153 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4154 __func__, __LINE__ , ## args); \
4155 }
4156 #else
4157 #define PDEBUG(level, fmt, args...) do {} while (0)
4158 #endif
4159 #define DBG_IO (1 << 1)
4160 #define DBG_PROBE (1 << 2)
4161 #define DBG_MMAP (1 << 3)
4162 #define rmspace(str) while (*str == ' ') str++;
4163 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4164 #define YES_NO(x) ((x) ? "Yes" : "No")
4165 #ifdef CONFIG_VIDEO_ADV_DEBUG
4166 #endif
4167 /* LDV_COMMENT_END_PREP */
4168 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_dqbuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4169 ldv_handler_precall();
4170 vidioc_dqbuf( var_group1, var_vidioc_dqbuf_34_p1, var_vidioc_dqbuf_34_p2);
4171 /* LDV_COMMENT_BEGIN_PREP */
4172 #ifdef CONFIG_VIDEO_ADV_DEBUG
4173 #endif
4174 /* LDV_COMMENT_END_PREP */
4175
4176
4177
4178
4179 }
4180
4181 break;
4182 case 13: {
4183
4184 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4185
4186
4187 /* content: static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)*/
4188 /* LDV_COMMENT_BEGIN_PREP */
4189 #define DRIVER_AUTHOR \
4190 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4191 "Dwaine Garden <DwaineGarden@rogers.com>"
4192 #define DRIVER_NAME "usbvision"
4193 #define DRIVER_ALIAS "USBVision"
4194 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4195 #define DRIVER_LICENSE "GPL"
4196 #define USBVISION_VERSION_STRING "0.9.11"
4197 #define ENABLE_HEXDUMP 0
4198 #ifdef USBVISION_DEBUG
4199 #define PDEBUG(level, fmt, args...) { \
4200 if (video_debug & (level)) \
4201 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4202 __func__, __LINE__ , ## args); \
4203 }
4204 #else
4205 #define PDEBUG(level, fmt, args...) do {} while (0)
4206 #endif
4207 #define DBG_IO (1 << 1)
4208 #define DBG_PROBE (1 << 2)
4209 #define DBG_MMAP (1 << 3)
4210 #define rmspace(str) while (*str == ' ') str++;
4211 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4212 #define YES_NO(x) ((x) ? "Yes" : "No")
4213 #ifdef CONFIG_VIDEO_ADV_DEBUG
4214 #endif
4215 /* LDV_COMMENT_END_PREP */
4216 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_std" from driver structure with callbacks "usbvision_ioctl_ops" */
4217 ldv_handler_precall();
4218 vidioc_s_std( var_group1, var_vidioc_s_std_20_p1, var_vidioc_s_std_20_p2);
4219 /* LDV_COMMENT_BEGIN_PREP */
4220 #ifdef CONFIG_VIDEO_ADV_DEBUG
4221 #endif
4222 /* LDV_COMMENT_END_PREP */
4223
4224
4225
4226
4227 }
4228
4229 break;
4230 case 14: {
4231
4232 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4233
4234
4235 /* content: static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)*/
4236 /* LDV_COMMENT_BEGIN_PREP */
4237 #define DRIVER_AUTHOR \
4238 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4239 "Dwaine Garden <DwaineGarden@rogers.com>"
4240 #define DRIVER_NAME "usbvision"
4241 #define DRIVER_ALIAS "USBVision"
4242 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4243 #define DRIVER_LICENSE "GPL"
4244 #define USBVISION_VERSION_STRING "0.9.11"
4245 #define ENABLE_HEXDUMP 0
4246 #ifdef USBVISION_DEBUG
4247 #define PDEBUG(level, fmt, args...) { \
4248 if (video_debug & (level)) \
4249 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4250 __func__, __LINE__ , ## args); \
4251 }
4252 #else
4253 #define PDEBUG(level, fmt, args...) do {} while (0)
4254 #endif
4255 #define DBG_IO (1 << 1)
4256 #define DBG_PROBE (1 << 2)
4257 #define DBG_MMAP (1 << 3)
4258 #define rmspace(str) while (*str == ' ') str++;
4259 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4260 #define YES_NO(x) ((x) ? "Yes" : "No")
4261 #ifdef CONFIG_VIDEO_ADV_DEBUG
4262 #endif
4263 /* LDV_COMMENT_END_PREP */
4264 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_std" from driver structure with callbacks "usbvision_ioctl_ops" */
4265 ldv_handler_precall();
4266 vidioc_g_std( var_group1, var_vidioc_g_std_21_p1, var_vidioc_g_std_21_p2);
4267 /* LDV_COMMENT_BEGIN_PREP */
4268 #ifdef CONFIG_VIDEO_ADV_DEBUG
4269 #endif
4270 /* LDV_COMMENT_END_PREP */
4271
4272
4273
4274
4275 }
4276
4277 break;
4278 case 15: {
4279
4280 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4281
4282
4283 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
4284 /* LDV_COMMENT_BEGIN_PREP */
4285 #define DRIVER_AUTHOR \
4286 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4287 "Dwaine Garden <DwaineGarden@rogers.com>"
4288 #define DRIVER_NAME "usbvision"
4289 #define DRIVER_ALIAS "USBVision"
4290 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4291 #define DRIVER_LICENSE "GPL"
4292 #define USBVISION_VERSION_STRING "0.9.11"
4293 #define ENABLE_HEXDUMP 0
4294 #ifdef USBVISION_DEBUG
4295 #define PDEBUG(level, fmt, args...) { \
4296 if (video_debug & (level)) \
4297 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4298 __func__, __LINE__ , ## args); \
4299 }
4300 #else
4301 #define PDEBUG(level, fmt, args...) do {} while (0)
4302 #endif
4303 #define DBG_IO (1 << 1)
4304 #define DBG_PROBE (1 << 2)
4305 #define DBG_MMAP (1 << 3)
4306 #define rmspace(str) while (*str == ' ') str++;
4307 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4308 #define YES_NO(x) ((x) ? "Yes" : "No")
4309 #ifdef CONFIG_VIDEO_ADV_DEBUG
4310 #endif
4311 /* LDV_COMMENT_END_PREP */
4312 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4313 ldv_handler_precall();
4314 vidioc_enum_input( var_group1, var_vidioc_enum_input_17_p1, var_vidioc_enum_input_17_p2);
4315 /* LDV_COMMENT_BEGIN_PREP */
4316 #ifdef CONFIG_VIDEO_ADV_DEBUG
4317 #endif
4318 /* LDV_COMMENT_END_PREP */
4319
4320
4321
4322
4323 }
4324
4325 break;
4326 case 16: {
4327
4328 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4329
4330
4331 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
4332 /* LDV_COMMENT_BEGIN_PREP */
4333 #define DRIVER_AUTHOR \
4334 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4335 "Dwaine Garden <DwaineGarden@rogers.com>"
4336 #define DRIVER_NAME "usbvision"
4337 #define DRIVER_ALIAS "USBVision"
4338 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4339 #define DRIVER_LICENSE "GPL"
4340 #define USBVISION_VERSION_STRING "0.9.11"
4341 #define ENABLE_HEXDUMP 0
4342 #ifdef USBVISION_DEBUG
4343 #define PDEBUG(level, fmt, args...) { \
4344 if (video_debug & (level)) \
4345 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4346 __func__, __LINE__ , ## args); \
4347 }
4348 #else
4349 #define PDEBUG(level, fmt, args...) do {} while (0)
4350 #endif
4351 #define DBG_IO (1 << 1)
4352 #define DBG_PROBE (1 << 2)
4353 #define DBG_MMAP (1 << 3)
4354 #define rmspace(str) while (*str == ' ') str++;
4355 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4356 #define YES_NO(x) ((x) ? "Yes" : "No")
4357 #ifdef CONFIG_VIDEO_ADV_DEBUG
4358 #endif
4359 /* LDV_COMMENT_END_PREP */
4360 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4361 ldv_handler_precall();
4362 vidioc_g_input( var_group1, var_vidioc_g_input_18_p1, var_vidioc_g_input_18_p2);
4363 /* LDV_COMMENT_BEGIN_PREP */
4364 #ifdef CONFIG_VIDEO_ADV_DEBUG
4365 #endif
4366 /* LDV_COMMENT_END_PREP */
4367
4368
4369
4370
4371 }
4372
4373 break;
4374 case 17: {
4375
4376 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4377
4378
4379 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
4380 /* LDV_COMMENT_BEGIN_PREP */
4381 #define DRIVER_AUTHOR \
4382 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4383 "Dwaine Garden <DwaineGarden@rogers.com>"
4384 #define DRIVER_NAME "usbvision"
4385 #define DRIVER_ALIAS "USBVision"
4386 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4387 #define DRIVER_LICENSE "GPL"
4388 #define USBVISION_VERSION_STRING "0.9.11"
4389 #define ENABLE_HEXDUMP 0
4390 #ifdef USBVISION_DEBUG
4391 #define PDEBUG(level, fmt, args...) { \
4392 if (video_debug & (level)) \
4393 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4394 __func__, __LINE__ , ## args); \
4395 }
4396 #else
4397 #define PDEBUG(level, fmt, args...) do {} while (0)
4398 #endif
4399 #define DBG_IO (1 << 1)
4400 #define DBG_PROBE (1 << 2)
4401 #define DBG_MMAP (1 << 3)
4402 #define rmspace(str) while (*str == ' ') str++;
4403 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4404 #define YES_NO(x) ((x) ? "Yes" : "No")
4405 #ifdef CONFIG_VIDEO_ADV_DEBUG
4406 #endif
4407 /* LDV_COMMENT_END_PREP */
4408 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4409 ldv_handler_precall();
4410 vidioc_s_input( var_group1, var_vidioc_s_input_19_p1, var_vidioc_s_input_19_p2);
4411 /* LDV_COMMENT_BEGIN_PREP */
4412 #ifdef CONFIG_VIDEO_ADV_DEBUG
4413 #endif
4414 /* LDV_COMMENT_END_PREP */
4415
4416
4417
4418
4419 }
4420
4421 break;
4422 case 18: {
4423
4424 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4425
4426
4427 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
4428 /* LDV_COMMENT_BEGIN_PREP */
4429 #define DRIVER_AUTHOR \
4430 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4431 "Dwaine Garden <DwaineGarden@rogers.com>"
4432 #define DRIVER_NAME "usbvision"
4433 #define DRIVER_ALIAS "USBVision"
4434 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4435 #define DRIVER_LICENSE "GPL"
4436 #define USBVISION_VERSION_STRING "0.9.11"
4437 #define ENABLE_HEXDUMP 0
4438 #ifdef USBVISION_DEBUG
4439 #define PDEBUG(level, fmt, args...) { \
4440 if (video_debug & (level)) \
4441 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4442 __func__, __LINE__ , ## args); \
4443 }
4444 #else
4445 #define PDEBUG(level, fmt, args...) do {} while (0)
4446 #endif
4447 #define DBG_IO (1 << 1)
4448 #define DBG_PROBE (1 << 2)
4449 #define DBG_MMAP (1 << 3)
4450 #define rmspace(str) while (*str == ' ') str++;
4451 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4452 #define YES_NO(x) ((x) ? "Yes" : "No")
4453 #ifdef CONFIG_VIDEO_ADV_DEBUG
4454 #endif
4455 /* LDV_COMMENT_END_PREP */
4456 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_queryctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4457 ldv_handler_precall();
4458 vidioc_queryctrl( var_group1, var_vidioc_queryctrl_28_p1, var_vidioc_queryctrl_28_p2);
4459 /* LDV_COMMENT_BEGIN_PREP */
4460 #ifdef CONFIG_VIDEO_ADV_DEBUG
4461 #endif
4462 /* LDV_COMMENT_END_PREP */
4463
4464
4465
4466
4467 }
4468
4469 break;
4470 case 19: {
4471
4472 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4473
4474
4475 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
4476 /* LDV_COMMENT_BEGIN_PREP */
4477 #define DRIVER_AUTHOR \
4478 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4479 "Dwaine Garden <DwaineGarden@rogers.com>"
4480 #define DRIVER_NAME "usbvision"
4481 #define DRIVER_ALIAS "USBVision"
4482 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4483 #define DRIVER_LICENSE "GPL"
4484 #define USBVISION_VERSION_STRING "0.9.11"
4485 #define ENABLE_HEXDUMP 0
4486 #ifdef USBVISION_DEBUG
4487 #define PDEBUG(level, fmt, args...) { \
4488 if (video_debug & (level)) \
4489 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4490 __func__, __LINE__ , ## args); \
4491 }
4492 #else
4493 #define PDEBUG(level, fmt, args...) do {} while (0)
4494 #endif
4495 #define DBG_IO (1 << 1)
4496 #define DBG_PROBE (1 << 2)
4497 #define DBG_MMAP (1 << 3)
4498 #define rmspace(str) while (*str == ' ') str++;
4499 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4500 #define YES_NO(x) ((x) ? "Yes" : "No")
4501 #ifdef CONFIG_VIDEO_ADV_DEBUG
4502 #endif
4503 /* LDV_COMMENT_END_PREP */
4504 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_audio" from driver structure with callbacks "usbvision_ioctl_ops" */
4505 ldv_handler_precall();
4506 vidioc_g_audio( var_group1, var_vidioc_g_audio_26_p1, var_vidioc_g_audio_26_p2);
4507 /* LDV_COMMENT_BEGIN_PREP */
4508 #ifdef CONFIG_VIDEO_ADV_DEBUG
4509 #endif
4510 /* LDV_COMMENT_END_PREP */
4511
4512
4513
4514
4515 }
4516
4517 break;
4518 case 20: {
4519
4520 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4521
4522
4523 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
4524 /* LDV_COMMENT_BEGIN_PREP */
4525 #define DRIVER_AUTHOR \
4526 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4527 "Dwaine Garden <DwaineGarden@rogers.com>"
4528 #define DRIVER_NAME "usbvision"
4529 #define DRIVER_ALIAS "USBVision"
4530 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4531 #define DRIVER_LICENSE "GPL"
4532 #define USBVISION_VERSION_STRING "0.9.11"
4533 #define ENABLE_HEXDUMP 0
4534 #ifdef USBVISION_DEBUG
4535 #define PDEBUG(level, fmt, args...) { \
4536 if (video_debug & (level)) \
4537 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4538 __func__, __LINE__ , ## args); \
4539 }
4540 #else
4541 #define PDEBUG(level, fmt, args...) do {} while (0)
4542 #endif
4543 #define DBG_IO (1 << 1)
4544 #define DBG_PROBE (1 << 2)
4545 #define DBG_MMAP (1 << 3)
4546 #define rmspace(str) while (*str == ' ') str++;
4547 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4548 #define YES_NO(x) ((x) ? "Yes" : "No")
4549 #ifdef CONFIG_VIDEO_ADV_DEBUG
4550 #endif
4551 /* LDV_COMMENT_END_PREP */
4552 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_audio" from driver structure with callbacks "usbvision_ioctl_ops" */
4553 ldv_handler_precall();
4554 vidioc_s_audio( var_group1, var_vidioc_s_audio_27_p1, var_vidioc_s_audio_27_p2);
4555 /* LDV_COMMENT_BEGIN_PREP */
4556 #ifdef CONFIG_VIDEO_ADV_DEBUG
4557 #endif
4558 /* LDV_COMMENT_END_PREP */
4559
4560
4561
4562
4563 }
4564
4565 break;
4566 case 21: {
4567
4568 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4569
4570
4571 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
4572 /* LDV_COMMENT_BEGIN_PREP */
4573 #define DRIVER_AUTHOR \
4574 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4575 "Dwaine Garden <DwaineGarden@rogers.com>"
4576 #define DRIVER_NAME "usbvision"
4577 #define DRIVER_ALIAS "USBVision"
4578 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4579 #define DRIVER_LICENSE "GPL"
4580 #define USBVISION_VERSION_STRING "0.9.11"
4581 #define ENABLE_HEXDUMP 0
4582 #ifdef USBVISION_DEBUG
4583 #define PDEBUG(level, fmt, args...) { \
4584 if (video_debug & (level)) \
4585 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4586 __func__, __LINE__ , ## args); \
4587 }
4588 #else
4589 #define PDEBUG(level, fmt, args...) do {} while (0)
4590 #endif
4591 #define DBG_IO (1 << 1)
4592 #define DBG_PROBE (1 << 2)
4593 #define DBG_MMAP (1 << 3)
4594 #define rmspace(str) while (*str == ' ') str++;
4595 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4596 #define YES_NO(x) ((x) ? "Yes" : "No")
4597 #ifdef CONFIG_VIDEO_ADV_DEBUG
4598 #endif
4599 /* LDV_COMMENT_END_PREP */
4600 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_ctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4601 ldv_handler_precall();
4602 vidioc_g_ctrl( var_group1, var_vidioc_g_ctrl_29_p1, var_vidioc_g_ctrl_29_p2);
4603 /* LDV_COMMENT_BEGIN_PREP */
4604 #ifdef CONFIG_VIDEO_ADV_DEBUG
4605 #endif
4606 /* LDV_COMMENT_END_PREP */
4607
4608
4609
4610
4611 }
4612
4613 break;
4614 case 22: {
4615
4616 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4617
4618
4619 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
4620 /* LDV_COMMENT_BEGIN_PREP */
4621 #define DRIVER_AUTHOR \
4622 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4623 "Dwaine Garden <DwaineGarden@rogers.com>"
4624 #define DRIVER_NAME "usbvision"
4625 #define DRIVER_ALIAS "USBVision"
4626 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4627 #define DRIVER_LICENSE "GPL"
4628 #define USBVISION_VERSION_STRING "0.9.11"
4629 #define ENABLE_HEXDUMP 0
4630 #ifdef USBVISION_DEBUG
4631 #define PDEBUG(level, fmt, args...) { \
4632 if (video_debug & (level)) \
4633 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4634 __func__, __LINE__ , ## args); \
4635 }
4636 #else
4637 #define PDEBUG(level, fmt, args...) do {} while (0)
4638 #endif
4639 #define DBG_IO (1 << 1)
4640 #define DBG_PROBE (1 << 2)
4641 #define DBG_MMAP (1 << 3)
4642 #define rmspace(str) while (*str == ' ') str++;
4643 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4644 #define YES_NO(x) ((x) ? "Yes" : "No")
4645 #ifdef CONFIG_VIDEO_ADV_DEBUG
4646 #endif
4647 /* LDV_COMMENT_END_PREP */
4648 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_ctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4649 ldv_handler_precall();
4650 vidioc_s_ctrl( var_group1, var_vidioc_s_ctrl_30_p1, var_vidioc_s_ctrl_30_p2);
4651 /* LDV_COMMENT_BEGIN_PREP */
4652 #ifdef CONFIG_VIDEO_ADV_DEBUG
4653 #endif
4654 /* LDV_COMMENT_END_PREP */
4655
4656
4657
4658
4659 }
4660
4661 break;
4662 case 23: {
4663
4664 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4665
4666
4667 /* content: static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)*/
4668 /* LDV_COMMENT_BEGIN_PREP */
4669 #define DRIVER_AUTHOR \
4670 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4671 "Dwaine Garden <DwaineGarden@rogers.com>"
4672 #define DRIVER_NAME "usbvision"
4673 #define DRIVER_ALIAS "USBVision"
4674 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4675 #define DRIVER_LICENSE "GPL"
4676 #define USBVISION_VERSION_STRING "0.9.11"
4677 #define ENABLE_HEXDUMP 0
4678 #ifdef USBVISION_DEBUG
4679 #define PDEBUG(level, fmt, args...) { \
4680 if (video_debug & (level)) \
4681 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4682 __func__, __LINE__ , ## args); \
4683 }
4684 #else
4685 #define PDEBUG(level, fmt, args...) do {} while (0)
4686 #endif
4687 #define DBG_IO (1 << 1)
4688 #define DBG_PROBE (1 << 2)
4689 #define DBG_MMAP (1 << 3)
4690 #define rmspace(str) while (*str == ' ') str++;
4691 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4692 #define YES_NO(x) ((x) ? "Yes" : "No")
4693 #ifdef CONFIG_VIDEO_ADV_DEBUG
4694 #endif
4695 /* LDV_COMMENT_END_PREP */
4696 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_streamon" from driver structure with callbacks "usbvision_ioctl_ops" */
4697 ldv_handler_precall();
4698 vidioc_streamon( var_group1, var_vidioc_streamon_35_p1, var_vidioc_streamon_35_p2);
4699 /* LDV_COMMENT_BEGIN_PREP */
4700 #ifdef CONFIG_VIDEO_ADV_DEBUG
4701 #endif
4702 /* LDV_COMMENT_END_PREP */
4703
4704
4705
4706
4707 }
4708
4709 break;
4710 case 24: {
4711
4712 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4713
4714
4715 /* content: static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type type)*/
4716 /* LDV_COMMENT_BEGIN_PREP */
4717 #define DRIVER_AUTHOR \
4718 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4719 "Dwaine Garden <DwaineGarden@rogers.com>"
4720 #define DRIVER_NAME "usbvision"
4721 #define DRIVER_ALIAS "USBVision"
4722 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4723 #define DRIVER_LICENSE "GPL"
4724 #define USBVISION_VERSION_STRING "0.9.11"
4725 #define ENABLE_HEXDUMP 0
4726 #ifdef USBVISION_DEBUG
4727 #define PDEBUG(level, fmt, args...) { \
4728 if (video_debug & (level)) \
4729 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4730 __func__, __LINE__ , ## args); \
4731 }
4732 #else
4733 #define PDEBUG(level, fmt, args...) do {} while (0)
4734 #endif
4735 #define DBG_IO (1 << 1)
4736 #define DBG_PROBE (1 << 2)
4737 #define DBG_MMAP (1 << 3)
4738 #define rmspace(str) while (*str == ' ') str++;
4739 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4740 #define YES_NO(x) ((x) ? "Yes" : "No")
4741 #ifdef CONFIG_VIDEO_ADV_DEBUG
4742 #endif
4743 /* LDV_COMMENT_END_PREP */
4744 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_streamoff" from driver structure with callbacks "usbvision_ioctl_ops" */
4745 ldv_handler_precall();
4746 vidioc_streamoff( var_group1, var_vidioc_streamoff_36_p1, var_vidioc_streamoff_36_p2);
4747 /* LDV_COMMENT_BEGIN_PREP */
4748 #ifdef CONFIG_VIDEO_ADV_DEBUG
4749 #endif
4750 /* LDV_COMMENT_END_PREP */
4751
4752
4753
4754
4755 }
4756
4757 break;
4758 case 25: {
4759
4760 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4761
4762
4763 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
4764 /* LDV_COMMENT_BEGIN_PREP */
4765 #define DRIVER_AUTHOR \
4766 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4767 "Dwaine Garden <DwaineGarden@rogers.com>"
4768 #define DRIVER_NAME "usbvision"
4769 #define DRIVER_ALIAS "USBVision"
4770 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4771 #define DRIVER_LICENSE "GPL"
4772 #define USBVISION_VERSION_STRING "0.9.11"
4773 #define ENABLE_HEXDUMP 0
4774 #ifdef USBVISION_DEBUG
4775 #define PDEBUG(level, fmt, args...) { \
4776 if (video_debug & (level)) \
4777 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4778 __func__, __LINE__ , ## args); \
4779 }
4780 #else
4781 #define PDEBUG(level, fmt, args...) do {} while (0)
4782 #endif
4783 #define DBG_IO (1 << 1)
4784 #define DBG_PROBE (1 << 2)
4785 #define DBG_MMAP (1 << 3)
4786 #define rmspace(str) while (*str == ' ') str++;
4787 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4788 #define YES_NO(x) ((x) ? "Yes" : "No")
4789 #ifdef CONFIG_VIDEO_ADV_DEBUG
4790 #endif
4791 /* LDV_COMMENT_END_PREP */
4792 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_tuner" from driver structure with callbacks "usbvision_ioctl_ops" */
4793 ldv_handler_precall();
4794 vidioc_g_tuner( var_group1, var_vidioc_g_tuner_22_p1, var_vidioc_g_tuner_22_p2);
4795 /* LDV_COMMENT_BEGIN_PREP */
4796 #ifdef CONFIG_VIDEO_ADV_DEBUG
4797 #endif
4798 /* LDV_COMMENT_END_PREP */
4799
4800
4801
4802
4803 }
4804
4805 break;
4806 case 26: {
4807
4808 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4809
4810
4811 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
4812 /* LDV_COMMENT_BEGIN_PREP */
4813 #define DRIVER_AUTHOR \
4814 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4815 "Dwaine Garden <DwaineGarden@rogers.com>"
4816 #define DRIVER_NAME "usbvision"
4817 #define DRIVER_ALIAS "USBVision"
4818 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4819 #define DRIVER_LICENSE "GPL"
4820 #define USBVISION_VERSION_STRING "0.9.11"
4821 #define ENABLE_HEXDUMP 0
4822 #ifdef USBVISION_DEBUG
4823 #define PDEBUG(level, fmt, args...) { \
4824 if (video_debug & (level)) \
4825 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4826 __func__, __LINE__ , ## args); \
4827 }
4828 #else
4829 #define PDEBUG(level, fmt, args...) do {} while (0)
4830 #endif
4831 #define DBG_IO (1 << 1)
4832 #define DBG_PROBE (1 << 2)
4833 #define DBG_MMAP (1 << 3)
4834 #define rmspace(str) while (*str == ' ') str++;
4835 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4836 #define YES_NO(x) ((x) ? "Yes" : "No")
4837 #ifdef CONFIG_VIDEO_ADV_DEBUG
4838 #endif
4839 /* LDV_COMMENT_END_PREP */
4840 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_tuner" from driver structure with callbacks "usbvision_ioctl_ops" */
4841 ldv_handler_precall();
4842 vidioc_s_tuner( var_group1, var_vidioc_s_tuner_23_p1, var_vidioc_s_tuner_23_p2);
4843 /* LDV_COMMENT_BEGIN_PREP */
4844 #ifdef CONFIG_VIDEO_ADV_DEBUG
4845 #endif
4846 /* LDV_COMMENT_END_PREP */
4847
4848
4849
4850
4851 }
4852
4853 break;
4854 case 27: {
4855
4856 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4857
4858
4859 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
4860 /* LDV_COMMENT_BEGIN_PREP */
4861 #define DRIVER_AUTHOR \
4862 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4863 "Dwaine Garden <DwaineGarden@rogers.com>"
4864 #define DRIVER_NAME "usbvision"
4865 #define DRIVER_ALIAS "USBVision"
4866 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4867 #define DRIVER_LICENSE "GPL"
4868 #define USBVISION_VERSION_STRING "0.9.11"
4869 #define ENABLE_HEXDUMP 0
4870 #ifdef USBVISION_DEBUG
4871 #define PDEBUG(level, fmt, args...) { \
4872 if (video_debug & (level)) \
4873 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4874 __func__, __LINE__ , ## args); \
4875 }
4876 #else
4877 #define PDEBUG(level, fmt, args...) do {} while (0)
4878 #endif
4879 #define DBG_IO (1 << 1)
4880 #define DBG_PROBE (1 << 2)
4881 #define DBG_MMAP (1 << 3)
4882 #define rmspace(str) while (*str == ' ') str++;
4883 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4884 #define YES_NO(x) ((x) ? "Yes" : "No")
4885 #ifdef CONFIG_VIDEO_ADV_DEBUG
4886 #endif
4887 /* LDV_COMMENT_END_PREP */
4888 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_frequency" from driver structure with callbacks "usbvision_ioctl_ops" */
4889 ldv_handler_precall();
4890 vidioc_g_frequency( var_group1, var_vidioc_g_frequency_24_p1, var_vidioc_g_frequency_24_p2);
4891 /* LDV_COMMENT_BEGIN_PREP */
4892 #ifdef CONFIG_VIDEO_ADV_DEBUG
4893 #endif
4894 /* LDV_COMMENT_END_PREP */
4895
4896
4897
4898
4899 }
4900
4901 break;
4902 case 28: {
4903
4904 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4905
4906
4907 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
4908 /* LDV_COMMENT_BEGIN_PREP */
4909 #define DRIVER_AUTHOR \
4910 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4911 "Dwaine Garden <DwaineGarden@rogers.com>"
4912 #define DRIVER_NAME "usbvision"
4913 #define DRIVER_ALIAS "USBVision"
4914 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4915 #define DRIVER_LICENSE "GPL"
4916 #define USBVISION_VERSION_STRING "0.9.11"
4917 #define ENABLE_HEXDUMP 0
4918 #ifdef USBVISION_DEBUG
4919 #define PDEBUG(level, fmt, args...) { \
4920 if (video_debug & (level)) \
4921 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4922 __func__, __LINE__ , ## args); \
4923 }
4924 #else
4925 #define PDEBUG(level, fmt, args...) do {} while (0)
4926 #endif
4927 #define DBG_IO (1 << 1)
4928 #define DBG_PROBE (1 << 2)
4929 #define DBG_MMAP (1 << 3)
4930 #define rmspace(str) while (*str == ' ') str++;
4931 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4932 #define YES_NO(x) ((x) ? "Yes" : "No")
4933 #ifdef CONFIG_VIDEO_ADV_DEBUG
4934 #endif
4935 /* LDV_COMMENT_END_PREP */
4936 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_frequency" from driver structure with callbacks "usbvision_ioctl_ops" */
4937 ldv_handler_precall();
4938 vidioc_s_frequency( var_group1, var_vidioc_s_frequency_25_p1, var_vidioc_s_frequency_25_p2);
4939 /* LDV_COMMENT_BEGIN_PREP */
4940 #ifdef CONFIG_VIDEO_ADV_DEBUG
4941 #endif
4942 /* LDV_COMMENT_END_PREP */
4943
4944
4945
4946
4947 }
4948
4949 break;
4950 case 29: {
4951
4952 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4953
4954
4955 /* content: static int vidioc_g_register(struct file *file, void *priv, struct v4l2_dbg_register *reg)*/
4956 /* LDV_COMMENT_BEGIN_PREP */
4957 #define DRIVER_AUTHOR \
4958 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4959 "Dwaine Garden <DwaineGarden@rogers.com>"
4960 #define DRIVER_NAME "usbvision"
4961 #define DRIVER_ALIAS "USBVision"
4962 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4963 #define DRIVER_LICENSE "GPL"
4964 #define USBVISION_VERSION_STRING "0.9.11"
4965 #define ENABLE_HEXDUMP 0
4966 #ifdef USBVISION_DEBUG
4967 #define PDEBUG(level, fmt, args...) { \
4968 if (video_debug & (level)) \
4969 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4970 __func__, __LINE__ , ## args); \
4971 }
4972 #else
4973 #define PDEBUG(level, fmt, args...) do {} while (0)
4974 #endif
4975 #define DBG_IO (1 << 1)
4976 #define DBG_PROBE (1 << 2)
4977 #define DBG_MMAP (1 << 3)
4978 #define rmspace(str) while (*str == ' ') str++;
4979 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4980 #define YES_NO(x) ((x) ? "Yes" : "No")
4981 #ifdef CONFIG_VIDEO_ADV_DEBUG
4982 /* LDV_COMMENT_END_PREP */
4983 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_register" from driver structure with callbacks "usbvision_ioctl_ops" */
4984 ldv_handler_precall();
4985 vidioc_g_register( var_group1, var_vidioc_g_register_14_p1, var_vidioc_g_register_14_p2);
4986 /* LDV_COMMENT_BEGIN_PREP */
4987 #endif
4988 #ifdef CONFIG_VIDEO_ADV_DEBUG
4989 #endif
4990 /* LDV_COMMENT_END_PREP */
4991
4992
4993
4994
4995 }
4996
4997 break;
4998 case 30: {
4999
5000 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
5001
5002
5003 /* content: static int vidioc_s_register(struct file *file, void *priv, const struct v4l2_dbg_register *reg)*/
5004 /* LDV_COMMENT_BEGIN_PREP */
5005 #define DRIVER_AUTHOR \
5006 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5007 "Dwaine Garden <DwaineGarden@rogers.com>"
5008 #define DRIVER_NAME "usbvision"
5009 #define DRIVER_ALIAS "USBVision"
5010 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5011 #define DRIVER_LICENSE "GPL"
5012 #define USBVISION_VERSION_STRING "0.9.11"
5013 #define ENABLE_HEXDUMP 0
5014 #ifdef USBVISION_DEBUG
5015 #define PDEBUG(level, fmt, args...) { \
5016 if (video_debug & (level)) \
5017 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5018 __func__, __LINE__ , ## args); \
5019 }
5020 #else
5021 #define PDEBUG(level, fmt, args...) do {} while (0)
5022 #endif
5023 #define DBG_IO (1 << 1)
5024 #define DBG_PROBE (1 << 2)
5025 #define DBG_MMAP (1 << 3)
5026 #define rmspace(str) while (*str == ' ') str++;
5027 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5028 #define YES_NO(x) ((x) ? "Yes" : "No")
5029 #ifdef CONFIG_VIDEO_ADV_DEBUG
5030 /* LDV_COMMENT_END_PREP */
5031 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_register" from driver structure with callbacks "usbvision_ioctl_ops" */
5032 ldv_handler_precall();
5033 vidioc_s_register( var_group1, var_vidioc_s_register_15_p1, var_vidioc_s_register_15_p2);
5034 /* LDV_COMMENT_BEGIN_PREP */
5035 #endif
5036 #ifdef CONFIG_VIDEO_ADV_DEBUG
5037 #endif
5038 /* LDV_COMMENT_END_PREP */
5039
5040
5041
5042
5043 }
5044
5045 break;
5046 case 31: {
5047
5048 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
5049 if(ldv_s_usbvision_radio_fops_v4l2_file_operations==0) {
5050
5051 /* content: static int usbvision_radio_open(struct file *file)*/
5052 /* LDV_COMMENT_BEGIN_PREP */
5053 #define DRIVER_AUTHOR \
5054 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5055 "Dwaine Garden <DwaineGarden@rogers.com>"
5056 #define DRIVER_NAME "usbvision"
5057 #define DRIVER_ALIAS "USBVision"
5058 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5059 #define DRIVER_LICENSE "GPL"
5060 #define USBVISION_VERSION_STRING "0.9.11"
5061 #define ENABLE_HEXDUMP 0
5062 #ifdef USBVISION_DEBUG
5063 #define PDEBUG(level, fmt, args...) { \
5064 if (video_debug & (level)) \
5065 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5066 __func__, __LINE__ , ## args); \
5067 }
5068 #else
5069 #define PDEBUG(level, fmt, args...) do {} while (0)
5070 #endif
5071 #define DBG_IO (1 << 1)
5072 #define DBG_PROBE (1 << 2)
5073 #define DBG_MMAP (1 << 3)
5074 #define rmspace(str) while (*str == ' ') str++;
5075 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5076 #define YES_NO(x) ((x) ? "Yes" : "No")
5077 #ifdef CONFIG_VIDEO_ADV_DEBUG
5078 #endif
5079 /* LDV_COMMENT_END_PREP */
5080 /* LDV_COMMENT_FUNCTION_CALL Function from field "open" from driver structure with callbacks "usbvision_radio_fops". Standart function test for correct return result. */
5081 ldv_handler_precall();
5082 res_usbvision_radio_open_45 = usbvision_radio_open( var_group1);
5083 ldv_check_return_value(res_usbvision_radio_open_45);
5084 if(res_usbvision_radio_open_45)
5085 goto ldv_module_exit;
5086 /* LDV_COMMENT_BEGIN_PREP */
5087 #ifdef CONFIG_VIDEO_ADV_DEBUG
5088 #endif
5089 /* LDV_COMMENT_END_PREP */
5090 ldv_s_usbvision_radio_fops_v4l2_file_operations++;
5091
5092 }
5093
5094 }
5095
5096 break;
5097 case 32: {
5098
5099 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
5100 if(ldv_s_usbvision_radio_fops_v4l2_file_operations==1) {
5101
5102 /* content: static int usbvision_radio_close(struct file *file)*/
5103 /* LDV_COMMENT_BEGIN_PREP */
5104 #define DRIVER_AUTHOR \
5105 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5106 "Dwaine Garden <DwaineGarden@rogers.com>"
5107 #define DRIVER_NAME "usbvision"
5108 #define DRIVER_ALIAS "USBVision"
5109 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5110 #define DRIVER_LICENSE "GPL"
5111 #define USBVISION_VERSION_STRING "0.9.11"
5112 #define ENABLE_HEXDUMP 0
5113 #ifdef USBVISION_DEBUG
5114 #define PDEBUG(level, fmt, args...) { \
5115 if (video_debug & (level)) \
5116 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5117 __func__, __LINE__ , ## args); \
5118 }
5119 #else
5120 #define PDEBUG(level, fmt, args...) do {} while (0)
5121 #endif
5122 #define DBG_IO (1 << 1)
5123 #define DBG_PROBE (1 << 2)
5124 #define DBG_MMAP (1 << 3)
5125 #define rmspace(str) while (*str == ' ') str++;
5126 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5127 #define YES_NO(x) ((x) ? "Yes" : "No")
5128 #ifdef CONFIG_VIDEO_ADV_DEBUG
5129 #endif
5130 /* LDV_COMMENT_END_PREP */
5131 /* LDV_COMMENT_FUNCTION_CALL Function from field "release" from driver structure with callbacks "usbvision_radio_fops" */
5132 ldv_handler_precall();
5133 usbvision_radio_close( var_group1);
5134 /* LDV_COMMENT_BEGIN_PREP */
5135 #ifdef CONFIG_VIDEO_ADV_DEBUG
5136 #endif
5137 /* LDV_COMMENT_END_PREP */
5138 ldv_s_usbvision_radio_fops_v4l2_file_operations=0;
5139
5140 }
5141
5142 }
5143
5144 break;
5145 case 33: {
5146
5147 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5148
5149
5150 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
5151 /* LDV_COMMENT_BEGIN_PREP */
5152 #define DRIVER_AUTHOR \
5153 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5154 "Dwaine Garden <DwaineGarden@rogers.com>"
5155 #define DRIVER_NAME "usbvision"
5156 #define DRIVER_ALIAS "USBVision"
5157 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5158 #define DRIVER_LICENSE "GPL"
5159 #define USBVISION_VERSION_STRING "0.9.11"
5160 #define ENABLE_HEXDUMP 0
5161 #ifdef USBVISION_DEBUG
5162 #define PDEBUG(level, fmt, args...) { \
5163 if (video_debug & (level)) \
5164 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5165 __func__, __LINE__ , ## args); \
5166 }
5167 #else
5168 #define PDEBUG(level, fmt, args...) do {} while (0)
5169 #endif
5170 #define DBG_IO (1 << 1)
5171 #define DBG_PROBE (1 << 2)
5172 #define DBG_MMAP (1 << 3)
5173 #define rmspace(str) while (*str == ' ') str++;
5174 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5175 #define YES_NO(x) ((x) ? "Yes" : "No")
5176 #ifdef CONFIG_VIDEO_ADV_DEBUG
5177 #endif
5178 /* LDV_COMMENT_END_PREP */
5179 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querycap" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5180 ldv_handler_precall();
5181 vidioc_querycap( var_group1, var_vidioc_querycap_16_p1, var_vidioc_querycap_16_p2);
5182 /* LDV_COMMENT_BEGIN_PREP */
5183 #ifdef CONFIG_VIDEO_ADV_DEBUG
5184 #endif
5185 /* LDV_COMMENT_END_PREP */
5186
5187
5188
5189
5190 }
5191
5192 break;
5193 case 34: {
5194
5195 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5196
5197
5198 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
5199 /* LDV_COMMENT_BEGIN_PREP */
5200 #define DRIVER_AUTHOR \
5201 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5202 "Dwaine Garden <DwaineGarden@rogers.com>"
5203 #define DRIVER_NAME "usbvision"
5204 #define DRIVER_ALIAS "USBVision"
5205 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5206 #define DRIVER_LICENSE "GPL"
5207 #define USBVISION_VERSION_STRING "0.9.11"
5208 #define ENABLE_HEXDUMP 0
5209 #ifdef USBVISION_DEBUG
5210 #define PDEBUG(level, fmt, args...) { \
5211 if (video_debug & (level)) \
5212 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5213 __func__, __LINE__ , ## args); \
5214 }
5215 #else
5216 #define PDEBUG(level, fmt, args...) do {} while (0)
5217 #endif
5218 #define DBG_IO (1 << 1)
5219 #define DBG_PROBE (1 << 2)
5220 #define DBG_MMAP (1 << 3)
5221 #define rmspace(str) while (*str == ' ') str++;
5222 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5223 #define YES_NO(x) ((x) ? "Yes" : "No")
5224 #ifdef CONFIG_VIDEO_ADV_DEBUG
5225 #endif
5226 /* LDV_COMMENT_END_PREP */
5227 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5228 ldv_handler_precall();
5229 vidioc_enum_input( var_group1, var_vidioc_enum_input_17_p1, var_vidioc_enum_input_17_p2);
5230 /* LDV_COMMENT_BEGIN_PREP */
5231 #ifdef CONFIG_VIDEO_ADV_DEBUG
5232 #endif
5233 /* LDV_COMMENT_END_PREP */
5234
5235
5236
5237
5238 }
5239
5240 break;
5241 case 35: {
5242
5243 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5244
5245
5246 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
5247 /* LDV_COMMENT_BEGIN_PREP */
5248 #define DRIVER_AUTHOR \
5249 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5250 "Dwaine Garden <DwaineGarden@rogers.com>"
5251 #define DRIVER_NAME "usbvision"
5252 #define DRIVER_ALIAS "USBVision"
5253 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5254 #define DRIVER_LICENSE "GPL"
5255 #define USBVISION_VERSION_STRING "0.9.11"
5256 #define ENABLE_HEXDUMP 0
5257 #ifdef USBVISION_DEBUG
5258 #define PDEBUG(level, fmt, args...) { \
5259 if (video_debug & (level)) \
5260 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5261 __func__, __LINE__ , ## args); \
5262 }
5263 #else
5264 #define PDEBUG(level, fmt, args...) do {} while (0)
5265 #endif
5266 #define DBG_IO (1 << 1)
5267 #define DBG_PROBE (1 << 2)
5268 #define DBG_MMAP (1 << 3)
5269 #define rmspace(str) while (*str == ' ') str++;
5270 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5271 #define YES_NO(x) ((x) ? "Yes" : "No")
5272 #ifdef CONFIG_VIDEO_ADV_DEBUG
5273 #endif
5274 /* LDV_COMMENT_END_PREP */
5275 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5276 ldv_handler_precall();
5277 vidioc_g_input( var_group1, var_vidioc_g_input_18_p1, var_vidioc_g_input_18_p2);
5278 /* LDV_COMMENT_BEGIN_PREP */
5279 #ifdef CONFIG_VIDEO_ADV_DEBUG
5280 #endif
5281 /* LDV_COMMENT_END_PREP */
5282
5283
5284
5285
5286 }
5287
5288 break;
5289 case 36: {
5290
5291 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5292
5293
5294 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
5295 /* LDV_COMMENT_BEGIN_PREP */
5296 #define DRIVER_AUTHOR \
5297 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5298 "Dwaine Garden <DwaineGarden@rogers.com>"
5299 #define DRIVER_NAME "usbvision"
5300 #define DRIVER_ALIAS "USBVision"
5301 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5302 #define DRIVER_LICENSE "GPL"
5303 #define USBVISION_VERSION_STRING "0.9.11"
5304 #define ENABLE_HEXDUMP 0
5305 #ifdef USBVISION_DEBUG
5306 #define PDEBUG(level, fmt, args...) { \
5307 if (video_debug & (level)) \
5308 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5309 __func__, __LINE__ , ## args); \
5310 }
5311 #else
5312 #define PDEBUG(level, fmt, args...) do {} while (0)
5313 #endif
5314 #define DBG_IO (1 << 1)
5315 #define DBG_PROBE (1 << 2)
5316 #define DBG_MMAP (1 << 3)
5317 #define rmspace(str) while (*str == ' ') str++;
5318 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5319 #define YES_NO(x) ((x) ? "Yes" : "No")
5320 #ifdef CONFIG_VIDEO_ADV_DEBUG
5321 #endif
5322 /* LDV_COMMENT_END_PREP */
5323 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5324 ldv_handler_precall();
5325 vidioc_s_input( var_group1, var_vidioc_s_input_19_p1, var_vidioc_s_input_19_p2);
5326 /* LDV_COMMENT_BEGIN_PREP */
5327 #ifdef CONFIG_VIDEO_ADV_DEBUG
5328 #endif
5329 /* LDV_COMMENT_END_PREP */
5330
5331
5332
5333
5334 }
5335
5336 break;
5337 case 37: {
5338
5339 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5340
5341
5342 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
5343 /* LDV_COMMENT_BEGIN_PREP */
5344 #define DRIVER_AUTHOR \
5345 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5346 "Dwaine Garden <DwaineGarden@rogers.com>"
5347 #define DRIVER_NAME "usbvision"
5348 #define DRIVER_ALIAS "USBVision"
5349 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5350 #define DRIVER_LICENSE "GPL"
5351 #define USBVISION_VERSION_STRING "0.9.11"
5352 #define ENABLE_HEXDUMP 0
5353 #ifdef USBVISION_DEBUG
5354 #define PDEBUG(level, fmt, args...) { \
5355 if (video_debug & (level)) \
5356 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5357 __func__, __LINE__ , ## args); \
5358 }
5359 #else
5360 #define PDEBUG(level, fmt, args...) do {} while (0)
5361 #endif
5362 #define DBG_IO (1 << 1)
5363 #define DBG_PROBE (1 << 2)
5364 #define DBG_MMAP (1 << 3)
5365 #define rmspace(str) while (*str == ' ') str++;
5366 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5367 #define YES_NO(x) ((x) ? "Yes" : "No")
5368 #ifdef CONFIG_VIDEO_ADV_DEBUG
5369 #endif
5370 /* LDV_COMMENT_END_PREP */
5371 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_queryctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5372 ldv_handler_precall();
5373 vidioc_queryctrl( var_group1, var_vidioc_queryctrl_28_p1, var_vidioc_queryctrl_28_p2);
5374 /* LDV_COMMENT_BEGIN_PREP */
5375 #ifdef CONFIG_VIDEO_ADV_DEBUG
5376 #endif
5377 /* LDV_COMMENT_END_PREP */
5378
5379
5380
5381
5382 }
5383
5384 break;
5385 case 38: {
5386
5387 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5388
5389
5390 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
5391 /* LDV_COMMENT_BEGIN_PREP */
5392 #define DRIVER_AUTHOR \
5393 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5394 "Dwaine Garden <DwaineGarden@rogers.com>"
5395 #define DRIVER_NAME "usbvision"
5396 #define DRIVER_ALIAS "USBVision"
5397 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5398 #define DRIVER_LICENSE "GPL"
5399 #define USBVISION_VERSION_STRING "0.9.11"
5400 #define ENABLE_HEXDUMP 0
5401 #ifdef USBVISION_DEBUG
5402 #define PDEBUG(level, fmt, args...) { \
5403 if (video_debug & (level)) \
5404 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5405 __func__, __LINE__ , ## args); \
5406 }
5407 #else
5408 #define PDEBUG(level, fmt, args...) do {} while (0)
5409 #endif
5410 #define DBG_IO (1 << 1)
5411 #define DBG_PROBE (1 << 2)
5412 #define DBG_MMAP (1 << 3)
5413 #define rmspace(str) while (*str == ' ') str++;
5414 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5415 #define YES_NO(x) ((x) ? "Yes" : "No")
5416 #ifdef CONFIG_VIDEO_ADV_DEBUG
5417 #endif
5418 /* LDV_COMMENT_END_PREP */
5419 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_audio" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5420 ldv_handler_precall();
5421 vidioc_g_audio( var_group1, var_vidioc_g_audio_26_p1, var_vidioc_g_audio_26_p2);
5422 /* LDV_COMMENT_BEGIN_PREP */
5423 #ifdef CONFIG_VIDEO_ADV_DEBUG
5424 #endif
5425 /* LDV_COMMENT_END_PREP */
5426
5427
5428
5429
5430 }
5431
5432 break;
5433 case 39: {
5434
5435 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5436
5437
5438 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
5439 /* LDV_COMMENT_BEGIN_PREP */
5440 #define DRIVER_AUTHOR \
5441 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5442 "Dwaine Garden <DwaineGarden@rogers.com>"
5443 #define DRIVER_NAME "usbvision"
5444 #define DRIVER_ALIAS "USBVision"
5445 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5446 #define DRIVER_LICENSE "GPL"
5447 #define USBVISION_VERSION_STRING "0.9.11"
5448 #define ENABLE_HEXDUMP 0
5449 #ifdef USBVISION_DEBUG
5450 #define PDEBUG(level, fmt, args...) { \
5451 if (video_debug & (level)) \
5452 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5453 __func__, __LINE__ , ## args); \
5454 }
5455 #else
5456 #define PDEBUG(level, fmt, args...) do {} while (0)
5457 #endif
5458 #define DBG_IO (1 << 1)
5459 #define DBG_PROBE (1 << 2)
5460 #define DBG_MMAP (1 << 3)
5461 #define rmspace(str) while (*str == ' ') str++;
5462 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5463 #define YES_NO(x) ((x) ? "Yes" : "No")
5464 #ifdef CONFIG_VIDEO_ADV_DEBUG
5465 #endif
5466 /* LDV_COMMENT_END_PREP */
5467 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_audio" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5468 ldv_handler_precall();
5469 vidioc_s_audio( var_group1, var_vidioc_s_audio_27_p1, var_vidioc_s_audio_27_p2);
5470 /* LDV_COMMENT_BEGIN_PREP */
5471 #ifdef CONFIG_VIDEO_ADV_DEBUG
5472 #endif
5473 /* LDV_COMMENT_END_PREP */
5474
5475
5476
5477
5478 }
5479
5480 break;
5481 case 40: {
5482
5483 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5484
5485
5486 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
5487 /* LDV_COMMENT_BEGIN_PREP */
5488 #define DRIVER_AUTHOR \
5489 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5490 "Dwaine Garden <DwaineGarden@rogers.com>"
5491 #define DRIVER_NAME "usbvision"
5492 #define DRIVER_ALIAS "USBVision"
5493 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5494 #define DRIVER_LICENSE "GPL"
5495 #define USBVISION_VERSION_STRING "0.9.11"
5496 #define ENABLE_HEXDUMP 0
5497 #ifdef USBVISION_DEBUG
5498 #define PDEBUG(level, fmt, args...) { \
5499 if (video_debug & (level)) \
5500 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5501 __func__, __LINE__ , ## args); \
5502 }
5503 #else
5504 #define PDEBUG(level, fmt, args...) do {} while (0)
5505 #endif
5506 #define DBG_IO (1 << 1)
5507 #define DBG_PROBE (1 << 2)
5508 #define DBG_MMAP (1 << 3)
5509 #define rmspace(str) while (*str == ' ') str++;
5510 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5511 #define YES_NO(x) ((x) ? "Yes" : "No")
5512 #ifdef CONFIG_VIDEO_ADV_DEBUG
5513 #endif
5514 /* LDV_COMMENT_END_PREP */
5515 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_ctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5516 ldv_handler_precall();
5517 vidioc_g_ctrl( var_group1, var_vidioc_g_ctrl_29_p1, var_vidioc_g_ctrl_29_p2);
5518 /* LDV_COMMENT_BEGIN_PREP */
5519 #ifdef CONFIG_VIDEO_ADV_DEBUG
5520 #endif
5521 /* LDV_COMMENT_END_PREP */
5522
5523
5524
5525
5526 }
5527
5528 break;
5529 case 41: {
5530
5531 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5532
5533
5534 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
5535 /* LDV_COMMENT_BEGIN_PREP */
5536 #define DRIVER_AUTHOR \
5537 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5538 "Dwaine Garden <DwaineGarden@rogers.com>"
5539 #define DRIVER_NAME "usbvision"
5540 #define DRIVER_ALIAS "USBVision"
5541 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5542 #define DRIVER_LICENSE "GPL"
5543 #define USBVISION_VERSION_STRING "0.9.11"
5544 #define ENABLE_HEXDUMP 0
5545 #ifdef USBVISION_DEBUG
5546 #define PDEBUG(level, fmt, args...) { \
5547 if (video_debug & (level)) \
5548 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5549 __func__, __LINE__ , ## args); \
5550 }
5551 #else
5552 #define PDEBUG(level, fmt, args...) do {} while (0)
5553 #endif
5554 #define DBG_IO (1 << 1)
5555 #define DBG_PROBE (1 << 2)
5556 #define DBG_MMAP (1 << 3)
5557 #define rmspace(str) while (*str == ' ') str++;
5558 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5559 #define YES_NO(x) ((x) ? "Yes" : "No")
5560 #ifdef CONFIG_VIDEO_ADV_DEBUG
5561 #endif
5562 /* LDV_COMMENT_END_PREP */
5563 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_ctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5564 ldv_handler_precall();
5565 vidioc_s_ctrl( var_group1, var_vidioc_s_ctrl_30_p1, var_vidioc_s_ctrl_30_p2);
5566 /* LDV_COMMENT_BEGIN_PREP */
5567 #ifdef CONFIG_VIDEO_ADV_DEBUG
5568 #endif
5569 /* LDV_COMMENT_END_PREP */
5570
5571
5572
5573
5574 }
5575
5576 break;
5577 case 42: {
5578
5579 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5580
5581
5582 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
5583 /* LDV_COMMENT_BEGIN_PREP */
5584 #define DRIVER_AUTHOR \
5585 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5586 "Dwaine Garden <DwaineGarden@rogers.com>"
5587 #define DRIVER_NAME "usbvision"
5588 #define DRIVER_ALIAS "USBVision"
5589 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5590 #define DRIVER_LICENSE "GPL"
5591 #define USBVISION_VERSION_STRING "0.9.11"
5592 #define ENABLE_HEXDUMP 0
5593 #ifdef USBVISION_DEBUG
5594 #define PDEBUG(level, fmt, args...) { \
5595 if (video_debug & (level)) \
5596 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5597 __func__, __LINE__ , ## args); \
5598 }
5599 #else
5600 #define PDEBUG(level, fmt, args...) do {} while (0)
5601 #endif
5602 #define DBG_IO (1 << 1)
5603 #define DBG_PROBE (1 << 2)
5604 #define DBG_MMAP (1 << 3)
5605 #define rmspace(str) while (*str == ' ') str++;
5606 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5607 #define YES_NO(x) ((x) ? "Yes" : "No")
5608 #ifdef CONFIG_VIDEO_ADV_DEBUG
5609 #endif
5610 /* LDV_COMMENT_END_PREP */
5611 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_tuner" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5612 ldv_handler_precall();
5613 vidioc_g_tuner( var_group1, var_vidioc_g_tuner_22_p1, var_vidioc_g_tuner_22_p2);
5614 /* LDV_COMMENT_BEGIN_PREP */
5615 #ifdef CONFIG_VIDEO_ADV_DEBUG
5616 #endif
5617 /* LDV_COMMENT_END_PREP */
5618
5619
5620
5621
5622 }
5623
5624 break;
5625 case 43: {
5626
5627 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5628
5629
5630 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
5631 /* LDV_COMMENT_BEGIN_PREP */
5632 #define DRIVER_AUTHOR \
5633 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5634 "Dwaine Garden <DwaineGarden@rogers.com>"
5635 #define DRIVER_NAME "usbvision"
5636 #define DRIVER_ALIAS "USBVision"
5637 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5638 #define DRIVER_LICENSE "GPL"
5639 #define USBVISION_VERSION_STRING "0.9.11"
5640 #define ENABLE_HEXDUMP 0
5641 #ifdef USBVISION_DEBUG
5642 #define PDEBUG(level, fmt, args...) { \
5643 if (video_debug & (level)) \
5644 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5645 __func__, __LINE__ , ## args); \
5646 }
5647 #else
5648 #define PDEBUG(level, fmt, args...) do {} while (0)
5649 #endif
5650 #define DBG_IO (1 << 1)
5651 #define DBG_PROBE (1 << 2)
5652 #define DBG_MMAP (1 << 3)
5653 #define rmspace(str) while (*str == ' ') str++;
5654 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5655 #define YES_NO(x) ((x) ? "Yes" : "No")
5656 #ifdef CONFIG_VIDEO_ADV_DEBUG
5657 #endif
5658 /* LDV_COMMENT_END_PREP */
5659 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_tuner" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5660 ldv_handler_precall();
5661 vidioc_s_tuner( var_group1, var_vidioc_s_tuner_23_p1, var_vidioc_s_tuner_23_p2);
5662 /* LDV_COMMENT_BEGIN_PREP */
5663 #ifdef CONFIG_VIDEO_ADV_DEBUG
5664 #endif
5665 /* LDV_COMMENT_END_PREP */
5666
5667
5668
5669
5670 }
5671
5672 break;
5673 case 44: {
5674
5675 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5676
5677
5678 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
5679 /* LDV_COMMENT_BEGIN_PREP */
5680 #define DRIVER_AUTHOR \
5681 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5682 "Dwaine Garden <DwaineGarden@rogers.com>"
5683 #define DRIVER_NAME "usbvision"
5684 #define DRIVER_ALIAS "USBVision"
5685 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5686 #define DRIVER_LICENSE "GPL"
5687 #define USBVISION_VERSION_STRING "0.9.11"
5688 #define ENABLE_HEXDUMP 0
5689 #ifdef USBVISION_DEBUG
5690 #define PDEBUG(level, fmt, args...) { \
5691 if (video_debug & (level)) \
5692 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5693 __func__, __LINE__ , ## args); \
5694 }
5695 #else
5696 #define PDEBUG(level, fmt, args...) do {} while (0)
5697 #endif
5698 #define DBG_IO (1 << 1)
5699 #define DBG_PROBE (1 << 2)
5700 #define DBG_MMAP (1 << 3)
5701 #define rmspace(str) while (*str == ' ') str++;
5702 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5703 #define YES_NO(x) ((x) ? "Yes" : "No")
5704 #ifdef CONFIG_VIDEO_ADV_DEBUG
5705 #endif
5706 /* LDV_COMMENT_END_PREP */
5707 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_frequency" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5708 ldv_handler_precall();
5709 vidioc_g_frequency( var_group1, var_vidioc_g_frequency_24_p1, var_vidioc_g_frequency_24_p2);
5710 /* LDV_COMMENT_BEGIN_PREP */
5711 #ifdef CONFIG_VIDEO_ADV_DEBUG
5712 #endif
5713 /* LDV_COMMENT_END_PREP */
5714
5715
5716
5717
5718 }
5719
5720 break;
5721 case 45: {
5722
5723 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5724
5725
5726 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
5727 /* LDV_COMMENT_BEGIN_PREP */
5728 #define DRIVER_AUTHOR \
5729 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5730 "Dwaine Garden <DwaineGarden@rogers.com>"
5731 #define DRIVER_NAME "usbvision"
5732 #define DRIVER_ALIAS "USBVision"
5733 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5734 #define DRIVER_LICENSE "GPL"
5735 #define USBVISION_VERSION_STRING "0.9.11"
5736 #define ENABLE_HEXDUMP 0
5737 #ifdef USBVISION_DEBUG
5738 #define PDEBUG(level, fmt, args...) { \
5739 if (video_debug & (level)) \
5740 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5741 __func__, __LINE__ , ## args); \
5742 }
5743 #else
5744 #define PDEBUG(level, fmt, args...) do {} while (0)
5745 #endif
5746 #define DBG_IO (1 << 1)
5747 #define DBG_PROBE (1 << 2)
5748 #define DBG_MMAP (1 << 3)
5749 #define rmspace(str) while (*str == ' ') str++;
5750 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5751 #define YES_NO(x) ((x) ? "Yes" : "No")
5752 #ifdef CONFIG_VIDEO_ADV_DEBUG
5753 #endif
5754 /* LDV_COMMENT_END_PREP */
5755 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_frequency" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5756 ldv_handler_precall();
5757 vidioc_s_frequency( var_group1, var_vidioc_s_frequency_25_p1, var_vidioc_s_frequency_25_p2);
5758 /* LDV_COMMENT_BEGIN_PREP */
5759 #ifdef CONFIG_VIDEO_ADV_DEBUG
5760 #endif
5761 /* LDV_COMMENT_END_PREP */
5762
5763
5764
5765
5766 }
5767
5768 break;
5769 case 46: {
5770
5771 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
5772 if(ldv_s_usbvision_driver_usb_driver==0) {
5773
5774 /* content: static int usbvision_probe(struct usb_interface *intf, const struct usb_device_id *devid)*/
5775 /* LDV_COMMENT_BEGIN_PREP */
5776 #define DRIVER_AUTHOR \
5777 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5778 "Dwaine Garden <DwaineGarden@rogers.com>"
5779 #define DRIVER_NAME "usbvision"
5780 #define DRIVER_ALIAS "USBVision"
5781 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5782 #define DRIVER_LICENSE "GPL"
5783 #define USBVISION_VERSION_STRING "0.9.11"
5784 #define ENABLE_HEXDUMP 0
5785 #ifdef USBVISION_DEBUG
5786 #define PDEBUG(level, fmt, args...) { \
5787 if (video_debug & (level)) \
5788 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5789 __func__, __LINE__ , ## args); \
5790 }
5791 #else
5792 #define PDEBUG(level, fmt, args...) do {} while (0)
5793 #endif
5794 #define DBG_IO (1 << 1)
5795 #define DBG_PROBE (1 << 2)
5796 #define DBG_MMAP (1 << 3)
5797 #define rmspace(str) while (*str == ' ') str++;
5798 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5799 #define YES_NO(x) ((x) ? "Yes" : "No")
5800 #ifdef CONFIG_VIDEO_ADV_DEBUG
5801 #endif
5802 #ifdef CONFIG_VIDEO_ADV_DEBUG
5803 #endif
5804 /* LDV_COMMENT_END_PREP */
5805 /* LDV_COMMENT_FUNCTION_CALL Function from field "probe" from driver structure with callbacks "usbvision_driver". Standart function test for correct return result. */
5806 res_usbvision_probe_53 = usbvision_probe( var_group3, var_usbvision_probe_53_p1);
5807 ldv_check_return_value(res_usbvision_probe_53);
5808 ldv_check_return_value_probe(res_usbvision_probe_53);
5809 if(res_usbvision_probe_53)
5810 goto ldv_module_exit;
5811 ldv_s_usbvision_driver_usb_driver++;
5812
5813 }
5814
5815 }
5816
5817 break;
5818 case 47: {
5819
5820 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
5821 if(ldv_s_usbvision_driver_usb_driver==1) {
5822
5823 /* content: static void usbvision_disconnect(struct usb_interface *intf)*/
5824 /* LDV_COMMENT_BEGIN_PREP */
5825 #define DRIVER_AUTHOR \
5826 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5827 "Dwaine Garden <DwaineGarden@rogers.com>"
5828 #define DRIVER_NAME "usbvision"
5829 #define DRIVER_ALIAS "USBVision"
5830 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5831 #define DRIVER_LICENSE "GPL"
5832 #define USBVISION_VERSION_STRING "0.9.11"
5833 #define ENABLE_HEXDUMP 0
5834 #ifdef USBVISION_DEBUG
5835 #define PDEBUG(level, fmt, args...) { \
5836 if (video_debug & (level)) \
5837 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5838 __func__, __LINE__ , ## args); \
5839 }
5840 #else
5841 #define PDEBUG(level, fmt, args...) do {} while (0)
5842 #endif
5843 #define DBG_IO (1 << 1)
5844 #define DBG_PROBE (1 << 2)
5845 #define DBG_MMAP (1 << 3)
5846 #define rmspace(str) while (*str == ' ') str++;
5847 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5848 #define YES_NO(x) ((x) ? "Yes" : "No")
5849 #ifdef CONFIG_VIDEO_ADV_DEBUG
5850 #endif
5851 #ifdef CONFIG_VIDEO_ADV_DEBUG
5852 #endif
5853 /* LDV_COMMENT_END_PREP */
5854 /* LDV_COMMENT_FUNCTION_CALL Function from field "disconnect" from driver structure with callbacks "usbvision_driver" */
5855 ldv_handler_precall();
5856 usbvision_disconnect( var_group3);
5857 ldv_s_usbvision_driver_usb_driver=0;
5858
5859 }
5860
5861 }
5862
5863 break;
5864 default: break;
5865
5866 }
5867
5868 }
5869
5870 ldv_module_exit:
5871
5872 /** INIT: init_type: ST_MODULE_EXIT **/
5873 /* content: static void __exit usbvision_exit(void)*/
5874 /* LDV_COMMENT_BEGIN_PREP */
5875 #define DRIVER_AUTHOR \
5876 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5877 "Dwaine Garden <DwaineGarden@rogers.com>"
5878 #define DRIVER_NAME "usbvision"
5879 #define DRIVER_ALIAS "USBVision"
5880 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5881 #define DRIVER_LICENSE "GPL"
5882 #define USBVISION_VERSION_STRING "0.9.11"
5883 #define ENABLE_HEXDUMP 0
5884 #ifdef USBVISION_DEBUG
5885 #define PDEBUG(level, fmt, args...) { \
5886 if (video_debug & (level)) \
5887 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5888 __func__, __LINE__ , ## args); \
5889 }
5890 #else
5891 #define PDEBUG(level, fmt, args...) do {} while (0)
5892 #endif
5893 #define DBG_IO (1 << 1)
5894 #define DBG_PROBE (1 << 2)
5895 #define DBG_MMAP (1 << 3)
5896 #define rmspace(str) while (*str == ' ') str++;
5897 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5898 #define YES_NO(x) ((x) ? "Yes" : "No")
5899 #ifdef CONFIG_VIDEO_ADV_DEBUG
5900 #endif
5901 #ifdef CONFIG_VIDEO_ADV_DEBUG
5902 #endif
5903 /* LDV_COMMENT_END_PREP */
5904 /* LDV_COMMENT_FUNCTION_CALL Kernel calls driver release function before driver will be uploaded from kernel. This function declared as "MODULE_EXIT(function name)". */
5905 ldv_handler_precall();
5906 usbvision_exit();
5907
5908 /* LDV_COMMENT_FUNCTION_CALL Checks that all resources and locks are correctly released before the driver will be unloaded. */
5909 ldv_final: ldv_check_final_state();
5910
5911 /* LDV_COMMENT_END_FUNCTION_CALL_SECTION */
5912 return;
5913
5914 }
5915 #endif
5916
5917 /* LDV_COMMENT_END_MAIN */ 1
2 #include <linux/kernel.h>
3 bool ldv_is_err(const void *ptr);
4 bool ldv_is_err_or_null(const void *ptr);
5 void* ldv_err_ptr(long error);
6 long ldv_ptr_err(const void *ptr);
7
8 #include <linux/module.h>
9 #include <linux/usb.h>
10
11 // Provide model function prototypes before their usage.
12 void ldv_usb_get_dev(void);
13 void ldv_usb_put_dev(void);
14 #line 1 "/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/ri/132_1a/drivers/media/usb/usbvision/usbvision-video.c"
15
16 /*
17 * USB USBVISION Video device driver 0.9.10
18 *
19 *
20 *
21 * Copyright (c) 1999-2005 Joerg Heckenbach <joerg@heckenbach-aw.de>
22 *
23 * This module is part of usbvision driver project.
24 *
25 * This program is free software; you can redistribute it and/or modify
26 * it under the terms of the GNU General Public License as published by
27 * the Free Software Foundation; either version 2 of the License, or
28 * (at your option) any later version.
29 *
30 * This program is distributed in the hope that it will be useful,
31 * but WITHOUT ANY WARRANTY; without even the implied warranty of
32 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 * GNU General Public License for more details.
34 *
35 * You should have received a copy of the GNU General Public License
36 * along with this program; if not, write to the Free Software
37 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
38 *
39 * Let's call the version 0.... until compression decoding is completely
40 * implemented.
41 *
42 * This driver is written by Jose Ignacio Gijon and Joerg Heckenbach.
43 * It was based on USB CPiA driver written by Peter Pregler,
44 * Scott J. Bertin and Johannes Erdfelt
45 * Ideas are taken from bttv driver by Ralph Metzler, Marcus Metzler &
46 * Gerd Knorr and zoran 36120/36125 driver by Pauline Middelink
47 * Updates to driver completed by Dwaine P. Garden
48 *
49 *
50 * TODO:
51 * - use submit_urb for all setup packets
52 * - Fix memory settings for nt1004. It is 4 times as big as the
53 * nt1003 memory.
54 * - Add audio on endpoint 3 for nt1004 chip.
55 * Seems impossible, needs a codec interface. Which one?
56 * - Clean up the driver.
57 * - optimization for performance.
58 * - Add Videotext capability (VBI). Working on it.....
59 * - Check audio for other devices
60 *
61 */
62
63 #include <linux/kernel.h>
64 #include <linux/list.h>
65 #include <linux/timer.h>
66 #include <linux/slab.h>
67 #include <linux/mm.h>
68 #include <linux/highmem.h>
69 #include <linux/vmalloc.h>
70 #include <linux/module.h>
71 #include <linux/init.h>
72 #include <linux/spinlock.h>
73 #include <linux/io.h>
74 #include <linux/videodev2.h>
75 #include <linux/i2c.h>
76
77 #include <media/saa7115.h>
78 #include <media/v4l2-common.h>
79 #include <media/v4l2-ioctl.h>
80 #include <media/tuner.h>
81
82 #include <linux/workqueue.h>
83
84 #include "usbvision.h"
85 #include "usbvision-cards.h"
86
87 #define DRIVER_AUTHOR \
88 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
89 "Dwaine Garden <DwaineGarden@rogers.com>"
90 #define DRIVER_NAME "usbvision"
91 #define DRIVER_ALIAS "USBVision"
92 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
93 #define DRIVER_LICENSE "GPL"
94 #define USBVISION_VERSION_STRING "0.9.11"
95
96 #define ENABLE_HEXDUMP 0 /* Enable if you need it */
97
98
99 #ifdef USBVISION_DEBUG
100 #define PDEBUG(level, fmt, args...) { \
101 if (video_debug & (level)) \
102 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
103 __func__, __LINE__ , ## args); \
104 }
105 #else
106 #define PDEBUG(level, fmt, args...) do {} while (0)
107 #endif
108
109 #define DBG_IO (1 << 1)
110 #define DBG_PROBE (1 << 2)
111 #define DBG_MMAP (1 << 3)
112
113 /* String operations */
114 #define rmspace(str) while (*str == ' ') str++;
115 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
116
117
118 /* sequential number of usbvision device */
119 static int usbvision_nr;
120
121 static struct usbvision_v4l2_format_st usbvision_v4l2_format[] = {
122 { 1, 1, 8, V4L2_PIX_FMT_GREY , "GREY" },
123 { 1, 2, 16, V4L2_PIX_FMT_RGB565 , "RGB565" },
124 { 1, 3, 24, V4L2_PIX_FMT_RGB24 , "RGB24" },
125 { 1, 4, 32, V4L2_PIX_FMT_RGB32 , "RGB32" },
126 { 1, 2, 16, V4L2_PIX_FMT_RGB555 , "RGB555" },
127 { 1, 2, 16, V4L2_PIX_FMT_YUYV , "YUV422" },
128 { 1, 2, 12, V4L2_PIX_FMT_YVU420 , "YUV420P" }, /* 1.5 ! */
129 { 1, 2, 16, V4L2_PIX_FMT_YUV422P , "YUV422P" }
130 };
131
132 /* Function prototypes */
133 static void usbvision_release(struct usb_usbvision *usbvision);
134
135 /* Default initialization of device driver parameters */
136 /* Set the default format for ISOC endpoint */
137 static int isoc_mode = ISOC_MODE_COMPRESS;
138 /* Set the default Debug Mode of the device driver */
139 static int video_debug;
140 /* Set the default device to power on at startup */
141 static int power_on_at_open = 1;
142 /* Sequential Number of Video Device */
143 static int video_nr = -1;
144 /* Sequential Number of Radio Device */
145 static int radio_nr = -1;
146
147 /* Grab parameters for the device driver */
148
149 /* Showing parameters under SYSFS */
150 module_param(isoc_mode, int, 0444);
151 module_param(video_debug, int, 0444);
152 module_param(power_on_at_open, int, 0444);
153 module_param(video_nr, int, 0444);
154 module_param(radio_nr, int, 0444);
155
156 MODULE_PARM_DESC(isoc_mode, " Set the default format for ISOC endpoint. Default: 0x60 (Compression On)");
157 MODULE_PARM_DESC(video_debug, " Set the default Debug Mode of the device driver. Default: 0 (Off)");
158 MODULE_PARM_DESC(power_on_at_open, " Set the default device to power on when device is opened. Default: 1 (On)");
159 MODULE_PARM_DESC(video_nr, "Set video device number (/dev/videoX). Default: -1 (autodetect)");
160 MODULE_PARM_DESC(radio_nr, "Set radio device number (/dev/radioX). Default: -1 (autodetect)");
161
162
163 /* Misc stuff */
164 MODULE_AUTHOR(DRIVER_AUTHOR);
165 MODULE_DESCRIPTION(DRIVER_DESC);
166 MODULE_LICENSE(DRIVER_LICENSE);
167 MODULE_VERSION(USBVISION_VERSION_STRING);
168 MODULE_ALIAS(DRIVER_ALIAS);
169
170
171 /*****************************************************************************/
172 /* SYSFS Code - Copied from the stv680.c usb module. */
173 /* Device information is located at /sys/class/video4linux/video0 */
174 /* Device parameters information is located at /sys/module/usbvision */
175 /* Device USB Information is located at */
176 /* /sys/bus/usb/drivers/USBVision Video Grabber */
177 /*****************************************************************************/
178
179 #define YES_NO(x) ((x) ? "Yes" : "No")
180
181 static inline struct usb_usbvision *cd_to_usbvision(struct device *cd)
182 {
183 struct video_device *vdev =
184 container_of(cd, struct video_device, dev);
185 return video_get_drvdata(vdev);
186 }
187
188 static ssize_t show_version(struct device *cd,
189 struct device_attribute *attr, char *buf)
190 {
191 return sprintf(buf, "%s\n", USBVISION_VERSION_STRING);
192 }
193 static DEVICE_ATTR(version, S_IRUGO, show_version, NULL);
194
195 static ssize_t show_model(struct device *cd,
196 struct device_attribute *attr, char *buf)
197 {
198 struct video_device *vdev =
199 container_of(cd, struct video_device, dev);
200 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
201 return sprintf(buf, "%s\n",
202 usbvision_device_data[usbvision->dev_model].model_string);
203 }
204 static DEVICE_ATTR(model, S_IRUGO, show_model, NULL);
205
206 static ssize_t show_hue(struct device *cd,
207 struct device_attribute *attr, char *buf)
208 {
209 struct video_device *vdev =
210 container_of(cd, struct video_device, dev);
211 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
212 struct v4l2_control ctrl;
213 ctrl.id = V4L2_CID_HUE;
214 ctrl.value = 0;
215 if (usbvision->user)
216 call_all(usbvision, core, g_ctrl, &ctrl);
217 return sprintf(buf, "%d\n", ctrl.value);
218 }
219 static DEVICE_ATTR(hue, S_IRUGO, show_hue, NULL);
220
221 static ssize_t show_contrast(struct device *cd,
222 struct device_attribute *attr, char *buf)
223 {
224 struct video_device *vdev =
225 container_of(cd, struct video_device, dev);
226 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
227 struct v4l2_control ctrl;
228 ctrl.id = V4L2_CID_CONTRAST;
229 ctrl.value = 0;
230 if (usbvision->user)
231 call_all(usbvision, core, g_ctrl, &ctrl);
232 return sprintf(buf, "%d\n", ctrl.value);
233 }
234 static DEVICE_ATTR(contrast, S_IRUGO, show_contrast, NULL);
235
236 static ssize_t show_brightness(struct device *cd,
237 struct device_attribute *attr, char *buf)
238 {
239 struct video_device *vdev =
240 container_of(cd, struct video_device, dev);
241 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
242 struct v4l2_control ctrl;
243 ctrl.id = V4L2_CID_BRIGHTNESS;
244 ctrl.value = 0;
245 if (usbvision->user)
246 call_all(usbvision, core, g_ctrl, &ctrl);
247 return sprintf(buf, "%d\n", ctrl.value);
248 }
249 static DEVICE_ATTR(brightness, S_IRUGO, show_brightness, NULL);
250
251 static ssize_t show_saturation(struct device *cd,
252 struct device_attribute *attr, char *buf)
253 {
254 struct video_device *vdev =
255 container_of(cd, struct video_device, dev);
256 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
257 struct v4l2_control ctrl;
258 ctrl.id = V4L2_CID_SATURATION;
259 ctrl.value = 0;
260 if (usbvision->user)
261 call_all(usbvision, core, g_ctrl, &ctrl);
262 return sprintf(buf, "%d\n", ctrl.value);
263 }
264 static DEVICE_ATTR(saturation, S_IRUGO, show_saturation, NULL);
265
266 static ssize_t show_streaming(struct device *cd,
267 struct device_attribute *attr, char *buf)
268 {
269 struct video_device *vdev =
270 container_of(cd, struct video_device, dev);
271 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
272 return sprintf(buf, "%s\n",
273 YES_NO(usbvision->streaming == stream_on ? 1 : 0));
274 }
275 static DEVICE_ATTR(streaming, S_IRUGO, show_streaming, NULL);
276
277 static ssize_t show_compression(struct device *cd,
278 struct device_attribute *attr, char *buf)
279 {
280 struct video_device *vdev =
281 container_of(cd, struct video_device, dev);
282 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
283 return sprintf(buf, "%s\n",
284 YES_NO(usbvision->isoc_mode == ISOC_MODE_COMPRESS));
285 }
286 static DEVICE_ATTR(compression, S_IRUGO, show_compression, NULL);
287
288 static ssize_t show_device_bridge(struct device *cd,
289 struct device_attribute *attr, char *buf)
290 {
291 struct video_device *vdev =
292 container_of(cd, struct video_device, dev);
293 struct usb_usbvision *usbvision = video_get_drvdata(vdev);
294 return sprintf(buf, "%d\n", usbvision->bridge_type);
295 }
296 static DEVICE_ATTR(bridge, S_IRUGO, show_device_bridge, NULL);
297
298 static void usbvision_create_sysfs(struct video_device *vdev)
299 {
300 int res;
301
302 if (!vdev)
303 return;
304 do {
305 res = device_create_file(&vdev->dev, &dev_attr_version);
306 if (res < 0)
307 break;
308 res = device_create_file(&vdev->dev, &dev_attr_model);
309 if (res < 0)
310 break;
311 res = device_create_file(&vdev->dev, &dev_attr_hue);
312 if (res < 0)
313 break;
314 res = device_create_file(&vdev->dev, &dev_attr_contrast);
315 if (res < 0)
316 break;
317 res = device_create_file(&vdev->dev, &dev_attr_brightness);
318 if (res < 0)
319 break;
320 res = device_create_file(&vdev->dev, &dev_attr_saturation);
321 if (res < 0)
322 break;
323 res = device_create_file(&vdev->dev, &dev_attr_streaming);
324 if (res < 0)
325 break;
326 res = device_create_file(&vdev->dev, &dev_attr_compression);
327 if (res < 0)
328 break;
329 res = device_create_file(&vdev->dev, &dev_attr_bridge);
330 if (res >= 0)
331 return;
332 } while (0);
333
334 dev_err(&vdev->dev, "%s error: %d\n", __func__, res);
335 }
336
337 static void usbvision_remove_sysfs(struct video_device *vdev)
338 {
339 if (vdev) {
340 device_remove_file(&vdev->dev, &dev_attr_version);
341 device_remove_file(&vdev->dev, &dev_attr_model);
342 device_remove_file(&vdev->dev, &dev_attr_hue);
343 device_remove_file(&vdev->dev, &dev_attr_contrast);
344 device_remove_file(&vdev->dev, &dev_attr_brightness);
345 device_remove_file(&vdev->dev, &dev_attr_saturation);
346 device_remove_file(&vdev->dev, &dev_attr_streaming);
347 device_remove_file(&vdev->dev, &dev_attr_compression);
348 device_remove_file(&vdev->dev, &dev_attr_bridge);
349 }
350 }
351
352 /*
353 * usbvision_open()
354 *
355 * This is part of Video 4 Linux API. The driver can be opened by one
356 * client only (checks internal counter 'usbvision->user'). The procedure
357 * then allocates buffers needed for video processing.
358 *
359 */
360 static int usbvision_v4l2_open(struct file *file)
361 {
362 struct usb_usbvision *usbvision = video_drvdata(file);
363 int err_code = 0;
364
365 PDEBUG(DBG_IO, "open");
366
367 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
368 return -ERESTARTSYS;
369 usbvision_reset_power_off_timer(usbvision);
370
371 if (usbvision->user)
372 err_code = -EBUSY;
373 else {
374 /* Allocate memory for the scratch ring buffer */
375 err_code = usbvision_scratch_alloc(usbvision);
376 if (isoc_mode == ISOC_MODE_COMPRESS) {
377 /* Allocate intermediate decompression buffers
378 only if needed */
379 err_code = usbvision_decompress_alloc(usbvision);
380 }
381 if (err_code) {
382 /* Deallocate all buffers if trouble */
383 usbvision_scratch_free(usbvision);
384 usbvision_decompress_free(usbvision);
385 }
386 }
387
388 /* If so far no errors then we shall start the camera */
389 if (!err_code) {
390 if (usbvision->power == 0) {
391 usbvision_power_on(usbvision);
392 usbvision_i2c_register(usbvision);
393 }
394
395 /* Send init sequence only once, it's large! */
396 if (!usbvision->initialized) {
397 int setup_ok = 0;
398 setup_ok = usbvision_setup(usbvision, isoc_mode);
399 if (setup_ok)
400 usbvision->initialized = 1;
401 else
402 err_code = -EBUSY;
403 }
404
405 if (!err_code) {
406 usbvision_begin_streaming(usbvision);
407 err_code = usbvision_init_isoc(usbvision);
408 /* device must be initialized before isoc transfer */
409 usbvision_muxsel(usbvision, 0);
410 usbvision->user++;
411 } else {
412 if (power_on_at_open) {
413 usbvision_i2c_unregister(usbvision);
414 usbvision_power_off(usbvision);
415 usbvision->initialized = 0;
416 }
417 }
418 }
419
420 /* prepare queues */
421 usbvision_empty_framequeues(usbvision);
422 mutex_unlock(&usbvision->v4l2_lock);
423
424 PDEBUG(DBG_IO, "success");
425 return err_code;
426 }
427
428 /*
429 * usbvision_v4l2_close()
430 *
431 * This is part of Video 4 Linux API. The procedure
432 * stops streaming and deallocates all buffers that were earlier
433 * allocated in usbvision_v4l2_open().
434 *
435 */
436 static int usbvision_v4l2_close(struct file *file)
437 {
438 struct usb_usbvision *usbvision = video_drvdata(file);
439
440 PDEBUG(DBG_IO, "close");
441
442 mutex_lock(&usbvision->v4l2_lock);
443 usbvision_audio_off(usbvision);
444 usbvision_restart_isoc(usbvision);
445 usbvision_stop_isoc(usbvision);
446
447 usbvision_decompress_free(usbvision);
448 usbvision_frames_free(usbvision);
449 usbvision_empty_framequeues(usbvision);
450 usbvision_scratch_free(usbvision);
451
452 usbvision->user--;
453
454 if (power_on_at_open) {
455 /* power off in a little while
456 to avoid off/on every close/open short sequences */
457 usbvision_set_power_off_timer(usbvision);
458 usbvision->initialized = 0;
459 }
460
461 if (usbvision->remove_pending) {
462 printk(KERN_INFO "%s: Final disconnect\n", __func__);
463 usbvision_release(usbvision);
464 return 0;
465 }
466 mutex_unlock(&usbvision->v4l2_lock);
467
468 PDEBUG(DBG_IO, "success");
469 return 0;
470 }
471
472
473 /*
474 * usbvision_ioctl()
475 *
476 * This is part of Video 4 Linux API. The procedure handles ioctl() calls.
477 *
478 */
479 #ifdef CONFIG_VIDEO_ADV_DEBUG
480 static int vidioc_g_register(struct file *file, void *priv,
481 struct v4l2_dbg_register *reg)
482 {
483 struct usb_usbvision *usbvision = video_drvdata(file);
484 int err_code;
485
486 /* NT100x has a 8-bit register space */
487 err_code = usbvision_read_reg(usbvision, reg->reg&0xff);
488 if (err_code < 0) {
489 dev_err(&usbvision->vdev->dev,
490 "%s: VIDIOC_DBG_G_REGISTER failed: error %d\n",
491 __func__, err_code);
492 return err_code;
493 }
494 reg->val = err_code;
495 reg->size = 1;
496 return 0;
497 }
498
499 static int vidioc_s_register(struct file *file, void *priv,
500 const struct v4l2_dbg_register *reg)
501 {
502 struct usb_usbvision *usbvision = video_drvdata(file);
503 int err_code;
504
505 /* NT100x has a 8-bit register space */
506 err_code = usbvision_write_reg(usbvision, reg->reg & 0xff, reg->val);
507 if (err_code < 0) {
508 dev_err(&usbvision->vdev->dev,
509 "%s: VIDIOC_DBG_S_REGISTER failed: error %d\n",
510 __func__, err_code);
511 return err_code;
512 }
513 return 0;
514 }
515 #endif
516
517 static int vidioc_querycap(struct file *file, void *priv,
518 struct v4l2_capability *vc)
519 {
520 struct usb_usbvision *usbvision = video_drvdata(file);
521
522 strlcpy(vc->driver, "USBVision", sizeof(vc->driver));
523 strlcpy(vc->card,
524 usbvision_device_data[usbvision->dev_model].model_string,
525 sizeof(vc->card));
526 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
527 vc->device_caps = V4L2_CAP_VIDEO_CAPTURE |
528 V4L2_CAP_AUDIO |
529 V4L2_CAP_READWRITE |
530 V4L2_CAP_STREAMING |
531 (usbvision->have_tuner ? V4L2_CAP_TUNER : 0);
532 vc->capabilities = vc->device_caps | V4L2_CAP_DEVICE_CAPS;
533 return 0;
534 }
535
536 static int vidioc_enum_input(struct file *file, void *priv,
537 struct v4l2_input *vi)
538 {
539 struct usb_usbvision *usbvision = video_drvdata(file);
540 int chan;
541
542 if (vi->index >= usbvision->video_inputs)
543 return -EINVAL;
544 if (usbvision->have_tuner)
545 chan = vi->index;
546 else
547 chan = vi->index + 1; /* skip Television string*/
548
549 /* Determine the requested input characteristics
550 specific for each usbvision card model */
551 switch (chan) {
552 case 0:
553 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) {
554 strcpy(vi->name, "White Video Input");
555 } else {
556 strcpy(vi->name, "Television");
557 vi->type = V4L2_INPUT_TYPE_TUNER;
558 vi->audioset = 1;
559 vi->tuner = chan;
560 vi->std = USBVISION_NORMS;
561 }
562 break;
563 case 1:
564 vi->type = V4L2_INPUT_TYPE_CAMERA;
565 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
566 strcpy(vi->name, "Green Video Input");
567 else
568 strcpy(vi->name, "Composite Video Input");
569 vi->std = V4L2_STD_PAL;
570 break;
571 case 2:
572 vi->type = V4L2_INPUT_TYPE_CAMERA;
573 if (usbvision_device_data[usbvision->dev_model].video_channels == 4)
574 strcpy(vi->name, "Yellow Video Input");
575 else
576 strcpy(vi->name, "S-Video Input");
577 vi->std = V4L2_STD_PAL;
578 break;
579 case 3:
580 vi->type = V4L2_INPUT_TYPE_CAMERA;
581 strcpy(vi->name, "Red Video Input");
582 vi->std = V4L2_STD_PAL;
583 break;
584 }
585 return 0;
586 }
587
588 static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)
589 {
590 struct usb_usbvision *usbvision = video_drvdata(file);
591
592 *input = usbvision->ctl_input;
593 return 0;
594 }
595
596 static int vidioc_s_input(struct file *file, void *priv, unsigned int input)
597 {
598 struct usb_usbvision *usbvision = video_drvdata(file);
599
600 if (input >= usbvision->video_inputs)
601 return -EINVAL;
602
603 usbvision_muxsel(usbvision, input);
604 usbvision_set_input(usbvision);
605 usbvision_set_output(usbvision,
606 usbvision->curwidth,
607 usbvision->curheight);
608 return 0;
609 }
610
611 static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)
612 {
613 struct usb_usbvision *usbvision = video_drvdata(file);
614
615 usbvision->tvnorm_id = id;
616
617 call_all(usbvision, video, s_std, usbvision->tvnorm_id);
618 /* propagate the change to the decoder */
619 usbvision_muxsel(usbvision, usbvision->ctl_input);
620
621 return 0;
622 }
623
624 static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)
625 {
626 struct usb_usbvision *usbvision = video_drvdata(file);
627
628 *id = usbvision->tvnorm_id;
629 return 0;
630 }
631
632 static int vidioc_g_tuner(struct file *file, void *priv,
633 struct v4l2_tuner *vt)
634 {
635 struct usb_usbvision *usbvision = video_drvdata(file);
636
637 if (!usbvision->have_tuner || vt->index) /* Only tuner 0 */
638 return -EINVAL;
639 if (usbvision->radio) {
640 strcpy(vt->name, "Radio");
641 vt->type = V4L2_TUNER_RADIO;
642 } else {
643 strcpy(vt->name, "Television");
644 }
645 /* Let clients fill in the remainder of this struct */
646 call_all(usbvision, tuner, g_tuner, vt);
647
648 return 0;
649 }
650
651 static int vidioc_s_tuner(struct file *file, void *priv,
652 const struct v4l2_tuner *vt)
653 {
654 struct usb_usbvision *usbvision = video_drvdata(file);
655
656 /* Only no or one tuner for now */
657 if (!usbvision->have_tuner || vt->index)
658 return -EINVAL;
659 /* let clients handle this */
660 call_all(usbvision, tuner, s_tuner, vt);
661
662 return 0;
663 }
664
665 static int vidioc_g_frequency(struct file *file, void *priv,
666 struct v4l2_frequency *freq)
667 {
668 struct usb_usbvision *usbvision = video_drvdata(file);
669
670 freq->tuner = 0; /* Only one tuner */
671 if (usbvision->radio)
672 freq->type = V4L2_TUNER_RADIO;
673 else
674 freq->type = V4L2_TUNER_ANALOG_TV;
675 freq->frequency = usbvision->freq;
676
677 return 0;
678 }
679
680 static int vidioc_s_frequency(struct file *file, void *priv,
681 const struct v4l2_frequency *freq)
682 {
683 struct usb_usbvision *usbvision = video_drvdata(file);
684
685 /* Only no or one tuner for now */
686 if (!usbvision->have_tuner || freq->tuner)
687 return -EINVAL;
688
689 usbvision->freq = freq->frequency;
690 call_all(usbvision, tuner, s_frequency, freq);
691
692 return 0;
693 }
694
695 static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)
696 {
697 struct usb_usbvision *usbvision = video_drvdata(file);
698
699 if (usbvision->radio)
700 strcpy(a->name, "Radio");
701 else
702 strcpy(a->name, "TV");
703
704 return 0;
705 }
706
707 static int vidioc_s_audio(struct file *file, void *fh,
708 const struct v4l2_audio *a)
709 {
710 if (a->index)
711 return -EINVAL;
712 return 0;
713 }
714
715 static int vidioc_queryctrl(struct file *file, void *priv,
716 struct v4l2_queryctrl *ctrl)
717 {
718 struct usb_usbvision *usbvision = video_drvdata(file);
719
720 call_all(usbvision, core, queryctrl, ctrl);
721
722 if (!ctrl->type)
723 return -EINVAL;
724
725 return 0;
726 }
727
728 static int vidioc_g_ctrl(struct file *file, void *priv,
729 struct v4l2_control *ctrl)
730 {
731 struct usb_usbvision *usbvision = video_drvdata(file);
732
733 call_all(usbvision, core, g_ctrl, ctrl);
734 return 0;
735 }
736
737 static int vidioc_s_ctrl(struct file *file, void *priv,
738 struct v4l2_control *ctrl)
739 {
740 struct usb_usbvision *usbvision = video_drvdata(file);
741
742 call_all(usbvision, core, s_ctrl, ctrl);
743 return 0;
744 }
745
746 static int vidioc_reqbufs(struct file *file,
747 void *priv, struct v4l2_requestbuffers *vr)
748 {
749 struct usb_usbvision *usbvision = video_drvdata(file);
750 int ret;
751
752 RESTRICT_TO_RANGE(vr->count, 1, USBVISION_NUMFRAMES);
753
754 /* Check input validity:
755 the user must do a VIDEO CAPTURE and MMAP method. */
756 if (vr->memory != V4L2_MEMORY_MMAP)
757 return -EINVAL;
758
759 if (usbvision->streaming == stream_on) {
760 ret = usbvision_stream_interrupt(usbvision);
761 if (ret)
762 return ret;
763 }
764
765 usbvision_frames_free(usbvision);
766 usbvision_empty_framequeues(usbvision);
767 vr->count = usbvision_frames_alloc(usbvision, vr->count);
768
769 usbvision->cur_frame = NULL;
770
771 return 0;
772 }
773
774 static int vidioc_querybuf(struct file *file,
775 void *priv, struct v4l2_buffer *vb)
776 {
777 struct usb_usbvision *usbvision = video_drvdata(file);
778 struct usbvision_frame *frame;
779
780 /* FIXME : must control
781 that buffers are mapped (VIDIOC_REQBUFS has been called) */
782 if (vb->index >= usbvision->num_frames)
783 return -EINVAL;
784 /* Updating the corresponding frame state */
785 vb->flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
786 frame = &usbvision->frame[vb->index];
787 if (frame->grabstate >= frame_state_ready)
788 vb->flags |= V4L2_BUF_FLAG_QUEUED;
789 if (frame->grabstate >= frame_state_done)
790 vb->flags |= V4L2_BUF_FLAG_DONE;
791 if (frame->grabstate == frame_state_unused)
792 vb->flags |= V4L2_BUF_FLAG_MAPPED;
793 vb->memory = V4L2_MEMORY_MMAP;
794
795 vb->m.offset = vb->index * PAGE_ALIGN(usbvision->max_frame_size);
796
797 vb->memory = V4L2_MEMORY_MMAP;
798 vb->field = V4L2_FIELD_NONE;
799 vb->length = usbvision->curwidth *
800 usbvision->curheight *
801 usbvision->palette.bytes_per_pixel;
802 vb->timestamp = usbvision->frame[vb->index].timestamp;
803 vb->sequence = usbvision->frame[vb->index].sequence;
804 return 0;
805 }
806
807 static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)
808 {
809 struct usb_usbvision *usbvision = video_drvdata(file);
810 struct usbvision_frame *frame;
811 unsigned long lock_flags;
812
813 /* FIXME : works only on VIDEO_CAPTURE MODE, MMAP. */
814 if (vb->index >= usbvision->num_frames)
815 return -EINVAL;
816
817 frame = &usbvision->frame[vb->index];
818
819 if (frame->grabstate != frame_state_unused)
820 return -EAGAIN;
821
822 /* Mark it as ready and enqueue frame */
823 frame->grabstate = frame_state_ready;
824 frame->scanstate = scan_state_scanning;
825 frame->scanlength = 0; /* Accumulated in usbvision_parse_data() */
826
827 vb->flags &= ~V4L2_BUF_FLAG_DONE;
828
829 /* set v4l2_format index */
830 frame->v4l2_format = usbvision->palette;
831
832 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
833 list_add_tail(&usbvision->frame[vb->index].frame, &usbvision->inqueue);
834 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
835
836 return 0;
837 }
838
839 static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)
840 {
841 struct usb_usbvision *usbvision = video_drvdata(file);
842 int ret;
843 struct usbvision_frame *f;
844 unsigned long lock_flags;
845
846 if (list_empty(&(usbvision->outqueue))) {
847 if (usbvision->streaming == stream_idle)
848 return -EINVAL;
849 ret = wait_event_interruptible
850 (usbvision->wait_frame,
851 !list_empty(&(usbvision->outqueue)));
852 if (ret)
853 return ret;
854 }
855
856 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
857 f = list_entry(usbvision->outqueue.next,
858 struct usbvision_frame, frame);
859 list_del(usbvision->outqueue.next);
860 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
861
862 f->grabstate = frame_state_unused;
863
864 vb->memory = V4L2_MEMORY_MMAP;
865 vb->flags = V4L2_BUF_FLAG_MAPPED |
866 V4L2_BUF_FLAG_QUEUED |
867 V4L2_BUF_FLAG_DONE |
868 V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
869 vb->index = f->index;
870 vb->sequence = f->sequence;
871 vb->timestamp = f->timestamp;
872 vb->field = V4L2_FIELD_NONE;
873 vb->bytesused = f->scanlength;
874
875 return 0;
876 }
877
878 static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
879 {
880 struct usb_usbvision *usbvision = video_drvdata(file);
881
882 usbvision->streaming = stream_on;
883 call_all(usbvision, video, s_stream, 1);
884
885 return 0;
886 }
887
888 static int vidioc_streamoff(struct file *file,
889 void *priv, enum v4l2_buf_type type)
890 {
891 struct usb_usbvision *usbvision = video_drvdata(file);
892
893 if (type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
894 return -EINVAL;
895
896 if (usbvision->streaming == stream_on) {
897 usbvision_stream_interrupt(usbvision);
898 /* Stop all video streamings */
899 call_all(usbvision, video, s_stream, 0);
900 }
901 usbvision_empty_framequeues(usbvision);
902
903 return 0;
904 }
905
906 static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
907 struct v4l2_fmtdesc *vfd)
908 {
909 if (vfd->index >= USBVISION_SUPPORTED_PALETTES - 1)
910 return -EINVAL;
911 strcpy(vfd->description, usbvision_v4l2_format[vfd->index].desc);
912 vfd->pixelformat = usbvision_v4l2_format[vfd->index].format;
913 return 0;
914 }
915
916 static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
917 struct v4l2_format *vf)
918 {
919 struct usb_usbvision *usbvision = video_drvdata(file);
920 vf->fmt.pix.width = usbvision->curwidth;
921 vf->fmt.pix.height = usbvision->curheight;
922 vf->fmt.pix.pixelformat = usbvision->palette.format;
923 vf->fmt.pix.bytesperline =
924 usbvision->curwidth * usbvision->palette.bytes_per_pixel;
925 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline * usbvision->curheight;
926 vf->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
927 vf->fmt.pix.field = V4L2_FIELD_NONE; /* Always progressive image */
928
929 return 0;
930 }
931
932 static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
933 struct v4l2_format *vf)
934 {
935 struct usb_usbvision *usbvision = video_drvdata(file);
936 int format_idx;
937
938 /* Find requested format in available ones */
939 for (format_idx = 0; format_idx < USBVISION_SUPPORTED_PALETTES; format_idx++) {
940 if (vf->fmt.pix.pixelformat ==
941 usbvision_v4l2_format[format_idx].format) {
942 usbvision->palette = usbvision_v4l2_format[format_idx];
943 break;
944 }
945 }
946 /* robustness */
947 if (format_idx == USBVISION_SUPPORTED_PALETTES)
948 return -EINVAL;
949 RESTRICT_TO_RANGE(vf->fmt.pix.width, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);
950 RESTRICT_TO_RANGE(vf->fmt.pix.height, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);
951
952 vf->fmt.pix.bytesperline = vf->fmt.pix.width*
953 usbvision->palette.bytes_per_pixel;
954 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline*vf->fmt.pix.height;
955
956 return 0;
957 }
958
959 static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
960 struct v4l2_format *vf)
961 {
962 struct usb_usbvision *usbvision = video_drvdata(file);
963 int ret;
964
965 ret = vidioc_try_fmt_vid_cap(file, priv, vf);
966 if (ret)
967 return ret;
968
969 /* stop io in case it is already in progress */
970 if (usbvision->streaming == stream_on) {
971 ret = usbvision_stream_interrupt(usbvision);
972 if (ret)
973 return ret;
974 }
975 usbvision_frames_free(usbvision);
976 usbvision_empty_framequeues(usbvision);
977
978 usbvision->cur_frame = NULL;
979
980 /* by now we are committed to the new data... */
981 usbvision_set_output(usbvision, vf->fmt.pix.width, vf->fmt.pix.height);
982
983 return 0;
984 }
985
986 static ssize_t usbvision_read(struct file *file, char __user *buf,
987 size_t count, loff_t *ppos)
988 {
989 struct usb_usbvision *usbvision = video_drvdata(file);
990 int noblock = file->f_flags & O_NONBLOCK;
991 unsigned long lock_flags;
992 int ret, i;
993 struct usbvision_frame *frame;
994
995 PDEBUG(DBG_IO, "%s: %ld bytes, noblock=%d", __func__,
996 (unsigned long)count, noblock);
997
998 if (!USBVISION_IS_OPERATIONAL(usbvision) || (buf == NULL))
999 return -EFAULT;
1000
1001 /* This entry point is compatible with the mmap routines
1002 so that a user can do either VIDIOC_QBUF/VIDIOC_DQBUF
1003 to get frames or call read on the device. */
1004 if (!usbvision->num_frames) {
1005 /* First, allocate some frames to work with
1006 if this has not been done with VIDIOC_REQBUF */
1007 usbvision_frames_free(usbvision);
1008 usbvision_empty_framequeues(usbvision);
1009 usbvision_frames_alloc(usbvision, USBVISION_NUMFRAMES);
1010 }
1011
1012 if (usbvision->streaming != stream_on) {
1013 /* no stream is running, make it running ! */
1014 usbvision->streaming = stream_on;
1015 call_all(usbvision, video, s_stream, 1);
1016 }
1017
1018 /* Then, enqueue as many frames as possible
1019 (like a user of VIDIOC_QBUF would do) */
1020 for (i = 0; i < usbvision->num_frames; i++) {
1021 frame = &usbvision->frame[i];
1022 if (frame->grabstate == frame_state_unused) {
1023 /* Mark it as ready and enqueue frame */
1024 frame->grabstate = frame_state_ready;
1025 frame->scanstate = scan_state_scanning;
1026 /* Accumulated in usbvision_parse_data() */
1027 frame->scanlength = 0;
1028
1029 /* set v4l2_format index */
1030 frame->v4l2_format = usbvision->palette;
1031
1032 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1033 list_add_tail(&frame->frame, &usbvision->inqueue);
1034 spin_unlock_irqrestore(&usbvision->queue_lock,
1035 lock_flags);
1036 }
1037 }
1038
1039 /* Then try to steal a frame (like a VIDIOC_DQBUF would do) */
1040 if (list_empty(&(usbvision->outqueue))) {
1041 if (noblock)
1042 return -EAGAIN;
1043
1044 ret = wait_event_interruptible
1045 (usbvision->wait_frame,
1046 !list_empty(&(usbvision->outqueue)));
1047 if (ret)
1048 return ret;
1049 }
1050
1051 spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
1052 frame = list_entry(usbvision->outqueue.next,
1053 struct usbvision_frame, frame);
1054 list_del(usbvision->outqueue.next);
1055 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags);
1056
1057 /* An error returns an empty frame */
1058 if (frame->grabstate == frame_state_error) {
1059 frame->bytes_read = 0;
1060 return 0;
1061 }
1062
1063 PDEBUG(DBG_IO, "%s: frmx=%d, bytes_read=%ld, scanlength=%ld",
1064 __func__,
1065 frame->index, frame->bytes_read, frame->scanlength);
1066
1067 /* copy bytes to user space; we allow for partials reads */
1068 if ((count + frame->bytes_read) > (unsigned long)frame->scanlength)
1069 count = frame->scanlength - frame->bytes_read;
1070
1071 if (copy_to_user(buf, frame->data + frame->bytes_read, count))
1072 return -EFAULT;
1073
1074 frame->bytes_read += count;
1075 PDEBUG(DBG_IO, "%s: {copy} count used=%ld, new bytes_read=%ld",
1076 __func__,
1077 (unsigned long)count, frame->bytes_read);
1078
1079 /* For now, forget the frame if it has not been read in one shot. */
1080 /* if (frame->bytes_read >= frame->scanlength) {*/ /* All data has been read */
1081 frame->bytes_read = 0;
1082
1083 /* Mark it as available to be used again. */
1084 frame->grabstate = frame_state_unused;
1085 /* } */
1086
1087 return count;
1088 }
1089
1090 static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf,
1091 size_t count, loff_t *ppos)
1092 {
1093 struct usb_usbvision *usbvision = video_drvdata(file);
1094 int res;
1095
1096 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1097 return -ERESTARTSYS;
1098 res = usbvision_read(file, buf, count, ppos);
1099 mutex_unlock(&usbvision->v4l2_lock);
1100 return res;
1101 }
1102
1103 static int usbvision_mmap(struct file *file, struct vm_area_struct *vma)
1104 {
1105 unsigned long size = vma->vm_end - vma->vm_start,
1106 start = vma->vm_start;
1107 void *pos;
1108 u32 i;
1109 struct usb_usbvision *usbvision = video_drvdata(file);
1110
1111 PDEBUG(DBG_MMAP, "mmap");
1112
1113 if (!USBVISION_IS_OPERATIONAL(usbvision))
1114 return -EFAULT;
1115
1116 if (!(vma->vm_flags & VM_WRITE) ||
1117 size != PAGE_ALIGN(usbvision->max_frame_size)) {
1118 return -EINVAL;
1119 }
1120
1121 for (i = 0; i < usbvision->num_frames; i++) {
1122 if (((PAGE_ALIGN(usbvision->max_frame_size)*i) >> PAGE_SHIFT) ==
1123 vma->vm_pgoff)
1124 break;
1125 }
1126 if (i == usbvision->num_frames) {
1127 PDEBUG(DBG_MMAP,
1128 "mmap: user supplied mapping address is out of range");
1129 return -EINVAL;
1130 }
1131
1132 /* VM_IO is eventually going to replace PageReserved altogether */
1133 vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
1134
1135 pos = usbvision->frame[i].data;
1136 while (size > 0) {
1137 if (vm_insert_page(vma, start, vmalloc_to_page(pos))) {
1138 PDEBUG(DBG_MMAP, "mmap: vm_insert_page failed");
1139 return -EAGAIN;
1140 }
1141 start += PAGE_SIZE;
1142 pos += PAGE_SIZE;
1143 size -= PAGE_SIZE;
1144 }
1145
1146 return 0;
1147 }
1148
1149 static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
1150 {
1151 struct usb_usbvision *usbvision = video_drvdata(file);
1152 int res;
1153
1154 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1155 return -ERESTARTSYS;
1156 res = usbvision_mmap(file, vma);
1157 mutex_unlock(&usbvision->v4l2_lock);
1158 return res;
1159 }
1160
1161 /*
1162 * Here comes the stuff for radio on usbvision based devices
1163 *
1164 */
1165 static int usbvision_radio_open(struct file *file)
1166 {
1167 struct usb_usbvision *usbvision = video_drvdata(file);
1168 int err_code = 0;
1169
1170 PDEBUG(DBG_IO, "%s:", __func__);
1171
1172 if (mutex_lock_interruptible(&usbvision->v4l2_lock))
1173 return -ERESTARTSYS;
1174 if (usbvision->user) {
1175 dev_err(&usbvision->rdev->dev,
1176 "%s: Someone tried to open an already opened USBVision Radio!\n",
1177 __func__);
1178 err_code = -EBUSY;
1179 } else {
1180 if (power_on_at_open) {
1181 usbvision_reset_power_off_timer(usbvision);
1182 if (usbvision->power == 0) {
1183 usbvision_power_on(usbvision);
1184 usbvision_i2c_register(usbvision);
1185 }
1186 }
1187
1188 /* Alternate interface 1 is is the biggest frame size */
1189 err_code = usbvision_set_alternate(usbvision);
1190 if (err_code < 0) {
1191 usbvision->last_error = err_code;
1192 err_code = -EBUSY;
1193 goto out;
1194 }
1195
1196 /* If so far no errors then we shall start the radio */
1197 usbvision->radio = 1;
1198 call_all(usbvision, tuner, s_radio);
1199 usbvision_set_audio(usbvision, USBVISION_AUDIO_RADIO);
1200 usbvision->user++;
1201 }
1202
1203 if (err_code) {
1204 if (power_on_at_open) {
1205 usbvision_i2c_unregister(usbvision);
1206 usbvision_power_off(usbvision);
1207 usbvision->initialized = 0;
1208 }
1209 }
1210 out:
1211 mutex_unlock(&usbvision->v4l2_lock);
1212 return err_code;
1213 }
1214
1215
1216 static int usbvision_radio_close(struct file *file)
1217 {
1218 struct usb_usbvision *usbvision = video_drvdata(file);
1219 int err_code = 0;
1220
1221 PDEBUG(DBG_IO, "");
1222
1223 mutex_lock(&usbvision->v4l2_lock);
1224 /* Set packet size to 0 */
1225 usbvision->iface_alt = 0;
1226 err_code = usb_set_interface(usbvision->dev, usbvision->iface,
1227 usbvision->iface_alt);
1228
1229 usbvision_audio_off(usbvision);
1230 usbvision->radio = 0;
1231 usbvision->user--;
1232
1233 if (power_on_at_open) {
1234 usbvision_set_power_off_timer(usbvision);
1235 usbvision->initialized = 0;
1236 }
1237
1238 if (usbvision->remove_pending) {
1239 printk(KERN_INFO "%s: Final disconnect\n", __func__);
1240 usbvision_release(usbvision);
1241 return err_code;
1242 }
1243
1244 mutex_unlock(&usbvision->v4l2_lock);
1245 PDEBUG(DBG_IO, "success");
1246 return err_code;
1247 }
1248
1249 /* Video registration stuff */
1250
1251 /* Video template */
1252 static const struct v4l2_file_operations usbvision_fops = {
1253 .owner = THIS_MODULE,
1254 .open = usbvision_v4l2_open,
1255 .release = usbvision_v4l2_close,
1256 .read = usbvision_v4l2_read,
1257 .mmap = usbvision_v4l2_mmap,
1258 .unlocked_ioctl = video_ioctl2,
1259 /* .poll = video_poll, */
1260 };
1261
1262 static const struct v4l2_ioctl_ops usbvision_ioctl_ops = {
1263 .vidioc_querycap = vidioc_querycap,
1264 .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
1265 .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap,
1266 .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap,
1267 .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap,
1268 .vidioc_reqbufs = vidioc_reqbufs,
1269 .vidioc_querybuf = vidioc_querybuf,
1270 .vidioc_qbuf = vidioc_qbuf,
1271 .vidioc_dqbuf = vidioc_dqbuf,
1272 .vidioc_s_std = vidioc_s_std,
1273 .vidioc_g_std = vidioc_g_std,
1274 .vidioc_enum_input = vidioc_enum_input,
1275 .vidioc_g_input = vidioc_g_input,
1276 .vidioc_s_input = vidioc_s_input,
1277 .vidioc_queryctrl = vidioc_queryctrl,
1278 .vidioc_g_audio = vidioc_g_audio,
1279 .vidioc_s_audio = vidioc_s_audio,
1280 .vidioc_g_ctrl = vidioc_g_ctrl,
1281 .vidioc_s_ctrl = vidioc_s_ctrl,
1282 .vidioc_streamon = vidioc_streamon,
1283 .vidioc_streamoff = vidioc_streamoff,
1284 .vidioc_g_tuner = vidioc_g_tuner,
1285 .vidioc_s_tuner = vidioc_s_tuner,
1286 .vidioc_g_frequency = vidioc_g_frequency,
1287 .vidioc_s_frequency = vidioc_s_frequency,
1288 #ifdef CONFIG_VIDEO_ADV_DEBUG
1289 .vidioc_g_register = vidioc_g_register,
1290 .vidioc_s_register = vidioc_s_register,
1291 #endif
1292 };
1293
1294 static struct video_device usbvision_video_template = {
1295 .fops = &usbvision_fops,
1296 .ioctl_ops = &usbvision_ioctl_ops,
1297 .name = "usbvision-video",
1298 .release = video_device_release,
1299 .tvnorms = USBVISION_NORMS,
1300 };
1301
1302
1303 /* Radio template */
1304 static const struct v4l2_file_operations usbvision_radio_fops = {
1305 .owner = THIS_MODULE,
1306 .open = usbvision_radio_open,
1307 .release = usbvision_radio_close,
1308 .unlocked_ioctl = video_ioctl2,
1309 };
1310
1311 static const struct v4l2_ioctl_ops usbvision_radio_ioctl_ops = {
1312 .vidioc_querycap = vidioc_querycap,
1313 .vidioc_enum_input = vidioc_enum_input,
1314 .vidioc_g_input = vidioc_g_input,
1315 .vidioc_s_input = vidioc_s_input,
1316 .vidioc_queryctrl = vidioc_queryctrl,
1317 .vidioc_g_audio = vidioc_g_audio,
1318 .vidioc_s_audio = vidioc_s_audio,
1319 .vidioc_g_ctrl = vidioc_g_ctrl,
1320 .vidioc_s_ctrl = vidioc_s_ctrl,
1321 .vidioc_g_tuner = vidioc_g_tuner,
1322 .vidioc_s_tuner = vidioc_s_tuner,
1323 .vidioc_g_frequency = vidioc_g_frequency,
1324 .vidioc_s_frequency = vidioc_s_frequency,
1325 };
1326
1327 static struct video_device usbvision_radio_template = {
1328 .fops = &usbvision_radio_fops,
1329 .name = "usbvision-radio",
1330 .release = video_device_release,
1331 .ioctl_ops = &usbvision_radio_ioctl_ops,
1332 };
1333
1334
1335 static struct video_device *usbvision_vdev_init(struct usb_usbvision *usbvision,
1336 struct video_device *vdev_template,
1337 char *name)
1338 {
1339 struct usb_device *usb_dev = usbvision->dev;
1340 struct video_device *vdev;
1341
1342 if (usb_dev == NULL) {
1343 dev_err(&usbvision->dev->dev,
1344 "%s: usbvision->dev is not set\n", __func__);
1345 return NULL;
1346 }
1347
1348 vdev = video_device_alloc();
1349 if (NULL == vdev)
1350 return NULL;
1351 *vdev = *vdev_template;
1352 vdev->lock = &usbvision->v4l2_lock;
1353 vdev->v4l2_dev = &usbvision->v4l2_dev;
1354 snprintf(vdev->name, sizeof(vdev->name), "%s", name);
1355 video_set_drvdata(vdev, usbvision);
1356 return vdev;
1357 }
1358
1359 /* unregister video4linux devices */
1360 static void usbvision_unregister_video(struct usb_usbvision *usbvision)
1361 {
1362 /* Radio Device: */
1363 if (usbvision->rdev) {
1364 PDEBUG(DBG_PROBE, "unregister %s [v4l2]",
1365 video_device_node_name(usbvision->rdev));
1366 if (video_is_registered(usbvision->rdev))
1367 video_unregister_device(usbvision->rdev);
1368 else
1369 video_device_release(usbvision->rdev);
1370 usbvision->rdev = NULL;
1371 }
1372
1373 /* Video Device: */
1374 if (usbvision->vdev) {
1375 PDEBUG(DBG_PROBE, "unregister %s [v4l2]",
1376 video_device_node_name(usbvision->vdev));
1377 if (video_is_registered(usbvision->vdev))
1378 video_unregister_device(usbvision->vdev);
1379 else
1380 video_device_release(usbvision->vdev);
1381 usbvision->vdev = NULL;
1382 }
1383 }
1384
1385 /* register video4linux devices */
1386 static int usbvision_register_video(struct usb_usbvision *usbvision)
1387 {
1388 /* Video Device: */
1389 usbvision->vdev = usbvision_vdev_init(usbvision,
1390 &usbvision_video_template,
1391 "USBVision Video");
1392 if (usbvision->vdev == NULL)
1393 goto err_exit;
1394 if (video_register_device(usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0)
1395 goto err_exit;
1396 printk(KERN_INFO "USBVision[%d]: registered USBVision Video device %s [v4l2]\n",
1397 usbvision->nr, video_device_node_name(usbvision->vdev));
1398
1399 /* Radio Device: */
1400 if (usbvision_device_data[usbvision->dev_model].radio) {
1401 /* usbvision has radio */
1402 usbvision->rdev = usbvision_vdev_init(usbvision,
1403 &usbvision_radio_template,
1404 "USBVision Radio");
1405 if (usbvision->rdev == NULL)
1406 goto err_exit;
1407 if (video_register_device(usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0)
1408 goto err_exit;
1409 printk(KERN_INFO "USBVision[%d]: registered USBVision Radio device %s [v4l2]\n",
1410 usbvision->nr, video_device_node_name(usbvision->rdev));
1411 }
1412 /* all done */
1413 return 0;
1414
1415 err_exit:
1416 dev_err(&usbvision->dev->dev,
1417 "USBVision[%d]: video_register_device() failed\n",
1418 usbvision->nr);
1419 usbvision_unregister_video(usbvision);
1420 return -1;
1421 }
1422
1423 /*
1424 * usbvision_alloc()
1425 *
1426 * This code allocates the struct usb_usbvision.
1427 * It is filled with default values.
1428 *
1429 * Returns NULL on error, a pointer to usb_usbvision else.
1430 *
1431 */
1432 static struct usb_usbvision *usbvision_alloc(struct usb_device *dev,
1433 struct usb_interface *intf)
1434 {
1435 struct usb_usbvision *usbvision;
1436
1437 usbvision = kzalloc(sizeof(struct usb_usbvision), GFP_KERNEL);
1438 if (usbvision == NULL)
1439 return NULL;
1440
1441 usbvision->dev = dev;
1442 if (v4l2_device_register(&intf->dev, &usbvision->v4l2_dev))
1443 goto err_free;
1444
1445 mutex_init(&usbvision->v4l2_lock);
1446
1447 /* prepare control urb for control messages during interrupts */
1448 usbvision->ctrl_urb = usb_alloc_urb(USBVISION_URB_FRAMES, GFP_KERNEL);
1449 if (usbvision->ctrl_urb == NULL)
1450 goto err_unreg;
1451 init_waitqueue_head(&usbvision->ctrl_urb_wq);
1452
1453 usbvision_init_power_off_timer(usbvision);
1454
1455 return usbvision;
1456
1457 err_unreg:
1458 v4l2_device_unregister(&usbvision->v4l2_dev);
1459 err_free:
1460 kfree(usbvision);
1461 return NULL;
1462 }
1463
1464 /*
1465 * usbvision_release()
1466 *
1467 * This code does final release of struct usb_usbvision. This happens
1468 * after the device is disconnected -and- all clients closed their files.
1469 *
1470 */
1471 static void usbvision_release(struct usb_usbvision *usbvision)
1472 {
1473 PDEBUG(DBG_PROBE, "");
1474
1475 usbvision_reset_power_off_timer(usbvision);
1476
1477 usbvision->initialized = 0;
1478
1479 usbvision_remove_sysfs(usbvision->vdev);
1480 usbvision_unregister_video(usbvision);
1481 kfree(usbvision->alt_max_pkt_size);
1482
1483 usb_free_urb(usbvision->ctrl_urb);
1484
1485 v4l2_device_unregister(&usbvision->v4l2_dev);
1486 kfree(usbvision);
1487
1488 PDEBUG(DBG_PROBE, "success");
1489 }
1490
1491
1492 /*********************** usb interface **********************************/
1493
1494 static void usbvision_configure_video(struct usb_usbvision *usbvision)
1495 {
1496 int model;
1497
1498 if (usbvision == NULL)
1499 return;
1500
1501 model = usbvision->dev_model;
1502 usbvision->palette = usbvision_v4l2_format[2]; /* V4L2_PIX_FMT_RGB24; */
1503
1504 if (usbvision_device_data[usbvision->dev_model].vin_reg2_override) {
1505 usbvision->vin_reg2_preset =
1506 usbvision_device_data[usbvision->dev_model].vin_reg2;
1507 } else {
1508 usbvision->vin_reg2_preset = 0;
1509 }
1510
1511 usbvision->tvnorm_id = usbvision_device_data[model].video_norm;
1512
1513 usbvision->video_inputs = usbvision_device_data[model].video_channels;
1514 usbvision->ctl_input = 0;
1515
1516 /* This should be here to make i2c clients to be able to register */
1517 /* first switch off audio */
1518 if (usbvision_device_data[model].audio_channels > 0)
1519 usbvision_audio_off(usbvision);
1520 if (!power_on_at_open) {
1521 /* and then power up the noisy tuner */
1522 usbvision_power_on(usbvision);
1523 usbvision_i2c_register(usbvision);
1524 }
1525 }
1526
1527 /*
1528 * usbvision_probe()
1529 *
1530 * This procedure queries device descriptor and accepts the interface
1531 * if it looks like USBVISION video device
1532 *
1533 */
1534 static int usbvision_probe(struct usb_interface *intf,
1535 const struct usb_device_id *devid)
1536 {
1537 struct usb_device *dev = usb_get_dev(interface_to_usbdev(intf));
1538 struct usb_interface *uif;
1539 __u8 ifnum = intf->altsetting->desc.bInterfaceNumber;
1540 const struct usb_host_interface *interface;
1541 struct usb_usbvision *usbvision = NULL;
1542 const struct usb_endpoint_descriptor *endpoint;
1543 int model, i;
1544
1545 PDEBUG(DBG_PROBE, "VID=%#04x, PID=%#04x, ifnum=%u",
1546 dev->descriptor.idVendor,
1547 dev->descriptor.idProduct, ifnum);
1548
1549 model = devid->driver_info;
1550 if (model < 0 || model >= usbvision_device_data_size) {
1551 PDEBUG(DBG_PROBE, "model out of bounds %d", model);
1552 return -ENODEV;
1553 }
1554 printk(KERN_INFO "%s: %s found\n", __func__,
1555 usbvision_device_data[model].model_string);
1556
1557 if (usbvision_device_data[model].interface >= 0)
1558 interface = &dev->actconfig->interface[usbvision_device_data[model].interface]->altsetting[0];
1559 else
1560 interface = &dev->actconfig->interface[ifnum]->altsetting[0];
1561 endpoint = &interface->endpoint[1].desc;
1562 if (!usb_endpoint_xfer_isoc(endpoint)) {
1563 dev_err(&intf->dev, "%s: interface %d. has non-ISO endpoint!\n",
1564 __func__, ifnum);
1565 dev_err(&intf->dev, "%s: Endpoint attributes %d",
1566 __func__, endpoint->bmAttributes);
1567 return -ENODEV;
1568 }
1569 if (usb_endpoint_dir_out(endpoint)) {
1570 dev_err(&intf->dev, "%s: interface %d. has ISO OUT endpoint!\n",
1571 __func__, ifnum);
1572 return -ENODEV;
1573 }
1574
1575 usbvision = usbvision_alloc(dev, intf);
1576 if (usbvision == NULL) {
1577 dev_err(&intf->dev, "%s: couldn't allocate USBVision struct\n", __func__);
1578 return -ENOMEM;
1579 }
1580
1581 if (dev->descriptor.bNumConfigurations > 1)
1582 usbvision->bridge_type = BRIDGE_NT1004;
1583 else if (model == DAZZLE_DVC_90_REV_1_SECAM)
1584 usbvision->bridge_type = BRIDGE_NT1005;
1585 else
1586 usbvision->bridge_type = BRIDGE_NT1003;
1587 PDEBUG(DBG_PROBE, "bridge_type %d", usbvision->bridge_type);
1588
1589 /* compute alternate max packet sizes */
1590 uif = dev->actconfig->interface[0];
1591
1592 usbvision->num_alt = uif->num_altsetting;
1593 PDEBUG(DBG_PROBE, "Alternate settings: %i", usbvision->num_alt);
1594 usbvision->alt_max_pkt_size = kmalloc(32 * usbvision->num_alt, GFP_KERNEL);
1595 if (usbvision->alt_max_pkt_size == NULL) {
1596 dev_err(&intf->dev, "usbvision: out of memory!\n");
1597 usbvision_release(usbvision);
1598 return -ENOMEM;
1599 }
1600
1601 for (i = 0; i < usbvision->num_alt; i++) {
1602 u16 tmp = le16_to_cpu(uif->altsetting[i].endpoint[1].desc.
1603 wMaxPacketSize);
1604 usbvision->alt_max_pkt_size[i] =
1605 (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
1606 PDEBUG(DBG_PROBE, "Alternate setting %i, max size= %i", i,
1607 usbvision->alt_max_pkt_size[i]);
1608 }
1609
1610
1611 usbvision->nr = usbvision_nr++;
1612
1613 usbvision->have_tuner = usbvision_device_data[model].tuner;
1614 if (usbvision->have_tuner)
1615 usbvision->tuner_type = usbvision_device_data[model].tuner_type;
1616
1617 usbvision->dev_model = model;
1618 usbvision->remove_pending = 0;
1619 usbvision->iface = ifnum;
1620 usbvision->iface_alt = 0;
1621 usbvision->video_endp = endpoint->bEndpointAddress;
1622 usbvision->isoc_packet_size = 0;
1623 usbvision->usb_bandwidth = 0;
1624 usbvision->user = 0;
1625 usbvision->streaming = stream_off;
1626 usbvision_configure_video(usbvision);
1627 usbvision_register_video(usbvision);
1628
1629 usbvision_create_sysfs(usbvision->vdev);
1630
1631 PDEBUG(DBG_PROBE, "success");
1632 return 0;
1633 }
1634
1635
1636 /*
1637 * usbvision_disconnect()
1638 *
1639 * This procedure stops all driver activity, deallocates interface-private
1640 * structure (pointed by 'ptr') and after that driver should be removable
1641 * with no ill consequences.
1642 *
1643 */
1644 static void usbvision_disconnect(struct usb_interface *intf)
1645 {
1646 struct usb_usbvision *usbvision = to_usbvision(usb_get_intfdata(intf));
1647
1648 PDEBUG(DBG_PROBE, "");
1649
1650 if (usbvision == NULL) {
1651 pr_err("%s: usb_get_intfdata() failed\n", __func__);
1652 return;
1653 }
1654
1655 mutex_lock(&usbvision->v4l2_lock);
1656
1657 /* At this time we ask to cancel outstanding URBs */
1658 usbvision_stop_isoc(usbvision);
1659
1660 v4l2_device_disconnect(&usbvision->v4l2_dev);
1661
1662 if (usbvision->power) {
1663 usbvision_i2c_unregister(usbvision);
1664 usbvision_power_off(usbvision);
1665 }
1666 usbvision->remove_pending = 1; /* Now all ISO data will be ignored */
1667
1668 usb_put_dev(usbvision->dev);
1669 usbvision->dev = NULL; /* USB device is no more */
1670
1671 mutex_unlock(&usbvision->v4l2_lock);
1672
1673 if (usbvision->user) {
1674 printk(KERN_INFO "%s: In use, disconnect pending\n",
1675 __func__);
1676 wake_up_interruptible(&usbvision->wait_frame);
1677 wake_up_interruptible(&usbvision->wait_stream);
1678 } else {
1679 usbvision_release(usbvision);
1680 }
1681
1682 PDEBUG(DBG_PROBE, "success");
1683 }
1684
1685 static struct usb_driver usbvision_driver = {
1686 .name = "usbvision",
1687 .id_table = usbvision_table,
1688 .probe = usbvision_probe,
1689 .disconnect = usbvision_disconnect,
1690 };
1691
1692 /*
1693 * usbvision_init()
1694 *
1695 * This code is run to initialize the driver.
1696 *
1697 */
1698 static int __init usbvision_init(void)
1699 {
1700 int err_code;
1701
1702 PDEBUG(DBG_PROBE, "");
1703
1704 PDEBUG(DBG_IO, "IO debugging is enabled [video]");
1705 PDEBUG(DBG_PROBE, "PROBE debugging is enabled [video]");
1706 PDEBUG(DBG_MMAP, "MMAP debugging is enabled [video]");
1707
1708 /* disable planar mode support unless compression enabled */
1709 if (isoc_mode != ISOC_MODE_COMPRESS) {
1710 /* FIXME : not the right way to set supported flag */
1711 usbvision_v4l2_format[6].supported = 0; /* V4L2_PIX_FMT_YVU420 */
1712 usbvision_v4l2_format[7].supported = 0; /* V4L2_PIX_FMT_YUV422P */
1713 }
1714
1715 err_code = usb_register(&usbvision_driver);
1716
1717 if (err_code == 0) {
1718 printk(KERN_INFO DRIVER_DESC " : " USBVISION_VERSION_STRING "\n");
1719 PDEBUG(DBG_PROBE, "success");
1720 }
1721 return err_code;
1722 }
1723
1724 static void __exit usbvision_exit(void)
1725 {
1726 PDEBUG(DBG_PROBE, "");
1727
1728 usb_deregister(&usbvision_driver);
1729 PDEBUG(DBG_PROBE, "success");
1730 }
1731
1732 module_init(usbvision_init);
1733 module_exit(usbvision_exit);
1734
1735
1736
1737
1738
1739 /* LDV_COMMENT_BEGIN_MAIN */
1740 #ifdef LDV_MAIN1_sequence_infinite_withcheck_stateful
1741
1742 /*###########################################################################*/
1743
1744 /*############## Driver Environment Generator 0.2 output ####################*/
1745
1746 /*###########################################################################*/
1747
1748
1749
1750 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test if all kernel resources are correctly released by driver before driver will be unloaded. */
1751 void ldv_check_final_state(void);
1752
1753 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result. */
1754 void ldv_check_return_value(int res);
1755
1756 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Test correct return result of probe() function. */
1757 void ldv_check_return_value_probe(int res);
1758
1759 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Initializes the model. */
1760 void ldv_initialize(void);
1761
1762 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Reinitializes the model between distinct model function calls. */
1763 void ldv_handler_precall(void);
1764
1765 /* LDV_COMMENT_FUNCTION_DECLARE_LDV Special function for LDV verifier. Returns arbitrary interger value. */
1766 int nondet_int(void);
1767
1768 /* LDV_COMMENT_VAR_DECLARE_LDV Special variable for LDV verifier. */
1769 int LDV_IN_INTERRUPT;
1770
1771 /* LDV_COMMENT_FUNCTION_MAIN Main function for LDV verifier. */
1772 void ldv_main1_sequence_infinite_withcheck_stateful(void) {
1773
1774
1775
1776 /* LDV_COMMENT_BEGIN_VARIABLE_DECLARATION_PART */
1777 /*============================= VARIABLE DECLARATION PART =============================*/
1778 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
1779 /* content: static int usbvision_v4l2_open(struct file *file)*/
1780 /* LDV_COMMENT_BEGIN_PREP */
1781 #define DRIVER_AUTHOR \
1782 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1783 "Dwaine Garden <DwaineGarden@rogers.com>"
1784 #define DRIVER_NAME "usbvision"
1785 #define DRIVER_ALIAS "USBVision"
1786 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1787 #define DRIVER_LICENSE "GPL"
1788 #define USBVISION_VERSION_STRING "0.9.11"
1789 #define ENABLE_HEXDUMP 0
1790 #ifdef USBVISION_DEBUG
1791 #define PDEBUG(level, fmt, args...) { \
1792 if (video_debug & (level)) \
1793 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1794 __func__, __LINE__ , ## args); \
1795 }
1796 #else
1797 #define PDEBUG(level, fmt, args...) do {} while (0)
1798 #endif
1799 #define DBG_IO (1 << 1)
1800 #define DBG_PROBE (1 << 2)
1801 #define DBG_MMAP (1 << 3)
1802 #define rmspace(str) while (*str == ' ') str++;
1803 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1804 #define YES_NO(x) ((x) ? "Yes" : "No")
1805 /* LDV_COMMENT_END_PREP */
1806 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_open" */
1807 struct file * var_group1;
1808 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_v4l2_open" */
1809 static int res_usbvision_v4l2_open_12;
1810 /* LDV_COMMENT_BEGIN_PREP */
1811 #ifdef CONFIG_VIDEO_ADV_DEBUG
1812 #endif
1813 #ifdef CONFIG_VIDEO_ADV_DEBUG
1814 #endif
1815 /* LDV_COMMENT_END_PREP */
1816 /* content: static int usbvision_v4l2_close(struct file *file)*/
1817 /* LDV_COMMENT_BEGIN_PREP */
1818 #define DRIVER_AUTHOR \
1819 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1820 "Dwaine Garden <DwaineGarden@rogers.com>"
1821 #define DRIVER_NAME "usbvision"
1822 #define DRIVER_ALIAS "USBVision"
1823 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1824 #define DRIVER_LICENSE "GPL"
1825 #define USBVISION_VERSION_STRING "0.9.11"
1826 #define ENABLE_HEXDUMP 0
1827 #ifdef USBVISION_DEBUG
1828 #define PDEBUG(level, fmt, args...) { \
1829 if (video_debug & (level)) \
1830 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1831 __func__, __LINE__ , ## args); \
1832 }
1833 #else
1834 #define PDEBUG(level, fmt, args...) do {} while (0)
1835 #endif
1836 #define DBG_IO (1 << 1)
1837 #define DBG_PROBE (1 << 2)
1838 #define DBG_MMAP (1 << 3)
1839 #define rmspace(str) while (*str == ' ') str++;
1840 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1841 #define YES_NO(x) ((x) ? "Yes" : "No")
1842 /* LDV_COMMENT_END_PREP */
1843 /* LDV_COMMENT_BEGIN_PREP */
1844 #ifdef CONFIG_VIDEO_ADV_DEBUG
1845 #endif
1846 #ifdef CONFIG_VIDEO_ADV_DEBUG
1847 #endif
1848 /* LDV_COMMENT_END_PREP */
1849 /* content: static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)*/
1850 /* LDV_COMMENT_BEGIN_PREP */
1851 #define DRIVER_AUTHOR \
1852 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1853 "Dwaine Garden <DwaineGarden@rogers.com>"
1854 #define DRIVER_NAME "usbvision"
1855 #define DRIVER_ALIAS "USBVision"
1856 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1857 #define DRIVER_LICENSE "GPL"
1858 #define USBVISION_VERSION_STRING "0.9.11"
1859 #define ENABLE_HEXDUMP 0
1860 #ifdef USBVISION_DEBUG
1861 #define PDEBUG(level, fmt, args...) { \
1862 if (video_debug & (level)) \
1863 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1864 __func__, __LINE__ , ## args); \
1865 }
1866 #else
1867 #define PDEBUG(level, fmt, args...) do {} while (0)
1868 #endif
1869 #define DBG_IO (1 << 1)
1870 #define DBG_PROBE (1 << 2)
1871 #define DBG_MMAP (1 << 3)
1872 #define rmspace(str) while (*str == ' ') str++;
1873 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1874 #define YES_NO(x) ((x) ? "Yes" : "No")
1875 #ifdef CONFIG_VIDEO_ADV_DEBUG
1876 #endif
1877 /* LDV_COMMENT_END_PREP */
1878 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1879 char __user * var_usbvision_v4l2_read_42_p1;
1880 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1881 size_t var_usbvision_v4l2_read_42_p2;
1882 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_read" */
1883 loff_t * var_usbvision_v4l2_read_42_p3;
1884 /* LDV_COMMENT_BEGIN_PREP */
1885 #ifdef CONFIG_VIDEO_ADV_DEBUG
1886 #endif
1887 /* LDV_COMMENT_END_PREP */
1888 /* content: static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)*/
1889 /* LDV_COMMENT_BEGIN_PREP */
1890 #define DRIVER_AUTHOR \
1891 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1892 "Dwaine Garden <DwaineGarden@rogers.com>"
1893 #define DRIVER_NAME "usbvision"
1894 #define DRIVER_ALIAS "USBVision"
1895 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1896 #define DRIVER_LICENSE "GPL"
1897 #define USBVISION_VERSION_STRING "0.9.11"
1898 #define ENABLE_HEXDUMP 0
1899 #ifdef USBVISION_DEBUG
1900 #define PDEBUG(level, fmt, args...) { \
1901 if (video_debug & (level)) \
1902 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1903 __func__, __LINE__ , ## args); \
1904 }
1905 #else
1906 #define PDEBUG(level, fmt, args...) do {} while (0)
1907 #endif
1908 #define DBG_IO (1 << 1)
1909 #define DBG_PROBE (1 << 2)
1910 #define DBG_MMAP (1 << 3)
1911 #define rmspace(str) while (*str == ' ') str++;
1912 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1913 #define YES_NO(x) ((x) ? "Yes" : "No")
1914 #ifdef CONFIG_VIDEO_ADV_DEBUG
1915 #endif
1916 /* LDV_COMMENT_END_PREP */
1917 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_v4l2_mmap" */
1918 struct vm_area_struct * var_group2;
1919 /* LDV_COMMENT_BEGIN_PREP */
1920 #ifdef CONFIG_VIDEO_ADV_DEBUG
1921 #endif
1922 /* LDV_COMMENT_END_PREP */
1923
1924 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
1925 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
1926 /* LDV_COMMENT_BEGIN_PREP */
1927 #define DRIVER_AUTHOR \
1928 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1929 "Dwaine Garden <DwaineGarden@rogers.com>"
1930 #define DRIVER_NAME "usbvision"
1931 #define DRIVER_ALIAS "USBVision"
1932 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1933 #define DRIVER_LICENSE "GPL"
1934 #define USBVISION_VERSION_STRING "0.9.11"
1935 #define ENABLE_HEXDUMP 0
1936 #ifdef USBVISION_DEBUG
1937 #define PDEBUG(level, fmt, args...) { \
1938 if (video_debug & (level)) \
1939 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1940 __func__, __LINE__ , ## args); \
1941 }
1942 #else
1943 #define PDEBUG(level, fmt, args...) do {} while (0)
1944 #endif
1945 #define DBG_IO (1 << 1)
1946 #define DBG_PROBE (1 << 2)
1947 #define DBG_MMAP (1 << 3)
1948 #define rmspace(str) while (*str == ' ') str++;
1949 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1950 #define YES_NO(x) ((x) ? "Yes" : "No")
1951 #ifdef CONFIG_VIDEO_ADV_DEBUG
1952 #endif
1953 /* LDV_COMMENT_END_PREP */
1954 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querycap" */
1955 void * var_vidioc_querycap_16_p1;
1956 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querycap" */
1957 struct v4l2_capability * var_vidioc_querycap_16_p2;
1958 /* LDV_COMMENT_BEGIN_PREP */
1959 #ifdef CONFIG_VIDEO_ADV_DEBUG
1960 #endif
1961 /* LDV_COMMENT_END_PREP */
1962 /* content: static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *vfd)*/
1963 /* LDV_COMMENT_BEGIN_PREP */
1964 #define DRIVER_AUTHOR \
1965 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
1966 "Dwaine Garden <DwaineGarden@rogers.com>"
1967 #define DRIVER_NAME "usbvision"
1968 #define DRIVER_ALIAS "USBVision"
1969 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
1970 #define DRIVER_LICENSE "GPL"
1971 #define USBVISION_VERSION_STRING "0.9.11"
1972 #define ENABLE_HEXDUMP 0
1973 #ifdef USBVISION_DEBUG
1974 #define PDEBUG(level, fmt, args...) { \
1975 if (video_debug & (level)) \
1976 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
1977 __func__, __LINE__ , ## args); \
1978 }
1979 #else
1980 #define PDEBUG(level, fmt, args...) do {} while (0)
1981 #endif
1982 #define DBG_IO (1 << 1)
1983 #define DBG_PROBE (1 << 2)
1984 #define DBG_MMAP (1 << 3)
1985 #define rmspace(str) while (*str == ' ') str++;
1986 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
1987 #define YES_NO(x) ((x) ? "Yes" : "No")
1988 #ifdef CONFIG_VIDEO_ADV_DEBUG
1989 #endif
1990 /* LDV_COMMENT_END_PREP */
1991 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_fmt_vid_cap" */
1992 void * var_vidioc_enum_fmt_vid_cap_37_p1;
1993 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_fmt_vid_cap" */
1994 struct v4l2_fmtdesc * var_vidioc_enum_fmt_vid_cap_37_p2;
1995 /* LDV_COMMENT_BEGIN_PREP */
1996 #ifdef CONFIG_VIDEO_ADV_DEBUG
1997 #endif
1998 /* LDV_COMMENT_END_PREP */
1999 /* content: static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
2000 /* LDV_COMMENT_BEGIN_PREP */
2001 #define DRIVER_AUTHOR \
2002 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2003 "Dwaine Garden <DwaineGarden@rogers.com>"
2004 #define DRIVER_NAME "usbvision"
2005 #define DRIVER_ALIAS "USBVision"
2006 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2007 #define DRIVER_LICENSE "GPL"
2008 #define USBVISION_VERSION_STRING "0.9.11"
2009 #define ENABLE_HEXDUMP 0
2010 #ifdef USBVISION_DEBUG
2011 #define PDEBUG(level, fmt, args...) { \
2012 if (video_debug & (level)) \
2013 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2014 __func__, __LINE__ , ## args); \
2015 }
2016 #else
2017 #define PDEBUG(level, fmt, args...) do {} while (0)
2018 #endif
2019 #define DBG_IO (1 << 1)
2020 #define DBG_PROBE (1 << 2)
2021 #define DBG_MMAP (1 << 3)
2022 #define rmspace(str) while (*str == ' ') str++;
2023 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2024 #define YES_NO(x) ((x) ? "Yes" : "No")
2025 #ifdef CONFIG_VIDEO_ADV_DEBUG
2026 #endif
2027 /* LDV_COMMENT_END_PREP */
2028 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_fmt_vid_cap" */
2029 void * var_vidioc_g_fmt_vid_cap_38_p1;
2030 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_fmt_vid_cap" */
2031 struct v4l2_format * var_vidioc_g_fmt_vid_cap_38_p2;
2032 /* LDV_COMMENT_BEGIN_PREP */
2033 #ifdef CONFIG_VIDEO_ADV_DEBUG
2034 #endif
2035 /* LDV_COMMENT_END_PREP */
2036 /* content: static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
2037 /* LDV_COMMENT_BEGIN_PREP */
2038 #define DRIVER_AUTHOR \
2039 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2040 "Dwaine Garden <DwaineGarden@rogers.com>"
2041 #define DRIVER_NAME "usbvision"
2042 #define DRIVER_ALIAS "USBVision"
2043 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2044 #define DRIVER_LICENSE "GPL"
2045 #define USBVISION_VERSION_STRING "0.9.11"
2046 #define ENABLE_HEXDUMP 0
2047 #ifdef USBVISION_DEBUG
2048 #define PDEBUG(level, fmt, args...) { \
2049 if (video_debug & (level)) \
2050 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2051 __func__, __LINE__ , ## args); \
2052 }
2053 #else
2054 #define PDEBUG(level, fmt, args...) do {} while (0)
2055 #endif
2056 #define DBG_IO (1 << 1)
2057 #define DBG_PROBE (1 << 2)
2058 #define DBG_MMAP (1 << 3)
2059 #define rmspace(str) while (*str == ' ') str++;
2060 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2061 #define YES_NO(x) ((x) ? "Yes" : "No")
2062 #ifdef CONFIG_VIDEO_ADV_DEBUG
2063 #endif
2064 /* LDV_COMMENT_END_PREP */
2065 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_try_fmt_vid_cap" */
2066 void * var_vidioc_try_fmt_vid_cap_39_p1;
2067 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_try_fmt_vid_cap" */
2068 struct v4l2_format * var_vidioc_try_fmt_vid_cap_39_p2;
2069 /* LDV_COMMENT_BEGIN_PREP */
2070 #ifdef CONFIG_VIDEO_ADV_DEBUG
2071 #endif
2072 /* LDV_COMMENT_END_PREP */
2073 /* content: static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
2074 /* LDV_COMMENT_BEGIN_PREP */
2075 #define DRIVER_AUTHOR \
2076 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2077 "Dwaine Garden <DwaineGarden@rogers.com>"
2078 #define DRIVER_NAME "usbvision"
2079 #define DRIVER_ALIAS "USBVision"
2080 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2081 #define DRIVER_LICENSE "GPL"
2082 #define USBVISION_VERSION_STRING "0.9.11"
2083 #define ENABLE_HEXDUMP 0
2084 #ifdef USBVISION_DEBUG
2085 #define PDEBUG(level, fmt, args...) { \
2086 if (video_debug & (level)) \
2087 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2088 __func__, __LINE__ , ## args); \
2089 }
2090 #else
2091 #define PDEBUG(level, fmt, args...) do {} while (0)
2092 #endif
2093 #define DBG_IO (1 << 1)
2094 #define DBG_PROBE (1 << 2)
2095 #define DBG_MMAP (1 << 3)
2096 #define rmspace(str) while (*str == ' ') str++;
2097 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2098 #define YES_NO(x) ((x) ? "Yes" : "No")
2099 #ifdef CONFIG_VIDEO_ADV_DEBUG
2100 #endif
2101 /* LDV_COMMENT_END_PREP */
2102 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_fmt_vid_cap" */
2103 void * var_vidioc_s_fmt_vid_cap_40_p1;
2104 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_fmt_vid_cap" */
2105 struct v4l2_format * var_vidioc_s_fmt_vid_cap_40_p2;
2106 /* LDV_COMMENT_BEGIN_PREP */
2107 #ifdef CONFIG_VIDEO_ADV_DEBUG
2108 #endif
2109 /* LDV_COMMENT_END_PREP */
2110 /* content: static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *vr)*/
2111 /* LDV_COMMENT_BEGIN_PREP */
2112 #define DRIVER_AUTHOR \
2113 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2114 "Dwaine Garden <DwaineGarden@rogers.com>"
2115 #define DRIVER_NAME "usbvision"
2116 #define DRIVER_ALIAS "USBVision"
2117 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2118 #define DRIVER_LICENSE "GPL"
2119 #define USBVISION_VERSION_STRING "0.9.11"
2120 #define ENABLE_HEXDUMP 0
2121 #ifdef USBVISION_DEBUG
2122 #define PDEBUG(level, fmt, args...) { \
2123 if (video_debug & (level)) \
2124 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2125 __func__, __LINE__ , ## args); \
2126 }
2127 #else
2128 #define PDEBUG(level, fmt, args...) do {} while (0)
2129 #endif
2130 #define DBG_IO (1 << 1)
2131 #define DBG_PROBE (1 << 2)
2132 #define DBG_MMAP (1 << 3)
2133 #define rmspace(str) while (*str == ' ') str++;
2134 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2135 #define YES_NO(x) ((x) ? "Yes" : "No")
2136 #ifdef CONFIG_VIDEO_ADV_DEBUG
2137 #endif
2138 /* LDV_COMMENT_END_PREP */
2139 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_reqbufs" */
2140 void * var_vidioc_reqbufs_31_p1;
2141 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_reqbufs" */
2142 struct v4l2_requestbuffers * var_vidioc_reqbufs_31_p2;
2143 /* LDV_COMMENT_BEGIN_PREP */
2144 #ifdef CONFIG_VIDEO_ADV_DEBUG
2145 #endif
2146 /* LDV_COMMENT_END_PREP */
2147 /* content: static int vidioc_querybuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2148 /* LDV_COMMENT_BEGIN_PREP */
2149 #define DRIVER_AUTHOR \
2150 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2151 "Dwaine Garden <DwaineGarden@rogers.com>"
2152 #define DRIVER_NAME "usbvision"
2153 #define DRIVER_ALIAS "USBVision"
2154 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2155 #define DRIVER_LICENSE "GPL"
2156 #define USBVISION_VERSION_STRING "0.9.11"
2157 #define ENABLE_HEXDUMP 0
2158 #ifdef USBVISION_DEBUG
2159 #define PDEBUG(level, fmt, args...) { \
2160 if (video_debug & (level)) \
2161 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2162 __func__, __LINE__ , ## args); \
2163 }
2164 #else
2165 #define PDEBUG(level, fmt, args...) do {} while (0)
2166 #endif
2167 #define DBG_IO (1 << 1)
2168 #define DBG_PROBE (1 << 2)
2169 #define DBG_MMAP (1 << 3)
2170 #define rmspace(str) while (*str == ' ') str++;
2171 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2172 #define YES_NO(x) ((x) ? "Yes" : "No")
2173 #ifdef CONFIG_VIDEO_ADV_DEBUG
2174 #endif
2175 /* LDV_COMMENT_END_PREP */
2176 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querybuf" */
2177 void * var_vidioc_querybuf_32_p1;
2178 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_querybuf" */
2179 struct v4l2_buffer * var_vidioc_querybuf_32_p2;
2180 /* LDV_COMMENT_BEGIN_PREP */
2181 #ifdef CONFIG_VIDEO_ADV_DEBUG
2182 #endif
2183 /* LDV_COMMENT_END_PREP */
2184 /* content: static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2185 /* LDV_COMMENT_BEGIN_PREP */
2186 #define DRIVER_AUTHOR \
2187 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2188 "Dwaine Garden <DwaineGarden@rogers.com>"
2189 #define DRIVER_NAME "usbvision"
2190 #define DRIVER_ALIAS "USBVision"
2191 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2192 #define DRIVER_LICENSE "GPL"
2193 #define USBVISION_VERSION_STRING "0.9.11"
2194 #define ENABLE_HEXDUMP 0
2195 #ifdef USBVISION_DEBUG
2196 #define PDEBUG(level, fmt, args...) { \
2197 if (video_debug & (level)) \
2198 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2199 __func__, __LINE__ , ## args); \
2200 }
2201 #else
2202 #define PDEBUG(level, fmt, args...) do {} while (0)
2203 #endif
2204 #define DBG_IO (1 << 1)
2205 #define DBG_PROBE (1 << 2)
2206 #define DBG_MMAP (1 << 3)
2207 #define rmspace(str) while (*str == ' ') str++;
2208 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2209 #define YES_NO(x) ((x) ? "Yes" : "No")
2210 #ifdef CONFIG_VIDEO_ADV_DEBUG
2211 #endif
2212 /* LDV_COMMENT_END_PREP */
2213 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_qbuf" */
2214 void * var_vidioc_qbuf_33_p1;
2215 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_qbuf" */
2216 struct v4l2_buffer * var_vidioc_qbuf_33_p2;
2217 /* LDV_COMMENT_BEGIN_PREP */
2218 #ifdef CONFIG_VIDEO_ADV_DEBUG
2219 #endif
2220 /* LDV_COMMENT_END_PREP */
2221 /* content: static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
2222 /* LDV_COMMENT_BEGIN_PREP */
2223 #define DRIVER_AUTHOR \
2224 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2225 "Dwaine Garden <DwaineGarden@rogers.com>"
2226 #define DRIVER_NAME "usbvision"
2227 #define DRIVER_ALIAS "USBVision"
2228 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2229 #define DRIVER_LICENSE "GPL"
2230 #define USBVISION_VERSION_STRING "0.9.11"
2231 #define ENABLE_HEXDUMP 0
2232 #ifdef USBVISION_DEBUG
2233 #define PDEBUG(level, fmt, args...) { \
2234 if (video_debug & (level)) \
2235 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2236 __func__, __LINE__ , ## args); \
2237 }
2238 #else
2239 #define PDEBUG(level, fmt, args...) do {} while (0)
2240 #endif
2241 #define DBG_IO (1 << 1)
2242 #define DBG_PROBE (1 << 2)
2243 #define DBG_MMAP (1 << 3)
2244 #define rmspace(str) while (*str == ' ') str++;
2245 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2246 #define YES_NO(x) ((x) ? "Yes" : "No")
2247 #ifdef CONFIG_VIDEO_ADV_DEBUG
2248 #endif
2249 /* LDV_COMMENT_END_PREP */
2250 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_dqbuf" */
2251 void * var_vidioc_dqbuf_34_p1;
2252 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_dqbuf" */
2253 struct v4l2_buffer * var_vidioc_dqbuf_34_p2;
2254 /* LDV_COMMENT_BEGIN_PREP */
2255 #ifdef CONFIG_VIDEO_ADV_DEBUG
2256 #endif
2257 /* LDV_COMMENT_END_PREP */
2258 /* content: static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)*/
2259 /* LDV_COMMENT_BEGIN_PREP */
2260 #define DRIVER_AUTHOR \
2261 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2262 "Dwaine Garden <DwaineGarden@rogers.com>"
2263 #define DRIVER_NAME "usbvision"
2264 #define DRIVER_ALIAS "USBVision"
2265 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2266 #define DRIVER_LICENSE "GPL"
2267 #define USBVISION_VERSION_STRING "0.9.11"
2268 #define ENABLE_HEXDUMP 0
2269 #ifdef USBVISION_DEBUG
2270 #define PDEBUG(level, fmt, args...) { \
2271 if (video_debug & (level)) \
2272 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2273 __func__, __LINE__ , ## args); \
2274 }
2275 #else
2276 #define PDEBUG(level, fmt, args...) do {} while (0)
2277 #endif
2278 #define DBG_IO (1 << 1)
2279 #define DBG_PROBE (1 << 2)
2280 #define DBG_MMAP (1 << 3)
2281 #define rmspace(str) while (*str == ' ') str++;
2282 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2283 #define YES_NO(x) ((x) ? "Yes" : "No")
2284 #ifdef CONFIG_VIDEO_ADV_DEBUG
2285 #endif
2286 /* LDV_COMMENT_END_PREP */
2287 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_std" */
2288 void * var_vidioc_s_std_20_p1;
2289 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_std" */
2290 v4l2_std_id var_vidioc_s_std_20_p2;
2291 /* LDV_COMMENT_BEGIN_PREP */
2292 #ifdef CONFIG_VIDEO_ADV_DEBUG
2293 #endif
2294 /* LDV_COMMENT_END_PREP */
2295 /* content: static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)*/
2296 /* LDV_COMMENT_BEGIN_PREP */
2297 #define DRIVER_AUTHOR \
2298 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2299 "Dwaine Garden <DwaineGarden@rogers.com>"
2300 #define DRIVER_NAME "usbvision"
2301 #define DRIVER_ALIAS "USBVision"
2302 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2303 #define DRIVER_LICENSE "GPL"
2304 #define USBVISION_VERSION_STRING "0.9.11"
2305 #define ENABLE_HEXDUMP 0
2306 #ifdef USBVISION_DEBUG
2307 #define PDEBUG(level, fmt, args...) { \
2308 if (video_debug & (level)) \
2309 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2310 __func__, __LINE__ , ## args); \
2311 }
2312 #else
2313 #define PDEBUG(level, fmt, args...) do {} while (0)
2314 #endif
2315 #define DBG_IO (1 << 1)
2316 #define DBG_PROBE (1 << 2)
2317 #define DBG_MMAP (1 << 3)
2318 #define rmspace(str) while (*str == ' ') str++;
2319 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2320 #define YES_NO(x) ((x) ? "Yes" : "No")
2321 #ifdef CONFIG_VIDEO_ADV_DEBUG
2322 #endif
2323 /* LDV_COMMENT_END_PREP */
2324 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_std" */
2325 void * var_vidioc_g_std_21_p1;
2326 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_std" */
2327 v4l2_std_id * var_vidioc_g_std_21_p2;
2328 /* LDV_COMMENT_BEGIN_PREP */
2329 #ifdef CONFIG_VIDEO_ADV_DEBUG
2330 #endif
2331 /* LDV_COMMENT_END_PREP */
2332 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
2333 /* LDV_COMMENT_BEGIN_PREP */
2334 #define DRIVER_AUTHOR \
2335 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2336 "Dwaine Garden <DwaineGarden@rogers.com>"
2337 #define DRIVER_NAME "usbvision"
2338 #define DRIVER_ALIAS "USBVision"
2339 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2340 #define DRIVER_LICENSE "GPL"
2341 #define USBVISION_VERSION_STRING "0.9.11"
2342 #define ENABLE_HEXDUMP 0
2343 #ifdef USBVISION_DEBUG
2344 #define PDEBUG(level, fmt, args...) { \
2345 if (video_debug & (level)) \
2346 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2347 __func__, __LINE__ , ## args); \
2348 }
2349 #else
2350 #define PDEBUG(level, fmt, args...) do {} while (0)
2351 #endif
2352 #define DBG_IO (1 << 1)
2353 #define DBG_PROBE (1 << 2)
2354 #define DBG_MMAP (1 << 3)
2355 #define rmspace(str) while (*str == ' ') str++;
2356 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2357 #define YES_NO(x) ((x) ? "Yes" : "No")
2358 #ifdef CONFIG_VIDEO_ADV_DEBUG
2359 #endif
2360 /* LDV_COMMENT_END_PREP */
2361 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_input" */
2362 void * var_vidioc_enum_input_17_p1;
2363 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_enum_input" */
2364 struct v4l2_input * var_vidioc_enum_input_17_p2;
2365 /* LDV_COMMENT_BEGIN_PREP */
2366 #ifdef CONFIG_VIDEO_ADV_DEBUG
2367 #endif
2368 /* LDV_COMMENT_END_PREP */
2369 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
2370 /* LDV_COMMENT_BEGIN_PREP */
2371 #define DRIVER_AUTHOR \
2372 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2373 "Dwaine Garden <DwaineGarden@rogers.com>"
2374 #define DRIVER_NAME "usbvision"
2375 #define DRIVER_ALIAS "USBVision"
2376 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2377 #define DRIVER_LICENSE "GPL"
2378 #define USBVISION_VERSION_STRING "0.9.11"
2379 #define ENABLE_HEXDUMP 0
2380 #ifdef USBVISION_DEBUG
2381 #define PDEBUG(level, fmt, args...) { \
2382 if (video_debug & (level)) \
2383 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2384 __func__, __LINE__ , ## args); \
2385 }
2386 #else
2387 #define PDEBUG(level, fmt, args...) do {} while (0)
2388 #endif
2389 #define DBG_IO (1 << 1)
2390 #define DBG_PROBE (1 << 2)
2391 #define DBG_MMAP (1 << 3)
2392 #define rmspace(str) while (*str == ' ') str++;
2393 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2394 #define YES_NO(x) ((x) ? "Yes" : "No")
2395 #ifdef CONFIG_VIDEO_ADV_DEBUG
2396 #endif
2397 /* LDV_COMMENT_END_PREP */
2398 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_input" */
2399 void * var_vidioc_g_input_18_p1;
2400 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_input" */
2401 unsigned int * var_vidioc_g_input_18_p2;
2402 /* LDV_COMMENT_BEGIN_PREP */
2403 #ifdef CONFIG_VIDEO_ADV_DEBUG
2404 #endif
2405 /* LDV_COMMENT_END_PREP */
2406 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
2407 /* LDV_COMMENT_BEGIN_PREP */
2408 #define DRIVER_AUTHOR \
2409 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2410 "Dwaine Garden <DwaineGarden@rogers.com>"
2411 #define DRIVER_NAME "usbvision"
2412 #define DRIVER_ALIAS "USBVision"
2413 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2414 #define DRIVER_LICENSE "GPL"
2415 #define USBVISION_VERSION_STRING "0.9.11"
2416 #define ENABLE_HEXDUMP 0
2417 #ifdef USBVISION_DEBUG
2418 #define PDEBUG(level, fmt, args...) { \
2419 if (video_debug & (level)) \
2420 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2421 __func__, __LINE__ , ## args); \
2422 }
2423 #else
2424 #define PDEBUG(level, fmt, args...) do {} while (0)
2425 #endif
2426 #define DBG_IO (1 << 1)
2427 #define DBG_PROBE (1 << 2)
2428 #define DBG_MMAP (1 << 3)
2429 #define rmspace(str) while (*str == ' ') str++;
2430 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2431 #define YES_NO(x) ((x) ? "Yes" : "No")
2432 #ifdef CONFIG_VIDEO_ADV_DEBUG
2433 #endif
2434 /* LDV_COMMENT_END_PREP */
2435 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_input" */
2436 void * var_vidioc_s_input_19_p1;
2437 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_input" */
2438 unsigned int var_vidioc_s_input_19_p2;
2439 /* LDV_COMMENT_BEGIN_PREP */
2440 #ifdef CONFIG_VIDEO_ADV_DEBUG
2441 #endif
2442 /* LDV_COMMENT_END_PREP */
2443 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
2444 /* LDV_COMMENT_BEGIN_PREP */
2445 #define DRIVER_AUTHOR \
2446 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2447 "Dwaine Garden <DwaineGarden@rogers.com>"
2448 #define DRIVER_NAME "usbvision"
2449 #define DRIVER_ALIAS "USBVision"
2450 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2451 #define DRIVER_LICENSE "GPL"
2452 #define USBVISION_VERSION_STRING "0.9.11"
2453 #define ENABLE_HEXDUMP 0
2454 #ifdef USBVISION_DEBUG
2455 #define PDEBUG(level, fmt, args...) { \
2456 if (video_debug & (level)) \
2457 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2458 __func__, __LINE__ , ## args); \
2459 }
2460 #else
2461 #define PDEBUG(level, fmt, args...) do {} while (0)
2462 #endif
2463 #define DBG_IO (1 << 1)
2464 #define DBG_PROBE (1 << 2)
2465 #define DBG_MMAP (1 << 3)
2466 #define rmspace(str) while (*str == ' ') str++;
2467 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2468 #define YES_NO(x) ((x) ? "Yes" : "No")
2469 #ifdef CONFIG_VIDEO_ADV_DEBUG
2470 #endif
2471 /* LDV_COMMENT_END_PREP */
2472 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_queryctrl" */
2473 void * var_vidioc_queryctrl_28_p1;
2474 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_queryctrl" */
2475 struct v4l2_queryctrl * var_vidioc_queryctrl_28_p2;
2476 /* LDV_COMMENT_BEGIN_PREP */
2477 #ifdef CONFIG_VIDEO_ADV_DEBUG
2478 #endif
2479 /* LDV_COMMENT_END_PREP */
2480 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
2481 /* LDV_COMMENT_BEGIN_PREP */
2482 #define DRIVER_AUTHOR \
2483 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2484 "Dwaine Garden <DwaineGarden@rogers.com>"
2485 #define DRIVER_NAME "usbvision"
2486 #define DRIVER_ALIAS "USBVision"
2487 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2488 #define DRIVER_LICENSE "GPL"
2489 #define USBVISION_VERSION_STRING "0.9.11"
2490 #define ENABLE_HEXDUMP 0
2491 #ifdef USBVISION_DEBUG
2492 #define PDEBUG(level, fmt, args...) { \
2493 if (video_debug & (level)) \
2494 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2495 __func__, __LINE__ , ## args); \
2496 }
2497 #else
2498 #define PDEBUG(level, fmt, args...) do {} while (0)
2499 #endif
2500 #define DBG_IO (1 << 1)
2501 #define DBG_PROBE (1 << 2)
2502 #define DBG_MMAP (1 << 3)
2503 #define rmspace(str) while (*str == ' ') str++;
2504 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2505 #define YES_NO(x) ((x) ? "Yes" : "No")
2506 #ifdef CONFIG_VIDEO_ADV_DEBUG
2507 #endif
2508 /* LDV_COMMENT_END_PREP */
2509 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_audio" */
2510 void * var_vidioc_g_audio_26_p1;
2511 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_audio" */
2512 struct v4l2_audio * var_vidioc_g_audio_26_p2;
2513 /* LDV_COMMENT_BEGIN_PREP */
2514 #ifdef CONFIG_VIDEO_ADV_DEBUG
2515 #endif
2516 /* LDV_COMMENT_END_PREP */
2517 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
2518 /* LDV_COMMENT_BEGIN_PREP */
2519 #define DRIVER_AUTHOR \
2520 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2521 "Dwaine Garden <DwaineGarden@rogers.com>"
2522 #define DRIVER_NAME "usbvision"
2523 #define DRIVER_ALIAS "USBVision"
2524 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2525 #define DRIVER_LICENSE "GPL"
2526 #define USBVISION_VERSION_STRING "0.9.11"
2527 #define ENABLE_HEXDUMP 0
2528 #ifdef USBVISION_DEBUG
2529 #define PDEBUG(level, fmt, args...) { \
2530 if (video_debug & (level)) \
2531 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2532 __func__, __LINE__ , ## args); \
2533 }
2534 #else
2535 #define PDEBUG(level, fmt, args...) do {} while (0)
2536 #endif
2537 #define DBG_IO (1 << 1)
2538 #define DBG_PROBE (1 << 2)
2539 #define DBG_MMAP (1 << 3)
2540 #define rmspace(str) while (*str == ' ') str++;
2541 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2542 #define YES_NO(x) ((x) ? "Yes" : "No")
2543 #ifdef CONFIG_VIDEO_ADV_DEBUG
2544 #endif
2545 /* LDV_COMMENT_END_PREP */
2546 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_audio" */
2547 void * var_vidioc_s_audio_27_p1;
2548 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_audio" */
2549 const struct v4l2_audio * var_vidioc_s_audio_27_p2;
2550 /* LDV_COMMENT_BEGIN_PREP */
2551 #ifdef CONFIG_VIDEO_ADV_DEBUG
2552 #endif
2553 /* LDV_COMMENT_END_PREP */
2554 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
2555 /* LDV_COMMENT_BEGIN_PREP */
2556 #define DRIVER_AUTHOR \
2557 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2558 "Dwaine Garden <DwaineGarden@rogers.com>"
2559 #define DRIVER_NAME "usbvision"
2560 #define DRIVER_ALIAS "USBVision"
2561 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2562 #define DRIVER_LICENSE "GPL"
2563 #define USBVISION_VERSION_STRING "0.9.11"
2564 #define ENABLE_HEXDUMP 0
2565 #ifdef USBVISION_DEBUG
2566 #define PDEBUG(level, fmt, args...) { \
2567 if (video_debug & (level)) \
2568 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2569 __func__, __LINE__ , ## args); \
2570 }
2571 #else
2572 #define PDEBUG(level, fmt, args...) do {} while (0)
2573 #endif
2574 #define DBG_IO (1 << 1)
2575 #define DBG_PROBE (1 << 2)
2576 #define DBG_MMAP (1 << 3)
2577 #define rmspace(str) while (*str == ' ') str++;
2578 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2579 #define YES_NO(x) ((x) ? "Yes" : "No")
2580 #ifdef CONFIG_VIDEO_ADV_DEBUG
2581 #endif
2582 /* LDV_COMMENT_END_PREP */
2583 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_ctrl" */
2584 void * var_vidioc_g_ctrl_29_p1;
2585 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_ctrl" */
2586 struct v4l2_control * var_vidioc_g_ctrl_29_p2;
2587 /* LDV_COMMENT_BEGIN_PREP */
2588 #ifdef CONFIG_VIDEO_ADV_DEBUG
2589 #endif
2590 /* LDV_COMMENT_END_PREP */
2591 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
2592 /* LDV_COMMENT_BEGIN_PREP */
2593 #define DRIVER_AUTHOR \
2594 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2595 "Dwaine Garden <DwaineGarden@rogers.com>"
2596 #define DRIVER_NAME "usbvision"
2597 #define DRIVER_ALIAS "USBVision"
2598 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2599 #define DRIVER_LICENSE "GPL"
2600 #define USBVISION_VERSION_STRING "0.9.11"
2601 #define ENABLE_HEXDUMP 0
2602 #ifdef USBVISION_DEBUG
2603 #define PDEBUG(level, fmt, args...) { \
2604 if (video_debug & (level)) \
2605 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2606 __func__, __LINE__ , ## args); \
2607 }
2608 #else
2609 #define PDEBUG(level, fmt, args...) do {} while (0)
2610 #endif
2611 #define DBG_IO (1 << 1)
2612 #define DBG_PROBE (1 << 2)
2613 #define DBG_MMAP (1 << 3)
2614 #define rmspace(str) while (*str == ' ') str++;
2615 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2616 #define YES_NO(x) ((x) ? "Yes" : "No")
2617 #ifdef CONFIG_VIDEO_ADV_DEBUG
2618 #endif
2619 /* LDV_COMMENT_END_PREP */
2620 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_ctrl" */
2621 void * var_vidioc_s_ctrl_30_p1;
2622 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_ctrl" */
2623 struct v4l2_control * var_vidioc_s_ctrl_30_p2;
2624 /* LDV_COMMENT_BEGIN_PREP */
2625 #ifdef CONFIG_VIDEO_ADV_DEBUG
2626 #endif
2627 /* LDV_COMMENT_END_PREP */
2628 /* content: static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)*/
2629 /* LDV_COMMENT_BEGIN_PREP */
2630 #define DRIVER_AUTHOR \
2631 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2632 "Dwaine Garden <DwaineGarden@rogers.com>"
2633 #define DRIVER_NAME "usbvision"
2634 #define DRIVER_ALIAS "USBVision"
2635 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2636 #define DRIVER_LICENSE "GPL"
2637 #define USBVISION_VERSION_STRING "0.9.11"
2638 #define ENABLE_HEXDUMP 0
2639 #ifdef USBVISION_DEBUG
2640 #define PDEBUG(level, fmt, args...) { \
2641 if (video_debug & (level)) \
2642 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2643 __func__, __LINE__ , ## args); \
2644 }
2645 #else
2646 #define PDEBUG(level, fmt, args...) do {} while (0)
2647 #endif
2648 #define DBG_IO (1 << 1)
2649 #define DBG_PROBE (1 << 2)
2650 #define DBG_MMAP (1 << 3)
2651 #define rmspace(str) while (*str == ' ') str++;
2652 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2653 #define YES_NO(x) ((x) ? "Yes" : "No")
2654 #ifdef CONFIG_VIDEO_ADV_DEBUG
2655 #endif
2656 /* LDV_COMMENT_END_PREP */
2657 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamon" */
2658 void * var_vidioc_streamon_35_p1;
2659 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamon" */
2660 enum v4l2_buf_type var_vidioc_streamon_35_p2;
2661 /* LDV_COMMENT_BEGIN_PREP */
2662 #ifdef CONFIG_VIDEO_ADV_DEBUG
2663 #endif
2664 /* LDV_COMMENT_END_PREP */
2665 /* content: static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type type)*/
2666 /* LDV_COMMENT_BEGIN_PREP */
2667 #define DRIVER_AUTHOR \
2668 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2669 "Dwaine Garden <DwaineGarden@rogers.com>"
2670 #define DRIVER_NAME "usbvision"
2671 #define DRIVER_ALIAS "USBVision"
2672 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2673 #define DRIVER_LICENSE "GPL"
2674 #define USBVISION_VERSION_STRING "0.9.11"
2675 #define ENABLE_HEXDUMP 0
2676 #ifdef USBVISION_DEBUG
2677 #define PDEBUG(level, fmt, args...) { \
2678 if (video_debug & (level)) \
2679 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2680 __func__, __LINE__ , ## args); \
2681 }
2682 #else
2683 #define PDEBUG(level, fmt, args...) do {} while (0)
2684 #endif
2685 #define DBG_IO (1 << 1)
2686 #define DBG_PROBE (1 << 2)
2687 #define DBG_MMAP (1 << 3)
2688 #define rmspace(str) while (*str == ' ') str++;
2689 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2690 #define YES_NO(x) ((x) ? "Yes" : "No")
2691 #ifdef CONFIG_VIDEO_ADV_DEBUG
2692 #endif
2693 /* LDV_COMMENT_END_PREP */
2694 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamoff" */
2695 void * var_vidioc_streamoff_36_p1;
2696 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_streamoff" */
2697 enum v4l2_buf_type var_vidioc_streamoff_36_p2;
2698 /* LDV_COMMENT_BEGIN_PREP */
2699 #ifdef CONFIG_VIDEO_ADV_DEBUG
2700 #endif
2701 /* LDV_COMMENT_END_PREP */
2702 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
2703 /* LDV_COMMENT_BEGIN_PREP */
2704 #define DRIVER_AUTHOR \
2705 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2706 "Dwaine Garden <DwaineGarden@rogers.com>"
2707 #define DRIVER_NAME "usbvision"
2708 #define DRIVER_ALIAS "USBVision"
2709 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2710 #define DRIVER_LICENSE "GPL"
2711 #define USBVISION_VERSION_STRING "0.9.11"
2712 #define ENABLE_HEXDUMP 0
2713 #ifdef USBVISION_DEBUG
2714 #define PDEBUG(level, fmt, args...) { \
2715 if (video_debug & (level)) \
2716 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2717 __func__, __LINE__ , ## args); \
2718 }
2719 #else
2720 #define PDEBUG(level, fmt, args...) do {} while (0)
2721 #endif
2722 #define DBG_IO (1 << 1)
2723 #define DBG_PROBE (1 << 2)
2724 #define DBG_MMAP (1 << 3)
2725 #define rmspace(str) while (*str == ' ') str++;
2726 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2727 #define YES_NO(x) ((x) ? "Yes" : "No")
2728 #ifdef CONFIG_VIDEO_ADV_DEBUG
2729 #endif
2730 /* LDV_COMMENT_END_PREP */
2731 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_tuner" */
2732 void * var_vidioc_g_tuner_22_p1;
2733 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_tuner" */
2734 struct v4l2_tuner * var_vidioc_g_tuner_22_p2;
2735 /* LDV_COMMENT_BEGIN_PREP */
2736 #ifdef CONFIG_VIDEO_ADV_DEBUG
2737 #endif
2738 /* LDV_COMMENT_END_PREP */
2739 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
2740 /* LDV_COMMENT_BEGIN_PREP */
2741 #define DRIVER_AUTHOR \
2742 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2743 "Dwaine Garden <DwaineGarden@rogers.com>"
2744 #define DRIVER_NAME "usbvision"
2745 #define DRIVER_ALIAS "USBVision"
2746 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2747 #define DRIVER_LICENSE "GPL"
2748 #define USBVISION_VERSION_STRING "0.9.11"
2749 #define ENABLE_HEXDUMP 0
2750 #ifdef USBVISION_DEBUG
2751 #define PDEBUG(level, fmt, args...) { \
2752 if (video_debug & (level)) \
2753 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2754 __func__, __LINE__ , ## args); \
2755 }
2756 #else
2757 #define PDEBUG(level, fmt, args...) do {} while (0)
2758 #endif
2759 #define DBG_IO (1 << 1)
2760 #define DBG_PROBE (1 << 2)
2761 #define DBG_MMAP (1 << 3)
2762 #define rmspace(str) while (*str == ' ') str++;
2763 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2764 #define YES_NO(x) ((x) ? "Yes" : "No")
2765 #ifdef CONFIG_VIDEO_ADV_DEBUG
2766 #endif
2767 /* LDV_COMMENT_END_PREP */
2768 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_tuner" */
2769 void * var_vidioc_s_tuner_23_p1;
2770 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_tuner" */
2771 const struct v4l2_tuner * var_vidioc_s_tuner_23_p2;
2772 /* LDV_COMMENT_BEGIN_PREP */
2773 #ifdef CONFIG_VIDEO_ADV_DEBUG
2774 #endif
2775 /* LDV_COMMENT_END_PREP */
2776 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
2777 /* LDV_COMMENT_BEGIN_PREP */
2778 #define DRIVER_AUTHOR \
2779 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2780 "Dwaine Garden <DwaineGarden@rogers.com>"
2781 #define DRIVER_NAME "usbvision"
2782 #define DRIVER_ALIAS "USBVision"
2783 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2784 #define DRIVER_LICENSE "GPL"
2785 #define USBVISION_VERSION_STRING "0.9.11"
2786 #define ENABLE_HEXDUMP 0
2787 #ifdef USBVISION_DEBUG
2788 #define PDEBUG(level, fmt, args...) { \
2789 if (video_debug & (level)) \
2790 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2791 __func__, __LINE__ , ## args); \
2792 }
2793 #else
2794 #define PDEBUG(level, fmt, args...) do {} while (0)
2795 #endif
2796 #define DBG_IO (1 << 1)
2797 #define DBG_PROBE (1 << 2)
2798 #define DBG_MMAP (1 << 3)
2799 #define rmspace(str) while (*str == ' ') str++;
2800 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2801 #define YES_NO(x) ((x) ? "Yes" : "No")
2802 #ifdef CONFIG_VIDEO_ADV_DEBUG
2803 #endif
2804 /* LDV_COMMENT_END_PREP */
2805 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_frequency" */
2806 void * var_vidioc_g_frequency_24_p1;
2807 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_frequency" */
2808 struct v4l2_frequency * var_vidioc_g_frequency_24_p2;
2809 /* LDV_COMMENT_BEGIN_PREP */
2810 #ifdef CONFIG_VIDEO_ADV_DEBUG
2811 #endif
2812 /* LDV_COMMENT_END_PREP */
2813 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
2814 /* LDV_COMMENT_BEGIN_PREP */
2815 #define DRIVER_AUTHOR \
2816 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2817 "Dwaine Garden <DwaineGarden@rogers.com>"
2818 #define DRIVER_NAME "usbvision"
2819 #define DRIVER_ALIAS "USBVision"
2820 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2821 #define DRIVER_LICENSE "GPL"
2822 #define USBVISION_VERSION_STRING "0.9.11"
2823 #define ENABLE_HEXDUMP 0
2824 #ifdef USBVISION_DEBUG
2825 #define PDEBUG(level, fmt, args...) { \
2826 if (video_debug & (level)) \
2827 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2828 __func__, __LINE__ , ## args); \
2829 }
2830 #else
2831 #define PDEBUG(level, fmt, args...) do {} while (0)
2832 #endif
2833 #define DBG_IO (1 << 1)
2834 #define DBG_PROBE (1 << 2)
2835 #define DBG_MMAP (1 << 3)
2836 #define rmspace(str) while (*str == ' ') str++;
2837 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2838 #define YES_NO(x) ((x) ? "Yes" : "No")
2839 #ifdef CONFIG_VIDEO_ADV_DEBUG
2840 #endif
2841 /* LDV_COMMENT_END_PREP */
2842 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_frequency" */
2843 void * var_vidioc_s_frequency_25_p1;
2844 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_frequency" */
2845 const struct v4l2_frequency * var_vidioc_s_frequency_25_p2;
2846 /* LDV_COMMENT_BEGIN_PREP */
2847 #ifdef CONFIG_VIDEO_ADV_DEBUG
2848 #endif
2849 /* LDV_COMMENT_END_PREP */
2850 /* content: static int vidioc_g_register(struct file *file, void *priv, struct v4l2_dbg_register *reg)*/
2851 /* LDV_COMMENT_BEGIN_PREP */
2852 #define DRIVER_AUTHOR \
2853 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2854 "Dwaine Garden <DwaineGarden@rogers.com>"
2855 #define DRIVER_NAME "usbvision"
2856 #define DRIVER_ALIAS "USBVision"
2857 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2858 #define DRIVER_LICENSE "GPL"
2859 #define USBVISION_VERSION_STRING "0.9.11"
2860 #define ENABLE_HEXDUMP 0
2861 #ifdef USBVISION_DEBUG
2862 #define PDEBUG(level, fmt, args...) { \
2863 if (video_debug & (level)) \
2864 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2865 __func__, __LINE__ , ## args); \
2866 }
2867 #else
2868 #define PDEBUG(level, fmt, args...) do {} while (0)
2869 #endif
2870 #define DBG_IO (1 << 1)
2871 #define DBG_PROBE (1 << 2)
2872 #define DBG_MMAP (1 << 3)
2873 #define rmspace(str) while (*str == ' ') str++;
2874 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2875 #define YES_NO(x) ((x) ? "Yes" : "No")
2876 #ifdef CONFIG_VIDEO_ADV_DEBUG
2877 /* LDV_COMMENT_END_PREP */
2878 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_register" */
2879 void * var_vidioc_g_register_14_p1;
2880 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_g_register" */
2881 struct v4l2_dbg_register * var_vidioc_g_register_14_p2;
2882 /* LDV_COMMENT_BEGIN_PREP */
2883 #endif
2884 #ifdef CONFIG_VIDEO_ADV_DEBUG
2885 #endif
2886 /* LDV_COMMENT_END_PREP */
2887 /* content: static int vidioc_s_register(struct file *file, void *priv, const struct v4l2_dbg_register *reg)*/
2888 /* LDV_COMMENT_BEGIN_PREP */
2889 #define DRIVER_AUTHOR \
2890 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2891 "Dwaine Garden <DwaineGarden@rogers.com>"
2892 #define DRIVER_NAME "usbvision"
2893 #define DRIVER_ALIAS "USBVision"
2894 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2895 #define DRIVER_LICENSE "GPL"
2896 #define USBVISION_VERSION_STRING "0.9.11"
2897 #define ENABLE_HEXDUMP 0
2898 #ifdef USBVISION_DEBUG
2899 #define PDEBUG(level, fmt, args...) { \
2900 if (video_debug & (level)) \
2901 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2902 __func__, __LINE__ , ## args); \
2903 }
2904 #else
2905 #define PDEBUG(level, fmt, args...) do {} while (0)
2906 #endif
2907 #define DBG_IO (1 << 1)
2908 #define DBG_PROBE (1 << 2)
2909 #define DBG_MMAP (1 << 3)
2910 #define rmspace(str) while (*str == ' ') str++;
2911 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2912 #define YES_NO(x) ((x) ? "Yes" : "No")
2913 #ifdef CONFIG_VIDEO_ADV_DEBUG
2914 /* LDV_COMMENT_END_PREP */
2915 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_register" */
2916 void * var_vidioc_s_register_15_p1;
2917 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "vidioc_s_register" */
2918 const struct v4l2_dbg_register * var_vidioc_s_register_15_p2;
2919 /* LDV_COMMENT_BEGIN_PREP */
2920 #endif
2921 #ifdef CONFIG_VIDEO_ADV_DEBUG
2922 #endif
2923 /* LDV_COMMENT_END_PREP */
2924
2925 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
2926 /* content: static int usbvision_radio_open(struct file *file)*/
2927 /* LDV_COMMENT_BEGIN_PREP */
2928 #define DRIVER_AUTHOR \
2929 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2930 "Dwaine Garden <DwaineGarden@rogers.com>"
2931 #define DRIVER_NAME "usbvision"
2932 #define DRIVER_ALIAS "USBVision"
2933 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2934 #define DRIVER_LICENSE "GPL"
2935 #define USBVISION_VERSION_STRING "0.9.11"
2936 #define ENABLE_HEXDUMP 0
2937 #ifdef USBVISION_DEBUG
2938 #define PDEBUG(level, fmt, args...) { \
2939 if (video_debug & (level)) \
2940 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2941 __func__, __LINE__ , ## args); \
2942 }
2943 #else
2944 #define PDEBUG(level, fmt, args...) do {} while (0)
2945 #endif
2946 #define DBG_IO (1 << 1)
2947 #define DBG_PROBE (1 << 2)
2948 #define DBG_MMAP (1 << 3)
2949 #define rmspace(str) while (*str == ' ') str++;
2950 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2951 #define YES_NO(x) ((x) ? "Yes" : "No")
2952 #ifdef CONFIG_VIDEO_ADV_DEBUG
2953 #endif
2954 /* LDV_COMMENT_END_PREP */
2955 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_radio_open" */
2956 static int res_usbvision_radio_open_45;
2957 /* LDV_COMMENT_BEGIN_PREP */
2958 #ifdef CONFIG_VIDEO_ADV_DEBUG
2959 #endif
2960 /* LDV_COMMENT_END_PREP */
2961 /* content: static int usbvision_radio_close(struct file *file)*/
2962 /* LDV_COMMENT_BEGIN_PREP */
2963 #define DRIVER_AUTHOR \
2964 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
2965 "Dwaine Garden <DwaineGarden@rogers.com>"
2966 #define DRIVER_NAME "usbvision"
2967 #define DRIVER_ALIAS "USBVision"
2968 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
2969 #define DRIVER_LICENSE "GPL"
2970 #define USBVISION_VERSION_STRING "0.9.11"
2971 #define ENABLE_HEXDUMP 0
2972 #ifdef USBVISION_DEBUG
2973 #define PDEBUG(level, fmt, args...) { \
2974 if (video_debug & (level)) \
2975 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
2976 __func__, __LINE__ , ## args); \
2977 }
2978 #else
2979 #define PDEBUG(level, fmt, args...) do {} while (0)
2980 #endif
2981 #define DBG_IO (1 << 1)
2982 #define DBG_PROBE (1 << 2)
2983 #define DBG_MMAP (1 << 3)
2984 #define rmspace(str) while (*str == ' ') str++;
2985 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
2986 #define YES_NO(x) ((x) ? "Yes" : "No")
2987 #ifdef CONFIG_VIDEO_ADV_DEBUG
2988 #endif
2989 /* LDV_COMMENT_END_PREP */
2990 /* LDV_COMMENT_BEGIN_PREP */
2991 #ifdef CONFIG_VIDEO_ADV_DEBUG
2992 #endif
2993 /* LDV_COMMENT_END_PREP */
2994
2995 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
2996 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
2997 /* LDV_COMMENT_BEGIN_PREP */
2998 #define DRIVER_AUTHOR \
2999 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3000 "Dwaine Garden <DwaineGarden@rogers.com>"
3001 #define DRIVER_NAME "usbvision"
3002 #define DRIVER_ALIAS "USBVision"
3003 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3004 #define DRIVER_LICENSE "GPL"
3005 #define USBVISION_VERSION_STRING "0.9.11"
3006 #define ENABLE_HEXDUMP 0
3007 #ifdef USBVISION_DEBUG
3008 #define PDEBUG(level, fmt, args...) { \
3009 if (video_debug & (level)) \
3010 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3011 __func__, __LINE__ , ## args); \
3012 }
3013 #else
3014 #define PDEBUG(level, fmt, args...) do {} while (0)
3015 #endif
3016 #define DBG_IO (1 << 1)
3017 #define DBG_PROBE (1 << 2)
3018 #define DBG_MMAP (1 << 3)
3019 #define rmspace(str) while (*str == ' ') str++;
3020 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3021 #define YES_NO(x) ((x) ? "Yes" : "No")
3022 #ifdef CONFIG_VIDEO_ADV_DEBUG
3023 #endif
3024 /* LDV_COMMENT_END_PREP */
3025 /* LDV_COMMENT_BEGIN_PREP */
3026 #ifdef CONFIG_VIDEO_ADV_DEBUG
3027 #endif
3028 /* LDV_COMMENT_END_PREP */
3029 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
3030 /* LDV_COMMENT_BEGIN_PREP */
3031 #define DRIVER_AUTHOR \
3032 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3033 "Dwaine Garden <DwaineGarden@rogers.com>"
3034 #define DRIVER_NAME "usbvision"
3035 #define DRIVER_ALIAS "USBVision"
3036 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3037 #define DRIVER_LICENSE "GPL"
3038 #define USBVISION_VERSION_STRING "0.9.11"
3039 #define ENABLE_HEXDUMP 0
3040 #ifdef USBVISION_DEBUG
3041 #define PDEBUG(level, fmt, args...) { \
3042 if (video_debug & (level)) \
3043 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3044 __func__, __LINE__ , ## args); \
3045 }
3046 #else
3047 #define PDEBUG(level, fmt, args...) do {} while (0)
3048 #endif
3049 #define DBG_IO (1 << 1)
3050 #define DBG_PROBE (1 << 2)
3051 #define DBG_MMAP (1 << 3)
3052 #define rmspace(str) while (*str == ' ') str++;
3053 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3054 #define YES_NO(x) ((x) ? "Yes" : "No")
3055 #ifdef CONFIG_VIDEO_ADV_DEBUG
3056 #endif
3057 /* LDV_COMMENT_END_PREP */
3058 /* LDV_COMMENT_BEGIN_PREP */
3059 #ifdef CONFIG_VIDEO_ADV_DEBUG
3060 #endif
3061 /* LDV_COMMENT_END_PREP */
3062 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
3063 /* LDV_COMMENT_BEGIN_PREP */
3064 #define DRIVER_AUTHOR \
3065 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3066 "Dwaine Garden <DwaineGarden@rogers.com>"
3067 #define DRIVER_NAME "usbvision"
3068 #define DRIVER_ALIAS "USBVision"
3069 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3070 #define DRIVER_LICENSE "GPL"
3071 #define USBVISION_VERSION_STRING "0.9.11"
3072 #define ENABLE_HEXDUMP 0
3073 #ifdef USBVISION_DEBUG
3074 #define PDEBUG(level, fmt, args...) { \
3075 if (video_debug & (level)) \
3076 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3077 __func__, __LINE__ , ## args); \
3078 }
3079 #else
3080 #define PDEBUG(level, fmt, args...) do {} while (0)
3081 #endif
3082 #define DBG_IO (1 << 1)
3083 #define DBG_PROBE (1 << 2)
3084 #define DBG_MMAP (1 << 3)
3085 #define rmspace(str) while (*str == ' ') str++;
3086 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3087 #define YES_NO(x) ((x) ? "Yes" : "No")
3088 #ifdef CONFIG_VIDEO_ADV_DEBUG
3089 #endif
3090 /* LDV_COMMENT_END_PREP */
3091 /* LDV_COMMENT_BEGIN_PREP */
3092 #ifdef CONFIG_VIDEO_ADV_DEBUG
3093 #endif
3094 /* LDV_COMMENT_END_PREP */
3095 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
3096 /* LDV_COMMENT_BEGIN_PREP */
3097 #define DRIVER_AUTHOR \
3098 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3099 "Dwaine Garden <DwaineGarden@rogers.com>"
3100 #define DRIVER_NAME "usbvision"
3101 #define DRIVER_ALIAS "USBVision"
3102 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3103 #define DRIVER_LICENSE "GPL"
3104 #define USBVISION_VERSION_STRING "0.9.11"
3105 #define ENABLE_HEXDUMP 0
3106 #ifdef USBVISION_DEBUG
3107 #define PDEBUG(level, fmt, args...) { \
3108 if (video_debug & (level)) \
3109 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3110 __func__, __LINE__ , ## args); \
3111 }
3112 #else
3113 #define PDEBUG(level, fmt, args...) do {} while (0)
3114 #endif
3115 #define DBG_IO (1 << 1)
3116 #define DBG_PROBE (1 << 2)
3117 #define DBG_MMAP (1 << 3)
3118 #define rmspace(str) while (*str == ' ') str++;
3119 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3120 #define YES_NO(x) ((x) ? "Yes" : "No")
3121 #ifdef CONFIG_VIDEO_ADV_DEBUG
3122 #endif
3123 /* LDV_COMMENT_END_PREP */
3124 /* LDV_COMMENT_BEGIN_PREP */
3125 #ifdef CONFIG_VIDEO_ADV_DEBUG
3126 #endif
3127 /* LDV_COMMENT_END_PREP */
3128 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
3129 /* LDV_COMMENT_BEGIN_PREP */
3130 #define DRIVER_AUTHOR \
3131 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3132 "Dwaine Garden <DwaineGarden@rogers.com>"
3133 #define DRIVER_NAME "usbvision"
3134 #define DRIVER_ALIAS "USBVision"
3135 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3136 #define DRIVER_LICENSE "GPL"
3137 #define USBVISION_VERSION_STRING "0.9.11"
3138 #define ENABLE_HEXDUMP 0
3139 #ifdef USBVISION_DEBUG
3140 #define PDEBUG(level, fmt, args...) { \
3141 if (video_debug & (level)) \
3142 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3143 __func__, __LINE__ , ## args); \
3144 }
3145 #else
3146 #define PDEBUG(level, fmt, args...) do {} while (0)
3147 #endif
3148 #define DBG_IO (1 << 1)
3149 #define DBG_PROBE (1 << 2)
3150 #define DBG_MMAP (1 << 3)
3151 #define rmspace(str) while (*str == ' ') str++;
3152 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3153 #define YES_NO(x) ((x) ? "Yes" : "No")
3154 #ifdef CONFIG_VIDEO_ADV_DEBUG
3155 #endif
3156 /* LDV_COMMENT_END_PREP */
3157 /* LDV_COMMENT_BEGIN_PREP */
3158 #ifdef CONFIG_VIDEO_ADV_DEBUG
3159 #endif
3160 /* LDV_COMMENT_END_PREP */
3161 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
3162 /* LDV_COMMENT_BEGIN_PREP */
3163 #define DRIVER_AUTHOR \
3164 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3165 "Dwaine Garden <DwaineGarden@rogers.com>"
3166 #define DRIVER_NAME "usbvision"
3167 #define DRIVER_ALIAS "USBVision"
3168 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3169 #define DRIVER_LICENSE "GPL"
3170 #define USBVISION_VERSION_STRING "0.9.11"
3171 #define ENABLE_HEXDUMP 0
3172 #ifdef USBVISION_DEBUG
3173 #define PDEBUG(level, fmt, args...) { \
3174 if (video_debug & (level)) \
3175 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3176 __func__, __LINE__ , ## args); \
3177 }
3178 #else
3179 #define PDEBUG(level, fmt, args...) do {} while (0)
3180 #endif
3181 #define DBG_IO (1 << 1)
3182 #define DBG_PROBE (1 << 2)
3183 #define DBG_MMAP (1 << 3)
3184 #define rmspace(str) while (*str == ' ') str++;
3185 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3186 #define YES_NO(x) ((x) ? "Yes" : "No")
3187 #ifdef CONFIG_VIDEO_ADV_DEBUG
3188 #endif
3189 /* LDV_COMMENT_END_PREP */
3190 /* LDV_COMMENT_BEGIN_PREP */
3191 #ifdef CONFIG_VIDEO_ADV_DEBUG
3192 #endif
3193 /* LDV_COMMENT_END_PREP */
3194 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
3195 /* LDV_COMMENT_BEGIN_PREP */
3196 #define DRIVER_AUTHOR \
3197 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3198 "Dwaine Garden <DwaineGarden@rogers.com>"
3199 #define DRIVER_NAME "usbvision"
3200 #define DRIVER_ALIAS "USBVision"
3201 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3202 #define DRIVER_LICENSE "GPL"
3203 #define USBVISION_VERSION_STRING "0.9.11"
3204 #define ENABLE_HEXDUMP 0
3205 #ifdef USBVISION_DEBUG
3206 #define PDEBUG(level, fmt, args...) { \
3207 if (video_debug & (level)) \
3208 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3209 __func__, __LINE__ , ## args); \
3210 }
3211 #else
3212 #define PDEBUG(level, fmt, args...) do {} while (0)
3213 #endif
3214 #define DBG_IO (1 << 1)
3215 #define DBG_PROBE (1 << 2)
3216 #define DBG_MMAP (1 << 3)
3217 #define rmspace(str) while (*str == ' ') str++;
3218 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3219 #define YES_NO(x) ((x) ? "Yes" : "No")
3220 #ifdef CONFIG_VIDEO_ADV_DEBUG
3221 #endif
3222 /* LDV_COMMENT_END_PREP */
3223 /* LDV_COMMENT_BEGIN_PREP */
3224 #ifdef CONFIG_VIDEO_ADV_DEBUG
3225 #endif
3226 /* LDV_COMMENT_END_PREP */
3227 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
3228 /* LDV_COMMENT_BEGIN_PREP */
3229 #define DRIVER_AUTHOR \
3230 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3231 "Dwaine Garden <DwaineGarden@rogers.com>"
3232 #define DRIVER_NAME "usbvision"
3233 #define DRIVER_ALIAS "USBVision"
3234 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3235 #define DRIVER_LICENSE "GPL"
3236 #define USBVISION_VERSION_STRING "0.9.11"
3237 #define ENABLE_HEXDUMP 0
3238 #ifdef USBVISION_DEBUG
3239 #define PDEBUG(level, fmt, args...) { \
3240 if (video_debug & (level)) \
3241 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3242 __func__, __LINE__ , ## args); \
3243 }
3244 #else
3245 #define PDEBUG(level, fmt, args...) do {} while (0)
3246 #endif
3247 #define DBG_IO (1 << 1)
3248 #define DBG_PROBE (1 << 2)
3249 #define DBG_MMAP (1 << 3)
3250 #define rmspace(str) while (*str == ' ') str++;
3251 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3252 #define YES_NO(x) ((x) ? "Yes" : "No")
3253 #ifdef CONFIG_VIDEO_ADV_DEBUG
3254 #endif
3255 /* LDV_COMMENT_END_PREP */
3256 /* LDV_COMMENT_BEGIN_PREP */
3257 #ifdef CONFIG_VIDEO_ADV_DEBUG
3258 #endif
3259 /* LDV_COMMENT_END_PREP */
3260 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
3261 /* LDV_COMMENT_BEGIN_PREP */
3262 #define DRIVER_AUTHOR \
3263 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3264 "Dwaine Garden <DwaineGarden@rogers.com>"
3265 #define DRIVER_NAME "usbvision"
3266 #define DRIVER_ALIAS "USBVision"
3267 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3268 #define DRIVER_LICENSE "GPL"
3269 #define USBVISION_VERSION_STRING "0.9.11"
3270 #define ENABLE_HEXDUMP 0
3271 #ifdef USBVISION_DEBUG
3272 #define PDEBUG(level, fmt, args...) { \
3273 if (video_debug & (level)) \
3274 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3275 __func__, __LINE__ , ## args); \
3276 }
3277 #else
3278 #define PDEBUG(level, fmt, args...) do {} while (0)
3279 #endif
3280 #define DBG_IO (1 << 1)
3281 #define DBG_PROBE (1 << 2)
3282 #define DBG_MMAP (1 << 3)
3283 #define rmspace(str) while (*str == ' ') str++;
3284 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3285 #define YES_NO(x) ((x) ? "Yes" : "No")
3286 #ifdef CONFIG_VIDEO_ADV_DEBUG
3287 #endif
3288 /* LDV_COMMENT_END_PREP */
3289 /* LDV_COMMENT_BEGIN_PREP */
3290 #ifdef CONFIG_VIDEO_ADV_DEBUG
3291 #endif
3292 /* LDV_COMMENT_END_PREP */
3293 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
3294 /* LDV_COMMENT_BEGIN_PREP */
3295 #define DRIVER_AUTHOR \
3296 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3297 "Dwaine Garden <DwaineGarden@rogers.com>"
3298 #define DRIVER_NAME "usbvision"
3299 #define DRIVER_ALIAS "USBVision"
3300 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3301 #define DRIVER_LICENSE "GPL"
3302 #define USBVISION_VERSION_STRING "0.9.11"
3303 #define ENABLE_HEXDUMP 0
3304 #ifdef USBVISION_DEBUG
3305 #define PDEBUG(level, fmt, args...) { \
3306 if (video_debug & (level)) \
3307 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3308 __func__, __LINE__ , ## args); \
3309 }
3310 #else
3311 #define PDEBUG(level, fmt, args...) do {} while (0)
3312 #endif
3313 #define DBG_IO (1 << 1)
3314 #define DBG_PROBE (1 << 2)
3315 #define DBG_MMAP (1 << 3)
3316 #define rmspace(str) while (*str == ' ') str++;
3317 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3318 #define YES_NO(x) ((x) ? "Yes" : "No")
3319 #ifdef CONFIG_VIDEO_ADV_DEBUG
3320 #endif
3321 /* LDV_COMMENT_END_PREP */
3322 /* LDV_COMMENT_BEGIN_PREP */
3323 #ifdef CONFIG_VIDEO_ADV_DEBUG
3324 #endif
3325 /* LDV_COMMENT_END_PREP */
3326 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
3327 /* LDV_COMMENT_BEGIN_PREP */
3328 #define DRIVER_AUTHOR \
3329 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3330 "Dwaine Garden <DwaineGarden@rogers.com>"
3331 #define DRIVER_NAME "usbvision"
3332 #define DRIVER_ALIAS "USBVision"
3333 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3334 #define DRIVER_LICENSE "GPL"
3335 #define USBVISION_VERSION_STRING "0.9.11"
3336 #define ENABLE_HEXDUMP 0
3337 #ifdef USBVISION_DEBUG
3338 #define PDEBUG(level, fmt, args...) { \
3339 if (video_debug & (level)) \
3340 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3341 __func__, __LINE__ , ## args); \
3342 }
3343 #else
3344 #define PDEBUG(level, fmt, args...) do {} while (0)
3345 #endif
3346 #define DBG_IO (1 << 1)
3347 #define DBG_PROBE (1 << 2)
3348 #define DBG_MMAP (1 << 3)
3349 #define rmspace(str) while (*str == ' ') str++;
3350 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3351 #define YES_NO(x) ((x) ? "Yes" : "No")
3352 #ifdef CONFIG_VIDEO_ADV_DEBUG
3353 #endif
3354 /* LDV_COMMENT_END_PREP */
3355 /* LDV_COMMENT_BEGIN_PREP */
3356 #ifdef CONFIG_VIDEO_ADV_DEBUG
3357 #endif
3358 /* LDV_COMMENT_END_PREP */
3359 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
3360 /* LDV_COMMENT_BEGIN_PREP */
3361 #define DRIVER_AUTHOR \
3362 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3363 "Dwaine Garden <DwaineGarden@rogers.com>"
3364 #define DRIVER_NAME "usbvision"
3365 #define DRIVER_ALIAS "USBVision"
3366 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3367 #define DRIVER_LICENSE "GPL"
3368 #define USBVISION_VERSION_STRING "0.9.11"
3369 #define ENABLE_HEXDUMP 0
3370 #ifdef USBVISION_DEBUG
3371 #define PDEBUG(level, fmt, args...) { \
3372 if (video_debug & (level)) \
3373 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3374 __func__, __LINE__ , ## args); \
3375 }
3376 #else
3377 #define PDEBUG(level, fmt, args...) do {} while (0)
3378 #endif
3379 #define DBG_IO (1 << 1)
3380 #define DBG_PROBE (1 << 2)
3381 #define DBG_MMAP (1 << 3)
3382 #define rmspace(str) while (*str == ' ') str++;
3383 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3384 #define YES_NO(x) ((x) ? "Yes" : "No")
3385 #ifdef CONFIG_VIDEO_ADV_DEBUG
3386 #endif
3387 /* LDV_COMMENT_END_PREP */
3388 /* LDV_COMMENT_BEGIN_PREP */
3389 #ifdef CONFIG_VIDEO_ADV_DEBUG
3390 #endif
3391 /* LDV_COMMENT_END_PREP */
3392 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
3393 /* LDV_COMMENT_BEGIN_PREP */
3394 #define DRIVER_AUTHOR \
3395 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3396 "Dwaine Garden <DwaineGarden@rogers.com>"
3397 #define DRIVER_NAME "usbvision"
3398 #define DRIVER_ALIAS "USBVision"
3399 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3400 #define DRIVER_LICENSE "GPL"
3401 #define USBVISION_VERSION_STRING "0.9.11"
3402 #define ENABLE_HEXDUMP 0
3403 #ifdef USBVISION_DEBUG
3404 #define PDEBUG(level, fmt, args...) { \
3405 if (video_debug & (level)) \
3406 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3407 __func__, __LINE__ , ## args); \
3408 }
3409 #else
3410 #define PDEBUG(level, fmt, args...) do {} while (0)
3411 #endif
3412 #define DBG_IO (1 << 1)
3413 #define DBG_PROBE (1 << 2)
3414 #define DBG_MMAP (1 << 3)
3415 #define rmspace(str) while (*str == ' ') str++;
3416 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3417 #define YES_NO(x) ((x) ? "Yes" : "No")
3418 #ifdef CONFIG_VIDEO_ADV_DEBUG
3419 #endif
3420 /* LDV_COMMENT_END_PREP */
3421 /* LDV_COMMENT_BEGIN_PREP */
3422 #ifdef CONFIG_VIDEO_ADV_DEBUG
3423 #endif
3424 /* LDV_COMMENT_END_PREP */
3425
3426 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
3427 /* content: static int usbvision_probe(struct usb_interface *intf, const struct usb_device_id *devid)*/
3428 /* LDV_COMMENT_BEGIN_PREP */
3429 #define DRIVER_AUTHOR \
3430 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3431 "Dwaine Garden <DwaineGarden@rogers.com>"
3432 #define DRIVER_NAME "usbvision"
3433 #define DRIVER_ALIAS "USBVision"
3434 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3435 #define DRIVER_LICENSE "GPL"
3436 #define USBVISION_VERSION_STRING "0.9.11"
3437 #define ENABLE_HEXDUMP 0
3438 #ifdef USBVISION_DEBUG
3439 #define PDEBUG(level, fmt, args...) { \
3440 if (video_debug & (level)) \
3441 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3442 __func__, __LINE__ , ## args); \
3443 }
3444 #else
3445 #define PDEBUG(level, fmt, args...) do {} while (0)
3446 #endif
3447 #define DBG_IO (1 << 1)
3448 #define DBG_PROBE (1 << 2)
3449 #define DBG_MMAP (1 << 3)
3450 #define rmspace(str) while (*str == ' ') str++;
3451 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3452 #define YES_NO(x) ((x) ? "Yes" : "No")
3453 #ifdef CONFIG_VIDEO_ADV_DEBUG
3454 #endif
3455 #ifdef CONFIG_VIDEO_ADV_DEBUG
3456 #endif
3457 /* LDV_COMMENT_END_PREP */
3458 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_probe" */
3459 struct usb_interface * var_group3;
3460 /* LDV_COMMENT_VAR_DECLARE Variable declaration for function "usbvision_probe" */
3461 const struct usb_device_id * var_usbvision_probe_53_p1;
3462 /* LDV_COMMENT_VAR_DECLARE Variable declaration for test return result from function call "usbvision_probe" */
3463 static int res_usbvision_probe_53;
3464 /* content: static void usbvision_disconnect(struct usb_interface *intf)*/
3465 /* LDV_COMMENT_BEGIN_PREP */
3466 #define DRIVER_AUTHOR \
3467 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3468 "Dwaine Garden <DwaineGarden@rogers.com>"
3469 #define DRIVER_NAME "usbvision"
3470 #define DRIVER_ALIAS "USBVision"
3471 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3472 #define DRIVER_LICENSE "GPL"
3473 #define USBVISION_VERSION_STRING "0.9.11"
3474 #define ENABLE_HEXDUMP 0
3475 #ifdef USBVISION_DEBUG
3476 #define PDEBUG(level, fmt, args...) { \
3477 if (video_debug & (level)) \
3478 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3479 __func__, __LINE__ , ## args); \
3480 }
3481 #else
3482 #define PDEBUG(level, fmt, args...) do {} while (0)
3483 #endif
3484 #define DBG_IO (1 << 1)
3485 #define DBG_PROBE (1 << 2)
3486 #define DBG_MMAP (1 << 3)
3487 #define rmspace(str) while (*str == ' ') str++;
3488 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3489 #define YES_NO(x) ((x) ? "Yes" : "No")
3490 #ifdef CONFIG_VIDEO_ADV_DEBUG
3491 #endif
3492 #ifdef CONFIG_VIDEO_ADV_DEBUG
3493 #endif
3494 /* LDV_COMMENT_END_PREP */
3495
3496
3497
3498
3499 /* LDV_COMMENT_END_VARIABLE_DECLARATION_PART */
3500 /* LDV_COMMENT_BEGIN_VARIABLE_INITIALIZING_PART */
3501 /*============================= VARIABLE INITIALIZING PART =============================*/
3502 LDV_IN_INTERRUPT=1;
3503
3504
3505
3506
3507 /* LDV_COMMENT_END_VARIABLE_INITIALIZING_PART */
3508 /* LDV_COMMENT_BEGIN_FUNCTION_CALL_SECTION */
3509 /*============================= FUNCTION CALL SECTION =============================*/
3510 /* LDV_COMMENT_FUNCTION_CALL Initialize LDV model. */
3511 ldv_initialize();
3512
3513 /** INIT: init_type: ST_MODULE_INIT **/
3514 /* content: static int __init usbvision_init(void)*/
3515 /* LDV_COMMENT_BEGIN_PREP */
3516 #define DRIVER_AUTHOR \
3517 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3518 "Dwaine Garden <DwaineGarden@rogers.com>"
3519 #define DRIVER_NAME "usbvision"
3520 #define DRIVER_ALIAS "USBVision"
3521 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3522 #define DRIVER_LICENSE "GPL"
3523 #define USBVISION_VERSION_STRING "0.9.11"
3524 #define ENABLE_HEXDUMP 0
3525 #ifdef USBVISION_DEBUG
3526 #define PDEBUG(level, fmt, args...) { \
3527 if (video_debug & (level)) \
3528 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3529 __func__, __LINE__ , ## args); \
3530 }
3531 #else
3532 #define PDEBUG(level, fmt, args...) do {} while (0)
3533 #endif
3534 #define DBG_IO (1 << 1)
3535 #define DBG_PROBE (1 << 2)
3536 #define DBG_MMAP (1 << 3)
3537 #define rmspace(str) while (*str == ' ') str++;
3538 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3539 #define YES_NO(x) ((x) ? "Yes" : "No")
3540 #ifdef CONFIG_VIDEO_ADV_DEBUG
3541 #endif
3542 #ifdef CONFIG_VIDEO_ADV_DEBUG
3543 #endif
3544 /* LDV_COMMENT_END_PREP */
3545 /* LDV_COMMENT_FUNCTION_CALL Kernel calls driver init function after driver loading to kernel. This function declared as "MODULE_INIT(function name)". */
3546 ldv_handler_precall();
3547 if(usbvision_init())
3548 goto ldv_final;
3549 int ldv_s_usbvision_fops_v4l2_file_operations = 0;
3550
3551
3552
3553
3554 int ldv_s_usbvision_radio_fops_v4l2_file_operations = 0;
3555
3556
3557
3558 int ldv_s_usbvision_driver_usb_driver = 0;
3559
3560
3561 while( nondet_int()
3562 || !(ldv_s_usbvision_fops_v4l2_file_operations == 0)
3563 || !(ldv_s_usbvision_radio_fops_v4l2_file_operations == 0)
3564 || !(ldv_s_usbvision_driver_usb_driver == 0)
3565 ) {
3566
3567 switch(nondet_int()) {
3568
3569 case 0: {
3570
3571 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3572 if(ldv_s_usbvision_fops_v4l2_file_operations==0) {
3573
3574 /* content: static int usbvision_v4l2_open(struct file *file)*/
3575 /* LDV_COMMENT_BEGIN_PREP */
3576 #define DRIVER_AUTHOR \
3577 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3578 "Dwaine Garden <DwaineGarden@rogers.com>"
3579 #define DRIVER_NAME "usbvision"
3580 #define DRIVER_ALIAS "USBVision"
3581 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3582 #define DRIVER_LICENSE "GPL"
3583 #define USBVISION_VERSION_STRING "0.9.11"
3584 #define ENABLE_HEXDUMP 0
3585 #ifdef USBVISION_DEBUG
3586 #define PDEBUG(level, fmt, args...) { \
3587 if (video_debug & (level)) \
3588 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3589 __func__, __LINE__ , ## args); \
3590 }
3591 #else
3592 #define PDEBUG(level, fmt, args...) do {} while (0)
3593 #endif
3594 #define DBG_IO (1 << 1)
3595 #define DBG_PROBE (1 << 2)
3596 #define DBG_MMAP (1 << 3)
3597 #define rmspace(str) while (*str == ' ') str++;
3598 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3599 #define YES_NO(x) ((x) ? "Yes" : "No")
3600 /* LDV_COMMENT_END_PREP */
3601 /* LDV_COMMENT_FUNCTION_CALL Function from field "open" from driver structure with callbacks "usbvision_fops". Standart function test for correct return result. */
3602 ldv_handler_precall();
3603 res_usbvision_v4l2_open_12 = usbvision_v4l2_open( var_group1);
3604 ldv_check_return_value(res_usbvision_v4l2_open_12);
3605 if(res_usbvision_v4l2_open_12)
3606 goto ldv_module_exit;
3607 /* LDV_COMMENT_BEGIN_PREP */
3608 #ifdef CONFIG_VIDEO_ADV_DEBUG
3609 #endif
3610 #ifdef CONFIG_VIDEO_ADV_DEBUG
3611 #endif
3612 /* LDV_COMMENT_END_PREP */
3613 ldv_s_usbvision_fops_v4l2_file_operations++;
3614
3615 }
3616
3617 }
3618
3619 break;
3620 case 1: {
3621
3622 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3623 if(ldv_s_usbvision_fops_v4l2_file_operations==1) {
3624
3625 /* content: static int usbvision_v4l2_close(struct file *file)*/
3626 /* LDV_COMMENT_BEGIN_PREP */
3627 #define DRIVER_AUTHOR \
3628 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3629 "Dwaine Garden <DwaineGarden@rogers.com>"
3630 #define DRIVER_NAME "usbvision"
3631 #define DRIVER_ALIAS "USBVision"
3632 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3633 #define DRIVER_LICENSE "GPL"
3634 #define USBVISION_VERSION_STRING "0.9.11"
3635 #define ENABLE_HEXDUMP 0
3636 #ifdef USBVISION_DEBUG
3637 #define PDEBUG(level, fmt, args...) { \
3638 if (video_debug & (level)) \
3639 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3640 __func__, __LINE__ , ## args); \
3641 }
3642 #else
3643 #define PDEBUG(level, fmt, args...) do {} while (0)
3644 #endif
3645 #define DBG_IO (1 << 1)
3646 #define DBG_PROBE (1 << 2)
3647 #define DBG_MMAP (1 << 3)
3648 #define rmspace(str) while (*str == ' ') str++;
3649 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3650 #define YES_NO(x) ((x) ? "Yes" : "No")
3651 /* LDV_COMMENT_END_PREP */
3652 /* LDV_COMMENT_FUNCTION_CALL Function from field "release" from driver structure with callbacks "usbvision_fops" */
3653 ldv_handler_precall();
3654 usbvision_v4l2_close( var_group1);
3655 /* LDV_COMMENT_BEGIN_PREP */
3656 #ifdef CONFIG_VIDEO_ADV_DEBUG
3657 #endif
3658 #ifdef CONFIG_VIDEO_ADV_DEBUG
3659 #endif
3660 /* LDV_COMMENT_END_PREP */
3661 ldv_s_usbvision_fops_v4l2_file_operations=0;
3662
3663 }
3664
3665 }
3666
3667 break;
3668 case 2: {
3669
3670 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3671
3672
3673 /* content: static ssize_t usbvision_v4l2_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)*/
3674 /* LDV_COMMENT_BEGIN_PREP */
3675 #define DRIVER_AUTHOR \
3676 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3677 "Dwaine Garden <DwaineGarden@rogers.com>"
3678 #define DRIVER_NAME "usbvision"
3679 #define DRIVER_ALIAS "USBVision"
3680 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3681 #define DRIVER_LICENSE "GPL"
3682 #define USBVISION_VERSION_STRING "0.9.11"
3683 #define ENABLE_HEXDUMP 0
3684 #ifdef USBVISION_DEBUG
3685 #define PDEBUG(level, fmt, args...) { \
3686 if (video_debug & (level)) \
3687 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3688 __func__, __LINE__ , ## args); \
3689 }
3690 #else
3691 #define PDEBUG(level, fmt, args...) do {} while (0)
3692 #endif
3693 #define DBG_IO (1 << 1)
3694 #define DBG_PROBE (1 << 2)
3695 #define DBG_MMAP (1 << 3)
3696 #define rmspace(str) while (*str == ' ') str++;
3697 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3698 #define YES_NO(x) ((x) ? "Yes" : "No")
3699 #ifdef CONFIG_VIDEO_ADV_DEBUG
3700 #endif
3701 /* LDV_COMMENT_END_PREP */
3702 /* LDV_COMMENT_FUNCTION_CALL Function from field "read" from driver structure with callbacks "usbvision_fops" */
3703 ldv_handler_precall();
3704 usbvision_v4l2_read( var_group1, var_usbvision_v4l2_read_42_p1, var_usbvision_v4l2_read_42_p2, var_usbvision_v4l2_read_42_p3);
3705 /* LDV_COMMENT_BEGIN_PREP */
3706 #ifdef CONFIG_VIDEO_ADV_DEBUG
3707 #endif
3708 /* LDV_COMMENT_END_PREP */
3709
3710
3711
3712
3713 }
3714
3715 break;
3716 case 3: {
3717
3718 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_fops **/
3719
3720
3721 /* content: static int usbvision_v4l2_mmap(struct file *file, struct vm_area_struct *vma)*/
3722 /* LDV_COMMENT_BEGIN_PREP */
3723 #define DRIVER_AUTHOR \
3724 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3725 "Dwaine Garden <DwaineGarden@rogers.com>"
3726 #define DRIVER_NAME "usbvision"
3727 #define DRIVER_ALIAS "USBVision"
3728 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3729 #define DRIVER_LICENSE "GPL"
3730 #define USBVISION_VERSION_STRING "0.9.11"
3731 #define ENABLE_HEXDUMP 0
3732 #ifdef USBVISION_DEBUG
3733 #define PDEBUG(level, fmt, args...) { \
3734 if (video_debug & (level)) \
3735 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3736 __func__, __LINE__ , ## args); \
3737 }
3738 #else
3739 #define PDEBUG(level, fmt, args...) do {} while (0)
3740 #endif
3741 #define DBG_IO (1 << 1)
3742 #define DBG_PROBE (1 << 2)
3743 #define DBG_MMAP (1 << 3)
3744 #define rmspace(str) while (*str == ' ') str++;
3745 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3746 #define YES_NO(x) ((x) ? "Yes" : "No")
3747 #ifdef CONFIG_VIDEO_ADV_DEBUG
3748 #endif
3749 /* LDV_COMMENT_END_PREP */
3750 /* LDV_COMMENT_FUNCTION_CALL Function from field "mmap" from driver structure with callbacks "usbvision_fops" */
3751 ldv_handler_precall();
3752 usbvision_v4l2_mmap( var_group1, var_group2);
3753 /* LDV_COMMENT_BEGIN_PREP */
3754 #ifdef CONFIG_VIDEO_ADV_DEBUG
3755 #endif
3756 /* LDV_COMMENT_END_PREP */
3757
3758
3759
3760
3761 }
3762
3763 break;
3764 case 4: {
3765
3766 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3767
3768
3769 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
3770 /* LDV_COMMENT_BEGIN_PREP */
3771 #define DRIVER_AUTHOR \
3772 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3773 "Dwaine Garden <DwaineGarden@rogers.com>"
3774 #define DRIVER_NAME "usbvision"
3775 #define DRIVER_ALIAS "USBVision"
3776 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3777 #define DRIVER_LICENSE "GPL"
3778 #define USBVISION_VERSION_STRING "0.9.11"
3779 #define ENABLE_HEXDUMP 0
3780 #ifdef USBVISION_DEBUG
3781 #define PDEBUG(level, fmt, args...) { \
3782 if (video_debug & (level)) \
3783 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3784 __func__, __LINE__ , ## args); \
3785 }
3786 #else
3787 #define PDEBUG(level, fmt, args...) do {} while (0)
3788 #endif
3789 #define DBG_IO (1 << 1)
3790 #define DBG_PROBE (1 << 2)
3791 #define DBG_MMAP (1 << 3)
3792 #define rmspace(str) while (*str == ' ') str++;
3793 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3794 #define YES_NO(x) ((x) ? "Yes" : "No")
3795 #ifdef CONFIG_VIDEO_ADV_DEBUG
3796 #endif
3797 /* LDV_COMMENT_END_PREP */
3798 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querycap" from driver structure with callbacks "usbvision_ioctl_ops" */
3799 ldv_handler_precall();
3800 vidioc_querycap( var_group1, var_vidioc_querycap_16_p1, var_vidioc_querycap_16_p2);
3801 /* LDV_COMMENT_BEGIN_PREP */
3802 #ifdef CONFIG_VIDEO_ADV_DEBUG
3803 #endif
3804 /* LDV_COMMENT_END_PREP */
3805
3806
3807
3808
3809 }
3810
3811 break;
3812 case 5: {
3813
3814 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3815
3816
3817 /* content: static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *vfd)*/
3818 /* LDV_COMMENT_BEGIN_PREP */
3819 #define DRIVER_AUTHOR \
3820 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3821 "Dwaine Garden <DwaineGarden@rogers.com>"
3822 #define DRIVER_NAME "usbvision"
3823 #define DRIVER_ALIAS "USBVision"
3824 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3825 #define DRIVER_LICENSE "GPL"
3826 #define USBVISION_VERSION_STRING "0.9.11"
3827 #define ENABLE_HEXDUMP 0
3828 #ifdef USBVISION_DEBUG
3829 #define PDEBUG(level, fmt, args...) { \
3830 if (video_debug & (level)) \
3831 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3832 __func__, __LINE__ , ## args); \
3833 }
3834 #else
3835 #define PDEBUG(level, fmt, args...) do {} while (0)
3836 #endif
3837 #define DBG_IO (1 << 1)
3838 #define DBG_PROBE (1 << 2)
3839 #define DBG_MMAP (1 << 3)
3840 #define rmspace(str) while (*str == ' ') str++;
3841 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3842 #define YES_NO(x) ((x) ? "Yes" : "No")
3843 #ifdef CONFIG_VIDEO_ADV_DEBUG
3844 #endif
3845 /* LDV_COMMENT_END_PREP */
3846 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3847 ldv_handler_precall();
3848 vidioc_enum_fmt_vid_cap( var_group1, var_vidioc_enum_fmt_vid_cap_37_p1, var_vidioc_enum_fmt_vid_cap_37_p2);
3849 /* LDV_COMMENT_BEGIN_PREP */
3850 #ifdef CONFIG_VIDEO_ADV_DEBUG
3851 #endif
3852 /* LDV_COMMENT_END_PREP */
3853
3854
3855
3856
3857 }
3858
3859 break;
3860 case 6: {
3861
3862 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3863
3864
3865 /* content: static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3866 /* LDV_COMMENT_BEGIN_PREP */
3867 #define DRIVER_AUTHOR \
3868 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3869 "Dwaine Garden <DwaineGarden@rogers.com>"
3870 #define DRIVER_NAME "usbvision"
3871 #define DRIVER_ALIAS "USBVision"
3872 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3873 #define DRIVER_LICENSE "GPL"
3874 #define USBVISION_VERSION_STRING "0.9.11"
3875 #define ENABLE_HEXDUMP 0
3876 #ifdef USBVISION_DEBUG
3877 #define PDEBUG(level, fmt, args...) { \
3878 if (video_debug & (level)) \
3879 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3880 __func__, __LINE__ , ## args); \
3881 }
3882 #else
3883 #define PDEBUG(level, fmt, args...) do {} while (0)
3884 #endif
3885 #define DBG_IO (1 << 1)
3886 #define DBG_PROBE (1 << 2)
3887 #define DBG_MMAP (1 << 3)
3888 #define rmspace(str) while (*str == ' ') str++;
3889 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3890 #define YES_NO(x) ((x) ? "Yes" : "No")
3891 #ifdef CONFIG_VIDEO_ADV_DEBUG
3892 #endif
3893 /* LDV_COMMENT_END_PREP */
3894 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3895 ldv_handler_precall();
3896 vidioc_g_fmt_vid_cap( var_group1, var_vidioc_g_fmt_vid_cap_38_p1, var_vidioc_g_fmt_vid_cap_38_p2);
3897 /* LDV_COMMENT_BEGIN_PREP */
3898 #ifdef CONFIG_VIDEO_ADV_DEBUG
3899 #endif
3900 /* LDV_COMMENT_END_PREP */
3901
3902
3903
3904
3905 }
3906
3907 break;
3908 case 7: {
3909
3910 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3911
3912
3913 /* content: static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3914 /* LDV_COMMENT_BEGIN_PREP */
3915 #define DRIVER_AUTHOR \
3916 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3917 "Dwaine Garden <DwaineGarden@rogers.com>"
3918 #define DRIVER_NAME "usbvision"
3919 #define DRIVER_ALIAS "USBVision"
3920 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3921 #define DRIVER_LICENSE "GPL"
3922 #define USBVISION_VERSION_STRING "0.9.11"
3923 #define ENABLE_HEXDUMP 0
3924 #ifdef USBVISION_DEBUG
3925 #define PDEBUG(level, fmt, args...) { \
3926 if (video_debug & (level)) \
3927 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3928 __func__, __LINE__ , ## args); \
3929 }
3930 #else
3931 #define PDEBUG(level, fmt, args...) do {} while (0)
3932 #endif
3933 #define DBG_IO (1 << 1)
3934 #define DBG_PROBE (1 << 2)
3935 #define DBG_MMAP (1 << 3)
3936 #define rmspace(str) while (*str == ' ') str++;
3937 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3938 #define YES_NO(x) ((x) ? "Yes" : "No")
3939 #ifdef CONFIG_VIDEO_ADV_DEBUG
3940 #endif
3941 /* LDV_COMMENT_END_PREP */
3942 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_try_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3943 ldv_handler_precall();
3944 vidioc_try_fmt_vid_cap( var_group1, var_vidioc_try_fmt_vid_cap_39_p1, var_vidioc_try_fmt_vid_cap_39_p2);
3945 /* LDV_COMMENT_BEGIN_PREP */
3946 #ifdef CONFIG_VIDEO_ADV_DEBUG
3947 #endif
3948 /* LDV_COMMENT_END_PREP */
3949
3950
3951
3952
3953 }
3954
3955 break;
3956 case 8: {
3957
3958 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
3959
3960
3961 /* content: static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)*/
3962 /* LDV_COMMENT_BEGIN_PREP */
3963 #define DRIVER_AUTHOR \
3964 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
3965 "Dwaine Garden <DwaineGarden@rogers.com>"
3966 #define DRIVER_NAME "usbvision"
3967 #define DRIVER_ALIAS "USBVision"
3968 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
3969 #define DRIVER_LICENSE "GPL"
3970 #define USBVISION_VERSION_STRING "0.9.11"
3971 #define ENABLE_HEXDUMP 0
3972 #ifdef USBVISION_DEBUG
3973 #define PDEBUG(level, fmt, args...) { \
3974 if (video_debug & (level)) \
3975 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
3976 __func__, __LINE__ , ## args); \
3977 }
3978 #else
3979 #define PDEBUG(level, fmt, args...) do {} while (0)
3980 #endif
3981 #define DBG_IO (1 << 1)
3982 #define DBG_PROBE (1 << 2)
3983 #define DBG_MMAP (1 << 3)
3984 #define rmspace(str) while (*str == ' ') str++;
3985 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
3986 #define YES_NO(x) ((x) ? "Yes" : "No")
3987 #ifdef CONFIG_VIDEO_ADV_DEBUG
3988 #endif
3989 /* LDV_COMMENT_END_PREP */
3990 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_fmt_vid_cap" from driver structure with callbacks "usbvision_ioctl_ops" */
3991 ldv_handler_precall();
3992 vidioc_s_fmt_vid_cap( var_group1, var_vidioc_s_fmt_vid_cap_40_p1, var_vidioc_s_fmt_vid_cap_40_p2);
3993 /* LDV_COMMENT_BEGIN_PREP */
3994 #ifdef CONFIG_VIDEO_ADV_DEBUG
3995 #endif
3996 /* LDV_COMMENT_END_PREP */
3997
3998
3999
4000
4001 }
4002
4003 break;
4004 case 9: {
4005
4006 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4007
4008
4009 /* content: static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *vr)*/
4010 /* LDV_COMMENT_BEGIN_PREP */
4011 #define DRIVER_AUTHOR \
4012 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4013 "Dwaine Garden <DwaineGarden@rogers.com>"
4014 #define DRIVER_NAME "usbvision"
4015 #define DRIVER_ALIAS "USBVision"
4016 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4017 #define DRIVER_LICENSE "GPL"
4018 #define USBVISION_VERSION_STRING "0.9.11"
4019 #define ENABLE_HEXDUMP 0
4020 #ifdef USBVISION_DEBUG
4021 #define PDEBUG(level, fmt, args...) { \
4022 if (video_debug & (level)) \
4023 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4024 __func__, __LINE__ , ## args); \
4025 }
4026 #else
4027 #define PDEBUG(level, fmt, args...) do {} while (0)
4028 #endif
4029 #define DBG_IO (1 << 1)
4030 #define DBG_PROBE (1 << 2)
4031 #define DBG_MMAP (1 << 3)
4032 #define rmspace(str) while (*str == ' ') str++;
4033 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4034 #define YES_NO(x) ((x) ? "Yes" : "No")
4035 #ifdef CONFIG_VIDEO_ADV_DEBUG
4036 #endif
4037 /* LDV_COMMENT_END_PREP */
4038 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_reqbufs" from driver structure with callbacks "usbvision_ioctl_ops" */
4039 ldv_handler_precall();
4040 vidioc_reqbufs( var_group1, var_vidioc_reqbufs_31_p1, var_vidioc_reqbufs_31_p2);
4041 /* LDV_COMMENT_BEGIN_PREP */
4042 #ifdef CONFIG_VIDEO_ADV_DEBUG
4043 #endif
4044 /* LDV_COMMENT_END_PREP */
4045
4046
4047
4048
4049 }
4050
4051 break;
4052 case 10: {
4053
4054 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4055
4056
4057 /* content: static int vidioc_querybuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4058 /* LDV_COMMENT_BEGIN_PREP */
4059 #define DRIVER_AUTHOR \
4060 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4061 "Dwaine Garden <DwaineGarden@rogers.com>"
4062 #define DRIVER_NAME "usbvision"
4063 #define DRIVER_ALIAS "USBVision"
4064 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4065 #define DRIVER_LICENSE "GPL"
4066 #define USBVISION_VERSION_STRING "0.9.11"
4067 #define ENABLE_HEXDUMP 0
4068 #ifdef USBVISION_DEBUG
4069 #define PDEBUG(level, fmt, args...) { \
4070 if (video_debug & (level)) \
4071 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4072 __func__, __LINE__ , ## args); \
4073 }
4074 #else
4075 #define PDEBUG(level, fmt, args...) do {} while (0)
4076 #endif
4077 #define DBG_IO (1 << 1)
4078 #define DBG_PROBE (1 << 2)
4079 #define DBG_MMAP (1 << 3)
4080 #define rmspace(str) while (*str == ' ') str++;
4081 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4082 #define YES_NO(x) ((x) ? "Yes" : "No")
4083 #ifdef CONFIG_VIDEO_ADV_DEBUG
4084 #endif
4085 /* LDV_COMMENT_END_PREP */
4086 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querybuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4087 ldv_handler_precall();
4088 vidioc_querybuf( var_group1, var_vidioc_querybuf_32_p1, var_vidioc_querybuf_32_p2);
4089 /* LDV_COMMENT_BEGIN_PREP */
4090 #ifdef CONFIG_VIDEO_ADV_DEBUG
4091 #endif
4092 /* LDV_COMMENT_END_PREP */
4093
4094
4095
4096
4097 }
4098
4099 break;
4100 case 11: {
4101
4102 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4103
4104
4105 /* content: static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4106 /* LDV_COMMENT_BEGIN_PREP */
4107 #define DRIVER_AUTHOR \
4108 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4109 "Dwaine Garden <DwaineGarden@rogers.com>"
4110 #define DRIVER_NAME "usbvision"
4111 #define DRIVER_ALIAS "USBVision"
4112 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4113 #define DRIVER_LICENSE "GPL"
4114 #define USBVISION_VERSION_STRING "0.9.11"
4115 #define ENABLE_HEXDUMP 0
4116 #ifdef USBVISION_DEBUG
4117 #define PDEBUG(level, fmt, args...) { \
4118 if (video_debug & (level)) \
4119 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4120 __func__, __LINE__ , ## args); \
4121 }
4122 #else
4123 #define PDEBUG(level, fmt, args...) do {} while (0)
4124 #endif
4125 #define DBG_IO (1 << 1)
4126 #define DBG_PROBE (1 << 2)
4127 #define DBG_MMAP (1 << 3)
4128 #define rmspace(str) while (*str == ' ') str++;
4129 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4130 #define YES_NO(x) ((x) ? "Yes" : "No")
4131 #ifdef CONFIG_VIDEO_ADV_DEBUG
4132 #endif
4133 /* LDV_COMMENT_END_PREP */
4134 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_qbuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4135 ldv_handler_precall();
4136 vidioc_qbuf( var_group1, var_vidioc_qbuf_33_p1, var_vidioc_qbuf_33_p2);
4137 /* LDV_COMMENT_BEGIN_PREP */
4138 #ifdef CONFIG_VIDEO_ADV_DEBUG
4139 #endif
4140 /* LDV_COMMENT_END_PREP */
4141
4142
4143
4144
4145 }
4146
4147 break;
4148 case 12: {
4149
4150 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4151
4152
4153 /* content: static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *vb)*/
4154 /* LDV_COMMENT_BEGIN_PREP */
4155 #define DRIVER_AUTHOR \
4156 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4157 "Dwaine Garden <DwaineGarden@rogers.com>"
4158 #define DRIVER_NAME "usbvision"
4159 #define DRIVER_ALIAS "USBVision"
4160 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4161 #define DRIVER_LICENSE "GPL"
4162 #define USBVISION_VERSION_STRING "0.9.11"
4163 #define ENABLE_HEXDUMP 0
4164 #ifdef USBVISION_DEBUG
4165 #define PDEBUG(level, fmt, args...) { \
4166 if (video_debug & (level)) \
4167 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4168 __func__, __LINE__ , ## args); \
4169 }
4170 #else
4171 #define PDEBUG(level, fmt, args...) do {} while (0)
4172 #endif
4173 #define DBG_IO (1 << 1)
4174 #define DBG_PROBE (1 << 2)
4175 #define DBG_MMAP (1 << 3)
4176 #define rmspace(str) while (*str == ' ') str++;
4177 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4178 #define YES_NO(x) ((x) ? "Yes" : "No")
4179 #ifdef CONFIG_VIDEO_ADV_DEBUG
4180 #endif
4181 /* LDV_COMMENT_END_PREP */
4182 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_dqbuf" from driver structure with callbacks "usbvision_ioctl_ops" */
4183 ldv_handler_precall();
4184 vidioc_dqbuf( var_group1, var_vidioc_dqbuf_34_p1, var_vidioc_dqbuf_34_p2);
4185 /* LDV_COMMENT_BEGIN_PREP */
4186 #ifdef CONFIG_VIDEO_ADV_DEBUG
4187 #endif
4188 /* LDV_COMMENT_END_PREP */
4189
4190
4191
4192
4193 }
4194
4195 break;
4196 case 13: {
4197
4198 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4199
4200
4201 /* content: static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id id)*/
4202 /* LDV_COMMENT_BEGIN_PREP */
4203 #define DRIVER_AUTHOR \
4204 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4205 "Dwaine Garden <DwaineGarden@rogers.com>"
4206 #define DRIVER_NAME "usbvision"
4207 #define DRIVER_ALIAS "USBVision"
4208 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4209 #define DRIVER_LICENSE "GPL"
4210 #define USBVISION_VERSION_STRING "0.9.11"
4211 #define ENABLE_HEXDUMP 0
4212 #ifdef USBVISION_DEBUG
4213 #define PDEBUG(level, fmt, args...) { \
4214 if (video_debug & (level)) \
4215 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4216 __func__, __LINE__ , ## args); \
4217 }
4218 #else
4219 #define PDEBUG(level, fmt, args...) do {} while (0)
4220 #endif
4221 #define DBG_IO (1 << 1)
4222 #define DBG_PROBE (1 << 2)
4223 #define DBG_MMAP (1 << 3)
4224 #define rmspace(str) while (*str == ' ') str++;
4225 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4226 #define YES_NO(x) ((x) ? "Yes" : "No")
4227 #ifdef CONFIG_VIDEO_ADV_DEBUG
4228 #endif
4229 /* LDV_COMMENT_END_PREP */
4230 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_std" from driver structure with callbacks "usbvision_ioctl_ops" */
4231 ldv_handler_precall();
4232 vidioc_s_std( var_group1, var_vidioc_s_std_20_p1, var_vidioc_s_std_20_p2);
4233 /* LDV_COMMENT_BEGIN_PREP */
4234 #ifdef CONFIG_VIDEO_ADV_DEBUG
4235 #endif
4236 /* LDV_COMMENT_END_PREP */
4237
4238
4239
4240
4241 }
4242
4243 break;
4244 case 14: {
4245
4246 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4247
4248
4249 /* content: static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)*/
4250 /* LDV_COMMENT_BEGIN_PREP */
4251 #define DRIVER_AUTHOR \
4252 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4253 "Dwaine Garden <DwaineGarden@rogers.com>"
4254 #define DRIVER_NAME "usbvision"
4255 #define DRIVER_ALIAS "USBVision"
4256 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4257 #define DRIVER_LICENSE "GPL"
4258 #define USBVISION_VERSION_STRING "0.9.11"
4259 #define ENABLE_HEXDUMP 0
4260 #ifdef USBVISION_DEBUG
4261 #define PDEBUG(level, fmt, args...) { \
4262 if (video_debug & (level)) \
4263 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4264 __func__, __LINE__ , ## args); \
4265 }
4266 #else
4267 #define PDEBUG(level, fmt, args...) do {} while (0)
4268 #endif
4269 #define DBG_IO (1 << 1)
4270 #define DBG_PROBE (1 << 2)
4271 #define DBG_MMAP (1 << 3)
4272 #define rmspace(str) while (*str == ' ') str++;
4273 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4274 #define YES_NO(x) ((x) ? "Yes" : "No")
4275 #ifdef CONFIG_VIDEO_ADV_DEBUG
4276 #endif
4277 /* LDV_COMMENT_END_PREP */
4278 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_std" from driver structure with callbacks "usbvision_ioctl_ops" */
4279 ldv_handler_precall();
4280 vidioc_g_std( var_group1, var_vidioc_g_std_21_p1, var_vidioc_g_std_21_p2);
4281 /* LDV_COMMENT_BEGIN_PREP */
4282 #ifdef CONFIG_VIDEO_ADV_DEBUG
4283 #endif
4284 /* LDV_COMMENT_END_PREP */
4285
4286
4287
4288
4289 }
4290
4291 break;
4292 case 15: {
4293
4294 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4295
4296
4297 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
4298 /* LDV_COMMENT_BEGIN_PREP */
4299 #define DRIVER_AUTHOR \
4300 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4301 "Dwaine Garden <DwaineGarden@rogers.com>"
4302 #define DRIVER_NAME "usbvision"
4303 #define DRIVER_ALIAS "USBVision"
4304 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4305 #define DRIVER_LICENSE "GPL"
4306 #define USBVISION_VERSION_STRING "0.9.11"
4307 #define ENABLE_HEXDUMP 0
4308 #ifdef USBVISION_DEBUG
4309 #define PDEBUG(level, fmt, args...) { \
4310 if (video_debug & (level)) \
4311 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4312 __func__, __LINE__ , ## args); \
4313 }
4314 #else
4315 #define PDEBUG(level, fmt, args...) do {} while (0)
4316 #endif
4317 #define DBG_IO (1 << 1)
4318 #define DBG_PROBE (1 << 2)
4319 #define DBG_MMAP (1 << 3)
4320 #define rmspace(str) while (*str == ' ') str++;
4321 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4322 #define YES_NO(x) ((x) ? "Yes" : "No")
4323 #ifdef CONFIG_VIDEO_ADV_DEBUG
4324 #endif
4325 /* LDV_COMMENT_END_PREP */
4326 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4327 ldv_handler_precall();
4328 vidioc_enum_input( var_group1, var_vidioc_enum_input_17_p1, var_vidioc_enum_input_17_p2);
4329 /* LDV_COMMENT_BEGIN_PREP */
4330 #ifdef CONFIG_VIDEO_ADV_DEBUG
4331 #endif
4332 /* LDV_COMMENT_END_PREP */
4333
4334
4335
4336
4337 }
4338
4339 break;
4340 case 16: {
4341
4342 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4343
4344
4345 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
4346 /* LDV_COMMENT_BEGIN_PREP */
4347 #define DRIVER_AUTHOR \
4348 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4349 "Dwaine Garden <DwaineGarden@rogers.com>"
4350 #define DRIVER_NAME "usbvision"
4351 #define DRIVER_ALIAS "USBVision"
4352 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4353 #define DRIVER_LICENSE "GPL"
4354 #define USBVISION_VERSION_STRING "0.9.11"
4355 #define ENABLE_HEXDUMP 0
4356 #ifdef USBVISION_DEBUG
4357 #define PDEBUG(level, fmt, args...) { \
4358 if (video_debug & (level)) \
4359 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4360 __func__, __LINE__ , ## args); \
4361 }
4362 #else
4363 #define PDEBUG(level, fmt, args...) do {} while (0)
4364 #endif
4365 #define DBG_IO (1 << 1)
4366 #define DBG_PROBE (1 << 2)
4367 #define DBG_MMAP (1 << 3)
4368 #define rmspace(str) while (*str == ' ') str++;
4369 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4370 #define YES_NO(x) ((x) ? "Yes" : "No")
4371 #ifdef CONFIG_VIDEO_ADV_DEBUG
4372 #endif
4373 /* LDV_COMMENT_END_PREP */
4374 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4375 ldv_handler_precall();
4376 vidioc_g_input( var_group1, var_vidioc_g_input_18_p1, var_vidioc_g_input_18_p2);
4377 /* LDV_COMMENT_BEGIN_PREP */
4378 #ifdef CONFIG_VIDEO_ADV_DEBUG
4379 #endif
4380 /* LDV_COMMENT_END_PREP */
4381
4382
4383
4384
4385 }
4386
4387 break;
4388 case 17: {
4389
4390 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4391
4392
4393 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
4394 /* LDV_COMMENT_BEGIN_PREP */
4395 #define DRIVER_AUTHOR \
4396 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4397 "Dwaine Garden <DwaineGarden@rogers.com>"
4398 #define DRIVER_NAME "usbvision"
4399 #define DRIVER_ALIAS "USBVision"
4400 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4401 #define DRIVER_LICENSE "GPL"
4402 #define USBVISION_VERSION_STRING "0.9.11"
4403 #define ENABLE_HEXDUMP 0
4404 #ifdef USBVISION_DEBUG
4405 #define PDEBUG(level, fmt, args...) { \
4406 if (video_debug & (level)) \
4407 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4408 __func__, __LINE__ , ## args); \
4409 }
4410 #else
4411 #define PDEBUG(level, fmt, args...) do {} while (0)
4412 #endif
4413 #define DBG_IO (1 << 1)
4414 #define DBG_PROBE (1 << 2)
4415 #define DBG_MMAP (1 << 3)
4416 #define rmspace(str) while (*str == ' ') str++;
4417 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4418 #define YES_NO(x) ((x) ? "Yes" : "No")
4419 #ifdef CONFIG_VIDEO_ADV_DEBUG
4420 #endif
4421 /* LDV_COMMENT_END_PREP */
4422 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_input" from driver structure with callbacks "usbvision_ioctl_ops" */
4423 ldv_handler_precall();
4424 vidioc_s_input( var_group1, var_vidioc_s_input_19_p1, var_vidioc_s_input_19_p2);
4425 /* LDV_COMMENT_BEGIN_PREP */
4426 #ifdef CONFIG_VIDEO_ADV_DEBUG
4427 #endif
4428 /* LDV_COMMENT_END_PREP */
4429
4430
4431
4432
4433 }
4434
4435 break;
4436 case 18: {
4437
4438 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4439
4440
4441 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
4442 /* LDV_COMMENT_BEGIN_PREP */
4443 #define DRIVER_AUTHOR \
4444 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4445 "Dwaine Garden <DwaineGarden@rogers.com>"
4446 #define DRIVER_NAME "usbvision"
4447 #define DRIVER_ALIAS "USBVision"
4448 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4449 #define DRIVER_LICENSE "GPL"
4450 #define USBVISION_VERSION_STRING "0.9.11"
4451 #define ENABLE_HEXDUMP 0
4452 #ifdef USBVISION_DEBUG
4453 #define PDEBUG(level, fmt, args...) { \
4454 if (video_debug & (level)) \
4455 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4456 __func__, __LINE__ , ## args); \
4457 }
4458 #else
4459 #define PDEBUG(level, fmt, args...) do {} while (0)
4460 #endif
4461 #define DBG_IO (1 << 1)
4462 #define DBG_PROBE (1 << 2)
4463 #define DBG_MMAP (1 << 3)
4464 #define rmspace(str) while (*str == ' ') str++;
4465 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4466 #define YES_NO(x) ((x) ? "Yes" : "No")
4467 #ifdef CONFIG_VIDEO_ADV_DEBUG
4468 #endif
4469 /* LDV_COMMENT_END_PREP */
4470 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_queryctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4471 ldv_handler_precall();
4472 vidioc_queryctrl( var_group1, var_vidioc_queryctrl_28_p1, var_vidioc_queryctrl_28_p2);
4473 /* LDV_COMMENT_BEGIN_PREP */
4474 #ifdef CONFIG_VIDEO_ADV_DEBUG
4475 #endif
4476 /* LDV_COMMENT_END_PREP */
4477
4478
4479
4480
4481 }
4482
4483 break;
4484 case 19: {
4485
4486 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4487
4488
4489 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
4490 /* LDV_COMMENT_BEGIN_PREP */
4491 #define DRIVER_AUTHOR \
4492 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4493 "Dwaine Garden <DwaineGarden@rogers.com>"
4494 #define DRIVER_NAME "usbvision"
4495 #define DRIVER_ALIAS "USBVision"
4496 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4497 #define DRIVER_LICENSE "GPL"
4498 #define USBVISION_VERSION_STRING "0.9.11"
4499 #define ENABLE_HEXDUMP 0
4500 #ifdef USBVISION_DEBUG
4501 #define PDEBUG(level, fmt, args...) { \
4502 if (video_debug & (level)) \
4503 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4504 __func__, __LINE__ , ## args); \
4505 }
4506 #else
4507 #define PDEBUG(level, fmt, args...) do {} while (0)
4508 #endif
4509 #define DBG_IO (1 << 1)
4510 #define DBG_PROBE (1 << 2)
4511 #define DBG_MMAP (1 << 3)
4512 #define rmspace(str) while (*str == ' ') str++;
4513 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4514 #define YES_NO(x) ((x) ? "Yes" : "No")
4515 #ifdef CONFIG_VIDEO_ADV_DEBUG
4516 #endif
4517 /* LDV_COMMENT_END_PREP */
4518 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_audio" from driver structure with callbacks "usbvision_ioctl_ops" */
4519 ldv_handler_precall();
4520 vidioc_g_audio( var_group1, var_vidioc_g_audio_26_p1, var_vidioc_g_audio_26_p2);
4521 /* LDV_COMMENT_BEGIN_PREP */
4522 #ifdef CONFIG_VIDEO_ADV_DEBUG
4523 #endif
4524 /* LDV_COMMENT_END_PREP */
4525
4526
4527
4528
4529 }
4530
4531 break;
4532 case 20: {
4533
4534 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4535
4536
4537 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
4538 /* LDV_COMMENT_BEGIN_PREP */
4539 #define DRIVER_AUTHOR \
4540 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4541 "Dwaine Garden <DwaineGarden@rogers.com>"
4542 #define DRIVER_NAME "usbvision"
4543 #define DRIVER_ALIAS "USBVision"
4544 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4545 #define DRIVER_LICENSE "GPL"
4546 #define USBVISION_VERSION_STRING "0.9.11"
4547 #define ENABLE_HEXDUMP 0
4548 #ifdef USBVISION_DEBUG
4549 #define PDEBUG(level, fmt, args...) { \
4550 if (video_debug & (level)) \
4551 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4552 __func__, __LINE__ , ## args); \
4553 }
4554 #else
4555 #define PDEBUG(level, fmt, args...) do {} while (0)
4556 #endif
4557 #define DBG_IO (1 << 1)
4558 #define DBG_PROBE (1 << 2)
4559 #define DBG_MMAP (1 << 3)
4560 #define rmspace(str) while (*str == ' ') str++;
4561 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4562 #define YES_NO(x) ((x) ? "Yes" : "No")
4563 #ifdef CONFIG_VIDEO_ADV_DEBUG
4564 #endif
4565 /* LDV_COMMENT_END_PREP */
4566 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_audio" from driver structure with callbacks "usbvision_ioctl_ops" */
4567 ldv_handler_precall();
4568 vidioc_s_audio( var_group1, var_vidioc_s_audio_27_p1, var_vidioc_s_audio_27_p2);
4569 /* LDV_COMMENT_BEGIN_PREP */
4570 #ifdef CONFIG_VIDEO_ADV_DEBUG
4571 #endif
4572 /* LDV_COMMENT_END_PREP */
4573
4574
4575
4576
4577 }
4578
4579 break;
4580 case 21: {
4581
4582 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4583
4584
4585 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
4586 /* LDV_COMMENT_BEGIN_PREP */
4587 #define DRIVER_AUTHOR \
4588 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4589 "Dwaine Garden <DwaineGarden@rogers.com>"
4590 #define DRIVER_NAME "usbvision"
4591 #define DRIVER_ALIAS "USBVision"
4592 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4593 #define DRIVER_LICENSE "GPL"
4594 #define USBVISION_VERSION_STRING "0.9.11"
4595 #define ENABLE_HEXDUMP 0
4596 #ifdef USBVISION_DEBUG
4597 #define PDEBUG(level, fmt, args...) { \
4598 if (video_debug & (level)) \
4599 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4600 __func__, __LINE__ , ## args); \
4601 }
4602 #else
4603 #define PDEBUG(level, fmt, args...) do {} while (0)
4604 #endif
4605 #define DBG_IO (1 << 1)
4606 #define DBG_PROBE (1 << 2)
4607 #define DBG_MMAP (1 << 3)
4608 #define rmspace(str) while (*str == ' ') str++;
4609 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4610 #define YES_NO(x) ((x) ? "Yes" : "No")
4611 #ifdef CONFIG_VIDEO_ADV_DEBUG
4612 #endif
4613 /* LDV_COMMENT_END_PREP */
4614 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_ctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4615 ldv_handler_precall();
4616 vidioc_g_ctrl( var_group1, var_vidioc_g_ctrl_29_p1, var_vidioc_g_ctrl_29_p2);
4617 /* LDV_COMMENT_BEGIN_PREP */
4618 #ifdef CONFIG_VIDEO_ADV_DEBUG
4619 #endif
4620 /* LDV_COMMENT_END_PREP */
4621
4622
4623
4624
4625 }
4626
4627 break;
4628 case 22: {
4629
4630 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4631
4632
4633 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
4634 /* LDV_COMMENT_BEGIN_PREP */
4635 #define DRIVER_AUTHOR \
4636 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4637 "Dwaine Garden <DwaineGarden@rogers.com>"
4638 #define DRIVER_NAME "usbvision"
4639 #define DRIVER_ALIAS "USBVision"
4640 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4641 #define DRIVER_LICENSE "GPL"
4642 #define USBVISION_VERSION_STRING "0.9.11"
4643 #define ENABLE_HEXDUMP 0
4644 #ifdef USBVISION_DEBUG
4645 #define PDEBUG(level, fmt, args...) { \
4646 if (video_debug & (level)) \
4647 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4648 __func__, __LINE__ , ## args); \
4649 }
4650 #else
4651 #define PDEBUG(level, fmt, args...) do {} while (0)
4652 #endif
4653 #define DBG_IO (1 << 1)
4654 #define DBG_PROBE (1 << 2)
4655 #define DBG_MMAP (1 << 3)
4656 #define rmspace(str) while (*str == ' ') str++;
4657 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4658 #define YES_NO(x) ((x) ? "Yes" : "No")
4659 #ifdef CONFIG_VIDEO_ADV_DEBUG
4660 #endif
4661 /* LDV_COMMENT_END_PREP */
4662 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_ctrl" from driver structure with callbacks "usbvision_ioctl_ops" */
4663 ldv_handler_precall();
4664 vidioc_s_ctrl( var_group1, var_vidioc_s_ctrl_30_p1, var_vidioc_s_ctrl_30_p2);
4665 /* LDV_COMMENT_BEGIN_PREP */
4666 #ifdef CONFIG_VIDEO_ADV_DEBUG
4667 #endif
4668 /* LDV_COMMENT_END_PREP */
4669
4670
4671
4672
4673 }
4674
4675 break;
4676 case 23: {
4677
4678 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4679
4680
4681 /* content: static int vidioc_streamon(struct file *file, void *priv, enum v4l2_buf_type i)*/
4682 /* LDV_COMMENT_BEGIN_PREP */
4683 #define DRIVER_AUTHOR \
4684 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4685 "Dwaine Garden <DwaineGarden@rogers.com>"
4686 #define DRIVER_NAME "usbvision"
4687 #define DRIVER_ALIAS "USBVision"
4688 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4689 #define DRIVER_LICENSE "GPL"
4690 #define USBVISION_VERSION_STRING "0.9.11"
4691 #define ENABLE_HEXDUMP 0
4692 #ifdef USBVISION_DEBUG
4693 #define PDEBUG(level, fmt, args...) { \
4694 if (video_debug & (level)) \
4695 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4696 __func__, __LINE__ , ## args); \
4697 }
4698 #else
4699 #define PDEBUG(level, fmt, args...) do {} while (0)
4700 #endif
4701 #define DBG_IO (1 << 1)
4702 #define DBG_PROBE (1 << 2)
4703 #define DBG_MMAP (1 << 3)
4704 #define rmspace(str) while (*str == ' ') str++;
4705 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4706 #define YES_NO(x) ((x) ? "Yes" : "No")
4707 #ifdef CONFIG_VIDEO_ADV_DEBUG
4708 #endif
4709 /* LDV_COMMENT_END_PREP */
4710 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_streamon" from driver structure with callbacks "usbvision_ioctl_ops" */
4711 ldv_handler_precall();
4712 vidioc_streamon( var_group1, var_vidioc_streamon_35_p1, var_vidioc_streamon_35_p2);
4713 /* LDV_COMMENT_BEGIN_PREP */
4714 #ifdef CONFIG_VIDEO_ADV_DEBUG
4715 #endif
4716 /* LDV_COMMENT_END_PREP */
4717
4718
4719
4720
4721 }
4722
4723 break;
4724 case 24: {
4725
4726 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4727
4728
4729 /* content: static int vidioc_streamoff(struct file *file, void *priv, enum v4l2_buf_type type)*/
4730 /* LDV_COMMENT_BEGIN_PREP */
4731 #define DRIVER_AUTHOR \
4732 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4733 "Dwaine Garden <DwaineGarden@rogers.com>"
4734 #define DRIVER_NAME "usbvision"
4735 #define DRIVER_ALIAS "USBVision"
4736 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4737 #define DRIVER_LICENSE "GPL"
4738 #define USBVISION_VERSION_STRING "0.9.11"
4739 #define ENABLE_HEXDUMP 0
4740 #ifdef USBVISION_DEBUG
4741 #define PDEBUG(level, fmt, args...) { \
4742 if (video_debug & (level)) \
4743 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4744 __func__, __LINE__ , ## args); \
4745 }
4746 #else
4747 #define PDEBUG(level, fmt, args...) do {} while (0)
4748 #endif
4749 #define DBG_IO (1 << 1)
4750 #define DBG_PROBE (1 << 2)
4751 #define DBG_MMAP (1 << 3)
4752 #define rmspace(str) while (*str == ' ') str++;
4753 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4754 #define YES_NO(x) ((x) ? "Yes" : "No")
4755 #ifdef CONFIG_VIDEO_ADV_DEBUG
4756 #endif
4757 /* LDV_COMMENT_END_PREP */
4758 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_streamoff" from driver structure with callbacks "usbvision_ioctl_ops" */
4759 ldv_handler_precall();
4760 vidioc_streamoff( var_group1, var_vidioc_streamoff_36_p1, var_vidioc_streamoff_36_p2);
4761 /* LDV_COMMENT_BEGIN_PREP */
4762 #ifdef CONFIG_VIDEO_ADV_DEBUG
4763 #endif
4764 /* LDV_COMMENT_END_PREP */
4765
4766
4767
4768
4769 }
4770
4771 break;
4772 case 25: {
4773
4774 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4775
4776
4777 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
4778 /* LDV_COMMENT_BEGIN_PREP */
4779 #define DRIVER_AUTHOR \
4780 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4781 "Dwaine Garden <DwaineGarden@rogers.com>"
4782 #define DRIVER_NAME "usbvision"
4783 #define DRIVER_ALIAS "USBVision"
4784 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4785 #define DRIVER_LICENSE "GPL"
4786 #define USBVISION_VERSION_STRING "0.9.11"
4787 #define ENABLE_HEXDUMP 0
4788 #ifdef USBVISION_DEBUG
4789 #define PDEBUG(level, fmt, args...) { \
4790 if (video_debug & (level)) \
4791 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4792 __func__, __LINE__ , ## args); \
4793 }
4794 #else
4795 #define PDEBUG(level, fmt, args...) do {} while (0)
4796 #endif
4797 #define DBG_IO (1 << 1)
4798 #define DBG_PROBE (1 << 2)
4799 #define DBG_MMAP (1 << 3)
4800 #define rmspace(str) while (*str == ' ') str++;
4801 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4802 #define YES_NO(x) ((x) ? "Yes" : "No")
4803 #ifdef CONFIG_VIDEO_ADV_DEBUG
4804 #endif
4805 /* LDV_COMMENT_END_PREP */
4806 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_tuner" from driver structure with callbacks "usbvision_ioctl_ops" */
4807 ldv_handler_precall();
4808 vidioc_g_tuner( var_group1, var_vidioc_g_tuner_22_p1, var_vidioc_g_tuner_22_p2);
4809 /* LDV_COMMENT_BEGIN_PREP */
4810 #ifdef CONFIG_VIDEO_ADV_DEBUG
4811 #endif
4812 /* LDV_COMMENT_END_PREP */
4813
4814
4815
4816
4817 }
4818
4819 break;
4820 case 26: {
4821
4822 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4823
4824
4825 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
4826 /* LDV_COMMENT_BEGIN_PREP */
4827 #define DRIVER_AUTHOR \
4828 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4829 "Dwaine Garden <DwaineGarden@rogers.com>"
4830 #define DRIVER_NAME "usbvision"
4831 #define DRIVER_ALIAS "USBVision"
4832 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4833 #define DRIVER_LICENSE "GPL"
4834 #define USBVISION_VERSION_STRING "0.9.11"
4835 #define ENABLE_HEXDUMP 0
4836 #ifdef USBVISION_DEBUG
4837 #define PDEBUG(level, fmt, args...) { \
4838 if (video_debug & (level)) \
4839 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4840 __func__, __LINE__ , ## args); \
4841 }
4842 #else
4843 #define PDEBUG(level, fmt, args...) do {} while (0)
4844 #endif
4845 #define DBG_IO (1 << 1)
4846 #define DBG_PROBE (1 << 2)
4847 #define DBG_MMAP (1 << 3)
4848 #define rmspace(str) while (*str == ' ') str++;
4849 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4850 #define YES_NO(x) ((x) ? "Yes" : "No")
4851 #ifdef CONFIG_VIDEO_ADV_DEBUG
4852 #endif
4853 /* LDV_COMMENT_END_PREP */
4854 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_tuner" from driver structure with callbacks "usbvision_ioctl_ops" */
4855 ldv_handler_precall();
4856 vidioc_s_tuner( var_group1, var_vidioc_s_tuner_23_p1, var_vidioc_s_tuner_23_p2);
4857 /* LDV_COMMENT_BEGIN_PREP */
4858 #ifdef CONFIG_VIDEO_ADV_DEBUG
4859 #endif
4860 /* LDV_COMMENT_END_PREP */
4861
4862
4863
4864
4865 }
4866
4867 break;
4868 case 27: {
4869
4870 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4871
4872
4873 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
4874 /* LDV_COMMENT_BEGIN_PREP */
4875 #define DRIVER_AUTHOR \
4876 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4877 "Dwaine Garden <DwaineGarden@rogers.com>"
4878 #define DRIVER_NAME "usbvision"
4879 #define DRIVER_ALIAS "USBVision"
4880 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4881 #define DRIVER_LICENSE "GPL"
4882 #define USBVISION_VERSION_STRING "0.9.11"
4883 #define ENABLE_HEXDUMP 0
4884 #ifdef USBVISION_DEBUG
4885 #define PDEBUG(level, fmt, args...) { \
4886 if (video_debug & (level)) \
4887 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4888 __func__, __LINE__ , ## args); \
4889 }
4890 #else
4891 #define PDEBUG(level, fmt, args...) do {} while (0)
4892 #endif
4893 #define DBG_IO (1 << 1)
4894 #define DBG_PROBE (1 << 2)
4895 #define DBG_MMAP (1 << 3)
4896 #define rmspace(str) while (*str == ' ') str++;
4897 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4898 #define YES_NO(x) ((x) ? "Yes" : "No")
4899 #ifdef CONFIG_VIDEO_ADV_DEBUG
4900 #endif
4901 /* LDV_COMMENT_END_PREP */
4902 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_frequency" from driver structure with callbacks "usbvision_ioctl_ops" */
4903 ldv_handler_precall();
4904 vidioc_g_frequency( var_group1, var_vidioc_g_frequency_24_p1, var_vidioc_g_frequency_24_p2);
4905 /* LDV_COMMENT_BEGIN_PREP */
4906 #ifdef CONFIG_VIDEO_ADV_DEBUG
4907 #endif
4908 /* LDV_COMMENT_END_PREP */
4909
4910
4911
4912
4913 }
4914
4915 break;
4916 case 28: {
4917
4918 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4919
4920
4921 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
4922 /* LDV_COMMENT_BEGIN_PREP */
4923 #define DRIVER_AUTHOR \
4924 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4925 "Dwaine Garden <DwaineGarden@rogers.com>"
4926 #define DRIVER_NAME "usbvision"
4927 #define DRIVER_ALIAS "USBVision"
4928 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4929 #define DRIVER_LICENSE "GPL"
4930 #define USBVISION_VERSION_STRING "0.9.11"
4931 #define ENABLE_HEXDUMP 0
4932 #ifdef USBVISION_DEBUG
4933 #define PDEBUG(level, fmt, args...) { \
4934 if (video_debug & (level)) \
4935 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4936 __func__, __LINE__ , ## args); \
4937 }
4938 #else
4939 #define PDEBUG(level, fmt, args...) do {} while (0)
4940 #endif
4941 #define DBG_IO (1 << 1)
4942 #define DBG_PROBE (1 << 2)
4943 #define DBG_MMAP (1 << 3)
4944 #define rmspace(str) while (*str == ' ') str++;
4945 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4946 #define YES_NO(x) ((x) ? "Yes" : "No")
4947 #ifdef CONFIG_VIDEO_ADV_DEBUG
4948 #endif
4949 /* LDV_COMMENT_END_PREP */
4950 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_frequency" from driver structure with callbacks "usbvision_ioctl_ops" */
4951 ldv_handler_precall();
4952 vidioc_s_frequency( var_group1, var_vidioc_s_frequency_25_p1, var_vidioc_s_frequency_25_p2);
4953 /* LDV_COMMENT_BEGIN_PREP */
4954 #ifdef CONFIG_VIDEO_ADV_DEBUG
4955 #endif
4956 /* LDV_COMMENT_END_PREP */
4957
4958
4959
4960
4961 }
4962
4963 break;
4964 case 29: {
4965
4966 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
4967
4968
4969 /* content: static int vidioc_g_register(struct file *file, void *priv, struct v4l2_dbg_register *reg)*/
4970 /* LDV_COMMENT_BEGIN_PREP */
4971 #define DRIVER_AUTHOR \
4972 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
4973 "Dwaine Garden <DwaineGarden@rogers.com>"
4974 #define DRIVER_NAME "usbvision"
4975 #define DRIVER_ALIAS "USBVision"
4976 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
4977 #define DRIVER_LICENSE "GPL"
4978 #define USBVISION_VERSION_STRING "0.9.11"
4979 #define ENABLE_HEXDUMP 0
4980 #ifdef USBVISION_DEBUG
4981 #define PDEBUG(level, fmt, args...) { \
4982 if (video_debug & (level)) \
4983 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
4984 __func__, __LINE__ , ## args); \
4985 }
4986 #else
4987 #define PDEBUG(level, fmt, args...) do {} while (0)
4988 #endif
4989 #define DBG_IO (1 << 1)
4990 #define DBG_PROBE (1 << 2)
4991 #define DBG_MMAP (1 << 3)
4992 #define rmspace(str) while (*str == ' ') str++;
4993 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
4994 #define YES_NO(x) ((x) ? "Yes" : "No")
4995 #ifdef CONFIG_VIDEO_ADV_DEBUG
4996 /* LDV_COMMENT_END_PREP */
4997 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_register" from driver structure with callbacks "usbvision_ioctl_ops" */
4998 ldv_handler_precall();
4999 vidioc_g_register( var_group1, var_vidioc_g_register_14_p1, var_vidioc_g_register_14_p2);
5000 /* LDV_COMMENT_BEGIN_PREP */
5001 #endif
5002 #ifdef CONFIG_VIDEO_ADV_DEBUG
5003 #endif
5004 /* LDV_COMMENT_END_PREP */
5005
5006
5007
5008
5009 }
5010
5011 break;
5012 case 30: {
5013
5014 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_ioctl_ops **/
5015
5016
5017 /* content: static int vidioc_s_register(struct file *file, void *priv, const struct v4l2_dbg_register *reg)*/
5018 /* LDV_COMMENT_BEGIN_PREP */
5019 #define DRIVER_AUTHOR \
5020 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5021 "Dwaine Garden <DwaineGarden@rogers.com>"
5022 #define DRIVER_NAME "usbvision"
5023 #define DRIVER_ALIAS "USBVision"
5024 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5025 #define DRIVER_LICENSE "GPL"
5026 #define USBVISION_VERSION_STRING "0.9.11"
5027 #define ENABLE_HEXDUMP 0
5028 #ifdef USBVISION_DEBUG
5029 #define PDEBUG(level, fmt, args...) { \
5030 if (video_debug & (level)) \
5031 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5032 __func__, __LINE__ , ## args); \
5033 }
5034 #else
5035 #define PDEBUG(level, fmt, args...) do {} while (0)
5036 #endif
5037 #define DBG_IO (1 << 1)
5038 #define DBG_PROBE (1 << 2)
5039 #define DBG_MMAP (1 << 3)
5040 #define rmspace(str) while (*str == ' ') str++;
5041 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5042 #define YES_NO(x) ((x) ? "Yes" : "No")
5043 #ifdef CONFIG_VIDEO_ADV_DEBUG
5044 /* LDV_COMMENT_END_PREP */
5045 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_register" from driver structure with callbacks "usbvision_ioctl_ops" */
5046 ldv_handler_precall();
5047 vidioc_s_register( var_group1, var_vidioc_s_register_15_p1, var_vidioc_s_register_15_p2);
5048 /* LDV_COMMENT_BEGIN_PREP */
5049 #endif
5050 #ifdef CONFIG_VIDEO_ADV_DEBUG
5051 #endif
5052 /* LDV_COMMENT_END_PREP */
5053
5054
5055
5056
5057 }
5058
5059 break;
5060 case 31: {
5061
5062 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
5063 if(ldv_s_usbvision_radio_fops_v4l2_file_operations==0) {
5064
5065 /* content: static int usbvision_radio_open(struct file *file)*/
5066 /* LDV_COMMENT_BEGIN_PREP */
5067 #define DRIVER_AUTHOR \
5068 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5069 "Dwaine Garden <DwaineGarden@rogers.com>"
5070 #define DRIVER_NAME "usbvision"
5071 #define DRIVER_ALIAS "USBVision"
5072 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5073 #define DRIVER_LICENSE "GPL"
5074 #define USBVISION_VERSION_STRING "0.9.11"
5075 #define ENABLE_HEXDUMP 0
5076 #ifdef USBVISION_DEBUG
5077 #define PDEBUG(level, fmt, args...) { \
5078 if (video_debug & (level)) \
5079 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5080 __func__, __LINE__ , ## args); \
5081 }
5082 #else
5083 #define PDEBUG(level, fmt, args...) do {} while (0)
5084 #endif
5085 #define DBG_IO (1 << 1)
5086 #define DBG_PROBE (1 << 2)
5087 #define DBG_MMAP (1 << 3)
5088 #define rmspace(str) while (*str == ' ') str++;
5089 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5090 #define YES_NO(x) ((x) ? "Yes" : "No")
5091 #ifdef CONFIG_VIDEO_ADV_DEBUG
5092 #endif
5093 /* LDV_COMMENT_END_PREP */
5094 /* LDV_COMMENT_FUNCTION_CALL Function from field "open" from driver structure with callbacks "usbvision_radio_fops". Standart function test for correct return result. */
5095 ldv_handler_precall();
5096 res_usbvision_radio_open_45 = usbvision_radio_open( var_group1);
5097 ldv_check_return_value(res_usbvision_radio_open_45);
5098 if(res_usbvision_radio_open_45)
5099 goto ldv_module_exit;
5100 /* LDV_COMMENT_BEGIN_PREP */
5101 #ifdef CONFIG_VIDEO_ADV_DEBUG
5102 #endif
5103 /* LDV_COMMENT_END_PREP */
5104 ldv_s_usbvision_radio_fops_v4l2_file_operations++;
5105
5106 }
5107
5108 }
5109
5110 break;
5111 case 32: {
5112
5113 /** STRUCT: struct type: v4l2_file_operations, struct name: usbvision_radio_fops **/
5114 if(ldv_s_usbvision_radio_fops_v4l2_file_operations==1) {
5115
5116 /* content: static int usbvision_radio_close(struct file *file)*/
5117 /* LDV_COMMENT_BEGIN_PREP */
5118 #define DRIVER_AUTHOR \
5119 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5120 "Dwaine Garden <DwaineGarden@rogers.com>"
5121 #define DRIVER_NAME "usbvision"
5122 #define DRIVER_ALIAS "USBVision"
5123 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5124 #define DRIVER_LICENSE "GPL"
5125 #define USBVISION_VERSION_STRING "0.9.11"
5126 #define ENABLE_HEXDUMP 0
5127 #ifdef USBVISION_DEBUG
5128 #define PDEBUG(level, fmt, args...) { \
5129 if (video_debug & (level)) \
5130 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5131 __func__, __LINE__ , ## args); \
5132 }
5133 #else
5134 #define PDEBUG(level, fmt, args...) do {} while (0)
5135 #endif
5136 #define DBG_IO (1 << 1)
5137 #define DBG_PROBE (1 << 2)
5138 #define DBG_MMAP (1 << 3)
5139 #define rmspace(str) while (*str == ' ') str++;
5140 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5141 #define YES_NO(x) ((x) ? "Yes" : "No")
5142 #ifdef CONFIG_VIDEO_ADV_DEBUG
5143 #endif
5144 /* LDV_COMMENT_END_PREP */
5145 /* LDV_COMMENT_FUNCTION_CALL Function from field "release" from driver structure with callbacks "usbvision_radio_fops" */
5146 ldv_handler_precall();
5147 usbvision_radio_close( var_group1);
5148 /* LDV_COMMENT_BEGIN_PREP */
5149 #ifdef CONFIG_VIDEO_ADV_DEBUG
5150 #endif
5151 /* LDV_COMMENT_END_PREP */
5152 ldv_s_usbvision_radio_fops_v4l2_file_operations=0;
5153
5154 }
5155
5156 }
5157
5158 break;
5159 case 33: {
5160
5161 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5162
5163
5164 /* content: static int vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *vc)*/
5165 /* LDV_COMMENT_BEGIN_PREP */
5166 #define DRIVER_AUTHOR \
5167 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5168 "Dwaine Garden <DwaineGarden@rogers.com>"
5169 #define DRIVER_NAME "usbvision"
5170 #define DRIVER_ALIAS "USBVision"
5171 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5172 #define DRIVER_LICENSE "GPL"
5173 #define USBVISION_VERSION_STRING "0.9.11"
5174 #define ENABLE_HEXDUMP 0
5175 #ifdef USBVISION_DEBUG
5176 #define PDEBUG(level, fmt, args...) { \
5177 if (video_debug & (level)) \
5178 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5179 __func__, __LINE__ , ## args); \
5180 }
5181 #else
5182 #define PDEBUG(level, fmt, args...) do {} while (0)
5183 #endif
5184 #define DBG_IO (1 << 1)
5185 #define DBG_PROBE (1 << 2)
5186 #define DBG_MMAP (1 << 3)
5187 #define rmspace(str) while (*str == ' ') str++;
5188 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5189 #define YES_NO(x) ((x) ? "Yes" : "No")
5190 #ifdef CONFIG_VIDEO_ADV_DEBUG
5191 #endif
5192 /* LDV_COMMENT_END_PREP */
5193 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_querycap" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5194 ldv_handler_precall();
5195 vidioc_querycap( var_group1, var_vidioc_querycap_16_p1, var_vidioc_querycap_16_p2);
5196 /* LDV_COMMENT_BEGIN_PREP */
5197 #ifdef CONFIG_VIDEO_ADV_DEBUG
5198 #endif
5199 /* LDV_COMMENT_END_PREP */
5200
5201
5202
5203
5204 }
5205
5206 break;
5207 case 34: {
5208
5209 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5210
5211
5212 /* content: static int vidioc_enum_input(struct file *file, void *priv, struct v4l2_input *vi)*/
5213 /* LDV_COMMENT_BEGIN_PREP */
5214 #define DRIVER_AUTHOR \
5215 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5216 "Dwaine Garden <DwaineGarden@rogers.com>"
5217 #define DRIVER_NAME "usbvision"
5218 #define DRIVER_ALIAS "USBVision"
5219 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5220 #define DRIVER_LICENSE "GPL"
5221 #define USBVISION_VERSION_STRING "0.9.11"
5222 #define ENABLE_HEXDUMP 0
5223 #ifdef USBVISION_DEBUG
5224 #define PDEBUG(level, fmt, args...) { \
5225 if (video_debug & (level)) \
5226 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5227 __func__, __LINE__ , ## args); \
5228 }
5229 #else
5230 #define PDEBUG(level, fmt, args...) do {} while (0)
5231 #endif
5232 #define DBG_IO (1 << 1)
5233 #define DBG_PROBE (1 << 2)
5234 #define DBG_MMAP (1 << 3)
5235 #define rmspace(str) while (*str == ' ') str++;
5236 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5237 #define YES_NO(x) ((x) ? "Yes" : "No")
5238 #ifdef CONFIG_VIDEO_ADV_DEBUG
5239 #endif
5240 /* LDV_COMMENT_END_PREP */
5241 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_enum_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5242 ldv_handler_precall();
5243 vidioc_enum_input( var_group1, var_vidioc_enum_input_17_p1, var_vidioc_enum_input_17_p2);
5244 /* LDV_COMMENT_BEGIN_PREP */
5245 #ifdef CONFIG_VIDEO_ADV_DEBUG
5246 #endif
5247 /* LDV_COMMENT_END_PREP */
5248
5249
5250
5251
5252 }
5253
5254 break;
5255 case 35: {
5256
5257 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5258
5259
5260 /* content: static int vidioc_g_input(struct file *file, void *priv, unsigned int *input)*/
5261 /* LDV_COMMENT_BEGIN_PREP */
5262 #define DRIVER_AUTHOR \
5263 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5264 "Dwaine Garden <DwaineGarden@rogers.com>"
5265 #define DRIVER_NAME "usbvision"
5266 #define DRIVER_ALIAS "USBVision"
5267 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5268 #define DRIVER_LICENSE "GPL"
5269 #define USBVISION_VERSION_STRING "0.9.11"
5270 #define ENABLE_HEXDUMP 0
5271 #ifdef USBVISION_DEBUG
5272 #define PDEBUG(level, fmt, args...) { \
5273 if (video_debug & (level)) \
5274 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5275 __func__, __LINE__ , ## args); \
5276 }
5277 #else
5278 #define PDEBUG(level, fmt, args...) do {} while (0)
5279 #endif
5280 #define DBG_IO (1 << 1)
5281 #define DBG_PROBE (1 << 2)
5282 #define DBG_MMAP (1 << 3)
5283 #define rmspace(str) while (*str == ' ') str++;
5284 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5285 #define YES_NO(x) ((x) ? "Yes" : "No")
5286 #ifdef CONFIG_VIDEO_ADV_DEBUG
5287 #endif
5288 /* LDV_COMMENT_END_PREP */
5289 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5290 ldv_handler_precall();
5291 vidioc_g_input( var_group1, var_vidioc_g_input_18_p1, var_vidioc_g_input_18_p2);
5292 /* LDV_COMMENT_BEGIN_PREP */
5293 #ifdef CONFIG_VIDEO_ADV_DEBUG
5294 #endif
5295 /* LDV_COMMENT_END_PREP */
5296
5297
5298
5299
5300 }
5301
5302 break;
5303 case 36: {
5304
5305 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5306
5307
5308 /* content: static int vidioc_s_input(struct file *file, void *priv, unsigned int input)*/
5309 /* LDV_COMMENT_BEGIN_PREP */
5310 #define DRIVER_AUTHOR \
5311 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5312 "Dwaine Garden <DwaineGarden@rogers.com>"
5313 #define DRIVER_NAME "usbvision"
5314 #define DRIVER_ALIAS "USBVision"
5315 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5316 #define DRIVER_LICENSE "GPL"
5317 #define USBVISION_VERSION_STRING "0.9.11"
5318 #define ENABLE_HEXDUMP 0
5319 #ifdef USBVISION_DEBUG
5320 #define PDEBUG(level, fmt, args...) { \
5321 if (video_debug & (level)) \
5322 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5323 __func__, __LINE__ , ## args); \
5324 }
5325 #else
5326 #define PDEBUG(level, fmt, args...) do {} while (0)
5327 #endif
5328 #define DBG_IO (1 << 1)
5329 #define DBG_PROBE (1 << 2)
5330 #define DBG_MMAP (1 << 3)
5331 #define rmspace(str) while (*str == ' ') str++;
5332 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5333 #define YES_NO(x) ((x) ? "Yes" : "No")
5334 #ifdef CONFIG_VIDEO_ADV_DEBUG
5335 #endif
5336 /* LDV_COMMENT_END_PREP */
5337 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_input" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5338 ldv_handler_precall();
5339 vidioc_s_input( var_group1, var_vidioc_s_input_19_p1, var_vidioc_s_input_19_p2);
5340 /* LDV_COMMENT_BEGIN_PREP */
5341 #ifdef CONFIG_VIDEO_ADV_DEBUG
5342 #endif
5343 /* LDV_COMMENT_END_PREP */
5344
5345
5346
5347
5348 }
5349
5350 break;
5351 case 37: {
5352
5353 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5354
5355
5356 /* content: static int vidioc_queryctrl(struct file *file, void *priv, struct v4l2_queryctrl *ctrl)*/
5357 /* LDV_COMMENT_BEGIN_PREP */
5358 #define DRIVER_AUTHOR \
5359 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5360 "Dwaine Garden <DwaineGarden@rogers.com>"
5361 #define DRIVER_NAME "usbvision"
5362 #define DRIVER_ALIAS "USBVision"
5363 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5364 #define DRIVER_LICENSE "GPL"
5365 #define USBVISION_VERSION_STRING "0.9.11"
5366 #define ENABLE_HEXDUMP 0
5367 #ifdef USBVISION_DEBUG
5368 #define PDEBUG(level, fmt, args...) { \
5369 if (video_debug & (level)) \
5370 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5371 __func__, __LINE__ , ## args); \
5372 }
5373 #else
5374 #define PDEBUG(level, fmt, args...) do {} while (0)
5375 #endif
5376 #define DBG_IO (1 << 1)
5377 #define DBG_PROBE (1 << 2)
5378 #define DBG_MMAP (1 << 3)
5379 #define rmspace(str) while (*str == ' ') str++;
5380 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5381 #define YES_NO(x) ((x) ? "Yes" : "No")
5382 #ifdef CONFIG_VIDEO_ADV_DEBUG
5383 #endif
5384 /* LDV_COMMENT_END_PREP */
5385 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_queryctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5386 ldv_handler_precall();
5387 vidioc_queryctrl( var_group1, var_vidioc_queryctrl_28_p1, var_vidioc_queryctrl_28_p2);
5388 /* LDV_COMMENT_BEGIN_PREP */
5389 #ifdef CONFIG_VIDEO_ADV_DEBUG
5390 #endif
5391 /* LDV_COMMENT_END_PREP */
5392
5393
5394
5395
5396 }
5397
5398 break;
5399 case 38: {
5400
5401 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5402
5403
5404 /* content: static int vidioc_g_audio(struct file *file, void *priv, struct v4l2_audio *a)*/
5405 /* LDV_COMMENT_BEGIN_PREP */
5406 #define DRIVER_AUTHOR \
5407 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5408 "Dwaine Garden <DwaineGarden@rogers.com>"
5409 #define DRIVER_NAME "usbvision"
5410 #define DRIVER_ALIAS "USBVision"
5411 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5412 #define DRIVER_LICENSE "GPL"
5413 #define USBVISION_VERSION_STRING "0.9.11"
5414 #define ENABLE_HEXDUMP 0
5415 #ifdef USBVISION_DEBUG
5416 #define PDEBUG(level, fmt, args...) { \
5417 if (video_debug & (level)) \
5418 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5419 __func__, __LINE__ , ## args); \
5420 }
5421 #else
5422 #define PDEBUG(level, fmt, args...) do {} while (0)
5423 #endif
5424 #define DBG_IO (1 << 1)
5425 #define DBG_PROBE (1 << 2)
5426 #define DBG_MMAP (1 << 3)
5427 #define rmspace(str) while (*str == ' ') str++;
5428 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5429 #define YES_NO(x) ((x) ? "Yes" : "No")
5430 #ifdef CONFIG_VIDEO_ADV_DEBUG
5431 #endif
5432 /* LDV_COMMENT_END_PREP */
5433 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_audio" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5434 ldv_handler_precall();
5435 vidioc_g_audio( var_group1, var_vidioc_g_audio_26_p1, var_vidioc_g_audio_26_p2);
5436 /* LDV_COMMENT_BEGIN_PREP */
5437 #ifdef CONFIG_VIDEO_ADV_DEBUG
5438 #endif
5439 /* LDV_COMMENT_END_PREP */
5440
5441
5442
5443
5444 }
5445
5446 break;
5447 case 39: {
5448
5449 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5450
5451
5452 /* content: static int vidioc_s_audio(struct file *file, void *fh, const struct v4l2_audio *a)*/
5453 /* LDV_COMMENT_BEGIN_PREP */
5454 #define DRIVER_AUTHOR \
5455 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5456 "Dwaine Garden <DwaineGarden@rogers.com>"
5457 #define DRIVER_NAME "usbvision"
5458 #define DRIVER_ALIAS "USBVision"
5459 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5460 #define DRIVER_LICENSE "GPL"
5461 #define USBVISION_VERSION_STRING "0.9.11"
5462 #define ENABLE_HEXDUMP 0
5463 #ifdef USBVISION_DEBUG
5464 #define PDEBUG(level, fmt, args...) { \
5465 if (video_debug & (level)) \
5466 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5467 __func__, __LINE__ , ## args); \
5468 }
5469 #else
5470 #define PDEBUG(level, fmt, args...) do {} while (0)
5471 #endif
5472 #define DBG_IO (1 << 1)
5473 #define DBG_PROBE (1 << 2)
5474 #define DBG_MMAP (1 << 3)
5475 #define rmspace(str) while (*str == ' ') str++;
5476 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5477 #define YES_NO(x) ((x) ? "Yes" : "No")
5478 #ifdef CONFIG_VIDEO_ADV_DEBUG
5479 #endif
5480 /* LDV_COMMENT_END_PREP */
5481 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_audio" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5482 ldv_handler_precall();
5483 vidioc_s_audio( var_group1, var_vidioc_s_audio_27_p1, var_vidioc_s_audio_27_p2);
5484 /* LDV_COMMENT_BEGIN_PREP */
5485 #ifdef CONFIG_VIDEO_ADV_DEBUG
5486 #endif
5487 /* LDV_COMMENT_END_PREP */
5488
5489
5490
5491
5492 }
5493
5494 break;
5495 case 40: {
5496
5497 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5498
5499
5500 /* content: static int vidioc_g_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
5501 /* LDV_COMMENT_BEGIN_PREP */
5502 #define DRIVER_AUTHOR \
5503 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5504 "Dwaine Garden <DwaineGarden@rogers.com>"
5505 #define DRIVER_NAME "usbvision"
5506 #define DRIVER_ALIAS "USBVision"
5507 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5508 #define DRIVER_LICENSE "GPL"
5509 #define USBVISION_VERSION_STRING "0.9.11"
5510 #define ENABLE_HEXDUMP 0
5511 #ifdef USBVISION_DEBUG
5512 #define PDEBUG(level, fmt, args...) { \
5513 if (video_debug & (level)) \
5514 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5515 __func__, __LINE__ , ## args); \
5516 }
5517 #else
5518 #define PDEBUG(level, fmt, args...) do {} while (0)
5519 #endif
5520 #define DBG_IO (1 << 1)
5521 #define DBG_PROBE (1 << 2)
5522 #define DBG_MMAP (1 << 3)
5523 #define rmspace(str) while (*str == ' ') str++;
5524 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5525 #define YES_NO(x) ((x) ? "Yes" : "No")
5526 #ifdef CONFIG_VIDEO_ADV_DEBUG
5527 #endif
5528 /* LDV_COMMENT_END_PREP */
5529 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_ctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5530 ldv_handler_precall();
5531 vidioc_g_ctrl( var_group1, var_vidioc_g_ctrl_29_p1, var_vidioc_g_ctrl_29_p2);
5532 /* LDV_COMMENT_BEGIN_PREP */
5533 #ifdef CONFIG_VIDEO_ADV_DEBUG
5534 #endif
5535 /* LDV_COMMENT_END_PREP */
5536
5537
5538
5539
5540 }
5541
5542 break;
5543 case 41: {
5544
5545 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5546
5547
5548 /* content: static int vidioc_s_ctrl(struct file *file, void *priv, struct v4l2_control *ctrl)*/
5549 /* LDV_COMMENT_BEGIN_PREP */
5550 #define DRIVER_AUTHOR \
5551 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5552 "Dwaine Garden <DwaineGarden@rogers.com>"
5553 #define DRIVER_NAME "usbvision"
5554 #define DRIVER_ALIAS "USBVision"
5555 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5556 #define DRIVER_LICENSE "GPL"
5557 #define USBVISION_VERSION_STRING "0.9.11"
5558 #define ENABLE_HEXDUMP 0
5559 #ifdef USBVISION_DEBUG
5560 #define PDEBUG(level, fmt, args...) { \
5561 if (video_debug & (level)) \
5562 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5563 __func__, __LINE__ , ## args); \
5564 }
5565 #else
5566 #define PDEBUG(level, fmt, args...) do {} while (0)
5567 #endif
5568 #define DBG_IO (1 << 1)
5569 #define DBG_PROBE (1 << 2)
5570 #define DBG_MMAP (1 << 3)
5571 #define rmspace(str) while (*str == ' ') str++;
5572 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5573 #define YES_NO(x) ((x) ? "Yes" : "No")
5574 #ifdef CONFIG_VIDEO_ADV_DEBUG
5575 #endif
5576 /* LDV_COMMENT_END_PREP */
5577 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_ctrl" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5578 ldv_handler_precall();
5579 vidioc_s_ctrl( var_group1, var_vidioc_s_ctrl_30_p1, var_vidioc_s_ctrl_30_p2);
5580 /* LDV_COMMENT_BEGIN_PREP */
5581 #ifdef CONFIG_VIDEO_ADV_DEBUG
5582 #endif
5583 /* LDV_COMMENT_END_PREP */
5584
5585
5586
5587
5588 }
5589
5590 break;
5591 case 42: {
5592
5593 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5594
5595
5596 /* content: static int vidioc_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)*/
5597 /* LDV_COMMENT_BEGIN_PREP */
5598 #define DRIVER_AUTHOR \
5599 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5600 "Dwaine Garden <DwaineGarden@rogers.com>"
5601 #define DRIVER_NAME "usbvision"
5602 #define DRIVER_ALIAS "USBVision"
5603 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5604 #define DRIVER_LICENSE "GPL"
5605 #define USBVISION_VERSION_STRING "0.9.11"
5606 #define ENABLE_HEXDUMP 0
5607 #ifdef USBVISION_DEBUG
5608 #define PDEBUG(level, fmt, args...) { \
5609 if (video_debug & (level)) \
5610 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5611 __func__, __LINE__ , ## args); \
5612 }
5613 #else
5614 #define PDEBUG(level, fmt, args...) do {} while (0)
5615 #endif
5616 #define DBG_IO (1 << 1)
5617 #define DBG_PROBE (1 << 2)
5618 #define DBG_MMAP (1 << 3)
5619 #define rmspace(str) while (*str == ' ') str++;
5620 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5621 #define YES_NO(x) ((x) ? "Yes" : "No")
5622 #ifdef CONFIG_VIDEO_ADV_DEBUG
5623 #endif
5624 /* LDV_COMMENT_END_PREP */
5625 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_tuner" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5626 ldv_handler_precall();
5627 vidioc_g_tuner( var_group1, var_vidioc_g_tuner_22_p1, var_vidioc_g_tuner_22_p2);
5628 /* LDV_COMMENT_BEGIN_PREP */
5629 #ifdef CONFIG_VIDEO_ADV_DEBUG
5630 #endif
5631 /* LDV_COMMENT_END_PREP */
5632
5633
5634
5635
5636 }
5637
5638 break;
5639 case 43: {
5640
5641 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5642
5643
5644 /* content: static int vidioc_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)*/
5645 /* LDV_COMMENT_BEGIN_PREP */
5646 #define DRIVER_AUTHOR \
5647 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5648 "Dwaine Garden <DwaineGarden@rogers.com>"
5649 #define DRIVER_NAME "usbvision"
5650 #define DRIVER_ALIAS "USBVision"
5651 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5652 #define DRIVER_LICENSE "GPL"
5653 #define USBVISION_VERSION_STRING "0.9.11"
5654 #define ENABLE_HEXDUMP 0
5655 #ifdef USBVISION_DEBUG
5656 #define PDEBUG(level, fmt, args...) { \
5657 if (video_debug & (level)) \
5658 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5659 __func__, __LINE__ , ## args); \
5660 }
5661 #else
5662 #define PDEBUG(level, fmt, args...) do {} while (0)
5663 #endif
5664 #define DBG_IO (1 << 1)
5665 #define DBG_PROBE (1 << 2)
5666 #define DBG_MMAP (1 << 3)
5667 #define rmspace(str) while (*str == ' ') str++;
5668 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5669 #define YES_NO(x) ((x) ? "Yes" : "No")
5670 #ifdef CONFIG_VIDEO_ADV_DEBUG
5671 #endif
5672 /* LDV_COMMENT_END_PREP */
5673 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_tuner" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5674 ldv_handler_precall();
5675 vidioc_s_tuner( var_group1, var_vidioc_s_tuner_23_p1, var_vidioc_s_tuner_23_p2);
5676 /* LDV_COMMENT_BEGIN_PREP */
5677 #ifdef CONFIG_VIDEO_ADV_DEBUG
5678 #endif
5679 /* LDV_COMMENT_END_PREP */
5680
5681
5682
5683
5684 }
5685
5686 break;
5687 case 44: {
5688
5689 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5690
5691
5692 /* content: static int vidioc_g_frequency(struct file *file, void *priv, struct v4l2_frequency *freq)*/
5693 /* LDV_COMMENT_BEGIN_PREP */
5694 #define DRIVER_AUTHOR \
5695 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5696 "Dwaine Garden <DwaineGarden@rogers.com>"
5697 #define DRIVER_NAME "usbvision"
5698 #define DRIVER_ALIAS "USBVision"
5699 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5700 #define DRIVER_LICENSE "GPL"
5701 #define USBVISION_VERSION_STRING "0.9.11"
5702 #define ENABLE_HEXDUMP 0
5703 #ifdef USBVISION_DEBUG
5704 #define PDEBUG(level, fmt, args...) { \
5705 if (video_debug & (level)) \
5706 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5707 __func__, __LINE__ , ## args); \
5708 }
5709 #else
5710 #define PDEBUG(level, fmt, args...) do {} while (0)
5711 #endif
5712 #define DBG_IO (1 << 1)
5713 #define DBG_PROBE (1 << 2)
5714 #define DBG_MMAP (1 << 3)
5715 #define rmspace(str) while (*str == ' ') str++;
5716 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5717 #define YES_NO(x) ((x) ? "Yes" : "No")
5718 #ifdef CONFIG_VIDEO_ADV_DEBUG
5719 #endif
5720 /* LDV_COMMENT_END_PREP */
5721 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_g_frequency" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5722 ldv_handler_precall();
5723 vidioc_g_frequency( var_group1, var_vidioc_g_frequency_24_p1, var_vidioc_g_frequency_24_p2);
5724 /* LDV_COMMENT_BEGIN_PREP */
5725 #ifdef CONFIG_VIDEO_ADV_DEBUG
5726 #endif
5727 /* LDV_COMMENT_END_PREP */
5728
5729
5730
5731
5732 }
5733
5734 break;
5735 case 45: {
5736
5737 /** STRUCT: struct type: v4l2_ioctl_ops, struct name: usbvision_radio_ioctl_ops **/
5738
5739
5740 /* content: static int vidioc_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *freq)*/
5741 /* LDV_COMMENT_BEGIN_PREP */
5742 #define DRIVER_AUTHOR \
5743 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5744 "Dwaine Garden <DwaineGarden@rogers.com>"
5745 #define DRIVER_NAME "usbvision"
5746 #define DRIVER_ALIAS "USBVision"
5747 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5748 #define DRIVER_LICENSE "GPL"
5749 #define USBVISION_VERSION_STRING "0.9.11"
5750 #define ENABLE_HEXDUMP 0
5751 #ifdef USBVISION_DEBUG
5752 #define PDEBUG(level, fmt, args...) { \
5753 if (video_debug & (level)) \
5754 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5755 __func__, __LINE__ , ## args); \
5756 }
5757 #else
5758 #define PDEBUG(level, fmt, args...) do {} while (0)
5759 #endif
5760 #define DBG_IO (1 << 1)
5761 #define DBG_PROBE (1 << 2)
5762 #define DBG_MMAP (1 << 3)
5763 #define rmspace(str) while (*str == ' ') str++;
5764 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5765 #define YES_NO(x) ((x) ? "Yes" : "No")
5766 #ifdef CONFIG_VIDEO_ADV_DEBUG
5767 #endif
5768 /* LDV_COMMENT_END_PREP */
5769 /* LDV_COMMENT_FUNCTION_CALL Function from field "vidioc_s_frequency" from driver structure with callbacks "usbvision_radio_ioctl_ops" */
5770 ldv_handler_precall();
5771 vidioc_s_frequency( var_group1, var_vidioc_s_frequency_25_p1, var_vidioc_s_frequency_25_p2);
5772 /* LDV_COMMENT_BEGIN_PREP */
5773 #ifdef CONFIG_VIDEO_ADV_DEBUG
5774 #endif
5775 /* LDV_COMMENT_END_PREP */
5776
5777
5778
5779
5780 }
5781
5782 break;
5783 case 46: {
5784
5785 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
5786 if(ldv_s_usbvision_driver_usb_driver==0) {
5787
5788 /* content: static int usbvision_probe(struct usb_interface *intf, const struct usb_device_id *devid)*/
5789 /* LDV_COMMENT_BEGIN_PREP */
5790 #define DRIVER_AUTHOR \
5791 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5792 "Dwaine Garden <DwaineGarden@rogers.com>"
5793 #define DRIVER_NAME "usbvision"
5794 #define DRIVER_ALIAS "USBVision"
5795 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5796 #define DRIVER_LICENSE "GPL"
5797 #define USBVISION_VERSION_STRING "0.9.11"
5798 #define ENABLE_HEXDUMP 0
5799 #ifdef USBVISION_DEBUG
5800 #define PDEBUG(level, fmt, args...) { \
5801 if (video_debug & (level)) \
5802 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5803 __func__, __LINE__ , ## args); \
5804 }
5805 #else
5806 #define PDEBUG(level, fmt, args...) do {} while (0)
5807 #endif
5808 #define DBG_IO (1 << 1)
5809 #define DBG_PROBE (1 << 2)
5810 #define DBG_MMAP (1 << 3)
5811 #define rmspace(str) while (*str == ' ') str++;
5812 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5813 #define YES_NO(x) ((x) ? "Yes" : "No")
5814 #ifdef CONFIG_VIDEO_ADV_DEBUG
5815 #endif
5816 #ifdef CONFIG_VIDEO_ADV_DEBUG
5817 #endif
5818 /* LDV_COMMENT_END_PREP */
5819 /* LDV_COMMENT_FUNCTION_CALL Function from field "probe" from driver structure with callbacks "usbvision_driver". Standart function test for correct return result. */
5820 res_usbvision_probe_53 = usbvision_probe( var_group3, var_usbvision_probe_53_p1);
5821 ldv_check_return_value(res_usbvision_probe_53);
5822 ldv_check_return_value_probe(res_usbvision_probe_53);
5823 if(res_usbvision_probe_53)
5824 goto ldv_module_exit;
5825 ldv_s_usbvision_driver_usb_driver++;
5826
5827 }
5828
5829 }
5830
5831 break;
5832 case 47: {
5833
5834 /** STRUCT: struct type: usb_driver, struct name: usbvision_driver **/
5835 if(ldv_s_usbvision_driver_usb_driver==1) {
5836
5837 /* content: static void usbvision_disconnect(struct usb_interface *intf)*/
5838 /* LDV_COMMENT_BEGIN_PREP */
5839 #define DRIVER_AUTHOR \
5840 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5841 "Dwaine Garden <DwaineGarden@rogers.com>"
5842 #define DRIVER_NAME "usbvision"
5843 #define DRIVER_ALIAS "USBVision"
5844 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5845 #define DRIVER_LICENSE "GPL"
5846 #define USBVISION_VERSION_STRING "0.9.11"
5847 #define ENABLE_HEXDUMP 0
5848 #ifdef USBVISION_DEBUG
5849 #define PDEBUG(level, fmt, args...) { \
5850 if (video_debug & (level)) \
5851 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5852 __func__, __LINE__ , ## args); \
5853 }
5854 #else
5855 #define PDEBUG(level, fmt, args...) do {} while (0)
5856 #endif
5857 #define DBG_IO (1 << 1)
5858 #define DBG_PROBE (1 << 2)
5859 #define DBG_MMAP (1 << 3)
5860 #define rmspace(str) while (*str == ' ') str++;
5861 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5862 #define YES_NO(x) ((x) ? "Yes" : "No")
5863 #ifdef CONFIG_VIDEO_ADV_DEBUG
5864 #endif
5865 #ifdef CONFIG_VIDEO_ADV_DEBUG
5866 #endif
5867 /* LDV_COMMENT_END_PREP */
5868 /* LDV_COMMENT_FUNCTION_CALL Function from field "disconnect" from driver structure with callbacks "usbvision_driver" */
5869 ldv_handler_precall();
5870 usbvision_disconnect( var_group3);
5871 ldv_s_usbvision_driver_usb_driver=0;
5872
5873 }
5874
5875 }
5876
5877 break;
5878 default: break;
5879
5880 }
5881
5882 }
5883
5884 ldv_module_exit:
5885
5886 /** INIT: init_type: ST_MODULE_EXIT **/
5887 /* content: static void __exit usbvision_exit(void)*/
5888 /* LDV_COMMENT_BEGIN_PREP */
5889 #define DRIVER_AUTHOR \
5890 "Joerg Heckenbach <joerg@heckenbach-aw.de>, " \
5891 "Dwaine Garden <DwaineGarden@rogers.com>"
5892 #define DRIVER_NAME "usbvision"
5893 #define DRIVER_ALIAS "USBVision"
5894 #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
5895 #define DRIVER_LICENSE "GPL"
5896 #define USBVISION_VERSION_STRING "0.9.11"
5897 #define ENABLE_HEXDUMP 0
5898 #ifdef USBVISION_DEBUG
5899 #define PDEBUG(level, fmt, args...) { \
5900 if (video_debug & (level)) \
5901 printk(KERN_INFO KBUILD_MODNAME ":[%s:%d] " fmt, \
5902 __func__, __LINE__ , ## args); \
5903 }
5904 #else
5905 #define PDEBUG(level, fmt, args...) do {} while (0)
5906 #endif
5907 #define DBG_IO (1 << 1)
5908 #define DBG_PROBE (1 << 2)
5909 #define DBG_MMAP (1 << 3)
5910 #define rmspace(str) while (*str == ' ') str++;
5911 #define goto2next(str) while (*str != ' ') str++; while (*str == ' ') str++;
5912 #define YES_NO(x) ((x) ? "Yes" : "No")
5913 #ifdef CONFIG_VIDEO_ADV_DEBUG
5914 #endif
5915 #ifdef CONFIG_VIDEO_ADV_DEBUG
5916 #endif
5917 /* LDV_COMMENT_END_PREP */
5918 /* LDV_COMMENT_FUNCTION_CALL Kernel calls driver release function before driver will be uploaded from kernel. This function declared as "MODULE_EXIT(function name)". */
5919 ldv_handler_precall();
5920 usbvision_exit();
5921
5922 /* LDV_COMMENT_FUNCTION_CALL Checks that all resources and locks are correctly released before the driver will be unloaded. */
5923 ldv_final: ldv_check_final_state();
5924
5925 /* LDV_COMMENT_END_FUNCTION_CALL_SECTION */
5926 return;
5927
5928 }
5929 #endif
5930
5931 /* LDV_COMMENT_END_MAIN */
5932
5933 #line 14 "/work/ldvuser/ref_launch/work/current--X--drivers--X--defaultlinux-4.0-rc1.tar.xz--X--132_1a/linux-4.0-rc1.tar.xz/csd_deg_dscv/8231/dscv_tempdir/dscv/ri/132_1a/drivers/media/usb/usbvision/usbvision-video.o.c.prepared" 1
2 #include <verifier/rcv.h> // For LDV auxiliary routines.
3 #include <kernel-model/ERR.inc>
4
5 // There are 3 possible states of usb device reference counter
6 enum
7 {
8 LDV_USB_DEV_ZERO_STATE = 0, // Usb device reference hasn't been acquired
9 LDV_USB_DEV_INCREASED = 1 // Usb device reference counter increased
10 };
11
12 /* LDV_COMMENT_OTHER The model automaton state (one of thee possible ones). */
13 int ldv_usb_dev_state = LDV_USB_DEV_ZERO_STATE;
14
15 /* LDV_COMMENT_MODEL_FUNCTION_DEFINITION(name='ldv_usb_get_dev') Change state after increasing the reference counter with usb_get_dev. */
16 void ldv_usb_get_dev(void)
17 {
18 /* LDV_COMMENT_CHANGE_STATE Increase reference counter. */
19 ldv_usb_dev_state++;
20 }
21
22 /* LDV_COMMENT_MODEL_FUNCTION_DEFINITION(name='ldv_usb_put_dev') Change state after decreasing the reference counter with usb_put_dev. */
23 void ldv_usb_put_dev(void)
24 {
25 /* LDV_COMMENT_ASSERT Check usb device reference counter has been increased. */
26 ldv_assert(ldv_usb_dev_state >= LDV_USB_DEV_INCREASED);
27 /* LDV_COMMENT_CHANGE_STATE Decrease reference counter. */
28 ldv_usb_dev_state--;
29 }
30
31 /* LDV_COMMENT_MODEL_FUNCTION_DEFINITION(name='ldv_check_return_value_probe') Check the probe function leaved the model in the proper state. */
32 void ldv_check_return_value_probe(int retval)
33 {
34 /* LDV_COMMENT_OTHER Probe finished unsuccessfully and returned an error. */
35 if (retval) {
36 /* LDV_COMMENT_ASSERT Check usb device reference counter is not increased. */
37 ldv_assert(ldv_usb_dev_state < LDV_USB_DEV_INCREASED);
38 }
39 }
40
41 /* LDV_COMMENT_MODEL_FUNCTION_DEFINITION(name='ldv_check_final_state') Check that usb device reference hasn't been acquired or the counter has been decreased. */
42 void ldv_check_final_state(void)
43 {
44 /* LDV_COMMENT_ASSERT Check that usb device reference hasn't been acquired or the counter has been decreased. */
45 ldv_assert(ldv_usb_dev_state < LDV_USB_DEV_INCREASED);
46 } 1 #ifndef __LINUX_USB_H
2 #define __LINUX_USB_H
3
4 #include <linux/mod_devicetable.h>
5 #include <linux/usb/ch9.h>
6
7 #define USB_MAJOR 180
8 #define USB_DEVICE_MAJOR 189
9
10
11 #ifdef __KERNEL__
12
13 #include <linux/errno.h> /* for -ENODEV */
14 #include <linux/delay.h> /* for mdelay() */
15 #include <linux/interrupt.h> /* for in_interrupt() */
16 #include <linux/list.h> /* for struct list_head */
17 #include <linux/kref.h> /* for struct kref */
18 #include <linux/device.h> /* for struct device */
19 #include <linux/fs.h> /* for struct file_operations */
20 #include <linux/completion.h> /* for struct completion */
21 #include <linux/sched.h> /* for current && schedule_timeout */
22 #include <linux/mutex.h> /* for struct mutex */
23 #include <linux/pm_runtime.h> /* for runtime PM */
24
25 struct usb_device;
26 struct usb_driver;
27 struct wusb_dev;
28
29 /*-------------------------------------------------------------------------*/
30
31 /*
32 * Host-side wrappers for standard USB descriptors ... these are parsed
33 * from the data provided by devices. Parsing turns them from a flat
34 * sequence of descriptors into a hierarchy:
35 *
36 * - devices have one (usually) or more configs;
37 * - configs have one (often) or more interfaces;
38 * - interfaces have one (usually) or more settings;
39 * - each interface setting has zero or (usually) more endpoints.
40 * - a SuperSpeed endpoint has a companion descriptor
41 *
42 * And there might be other descriptors mixed in with those.
43 *
44 * Devices may also have class-specific or vendor-specific descriptors.
45 */
46
47 struct ep_device;
48
49 /**
50 * struct usb_host_endpoint - host-side endpoint descriptor and queue
51 * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder
52 * @ss_ep_comp: SuperSpeed companion descriptor for this endpoint
53 * @urb_list: urbs queued to this endpoint; maintained by usbcore
54 * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH)
55 * with one or more transfer descriptors (TDs) per urb
56 * @ep_dev: ep_device for sysfs info
57 * @extra: descriptors following this endpoint in the configuration
58 * @extralen: how many bytes of "extra" are valid
59 * @enabled: URBs may be submitted to this endpoint
60 * @streams: number of USB-3 streams allocated on the endpoint
61 *
62 * USB requests are always queued to a given endpoint, identified by a
63 * descriptor within an active interface in a given USB configuration.
64 */
65 struct usb_host_endpoint {
66 struct usb_endpoint_descriptor desc;
67 struct usb_ss_ep_comp_descriptor ss_ep_comp;
68 struct list_head urb_list;
69 void *hcpriv;
70 struct ep_device *ep_dev; /* For sysfs info */
71
72 unsigned char *extra; /* Extra descriptors */
73 int extralen;
74 int enabled;
75 int streams;
76 };
77
78 /* host-side wrapper for one interface setting's parsed descriptors */
79 struct usb_host_interface {
80 struct usb_interface_descriptor desc;
81
82 int extralen;
83 unsigned char *extra; /* Extra descriptors */
84
85 /* array of desc.bNumEndpoints endpoints associated with this
86 * interface setting. these will be in no particular order.
87 */
88 struct usb_host_endpoint *endpoint;
89
90 char *string; /* iInterface string, if present */
91 };
92
93 enum usb_interface_condition {
94 USB_INTERFACE_UNBOUND = 0,
95 USB_INTERFACE_BINDING,
96 USB_INTERFACE_BOUND,
97 USB_INTERFACE_UNBINDING,
98 };
99
100 /**
101 * struct usb_interface - what usb device drivers talk to
102 * @altsetting: array of interface structures, one for each alternate
103 * setting that may be selected. Each one includes a set of
104 * endpoint configurations. They will be in no particular order.
105 * @cur_altsetting: the current altsetting.
106 * @num_altsetting: number of altsettings defined.
107 * @intf_assoc: interface association descriptor
108 * @minor: the minor number assigned to this interface, if this
109 * interface is bound to a driver that uses the USB major number.
110 * If this interface does not use the USB major, this field should
111 * be unused. The driver should set this value in the probe()
112 * function of the driver, after it has been assigned a minor
113 * number from the USB core by calling usb_register_dev().
114 * @condition: binding state of the interface: not bound, binding
115 * (in probe()), bound to a driver, or unbinding (in disconnect())
116 * @sysfs_files_created: sysfs attributes exist
117 * @ep_devs_created: endpoint child pseudo-devices exist
118 * @unregistering: flag set when the interface is being unregistered
119 * @needs_remote_wakeup: flag set when the driver requires remote-wakeup
120 * capability during autosuspend.
121 * @needs_altsetting0: flag set when a set-interface request for altsetting 0
122 * has been deferred.
123 * @needs_binding: flag set when the driver should be re-probed or unbound
124 * following a reset or suspend operation it doesn't support.
125 * @dev: driver model's view of this device
126 * @usb_dev: if an interface is bound to the USB major, this will point
127 * to the sysfs representation for that device.
128 * @pm_usage_cnt: PM usage counter for this interface
129 * @reset_ws: Used for scheduling resets from atomic context.
130 * @resetting_device: USB core reset the device, so use alt setting 0 as
131 * current; needs bandwidth alloc after reset.
132 *
133 * USB device drivers attach to interfaces on a physical device. Each
134 * interface encapsulates a single high level function, such as feeding
135 * an audio stream to a speaker or reporting a change in a volume control.
136 * Many USB devices only have one interface. The protocol used to talk to
137 * an interface's endpoints can be defined in a usb "class" specification,
138 * or by a product's vendor. The (default) control endpoint is part of
139 * every interface, but is never listed among the interface's descriptors.
140 *
141 * The driver that is bound to the interface can use standard driver model
142 * calls such as dev_get_drvdata() on the dev member of this structure.
143 *
144 * Each interface may have alternate settings. The initial configuration
145 * of a device sets altsetting 0, but the device driver can change
146 * that setting using usb_set_interface(). Alternate settings are often
147 * used to control the use of periodic endpoints, such as by having
148 * different endpoints use different amounts of reserved USB bandwidth.
149 * All standards-conformant USB devices that use isochronous endpoints
150 * will use them in non-default settings.
151 *
152 * The USB specification says that alternate setting numbers must run from
153 * 0 to one less than the total number of alternate settings. But some
154 * devices manage to mess this up, and the structures aren't necessarily
155 * stored in numerical order anyhow. Use usb_altnum_to_altsetting() to
156 * look up an alternate setting in the altsetting array based on its number.
157 */
158 struct usb_interface {
159 /* array of alternate settings for this interface,
160 * stored in no particular order */
161 struct usb_host_interface *altsetting;
162
163 struct usb_host_interface *cur_altsetting; /* the currently
164 * active alternate setting */
165 unsigned num_altsetting; /* number of alternate settings */
166
167 /* If there is an interface association descriptor then it will list
168 * the associated interfaces */
169 struct usb_interface_assoc_descriptor *intf_assoc;
170
171 int minor; /* minor number this interface is
172 * bound to */
173 enum usb_interface_condition condition; /* state of binding */
174 unsigned sysfs_files_created:1; /* the sysfs attributes exist */
175 unsigned ep_devs_created:1; /* endpoint "devices" exist */
176 unsigned unregistering:1; /* unregistration is in progress */
177 unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */
178 unsigned needs_altsetting0:1; /* switch to altsetting 0 is pending */
179 unsigned needs_binding:1; /* needs delayed unbind/rebind */
180 unsigned resetting_device:1; /* true: bandwidth alloc after reset */
181
182 struct device dev; /* interface specific device info */
183 struct device *usb_dev;
184 atomic_t pm_usage_cnt; /* usage counter for autosuspend */
185 struct work_struct reset_ws; /* for resets in atomic context */
186 };
187 #define to_usb_interface(d) container_of(d, struct usb_interface, dev)
188
189 static inline void *usb_get_intfdata(struct usb_interface *intf)
190 {
191 return dev_get_drvdata(&intf->dev);
192 }
193
194 static inline void usb_set_intfdata(struct usb_interface *intf, void *data)
195 {
196 dev_set_drvdata(&intf->dev, data);
197 }
198
199 struct usb_interface *usb_get_intf(struct usb_interface *intf);
200 void usb_put_intf(struct usb_interface *intf);
201
202 /* Hard limit */
203 #define USB_MAXENDPOINTS 30
204 /* this maximum is arbitrary */
205 #define USB_MAXINTERFACES 32
206 #define USB_MAXIADS (USB_MAXINTERFACES/2)
207
208 /**
209 * struct usb_interface_cache - long-term representation of a device interface
210 * @num_altsetting: number of altsettings defined.
211 * @ref: reference counter.
212 * @altsetting: variable-length array of interface structures, one for
213 * each alternate setting that may be selected. Each one includes a
214 * set of endpoint configurations. They will be in no particular order.
215 *
216 * These structures persist for the lifetime of a usb_device, unlike
217 * struct usb_interface (which persists only as long as its configuration
218 * is installed). The altsetting arrays can be accessed through these
219 * structures at any time, permitting comparison of configurations and
220 * providing support for the /proc/bus/usb/devices pseudo-file.
221 */
222 struct usb_interface_cache {
223 unsigned num_altsetting; /* number of alternate settings */
224 struct kref ref; /* reference counter */
225
226 /* variable-length array of alternate settings for this interface,
227 * stored in no particular order */
228 struct usb_host_interface altsetting[0];
229 };
230 #define ref_to_usb_interface_cache(r) \
231 container_of(r, struct usb_interface_cache, ref)
232 #define altsetting_to_usb_interface_cache(a) \
233 container_of(a, struct usb_interface_cache, altsetting[0])
234
235 /**
236 * struct usb_host_config - representation of a device's configuration
237 * @desc: the device's configuration descriptor.
238 * @string: pointer to the cached version of the iConfiguration string, if
239 * present for this configuration.
240 * @intf_assoc: list of any interface association descriptors in this config
241 * @interface: array of pointers to usb_interface structures, one for each
242 * interface in the configuration. The number of interfaces is stored
243 * in desc.bNumInterfaces. These pointers are valid only while the
244 * the configuration is active.
245 * @intf_cache: array of pointers to usb_interface_cache structures, one
246 * for each interface in the configuration. These structures exist
247 * for the entire life of the device.
248 * @extra: pointer to buffer containing all extra descriptors associated
249 * with this configuration (those preceding the first interface
250 * descriptor).
251 * @extralen: length of the extra descriptors buffer.
252 *
253 * USB devices may have multiple configurations, but only one can be active
254 * at any time. Each encapsulates a different operational environment;
255 * for example, a dual-speed device would have separate configurations for
256 * full-speed and high-speed operation. The number of configurations
257 * available is stored in the device descriptor as bNumConfigurations.
258 *
259 * A configuration can contain multiple interfaces. Each corresponds to
260 * a different function of the USB device, and all are available whenever
261 * the configuration is active. The USB standard says that interfaces
262 * are supposed to be numbered from 0 to desc.bNumInterfaces-1, but a lot
263 * of devices get this wrong. In addition, the interface array is not
264 * guaranteed to be sorted in numerical order. Use usb_ifnum_to_if() to
265 * look up an interface entry based on its number.
266 *
267 * Device drivers should not attempt to activate configurations. The choice
268 * of which configuration to install is a policy decision based on such
269 * considerations as available power, functionality provided, and the user's
270 * desires (expressed through userspace tools). However, drivers can call
271 * usb_reset_configuration() to reinitialize the current configuration and
272 * all its interfaces.
273 */
274 struct usb_host_config {
275 struct usb_config_descriptor desc;
276
277 char *string; /* iConfiguration string, if present */
278
279 /* List of any Interface Association Descriptors in this
280 * configuration. */
281 struct usb_interface_assoc_descriptor *intf_assoc[USB_MAXIADS];
282
283 /* the interfaces associated with this configuration,
284 * stored in no particular order */
285 struct usb_interface *interface[USB_MAXINTERFACES];
286
287 /* Interface information available even when this is not the
288 * active configuration */
289 struct usb_interface_cache *intf_cache[USB_MAXINTERFACES];
290
291 unsigned char *extra; /* Extra descriptors */
292 int extralen;
293 };
294
295 /* USB2.0 and USB3.0 device BOS descriptor set */
296 struct usb_host_bos {
297 struct usb_bos_descriptor *desc;
298
299 /* wireless cap descriptor is handled by wusb */
300 struct usb_ext_cap_descriptor *ext_cap;
301 struct usb_ss_cap_descriptor *ss_cap;
302 struct usb_ss_container_id_descriptor *ss_id;
303 };
304
305 int __usb_get_extra_descriptor(char *buffer, unsigned size,
306 unsigned char type, void **ptr);
307 #define usb_get_extra_descriptor(ifpoint, type, ptr) \
308 __usb_get_extra_descriptor((ifpoint)->extra, \
309 (ifpoint)->extralen, \
310 type, (void **)ptr)
311
312 /* ----------------------------------------------------------------------- */
313
314 /* USB device number allocation bitmap */
315 struct usb_devmap {
316 unsigned long devicemap[128 / (8*sizeof(unsigned long))];
317 };
318
319 /*
320 * Allocated per bus (tree of devices) we have:
321 */
322 struct usb_bus {
323 struct device *controller; /* host/master side hardware */
324 int busnum; /* Bus number (in order of reg) */
325 const char *bus_name; /* stable id (PCI slot_name etc) */
326 u8 uses_dma; /* Does the host controller use DMA? */
327 u8 uses_pio_for_control; /*
328 * Does the host controller use PIO
329 * for control transfers?
330 */
331 u8 otg_port; /* 0, or number of OTG/HNP port */
332 unsigned is_b_host:1; /* true during some HNP roleswitches */
333 unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */
334 unsigned no_stop_on_short:1; /*
335 * Quirk: some controllers don't stop
336 * the ep queue on a short transfer
337 * with the URB_SHORT_NOT_OK flag set.
338 */
339 unsigned no_sg_constraint:1; /* no sg constraint */
340 unsigned sg_tablesize; /* 0 or largest number of sg list entries */
341
342 int devnum_next; /* Next open device number in
343 * round-robin allocation */
344
345 struct usb_devmap devmap; /* device address allocation map */
346 struct usb_device *root_hub; /* Root hub */
347 struct usb_bus *hs_companion; /* Companion EHCI bus, if any */
348 struct list_head bus_list; /* list of busses */
349
350 struct mutex usb_address0_mutex; /* unaddressed device mutex */
351
352 int bandwidth_allocated; /* on this bus: how much of the time
353 * reserved for periodic (intr/iso)
354 * requests is used, on average?
355 * Units: microseconds/frame.
356 * Limits: Full/low speed reserve 90%,
357 * while high speed reserves 80%.
358 */
359 int bandwidth_int_reqs; /* number of Interrupt requests */
360 int bandwidth_isoc_reqs; /* number of Isoc. requests */
361
362 unsigned resuming_ports; /* bit array: resuming root-hub ports */
363
364 #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
365 struct mon_bus *mon_bus; /* non-null when associated */
366 int monitored; /* non-zero when monitored */
367 #endif
368 };
369
370 struct usb_dev_state;
371
372 /* ----------------------------------------------------------------------- */
373
374 struct usb_tt;
375
376 enum usb_device_removable {
377 USB_DEVICE_REMOVABLE_UNKNOWN = 0,
378 USB_DEVICE_REMOVABLE,
379 USB_DEVICE_FIXED,
380 };
381
382 enum usb_port_connect_type {
383 USB_PORT_CONNECT_TYPE_UNKNOWN = 0,
384 USB_PORT_CONNECT_TYPE_HOT_PLUG,
385 USB_PORT_CONNECT_TYPE_HARD_WIRED,
386 USB_PORT_NOT_USED,
387 };
388
389 /*
390 * USB 2.0 Link Power Management (LPM) parameters.
391 */
392 struct usb2_lpm_parameters {
393 /* Best effort service latency indicate how long the host will drive
394 * resume on an exit from L1.
395 */
396 unsigned int besl;
397
398 /* Timeout value in microseconds for the L1 inactivity (LPM) timer.
399 * When the timer counts to zero, the parent hub will initiate a LPM
400 * transition to L1.
401 */
402 int timeout;
403 };
404
405 /*
406 * USB 3.0 Link Power Management (LPM) parameters.
407 *
408 * PEL and SEL are USB 3.0 Link PM latencies for device-initiated LPM exit.
409 * MEL is the USB 3.0 Link PM latency for host-initiated LPM exit.
410 * All three are stored in nanoseconds.
411 */
412 struct usb3_lpm_parameters {
413 /*
414 * Maximum exit latency (MEL) for the host to send a packet to the
415 * device (either a Ping for isoc endpoints, or a data packet for
416 * interrupt endpoints), the hubs to decode the packet, and for all hubs
417 * in the path to transition the links to U0.
418 */
419 unsigned int mel;
420 /*
421 * Maximum exit latency for a device-initiated LPM transition to bring
422 * all links into U0. Abbreviated as "PEL" in section 9.4.12 of the USB
423 * 3.0 spec, with no explanation of what "P" stands for. "Path"?
424 */
425 unsigned int pel;
426
427 /*
428 * The System Exit Latency (SEL) includes PEL, and three other
429 * latencies. After a device initiates a U0 transition, it will take
430 * some time from when the device sends the ERDY to when it will finally
431 * receive the data packet. Basically, SEL should be the worse-case
432 * latency from when a device starts initiating a U0 transition to when
433 * it will get data.
434 */
435 unsigned int sel;
436 /*
437 * The idle timeout value that is currently programmed into the parent
438 * hub for this device. When the timer counts to zero, the parent hub
439 * will initiate an LPM transition to either U1 or U2.
440 */
441 int timeout;
442 };
443
444 /**
445 * struct usb_device - kernel's representation of a USB device
446 * @devnum: device number; address on a USB bus
447 * @devpath: device ID string for use in messages (e.g., /port/...)
448 * @route: tree topology hex string for use with xHCI
449 * @state: device state: configured, not attached, etc.
450 * @speed: device speed: high/full/low (or error)
451 * @tt: Transaction Translator info; used with low/full speed dev, highspeed hub
452 * @ttport: device port on that tt hub
453 * @toggle: one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints
454 * @parent: our hub, unless we're the root
455 * @bus: bus we're part of
456 * @ep0: endpoint 0 data (default control pipe)
457 * @dev: generic device interface
458 * @descriptor: USB device descriptor
459 * @bos: USB device BOS descriptor set
460 * @config: all of the device's configs
461 * @actconfig: the active configuration
462 * @ep_in: array of IN endpoints
463 * @ep_out: array of OUT endpoints
464 * @rawdescriptors: raw descriptors for each config
465 * @bus_mA: Current available from the bus
466 * @portnum: parent port number (origin 1)
467 * @level: number of USB hub ancestors
468 * @can_submit: URBs may be submitted
469 * @persist_enabled: USB_PERSIST enabled for this device
470 * @have_langid: whether string_langid is valid
471 * @authorized: policy has said we can use it;
472 * (user space) policy determines if we authorize this device to be
473 * used or not. By default, wired USB devices are authorized.
474 * WUSB devices are not, until we authorize them from user space.
475 * FIXME -- complete doc
476 * @authenticated: Crypto authentication passed
477 * @wusb: device is Wireless USB
478 * @lpm_capable: device supports LPM
479 * @usb2_hw_lpm_capable: device can perform USB2 hardware LPM
480 * @usb2_hw_lpm_besl_capable: device can perform USB2 hardware BESL LPM
481 * @usb2_hw_lpm_enabled: USB2 hardware LPM is enabled
482 * @usb2_hw_lpm_allowed: Userspace allows USB 2.0 LPM to be enabled
483 * @usb3_lpm_enabled: USB3 hardware LPM enabled
484 * @string_langid: language ID for strings
485 * @product: iProduct string, if present (static)
486 * @manufacturer: iManufacturer string, if present (static)
487 * @serial: iSerialNumber string, if present (static)
488 * @filelist: usbfs files that are open to this device
489 * @maxchild: number of ports if hub
490 * @quirks: quirks of the whole device
491 * @urbnum: number of URBs submitted for the whole device
492 * @active_duration: total time device is not suspended
493 * @connect_time: time device was first connected
494 * @do_remote_wakeup: remote wakeup should be enabled
495 * @reset_resume: needs reset instead of resume
496 * @port_is_suspended: the upstream port is suspended (L2 or U3)
497 * @wusb_dev: if this is a Wireless USB device, link to the WUSB
498 * specific data for the device.
499 * @slot_id: Slot ID assigned by xHCI
500 * @removable: Device can be physically removed from this port
501 * @l1_params: best effor service latency for USB2 L1 LPM state, and L1 timeout.
502 * @u1_params: exit latencies for USB3 U1 LPM state, and hub-initiated timeout.
503 * @u2_params: exit latencies for USB3 U2 LPM state, and hub-initiated timeout.
504 * @lpm_disable_count: Ref count used by usb_disable_lpm() and usb_enable_lpm()
505 * to keep track of the number of functions that require USB 3.0 Link Power
506 * Management to be disabled for this usb_device. This count should only
507 * be manipulated by those functions, with the bandwidth_mutex is held.
508 *
509 * Notes:
510 * Usbcore drivers should not set usbdev->state directly. Instead use
511 * usb_set_device_state().
512 */
513 struct usb_device {
514 int devnum;
515 char devpath[16];
516 u32 route;
517 enum usb_device_state state;
518 enum usb_device_speed speed;
519
520 struct usb_tt *tt;
521 int ttport;
522
523 unsigned int toggle[2];
524
525 struct usb_device *parent;
526 struct usb_bus *bus;
527 struct usb_host_endpoint ep0;
528
529 struct device dev;
530
531 struct usb_device_descriptor descriptor;
532 struct usb_host_bos *bos;
533 struct usb_host_config *config;
534
535 struct usb_host_config *actconfig;
536 struct usb_host_endpoint *ep_in[16];
537 struct usb_host_endpoint *ep_out[16];
538
539 char **rawdescriptors;
540
541 unsigned short bus_mA;
542 u8 portnum;
543 u8 level;
544
545 unsigned can_submit:1;
546 unsigned persist_enabled:1;
547 unsigned have_langid:1;
548 unsigned authorized:1;
549 unsigned authenticated:1;
550 unsigned wusb:1;
551 unsigned lpm_capable:1;
552 unsigned usb2_hw_lpm_capable:1;
553 unsigned usb2_hw_lpm_besl_capable:1;
554 unsigned usb2_hw_lpm_enabled:1;
555 unsigned usb2_hw_lpm_allowed:1;
556 unsigned usb3_lpm_enabled:1;
557 int string_langid;
558
559 /* static strings from the device */
560 char *product;
561 char *manufacturer;
562 char *serial;
563
564 struct list_head filelist;
565
566 int maxchild;
567
568 u32 quirks;
569 atomic_t urbnum;
570
571 unsigned long active_duration;
572
573 #ifdef CONFIG_PM
574 unsigned long connect_time;
575
576 unsigned do_remote_wakeup:1;
577 unsigned reset_resume:1;
578 unsigned port_is_suspended:1;
579 #endif
580 struct wusb_dev *wusb_dev;
581 int slot_id;
582 enum usb_device_removable removable;
583 struct usb2_lpm_parameters l1_params;
584 struct usb3_lpm_parameters u1_params;
585 struct usb3_lpm_parameters u2_params;
586 unsigned lpm_disable_count;
587 };
588 #define to_usb_device(d) container_of(d, struct usb_device, dev)
589
590 static inline struct usb_device *interface_to_usbdev(struct usb_interface *intf)
591 {
592 return to_usb_device(intf->dev.parent);
593 }
594
595 extern struct usb_device *usb_get_dev(struct usb_device *dev);
596 extern void usb_put_dev(struct usb_device *dev);
597 extern struct usb_device *usb_hub_find_child(struct usb_device *hdev,
598 int port1);
599
600 /**
601 * usb_hub_for_each_child - iterate over all child devices on the hub
602 * @hdev: USB device belonging to the usb hub
603 * @port1: portnum associated with child device
604 * @child: child device pointer
605 */
606 #define usb_hub_for_each_child(hdev, port1, child) \
607 for (port1 = 1, child = usb_hub_find_child(hdev, port1); \
608 port1 <= hdev->maxchild; \
609 child = usb_hub_find_child(hdev, ++port1)) \
610 if (!child) continue; else
611
612 /* USB device locking */
613 #define usb_lock_device(udev) device_lock(&(udev)->dev)
614 #define usb_unlock_device(udev) device_unlock(&(udev)->dev)
615 #define usb_trylock_device(udev) device_trylock(&(udev)->dev)
616 extern int usb_lock_device_for_reset(struct usb_device *udev,
617 const struct usb_interface *iface);
618
619 /* USB port reset for device reinitialization */
620 extern int usb_reset_device(struct usb_device *dev);
621 extern void usb_queue_reset_device(struct usb_interface *dev);
622
623 #ifdef CONFIG_ACPI
624 extern int usb_acpi_set_power_state(struct usb_device *hdev, int index,
625 bool enable);
626 extern bool usb_acpi_power_manageable(struct usb_device *hdev, int index);
627 #else
628 static inline int usb_acpi_set_power_state(struct usb_device *hdev, int index,
629 bool enable) { return 0; }
630 static inline bool usb_acpi_power_manageable(struct usb_device *hdev, int index)
631 { return true; }
632 #endif
633
634 /* USB autosuspend and autoresume */
635 #ifdef CONFIG_PM
636 extern void usb_enable_autosuspend(struct usb_device *udev);
637 extern void usb_disable_autosuspend(struct usb_device *udev);
638
639 extern int usb_autopm_get_interface(struct usb_interface *intf);
640 extern void usb_autopm_put_interface(struct usb_interface *intf);
641 extern int usb_autopm_get_interface_async(struct usb_interface *intf);
642 extern void usb_autopm_put_interface_async(struct usb_interface *intf);
643 extern void usb_autopm_get_interface_no_resume(struct usb_interface *intf);
644 extern void usb_autopm_put_interface_no_suspend(struct usb_interface *intf);
645
646 static inline void usb_mark_last_busy(struct usb_device *udev)
647 {
648 pm_runtime_mark_last_busy(&udev->dev);
649 }
650
651 #else
652
653 static inline int usb_enable_autosuspend(struct usb_device *udev)
654 { return 0; }
655 static inline int usb_disable_autosuspend(struct usb_device *udev)
656 { return 0; }
657
658 static inline int usb_autopm_get_interface(struct usb_interface *intf)
659 { return 0; }
660 static inline int usb_autopm_get_interface_async(struct usb_interface *intf)
661 { return 0; }
662
663 static inline void usb_autopm_put_interface(struct usb_interface *intf)
664 { }
665 static inline void usb_autopm_put_interface_async(struct usb_interface *intf)
666 { }
667 static inline void usb_autopm_get_interface_no_resume(
668 struct usb_interface *intf)
669 { }
670 static inline void usb_autopm_put_interface_no_suspend(
671 struct usb_interface *intf)
672 { }
673 static inline void usb_mark_last_busy(struct usb_device *udev)
674 { }
675 #endif
676
677 extern int usb_disable_lpm(struct usb_device *udev);
678 extern void usb_enable_lpm(struct usb_device *udev);
679 /* Same as above, but these functions lock/unlock the bandwidth_mutex. */
680 extern int usb_unlocked_disable_lpm(struct usb_device *udev);
681 extern void usb_unlocked_enable_lpm(struct usb_device *udev);
682
683 extern int usb_disable_ltm(struct usb_device *udev);
684 extern void usb_enable_ltm(struct usb_device *udev);
685
686 static inline bool usb_device_supports_ltm(struct usb_device *udev)
687 {
688 if (udev->speed != USB_SPEED_SUPER || !udev->bos || !udev->bos->ss_cap)
689 return false;
690 return udev->bos->ss_cap->bmAttributes & USB_LTM_SUPPORT;
691 }
692
693 static inline bool usb_device_no_sg_constraint(struct usb_device *udev)
694 {
695 return udev && udev->bus && udev->bus->no_sg_constraint;
696 }
697
698
699 /*-------------------------------------------------------------------------*/
700
701 /* for drivers using iso endpoints */
702 extern int usb_get_current_frame_number(struct usb_device *usb_dev);
703
704 /* Sets up a group of bulk endpoints to support multiple stream IDs. */
705 extern int usb_alloc_streams(struct usb_interface *interface,
706 struct usb_host_endpoint **eps, unsigned int num_eps,
707 unsigned int num_streams, gfp_t mem_flags);
708
709 /* Reverts a group of bulk endpoints back to not using stream IDs. */
710 extern int usb_free_streams(struct usb_interface *interface,
711 struct usb_host_endpoint **eps, unsigned int num_eps,
712 gfp_t mem_flags);
713
714 /* used these for multi-interface device registration */
715 extern int usb_driver_claim_interface(struct usb_driver *driver,
716 struct usb_interface *iface, void *priv);
717
718 /**
719 * usb_interface_claimed - returns true iff an interface is claimed
720 * @iface: the interface being checked
721 *
722 * Return: %true (nonzero) iff the interface is claimed, else %false
723 * (zero).
724 *
725 * Note:
726 * Callers must own the driver model's usb bus readlock. So driver
727 * probe() entries don't need extra locking, but other call contexts
728 * may need to explicitly claim that lock.
729 *
730 */
731 static inline int usb_interface_claimed(struct usb_interface *iface)
732 {
733 return (iface->dev.driver != NULL);
734 }
735
736 extern void usb_driver_release_interface(struct usb_driver *driver,
737 struct usb_interface *iface);
738 const struct usb_device_id *usb_match_id(struct usb_interface *interface,
739 const struct usb_device_id *id);
740 extern int usb_match_one_id(struct usb_interface *interface,
741 const struct usb_device_id *id);
742
743 extern int usb_for_each_dev(void *data, int (*fn)(struct usb_device *, void *));
744 extern struct usb_interface *usb_find_interface(struct usb_driver *drv,
745 int minor);
746 extern struct usb_interface *usb_ifnum_to_if(const struct usb_device *dev,
747 unsigned ifnum);
748 extern struct usb_host_interface *usb_altnum_to_altsetting(
749 const struct usb_interface *intf, unsigned int altnum);
750 extern struct usb_host_interface *usb_find_alt_setting(
751 struct usb_host_config *config,
752 unsigned int iface_num,
753 unsigned int alt_num);
754
755 /* port claiming functions */
756 int usb_hub_claim_port(struct usb_device *hdev, unsigned port1,
757 struct usb_dev_state *owner);
758 int usb_hub_release_port(struct usb_device *hdev, unsigned port1,
759 struct usb_dev_state *owner);
760
761 /**
762 * usb_make_path - returns stable device path in the usb tree
763 * @dev: the device whose path is being constructed
764 * @buf: where to put the string
765 * @size: how big is "buf"?
766 *
767 * Return: Length of the string (> 0) or negative if size was too small.
768 *
769 * Note:
770 * This identifier is intended to be "stable", reflecting physical paths in
771 * hardware such as physical bus addresses for host controllers or ports on
772 * USB hubs. That makes it stay the same until systems are physically
773 * reconfigured, by re-cabling a tree of USB devices or by moving USB host
774 * controllers. Adding and removing devices, including virtual root hubs
775 * in host controller driver modules, does not change these path identifiers;
776 * neither does rebooting or re-enumerating. These are more useful identifiers
777 * than changeable ("unstable") ones like bus numbers or device addresses.
778 *
779 * With a partial exception for devices connected to USB 2.0 root hubs, these
780 * identifiers are also predictable. So long as the device tree isn't changed,
781 * plugging any USB device into a given hub port always gives it the same path.
782 * Because of the use of "companion" controllers, devices connected to ports on
783 * USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are
784 * high speed, and a different one if they are full or low speed.
785 */
786 static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size)
787 {
788 int actual;
789 actual = snprintf(buf, size, "usb-%s-%s", dev->bus->bus_name,
790 dev->devpath);
791 return (actual >= (int)size) ? -1 : actual;
792 }
793
794 /*-------------------------------------------------------------------------*/
795
796 #define USB_DEVICE_ID_MATCH_DEVICE \
797 (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
798 #define USB_DEVICE_ID_MATCH_DEV_RANGE \
799 (USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)
800 #define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
801 (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)
802 #define USB_DEVICE_ID_MATCH_DEV_INFO \
803 (USB_DEVICE_ID_MATCH_DEV_CLASS | \
804 USB_DEVICE_ID_MATCH_DEV_SUBCLASS | \
805 USB_DEVICE_ID_MATCH_DEV_PROTOCOL)
806 #define USB_DEVICE_ID_MATCH_INT_INFO \
807 (USB_DEVICE_ID_MATCH_INT_CLASS | \
808 USB_DEVICE_ID_MATCH_INT_SUBCLASS | \
809 USB_DEVICE_ID_MATCH_INT_PROTOCOL)
810
811 /**
812 * USB_DEVICE - macro used to describe a specific usb device
813 * @vend: the 16 bit USB Vendor ID
814 * @prod: the 16 bit USB Product ID
815 *
816 * This macro is used to create a struct usb_device_id that matches a
817 * specific device.
818 */
819 #define USB_DEVICE(vend, prod) \
820 .match_flags = USB_DEVICE_ID_MATCH_DEVICE, \
821 .idVendor = (vend), \
822 .idProduct = (prod)
823 /**
824 * USB_DEVICE_VER - describe a specific usb device with a version range
825 * @vend: the 16 bit USB Vendor ID
826 * @prod: the 16 bit USB Product ID
827 * @lo: the bcdDevice_lo value
828 * @hi: the bcdDevice_hi value
829 *
830 * This macro is used to create a struct usb_device_id that matches a
831 * specific device, with a version range.
832 */
833 #define USB_DEVICE_VER(vend, prod, lo, hi) \
834 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, \
835 .idVendor = (vend), \
836 .idProduct = (prod), \
837 .bcdDevice_lo = (lo), \
838 .bcdDevice_hi = (hi)
839
840 /**
841 * USB_DEVICE_INTERFACE_CLASS - describe a usb device with a specific interface class
842 * @vend: the 16 bit USB Vendor ID
843 * @prod: the 16 bit USB Product ID
844 * @cl: bInterfaceClass value
845 *
846 * This macro is used to create a struct usb_device_id that matches a
847 * specific interface class of devices.
848 */
849 #define USB_DEVICE_INTERFACE_CLASS(vend, prod, cl) \
850 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
851 USB_DEVICE_ID_MATCH_INT_CLASS, \
852 .idVendor = (vend), \
853 .idProduct = (prod), \
854 .bInterfaceClass = (cl)
855
856 /**
857 * USB_DEVICE_INTERFACE_PROTOCOL - describe a usb device with a specific interface protocol
858 * @vend: the 16 bit USB Vendor ID
859 * @prod: the 16 bit USB Product ID
860 * @pr: bInterfaceProtocol value
861 *
862 * This macro is used to create a struct usb_device_id that matches a
863 * specific interface protocol of devices.
864 */
865 #define USB_DEVICE_INTERFACE_PROTOCOL(vend, prod, pr) \
866 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
867 USB_DEVICE_ID_MATCH_INT_PROTOCOL, \
868 .idVendor = (vend), \
869 .idProduct = (prod), \
870 .bInterfaceProtocol = (pr)
871
872 /**
873 * USB_DEVICE_INTERFACE_NUMBER - describe a usb device with a specific interface number
874 * @vend: the 16 bit USB Vendor ID
875 * @prod: the 16 bit USB Product ID
876 * @num: bInterfaceNumber value
877 *
878 * This macro is used to create a struct usb_device_id that matches a
879 * specific interface number of devices.
880 */
881 #define USB_DEVICE_INTERFACE_NUMBER(vend, prod, num) \
882 .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
883 USB_DEVICE_ID_MATCH_INT_NUMBER, \
884 .idVendor = (vend), \
885 .idProduct = (prod), \
886 .bInterfaceNumber = (num)
887
888 /**
889 * USB_DEVICE_INFO - macro used to describe a class of usb devices
890 * @cl: bDeviceClass value
891 * @sc: bDeviceSubClass value
892 * @pr: bDeviceProtocol value
893 *
894 * This macro is used to create a struct usb_device_id that matches a
895 * specific class of devices.
896 */
897 #define USB_DEVICE_INFO(cl, sc, pr) \
898 .match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, \
899 .bDeviceClass = (cl), \
900 .bDeviceSubClass = (sc), \
901 .bDeviceProtocol = (pr)
902
903 /**
904 * USB_INTERFACE_INFO - macro used to describe a class of usb interfaces
905 * @cl: bInterfaceClass value
906 * @sc: bInterfaceSubClass value
907 * @pr: bInterfaceProtocol value
908 *
909 * This macro is used to create a struct usb_device_id that matches a
910 * specific class of interfaces.
911 */
912 #define USB_INTERFACE_INFO(cl, sc, pr) \
913 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, \
914 .bInterfaceClass = (cl), \
915 .bInterfaceSubClass = (sc), \
916 .bInterfaceProtocol = (pr)
917
918 /**
919 * USB_DEVICE_AND_INTERFACE_INFO - describe a specific usb device with a class of usb interfaces
920 * @vend: the 16 bit USB Vendor ID
921 * @prod: the 16 bit USB Product ID
922 * @cl: bInterfaceClass value
923 * @sc: bInterfaceSubClass value
924 * @pr: bInterfaceProtocol value
925 *
926 * This macro is used to create a struct usb_device_id that matches a
927 * specific device with a specific class of interfaces.
928 *
929 * This is especially useful when explicitly matching devices that have
930 * vendor specific bDeviceClass values, but standards-compliant interfaces.
931 */
932 #define USB_DEVICE_AND_INTERFACE_INFO(vend, prod, cl, sc, pr) \
933 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
934 | USB_DEVICE_ID_MATCH_DEVICE, \
935 .idVendor = (vend), \
936 .idProduct = (prod), \
937 .bInterfaceClass = (cl), \
938 .bInterfaceSubClass = (sc), \
939 .bInterfaceProtocol = (pr)
940
941 /**
942 * USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces
943 * @vend: the 16 bit USB Vendor ID
944 * @cl: bInterfaceClass value
945 * @sc: bInterfaceSubClass value
946 * @pr: bInterfaceProtocol value
947 *
948 * This macro is used to create a struct usb_device_id that matches a
949 * specific vendor with a specific class of interfaces.
950 *
951 * This is especially useful when explicitly matching devices that have
952 * vendor specific bDeviceClass values, but standards-compliant interfaces.
953 */
954 #define USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \
955 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
956 | USB_DEVICE_ID_MATCH_VENDOR, \
957 .idVendor = (vend), \
958 .bInterfaceClass = (cl), \
959 .bInterfaceSubClass = (sc), \
960 .bInterfaceProtocol = (pr)
961
962 /* ----------------------------------------------------------------------- */
963
964 /* Stuff for dynamic usb ids */
965 struct usb_dynids {
966 spinlock_t lock;
967 struct list_head list;
968 };
969
970 struct usb_dynid {
971 struct list_head node;
972 struct usb_device_id id;
973 };
974
975 extern ssize_t usb_store_new_id(struct usb_dynids *dynids,
976 const struct usb_device_id *id_table,
977 struct device_driver *driver,
978 const char *buf, size_t count);
979
980 extern ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf);
981
982 /**
983 * struct usbdrv_wrap - wrapper for driver-model structure
984 * @driver: The driver-model core driver structure.
985 * @for_devices: Non-zero for device drivers, 0 for interface drivers.
986 */
987 struct usbdrv_wrap {
988 struct device_driver driver;
989 int for_devices;
990 };
991
992 /**
993 * struct usb_driver - identifies USB interface driver to usbcore
994 * @name: The driver name should be unique among USB drivers,
995 * and should normally be the same as the module name.
996 * @probe: Called to see if the driver is willing to manage a particular
997 * interface on a device. If it is, probe returns zero and uses
998 * usb_set_intfdata() to associate driver-specific data with the
999 * interface. It may also use usb_set_interface() to specify the
1000 * appropriate altsetting. If unwilling to manage the interface,
1001 * return -ENODEV, if genuine IO errors occurred, an appropriate
1002 * negative errno value.
1003 * @disconnect: Called when the interface is no longer accessible, usually
1004 * because its device has been (or is being) disconnected or the
1005 * driver module is being unloaded.
1006 * @unlocked_ioctl: Used for drivers that want to talk to userspace through
1007 * the "usbfs" filesystem. This lets devices provide ways to
1008 * expose information to user space regardless of where they
1009 * do (or don't) show up otherwise in the filesystem.
1010 * @suspend: Called when the device is going to be suspended by the
1011 * system either from system sleep or runtime suspend context. The
1012 * return value will be ignored in system sleep context, so do NOT
1013 * try to continue using the device if suspend fails in this case.
1014 * Instead, let the resume or reset-resume routine recover from
1015 * the failure.
1016 * @resume: Called when the device is being resumed by the system.
1017 * @reset_resume: Called when the suspended device has been reset instead
1018 * of being resumed.
1019 * @pre_reset: Called by usb_reset_device() when the device is about to be
1020 * reset. This routine must not return until the driver has no active
1021 * URBs for the device, and no more URBs may be submitted until the
1022 * post_reset method is called.
1023 * @post_reset: Called by usb_reset_device() after the device
1024 * has been reset
1025 * @id_table: USB drivers use ID table to support hotplugging.
1026 * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set
1027 * or your driver's probe function will never get called.
1028 * @dynids: used internally to hold the list of dynamically added device
1029 * ids for this driver.
1030 * @drvwrap: Driver-model core structure wrapper.
1031 * @no_dynamic_id: if set to 1, the USB core will not allow dynamic ids to be
1032 * added to this driver by preventing the sysfs file from being created.
1033 * @supports_autosuspend: if set to 0, the USB core will not allow autosuspend
1034 * for interfaces bound to this driver.
1035 * @soft_unbind: if set to 1, the USB core will not kill URBs and disable
1036 * endpoints before calling the driver's disconnect method.
1037 * @disable_hub_initiated_lpm: if set to 0, the USB core will not allow hubs
1038 * to initiate lower power link state transitions when an idle timeout
1039 * occurs. Device-initiated USB 3.0 link PM will still be allowed.
1040 *
1041 * USB interface drivers must provide a name, probe() and disconnect()
1042 * methods, and an id_table. Other driver fields are optional.
1043 *
1044 * The id_table is used in hotplugging. It holds a set of descriptors,
1045 * and specialized data may be associated with each entry. That table
1046 * is used by both user and kernel mode hotplugging support.
1047 *
1048 * The probe() and disconnect() methods are called in a context where
1049 * they can sleep, but they should avoid abusing the privilege. Most
1050 * work to connect to a device should be done when the device is opened,
1051 * and undone at the last close. The disconnect code needs to address
1052 * concurrency issues with respect to open() and close() methods, as
1053 * well as forcing all pending I/O requests to complete (by unlinking
1054 * them as necessary, and blocking until the unlinks complete).
1055 */
1056 struct usb_driver {
1057 const char *name;
1058
1059 int (*probe) (struct usb_interface *intf,
1060 const struct usb_device_id *id);
1061
1062 void (*disconnect) (struct usb_interface *intf);
1063
1064 int (*unlocked_ioctl) (struct usb_interface *intf, unsigned int code,
1065 void *buf);
1066
1067 int (*suspend) (struct usb_interface *intf, pm_message_t message);
1068 int (*resume) (struct usb_interface *intf);
1069 int (*reset_resume)(struct usb_interface *intf);
1070
1071 int (*pre_reset)(struct usb_interface *intf);
1072 int (*post_reset)(struct usb_interface *intf);
1073
1074 const struct usb_device_id *id_table;
1075
1076 struct usb_dynids dynids;
1077 struct usbdrv_wrap drvwrap;
1078 unsigned int no_dynamic_id:1;
1079 unsigned int supports_autosuspend:1;
1080 unsigned int disable_hub_initiated_lpm:1;
1081 unsigned int soft_unbind:1;
1082 };
1083 #define to_usb_driver(d) container_of(d, struct usb_driver, drvwrap.driver)
1084
1085 /**
1086 * struct usb_device_driver - identifies USB device driver to usbcore
1087 * @name: The driver name should be unique among USB drivers,
1088 * and should normally be the same as the module name.
1089 * @probe: Called to see if the driver is willing to manage a particular
1090 * device. If it is, probe returns zero and uses dev_set_drvdata()
1091 * to associate driver-specific data with the device. If unwilling
1092 * to manage the device, return a negative errno value.
1093 * @disconnect: Called when the device is no longer accessible, usually
1094 * because it has been (or is being) disconnected or the driver's
1095 * module is being unloaded.
1096 * @suspend: Called when the device is going to be suspended by the system.
1097 * @resume: Called when the device is being resumed by the system.
1098 * @drvwrap: Driver-model core structure wrapper.
1099 * @supports_autosuspend: if set to 0, the USB core will not allow autosuspend
1100 * for devices bound to this driver.
1101 *
1102 * USB drivers must provide all the fields listed above except drvwrap.
1103 */
1104 struct usb_device_driver {
1105 const char *name;
1106
1107 int (*probe) (struct usb_device *udev);
1108 void (*disconnect) (struct usb_device *udev);
1109
1110 int (*suspend) (struct usb_device *udev, pm_message_t message);
1111 int (*resume) (struct usb_device *udev, pm_message_t message);
1112 struct usbdrv_wrap drvwrap;
1113 unsigned int supports_autosuspend:1;
1114 };
1115 #define to_usb_device_driver(d) container_of(d, struct usb_device_driver, \
1116 drvwrap.driver)
1117
1118 extern struct bus_type usb_bus_type;
1119
1120 /**
1121 * struct usb_class_driver - identifies a USB driver that wants to use the USB major number
1122 * @name: the usb class device name for this driver. Will show up in sysfs.
1123 * @devnode: Callback to provide a naming hint for a possible
1124 * device node to create.
1125 * @fops: pointer to the struct file_operations of this driver.
1126 * @minor_base: the start of the minor range for this driver.
1127 *
1128 * This structure is used for the usb_register_dev() and
1129 * usb_unregister_dev() functions, to consolidate a number of the
1130 * parameters used for them.
1131 */
1132 struct usb_class_driver {
1133 char *name;
1134 char *(*devnode)(struct device *dev, umode_t *mode);
1135 const struct file_operations *fops;
1136 int minor_base;
1137 };
1138
1139 /*
1140 * use these in module_init()/module_exit()
1141 * and don't forget MODULE_DEVICE_TABLE(usb, ...)
1142 */
1143 extern int usb_register_driver(struct usb_driver *, struct module *,
1144 const char *);
1145
1146 /* use a define to avoid include chaining to get THIS_MODULE & friends */
1147 #define usb_register(driver) \
1148 usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
1149
1150 extern void usb_deregister(struct usb_driver *);
1151
1152 /**
1153 * module_usb_driver() - Helper macro for registering a USB driver
1154 * @__usb_driver: usb_driver struct
1155 *
1156 * Helper macro for USB drivers which do not do anything special in module
1157 * init/exit. This eliminates a lot of boilerplate. Each module may only
1158 * use this macro once, and calling it replaces module_init() and module_exit()
1159 */
1160 #define module_usb_driver(__usb_driver) \
1161 module_driver(__usb_driver, usb_register, \
1162 usb_deregister)
1163
1164 extern int usb_register_device_driver(struct usb_device_driver *,
1165 struct module *);
1166 extern void usb_deregister_device_driver(struct usb_device_driver *);
1167
1168 extern int usb_register_dev(struct usb_interface *intf,
1169 struct usb_class_driver *class_driver);
1170 extern void usb_deregister_dev(struct usb_interface *intf,
1171 struct usb_class_driver *class_driver);
1172
1173 extern int usb_disabled(void);
1174
1175 /* ----------------------------------------------------------------------- */
1176
1177 /*
1178 * URB support, for asynchronous request completions
1179 */
1180
1181 /*
1182 * urb->transfer_flags:
1183 *
1184 * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
1185 */
1186 #define URB_SHORT_NOT_OK 0x0001 /* report short reads as errors */
1187 #define URB_ISO_ASAP 0x0002 /* iso-only; use the first unexpired
1188 * slot in the schedule */
1189 #define URB_NO_TRANSFER_DMA_MAP 0x0004 /* urb->transfer_dma valid on submit */
1190 #define URB_NO_FSBR 0x0020 /* UHCI-specific */
1191 #define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */
1192 #define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt
1193 * needed */
1194 #define URB_FREE_BUFFER 0x0100 /* Free transfer buffer with the URB */
1195
1196 /* The following flags are used internally by usbcore and HCDs */
1197 #define URB_DIR_IN 0x0200 /* Transfer from device to host */
1198 #define URB_DIR_OUT 0
1199 #define URB_DIR_MASK URB_DIR_IN
1200
1201 #define URB_DMA_MAP_SINGLE 0x00010000 /* Non-scatter-gather mapping */
1202 #define URB_DMA_MAP_PAGE 0x00020000 /* HCD-unsupported S-G */
1203 #define URB_DMA_MAP_SG 0x00040000 /* HCD-supported S-G */
1204 #define URB_MAP_LOCAL 0x00080000 /* HCD-local-memory mapping */
1205 #define URB_SETUP_MAP_SINGLE 0x00100000 /* Setup packet DMA mapped */
1206 #define URB_SETUP_MAP_LOCAL 0x00200000 /* HCD-local setup packet */
1207 #define URB_DMA_SG_COMBINED 0x00400000 /* S-G entries were combined */
1208 #define URB_ALIGNED_TEMP_BUFFER 0x00800000 /* Temp buffer was alloc'd */
1209
1210 struct usb_iso_packet_descriptor {
1211 unsigned int offset;
1212 unsigned int length; /* expected length */
1213 unsigned int actual_length;
1214 int status;
1215 };
1216
1217 struct urb;
1218
1219 struct usb_anchor {
1220 struct list_head urb_list;
1221 wait_queue_head_t wait;
1222 spinlock_t lock;
1223 atomic_t suspend_wakeups;
1224 unsigned int poisoned:1;
1225 };
1226
1227 static inline void init_usb_anchor(struct usb_anchor *anchor)
1228 {
1229 memset(anchor, 0, sizeof(*anchor));
1230 INIT_LIST_HEAD(&anchor->urb_list);
1231 init_waitqueue_head(&anchor->wait);
1232 spin_lock_init(&anchor->lock);
1233 }
1234
1235 typedef void (*usb_complete_t)(struct urb *);
1236
1237 /**
1238 * struct urb - USB Request Block
1239 * @urb_list: For use by current owner of the URB.
1240 * @anchor_list: membership in the list of an anchor
1241 * @anchor: to anchor URBs to a common mooring
1242 * @ep: Points to the endpoint's data structure. Will eventually
1243 * replace @pipe.
1244 * @pipe: Holds endpoint number, direction, type, and more.
1245 * Create these values with the eight macros available;
1246 * usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl"
1247 * (control), "bulk", "int" (interrupt), or "iso" (isochronous).
1248 * For example usb_sndbulkpipe() or usb_rcvintpipe(). Endpoint
1249 * numbers range from zero to fifteen. Note that "in" endpoint two
1250 * is a different endpoint (and pipe) from "out" endpoint two.
1251 * The current configuration controls the existence, type, and
1252 * maximum packet size of any given endpoint.
1253 * @stream_id: the endpoint's stream ID for bulk streams
1254 * @dev: Identifies the USB device to perform the request.
1255 * @status: This is read in non-iso completion functions to get the
1256 * status of the particular request. ISO requests only use it
1257 * to tell whether the URB was unlinked; detailed status for
1258 * each frame is in the fields of the iso_frame-desc.
1259 * @transfer_flags: A variety of flags may be used to affect how URB
1260 * submission, unlinking, or operation are handled. Different
1261 * kinds of URB can use different flags.
1262 * @transfer_buffer: This identifies the buffer to (or from) which the I/O
1263 * request will be performed unless URB_NO_TRANSFER_DMA_MAP is set
1264 * (however, do not leave garbage in transfer_buffer even then).
1265 * This buffer must be suitable for DMA; allocate it with
1266 * kmalloc() or equivalent. For transfers to "in" endpoints, contents
1267 * of this buffer will be modified. This buffer is used for the data
1268 * stage of control transfers.
1269 * @transfer_dma: When transfer_flags includes URB_NO_TRANSFER_DMA_MAP,
1270 * the device driver is saying that it provided this DMA address,
1271 * which the host controller driver should use in preference to the
1272 * transfer_buffer.
1273 * @sg: scatter gather buffer list, the buffer size of each element in
1274 * the list (except the last) must be divisible by the endpoint's
1275 * max packet size if no_sg_constraint isn't set in 'struct usb_bus'
1276 * @num_mapped_sgs: (internal) number of mapped sg entries
1277 * @num_sgs: number of entries in the sg list
1278 * @transfer_buffer_length: How big is transfer_buffer. The transfer may
1279 * be broken up into chunks according to the current maximum packet
1280 * size for the endpoint, which is a function of the configuration
1281 * and is encoded in the pipe. When the length is zero, neither
1282 * transfer_buffer nor transfer_dma is used.
1283 * @actual_length: This is read in non-iso completion functions, and
1284 * it tells how many bytes (out of transfer_buffer_length) were
1285 * transferred. It will normally be the same as requested, unless
1286 * either an error was reported or a short read was performed.
1287 * The URB_SHORT_NOT_OK transfer flag may be used to make such
1288 * short reads be reported as errors.
1289 * @setup_packet: Only used for control transfers, this points to eight bytes
1290 * of setup data. Control transfers always start by sending this data
1291 * to the device. Then transfer_buffer is read or written, if needed.
1292 * @setup_dma: DMA pointer for the setup packet. The caller must not use
1293 * this field; setup_packet must point to a valid buffer.
1294 * @start_frame: Returns the initial frame for isochronous transfers.
1295 * @number_of_packets: Lists the number of ISO transfer buffers.
1296 * @interval: Specifies the polling interval for interrupt or isochronous
1297 * transfers. The units are frames (milliseconds) for full and low
1298 * speed devices, and microframes (1/8 millisecond) for highspeed
1299 * and SuperSpeed devices.
1300 * @error_count: Returns the number of ISO transfers that reported errors.
1301 * @context: For use in completion functions. This normally points to
1302 * request-specific driver context.
1303 * @complete: Completion handler. This URB is passed as the parameter to the
1304 * completion function. The completion function may then do what
1305 * it likes with the URB, including resubmitting or freeing it.
1306 * @iso_frame_desc: Used to provide arrays of ISO transfer buffers and to
1307 * collect the transfer status for each buffer.
1308 *
1309 * This structure identifies USB transfer requests. URBs must be allocated by
1310 * calling usb_alloc_urb() and freed with a call to usb_free_urb().
1311 * Initialization may be done using various usb_fill_*_urb() functions. URBs
1312 * are submitted using usb_submit_urb(), and pending requests may be canceled
1313 * using usb_unlink_urb() or usb_kill_urb().
1314 *
1315 * Data Transfer Buffers:
1316 *
1317 * Normally drivers provide I/O buffers allocated with kmalloc() or otherwise
1318 * taken from the general page pool. That is provided by transfer_buffer
1319 * (control requests also use setup_packet), and host controller drivers
1320 * perform a dma mapping (and unmapping) for each buffer transferred. Those
1321 * mapping operations can be expensive on some platforms (perhaps using a dma
1322 * bounce buffer or talking to an IOMMU),
1323 * although they're cheap on commodity x86 and ppc hardware.
1324 *
1325 * Alternatively, drivers may pass the URB_NO_TRANSFER_DMA_MAP transfer flag,
1326 * which tells the host controller driver that no such mapping is needed for
1327 * the transfer_buffer since
1328 * the device driver is DMA-aware. For example, a device driver might
1329 * allocate a DMA buffer with usb_alloc_coherent() or call usb_buffer_map().
1330 * When this transfer flag is provided, host controller drivers will
1331 * attempt to use the dma address found in the transfer_dma
1332 * field rather than determining a dma address themselves.
1333 *
1334 * Note that transfer_buffer must still be set if the controller
1335 * does not support DMA (as indicated by bus.uses_dma) and when talking
1336 * to root hub. If you have to trasfer between highmem zone and the device
1337 * on such controller, create a bounce buffer or bail out with an error.
1338 * If transfer_buffer cannot be set (is in highmem) and the controller is DMA
1339 * capable, assign NULL to it, so that usbmon knows not to use the value.
1340 * The setup_packet must always be set, so it cannot be located in highmem.
1341 *
1342 * Initialization:
1343 *
1344 * All URBs submitted must initialize the dev, pipe, transfer_flags (may be
1345 * zero), and complete fields. All URBs must also initialize
1346 * transfer_buffer and transfer_buffer_length. They may provide the
1347 * URB_SHORT_NOT_OK transfer flag, indicating that short reads are
1348 * to be treated as errors; that flag is invalid for write requests.
1349 *
1350 * Bulk URBs may
1351 * use the URB_ZERO_PACKET transfer flag, indicating that bulk OUT transfers
1352 * should always terminate with a short packet, even if it means adding an
1353 * extra zero length packet.
1354 *
1355 * Control URBs must provide a valid pointer in the setup_packet field.
1356 * Unlike the transfer_buffer, the setup_packet may not be mapped for DMA
1357 * beforehand.
1358 *
1359 * Interrupt URBs must provide an interval, saying how often (in milliseconds
1360 * or, for highspeed devices, 125 microsecond units)
1361 * to poll for transfers. After the URB has been submitted, the interval
1362 * field reflects how the transfer was actually scheduled.
1363 * The polling interval may be more frequent than requested.
1364 * For example, some controllers have a maximum interval of 32 milliseconds,
1365 * while others support intervals of up to 1024 milliseconds.
1366 * Isochronous URBs also have transfer intervals. (Note that for isochronous
1367 * endpoints, as well as high speed interrupt endpoints, the encoding of
1368 * the transfer interval in the endpoint descriptor is logarithmic.
1369 * Device drivers must convert that value to linear units themselves.)
1370 *
1371 * If an isochronous endpoint queue isn't already running, the host
1372 * controller will schedule a new URB to start as soon as bandwidth
1373 * utilization allows. If the queue is running then a new URB will be
1374 * scheduled to start in the first transfer slot following the end of the
1375 * preceding URB, if that slot has not already expired. If the slot has
1376 * expired (which can happen when IRQ delivery is delayed for a long time),
1377 * the scheduling behavior depends on the URB_ISO_ASAP flag. If the flag
1378 * is clear then the URB will be scheduled to start in the expired slot,
1379 * implying that some of its packets will not be transferred; if the flag
1380 * is set then the URB will be scheduled in the first unexpired slot,
1381 * breaking the queue's synchronization. Upon URB completion, the
1382 * start_frame field will be set to the (micro)frame number in which the
1383 * transfer was scheduled. Ranges for frame counter values are HC-specific
1384 * and can go from as low as 256 to as high as 65536 frames.
1385 *
1386 * Isochronous URBs have a different data transfer model, in part because
1387 * the quality of service is only "best effort". Callers provide specially
1388 * allocated URBs, with number_of_packets worth of iso_frame_desc structures
1389 * at the end. Each such packet is an individual ISO transfer. Isochronous
1390 * URBs are normally queued, submitted by drivers to arrange that
1391 * transfers are at least double buffered, and then explicitly resubmitted
1392 * in completion handlers, so
1393 * that data (such as audio or video) streams at as constant a rate as the
1394 * host controller scheduler can support.
1395 *
1396 * Completion Callbacks:
1397 *
1398 * The completion callback is made in_interrupt(), and one of the first
1399 * things that a completion handler should do is check the status field.
1400 * The status field is provided for all URBs. It is used to report
1401 * unlinked URBs, and status for all non-ISO transfers. It should not
1402 * be examined before the URB is returned to the completion handler.
1403 *
1404 * The context field is normally used to link URBs back to the relevant
1405 * driver or request state.
1406 *
1407 * When the completion callback is invoked for non-isochronous URBs, the
1408 * actual_length field tells how many bytes were transferred. This field
1409 * is updated even when the URB terminated with an error or was unlinked.
1410 *
1411 * ISO transfer status is reported in the status and actual_length fields
1412 * of the iso_frame_desc array, and the number of errors is reported in
1413 * error_count. Completion callbacks for ISO transfers will normally
1414 * (re)submit URBs to ensure a constant transfer rate.
1415 *
1416 * Note that even fields marked "public" should not be touched by the driver
1417 * when the urb is owned by the hcd, that is, since the call to
1418 * usb_submit_urb() till the entry into the completion routine.
1419 */
1420 struct urb {
1421 /* private: usb core and host controller only fields in the urb */
1422 struct kref kref; /* reference count of the URB */
1423 void *hcpriv; /* private data for host controller */
1424 atomic_t use_count; /* concurrent submissions counter */
1425 atomic_t reject; /* submissions will fail */
1426 int unlinked; /* unlink error code */
1427
1428 /* public: documented fields in the urb that can be used by drivers */
1429 struct list_head urb_list; /* list head for use by the urb's
1430 * current owner */
1431 struct list_head anchor_list; /* the URB may be anchored */
1432 struct usb_anchor *anchor;
1433 struct usb_device *dev; /* (in) pointer to associated device */
1434 struct usb_host_endpoint *ep; /* (internal) pointer to endpoint */
1435 unsigned int pipe; /* (in) pipe information */
1436 unsigned int stream_id; /* (in) stream ID */
1437 int status; /* (return) non-ISO status */
1438 unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/
1439 void *transfer_buffer; /* (in) associated data buffer */
1440 dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */
1441 struct scatterlist *sg; /* (in) scatter gather buffer list */
1442 int num_mapped_sgs; /* (internal) mapped sg entries */
1443 int num_sgs; /* (in) number of entries in the sg list */
1444 u32 transfer_buffer_length; /* (in) data buffer length */
1445 u32 actual_length; /* (return) actual transfer length */
1446 unsigned char *setup_packet; /* (in) setup packet (control only) */
1447 dma_addr_t setup_dma; /* (in) dma addr for setup_packet */
1448 int start_frame; /* (modify) start frame (ISO) */
1449 int number_of_packets; /* (in) number of ISO packets */
1450 int interval; /* (modify) transfer interval
1451 * (INT/ISO) */
1452 int error_count; /* (return) number of ISO errors */
1453 void *context; /* (in) context for completion */
1454 usb_complete_t complete; /* (in) completion routine */
1455 struct usb_iso_packet_descriptor iso_frame_desc[0];
1456 /* (in) ISO ONLY */
1457 };
1458
1459 /* ----------------------------------------------------------------------- */
1460
1461 /**
1462 * usb_fill_control_urb - initializes a control urb
1463 * @urb: pointer to the urb to initialize.
1464 * @dev: pointer to the struct usb_device for this urb.
1465 * @pipe: the endpoint pipe
1466 * @setup_packet: pointer to the setup_packet buffer
1467 * @transfer_buffer: pointer to the transfer buffer
1468 * @buffer_length: length of the transfer buffer
1469 * @complete_fn: pointer to the usb_complete_t function
1470 * @context: what to set the urb context to.
1471 *
1472 * Initializes a control urb with the proper information needed to submit
1473 * it to a device.
1474 */
1475 static inline void usb_fill_control_urb(struct urb *urb,
1476 struct usb_device *dev,
1477 unsigned int pipe,
1478 unsigned char *setup_packet,
1479 void *transfer_buffer,
1480 int buffer_length,
1481 usb_complete_t complete_fn,
1482 void *context)
1483 {
1484 urb->dev = dev;
1485 urb->pipe = pipe;
1486 urb->setup_packet = setup_packet;
1487 urb->transfer_buffer = transfer_buffer;
1488 urb->transfer_buffer_length = buffer_length;
1489 urb->complete = complete_fn;
1490 urb->context = context;
1491 }
1492
1493 /**
1494 * usb_fill_bulk_urb - macro to help initialize a bulk urb
1495 * @urb: pointer to the urb to initialize.
1496 * @dev: pointer to the struct usb_device for this urb.
1497 * @pipe: the endpoint pipe
1498 * @transfer_buffer: pointer to the transfer buffer
1499 * @buffer_length: length of the transfer buffer
1500 * @complete_fn: pointer to the usb_complete_t function
1501 * @context: what to set the urb context to.
1502 *
1503 * Initializes a bulk urb with the proper information needed to submit it
1504 * to a device.
1505 */
1506 static inline void usb_fill_bulk_urb(struct urb *urb,
1507 struct usb_device *dev,
1508 unsigned int pipe,
1509 void *transfer_buffer,
1510 int buffer_length,
1511 usb_complete_t complete_fn,
1512 void *context)
1513 {
1514 urb->dev = dev;
1515 urb->pipe = pipe;
1516 urb->transfer_buffer = transfer_buffer;
1517 urb->transfer_buffer_length = buffer_length;
1518 urb->complete = complete_fn;
1519 urb->context = context;
1520 }
1521
1522 /**
1523 * usb_fill_int_urb - macro to help initialize a interrupt urb
1524 * @urb: pointer to the urb to initialize.
1525 * @dev: pointer to the struct usb_device for this urb.
1526 * @pipe: the endpoint pipe
1527 * @transfer_buffer: pointer to the transfer buffer
1528 * @buffer_length: length of the transfer buffer
1529 * @complete_fn: pointer to the usb_complete_t function
1530 * @context: what to set the urb context to.
1531 * @interval: what to set the urb interval to, encoded like
1532 * the endpoint descriptor's bInterval value.
1533 *
1534 * Initializes a interrupt urb with the proper information needed to submit
1535 * it to a device.
1536 *
1537 * Note that High Speed and SuperSpeed interrupt endpoints use a logarithmic
1538 * encoding of the endpoint interval, and express polling intervals in
1539 * microframes (eight per millisecond) rather than in frames (one per
1540 * millisecond).
1541 *
1542 * Wireless USB also uses the logarithmic encoding, but specifies it in units of
1543 * 128us instead of 125us. For Wireless USB devices, the interval is passed
1544 * through to the host controller, rather than being translated into microframe
1545 * units.
1546 */
1547 static inline void usb_fill_int_urb(struct urb *urb,
1548 struct usb_device *dev,
1549 unsigned int pipe,
1550 void *transfer_buffer,
1551 int buffer_length,
1552 usb_complete_t complete_fn,
1553 void *context,
1554 int interval)
1555 {
1556 urb->dev = dev;
1557 urb->pipe = pipe;
1558 urb->transfer_buffer = transfer_buffer;
1559 urb->transfer_buffer_length = buffer_length;
1560 urb->complete = complete_fn;
1561 urb->context = context;
1562
1563 if (dev->speed == USB_SPEED_HIGH || dev->speed == USB_SPEED_SUPER) {
1564 /* make sure interval is within allowed range */
1565 interval = clamp(interval, 1, 16);
1566
1567 urb->interval = 1 << (interval - 1);
1568 } else {
1569 urb->interval = interval;
1570 }
1571
1572 urb->start_frame = -1;
1573 }
1574
1575 extern void usb_init_urb(struct urb *urb);
1576 extern struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags);
1577 extern void usb_free_urb(struct urb *urb);
1578 #define usb_put_urb usb_free_urb
1579 extern struct urb *usb_get_urb(struct urb *urb);
1580 extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags);
1581 extern int usb_unlink_urb(struct urb *urb);
1582 extern void usb_kill_urb(struct urb *urb);
1583 extern void usb_poison_urb(struct urb *urb);
1584 extern void usb_unpoison_urb(struct urb *urb);
1585 extern void usb_block_urb(struct urb *urb);
1586 extern void usb_kill_anchored_urbs(struct usb_anchor *anchor);
1587 extern void usb_poison_anchored_urbs(struct usb_anchor *anchor);
1588 extern void usb_unpoison_anchored_urbs(struct usb_anchor *anchor);
1589 extern void usb_unlink_anchored_urbs(struct usb_anchor *anchor);
1590 extern void usb_anchor_suspend_wakeups(struct usb_anchor *anchor);
1591 extern void usb_anchor_resume_wakeups(struct usb_anchor *anchor);
1592 extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor);
1593 extern void usb_unanchor_urb(struct urb *urb);
1594 extern int usb_wait_anchor_empty_timeout(struct usb_anchor *anchor,
1595 unsigned int timeout);
1596 extern struct urb *usb_get_from_anchor(struct usb_anchor *anchor);
1597 extern void usb_scuttle_anchored_urbs(struct usb_anchor *anchor);
1598 extern int usb_anchor_empty(struct usb_anchor *anchor);
1599
1600 #define usb_unblock_urb usb_unpoison_urb
1601
1602 /**
1603 * usb_urb_dir_in - check if an URB describes an IN transfer
1604 * @urb: URB to be checked
1605 *
1606 * Return: 1 if @urb describes an IN transfer (device-to-host),
1607 * otherwise 0.
1608 */
1609 static inline int usb_urb_dir_in(struct urb *urb)
1610 {
1611 return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_IN;
1612 }
1613
1614 /**
1615 * usb_urb_dir_out - check if an URB describes an OUT transfer
1616 * @urb: URB to be checked
1617 *
1618 * Return: 1 if @urb describes an OUT transfer (host-to-device),
1619 * otherwise 0.
1620 */
1621 static inline int usb_urb_dir_out(struct urb *urb)
1622 {
1623 return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_OUT;
1624 }
1625
1626 void *usb_alloc_coherent(struct usb_device *dev, size_t size,
1627 gfp_t mem_flags, dma_addr_t *dma);
1628 void usb_free_coherent(struct usb_device *dev, size_t size,
1629 void *addr, dma_addr_t dma);
1630
1631 #if 0
1632 struct urb *usb_buffer_map(struct urb *urb);
1633 void usb_buffer_dmasync(struct urb *urb);
1634 void usb_buffer_unmap(struct urb *urb);
1635 #endif
1636
1637 struct scatterlist;
1638 int usb_buffer_map_sg(const struct usb_device *dev, int is_in,
1639 struct scatterlist *sg, int nents);
1640 #if 0
1641 void usb_buffer_dmasync_sg(const struct usb_device *dev, int is_in,
1642 struct scatterlist *sg, int n_hw_ents);
1643 #endif
1644 void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
1645 struct scatterlist *sg, int n_hw_ents);
1646
1647 /*-------------------------------------------------------------------*
1648 * SYNCHRONOUS CALL SUPPORT *
1649 *-------------------------------------------------------------------*/
1650
1651 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
1652 __u8 request, __u8 requesttype, __u16 value, __u16 index,
1653 void *data, __u16 size, int timeout);
1654 extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
1655 void *data, int len, int *actual_length, int timeout);
1656 extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
1657 void *data, int len, int *actual_length,
1658 int timeout);
1659
1660 /* wrappers around usb_control_msg() for the most common standard requests */
1661 extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype,
1662 unsigned char descindex, void *buf, int size);
1663 extern int usb_get_status(struct usb_device *dev,
1664 int type, int target, void *data);
1665 extern int usb_string(struct usb_device *dev, int index,
1666 char *buf, size_t size);
1667
1668 /* wrappers that also update important state inside usbcore */
1669 extern int usb_clear_halt(struct usb_device *dev, int pipe);
1670 extern int usb_reset_configuration(struct usb_device *dev);
1671 extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
1672 extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
1673
1674 /* this request isn't really synchronous, but it belongs with the others */
1675 extern int usb_driver_set_configuration(struct usb_device *udev, int config);
1676
1677 /* choose and set configuration for device */
1678 extern int usb_choose_configuration(struct usb_device *udev);
1679 extern int usb_set_configuration(struct usb_device *dev, int configuration);
1680
1681 /*
1682 * timeouts, in milliseconds, used for sending/receiving control messages
1683 * they typically complete within a few frames (msec) after they're issued
1684 * USB identifies 5 second timeouts, maybe more in a few cases, and a few
1685 * slow devices (like some MGE Ellipse UPSes) actually push that limit.
1686 */
1687 #define USB_CTRL_GET_TIMEOUT 5000
1688 #define USB_CTRL_SET_TIMEOUT 5000
1689
1690
1691 /**
1692 * struct usb_sg_request - support for scatter/gather I/O
1693 * @status: zero indicates success, else negative errno
1694 * @bytes: counts bytes transferred.
1695 *
1696 * These requests are initialized using usb_sg_init(), and then are used
1697 * as request handles passed to usb_sg_wait() or usb_sg_cancel(). Most
1698 * members of the request object aren't for driver access.
1699 *
1700 * The status and bytecount values are valid only after usb_sg_wait()
1701 * returns. If the status is zero, then the bytecount matches the total
1702 * from the request.
1703 *
1704 * After an error completion, drivers may need to clear a halt condition
1705 * on the endpoint.
1706 */
1707 struct usb_sg_request {
1708 int status;
1709 size_t bytes;
1710
1711 /* private:
1712 * members below are private to usbcore,
1713 * and are not provided for driver access!
1714 */
1715 spinlock_t lock;
1716
1717 struct usb_device *dev;
1718 int pipe;
1719
1720 int entries;
1721 struct urb **urbs;
1722
1723 int count;
1724 struct completion complete;
1725 };
1726
1727 int usb_sg_init(
1728 struct usb_sg_request *io,
1729 struct usb_device *dev,
1730 unsigned pipe,
1731 unsigned period,
1732 struct scatterlist *sg,
1733 int nents,
1734 size_t length,
1735 gfp_t mem_flags
1736 );
1737 void usb_sg_cancel(struct usb_sg_request *io);
1738 void usb_sg_wait(struct usb_sg_request *io);
1739
1740
1741 /* ----------------------------------------------------------------------- */
1742
1743 /*
1744 * For various legacy reasons, Linux has a small cookie that's paired with
1745 * a struct usb_device to identify an endpoint queue. Queue characteristics
1746 * are defined by the endpoint's descriptor. This cookie is called a "pipe",
1747 * an unsigned int encoded as:
1748 *
1749 * - direction: bit 7 (0 = Host-to-Device [Out],
1750 * 1 = Device-to-Host [In] ...
1751 * like endpoint bEndpointAddress)
1752 * - device address: bits 8-14 ... bit positions known to uhci-hcd
1753 * - endpoint: bits 15-18 ... bit positions known to uhci-hcd
1754 * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt,
1755 * 10 = control, 11 = bulk)
1756 *
1757 * Given the device address and endpoint descriptor, pipes are redundant.
1758 */
1759
1760 /* NOTE: these are not the standard USB_ENDPOINT_XFER_* values!! */
1761 /* (yet ... they're the values used by usbfs) */
1762 #define PIPE_ISOCHRONOUS 0
1763 #define PIPE_INTERRUPT 1
1764 #define PIPE_CONTROL 2
1765 #define PIPE_BULK 3
1766
1767 #define usb_pipein(pipe) ((pipe) & USB_DIR_IN)
1768 #define usb_pipeout(pipe) (!usb_pipein(pipe))
1769
1770 #define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f)
1771 #define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf)
1772
1773 #define usb_pipetype(pipe) (((pipe) >> 30) & 3)
1774 #define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS)
1775 #define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT)
1776 #define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL)
1777 #define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK)
1778
1779 static inline unsigned int __create_pipe(struct usb_device *dev,
1780 unsigned int endpoint)
1781 {
1782 return (dev->devnum << 8) | (endpoint << 15);
1783 }
1784
1785 /* Create various pipes... */
1786 #define usb_sndctrlpipe(dev, endpoint) \
1787 ((PIPE_CONTROL << 30) | __create_pipe(dev, endpoint))
1788 #define usb_rcvctrlpipe(dev, endpoint) \
1789 ((PIPE_CONTROL << 30) | __create_pipe(dev, endpoint) | USB_DIR_IN)
1790 #define usb_sndisocpipe(dev, endpoint) \
1791 ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev, endpoint))
1792 #define usb_rcvisocpipe(dev, endpoint) \
1793 ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev, endpoint) | USB_DIR_IN)
1794 #define usb_sndbulkpipe(dev, endpoint) \
1795 ((PIPE_BULK << 30) | __create_pipe(dev, endpoint))
1796 #define usb_rcvbulkpipe(dev, endpoint) \
1797 ((PIPE_BULK << 30) | __create_pipe(dev, endpoint) | USB_DIR_IN)
1798 #define usb_sndintpipe(dev, endpoint) \
1799 ((PIPE_INTERRUPT << 30) | __create_pipe(dev, endpoint))
1800 #define usb_rcvintpipe(dev, endpoint) \
1801 ((PIPE_INTERRUPT << 30) | __create_pipe(dev, endpoint) | USB_DIR_IN)
1802
1803 static inline struct usb_host_endpoint *
1804 usb_pipe_endpoint(struct usb_device *dev, unsigned int pipe)
1805 {
1806 struct usb_host_endpoint **eps;
1807 eps = usb_pipein(pipe) ? dev->ep_in : dev->ep_out;
1808 return eps[usb_pipeendpoint(pipe)];
1809 }
1810
1811 /*-------------------------------------------------------------------------*/
1812
1813 static inline __u16
1814 usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
1815 {
1816 struct usb_host_endpoint *ep;
1817 unsigned epnum = usb_pipeendpoint(pipe);
1818
1819 if (is_out) {
1820 WARN_ON(usb_pipein(pipe));
1821 ep = udev->ep_out[epnum];
1822 } else {
1823 WARN_ON(usb_pipeout(pipe));
1824 ep = udev->ep_in[epnum];
1825 }
1826 if (!ep)
1827 return 0;
1828
1829 /* NOTE: only 0x07ff bits are for packet size... */
1830 return usb_endpoint_maxp(&ep->desc);
1831 }
1832
1833 /* ----------------------------------------------------------------------- */
1834
1835 /* translate USB error codes to codes user space understands */
1836 static inline int usb_translate_errors(int error_code)
1837 {
1838 switch (error_code) {
1839 case 0:
1840 case -ENOMEM:
1841 case -ENODEV:
1842 case -EOPNOTSUPP:
1843 return error_code;
1844 default:
1845 return -EIO;
1846 }
1847 }
1848
1849 /* Events from the usb core */
1850 #define USB_DEVICE_ADD 0x0001
1851 #define USB_DEVICE_REMOVE 0x0002
1852 #define USB_BUS_ADD 0x0003
1853 #define USB_BUS_REMOVE 0x0004
1854 extern void usb_register_notify(struct notifier_block *nb);
1855 extern void usb_unregister_notify(struct notifier_block *nb);
1856
1857 /* debugfs stuff */
1858 extern struct dentry *usb_debug_root;
1859
1860 /* LED triggers */
1861 enum usb_led_event {
1862 USB_LED_EVENT_HOST = 0,
1863 USB_LED_EVENT_GADGET = 1,
1864 };
1865
1866 #ifdef CONFIG_USB_LED_TRIG
1867 extern void usb_led_activity(enum usb_led_event ev);
1868 #else
1869 static inline void usb_led_activity(enum usb_led_event ev) {}
1870 #endif
1871
1872 #endif /* __KERNEL__ */
1873
1874 #endif |
Here is an explanation of a rule violation arisen while checking your driver against a corresponding kernel.
Note that it may be false positive, i.e. there isn't a real error indeed. Please analyze a given error trace and related source code to understand whether there is an error in your driver.
Error trace column contains a path on which the given rule is violated. You can expand/collapse some entity classes by clicking on corresponding checkboxes in a main menu or in an advanced Others menu. Also you can expand/collapse each particular entity by clicking on +/-. In hovering on some entities you can see some tips. Also the error trace is bound with related source code. Line numbers may be shown as links on the left. You can click on them to open corresponding lines in source code.
Source code column contains a content of files related with the error trace. There is source code of your driver (note that there are some LDV modifications at the end), kernel headers and rule model. Tabs show a currently opened file and other available files. In hovering on them you can see full file names. On clicking a corresponding file content will be shown.
Ядро | Модуль | Правило | Верификатор | Вердикт | Статус | Время создания | Описание проблемы |
linux-4.0-rc1.tar.xz | drivers/media/usb/usbvision/usbvision.ko | 132_1a | BLAST | Bug | Fixed | 2015-03-28 01:43:28 | L0200 |
Комментарий
reported: 28 Mar 2015
[В начало]