Lines Matching refs:dev

100 	struct tm6000_core *dev = container_of(dma_q, struct tm6000_core, vidq);  in get_next_buf()  local
103 dprintk(dev, V4L2_DEBUG_QUEUE, "No active queue to serve\n"); in get_next_buf()
115 static inline void buffer_filled(struct tm6000_core *dev, in buffer_filled() argument
120 dprintk(dev, V4L2_DEBUG_ISOC, "[%p/%d] wakeup\n", buf, buf->vb.i); in buffer_filled()
136 struct tm6000_core *dev = container_of(dma_q, struct tm6000_core, vidq); in copy_streams() local
145 if (!dev->radio) { in copy_streams()
158 if (!dev->isoc_ctl.cmd) { in copy_streams()
160 if (dev->isoc_ctl.tmp_buf_len > 0) { in copy_streams()
162 header = dev->isoc_ctl.tmp_buf; in copy_streams()
163 if (4 - dev->isoc_ctl.tmp_buf_len > 0) { in copy_streams()
165 dev->isoc_ctl.tmp_buf_len, in copy_streams()
167 4 - dev->isoc_ctl.tmp_buf_len); in copy_streams()
168 ptr += 4 - dev->isoc_ctl.tmp_buf_len; in copy_streams()
170 dev->isoc_ctl.tmp_buf_len = 0; in copy_streams()
174 dev->isoc_ctl.tmp_buf_len = endp - ptr; in copy_streams()
175 memcpy(&dev->isoc_ctl.tmp_buf, ptr, in copy_streams()
176 dev->isoc_ctl.tmp_buf_len); in copy_streams()
206 if (!dev->radio) { in copy_streams()
207 if ((dev->isoc_ctl.vfield != field) && in copy_streams()
213 buffer_filled(dev, dma_q, vbuf); in copy_streams()
214 dprintk(dev, V4L2_DEBUG_ISOC, in copy_streams()
230 dev->isoc_ctl.vfield = field; in copy_streams()
242 cmd = dev->isoc_ctl.cmd; in copy_streams()
243 size = dev->isoc_ctl.size; in copy_streams()
244 pos = dev->isoc_ctl.pos; in copy_streams()
245 pktsize = dev->isoc_ctl.pktsize; in copy_streams()
246 field = dev->isoc_ctl.field; in copy_streams()
262 tm6000_call_fillbuf(dev, TM6000_AUDIO, ptr, cpysize); in copy_streams()
272 dprintk(dev, V4L2_DEBUG_ISOC, "field %d, PTS %x", in copy_streams()
283 dev->isoc_ctl.pos = pos + cpysize; in copy_streams()
284 dev->isoc_ctl.size = size - cpysize; in copy_streams()
285 dev->isoc_ctl.cmd = cmd; in copy_streams()
286 dev->isoc_ctl.field = field; in copy_streams()
287 dev->isoc_ctl.pktsize = pktsize - (endp - ptr); in copy_streams()
290 dev->isoc_ctl.cmd = 0; in copy_streams()
304 struct tm6000_core *dev = container_of(dma_q, struct tm6000_core, vidq); in copy_multiplexed() local
305 unsigned int pos = dev->isoc_ctl.pos, cpysize; in copy_multiplexed()
326 buffer_filled(dev, dma_q, buf); in copy_multiplexed()
327 dprintk(dev, V4L2_DEBUG_ISOC, "new buffer filled\n"); in copy_multiplexed()
338 dev->isoc_ctl.pos = pos; in copy_multiplexed()
342 static inline void print_err_status(struct tm6000_core *dev, in print_err_status() argument
374 dprintk(dev, V4L2_DEBUG_QUEUE, "URB status %d [%s].\n", in print_err_status()
377 dprintk(dev, V4L2_DEBUG_QUEUE, "URB packet %d, status %d [%s].\n", in print_err_status()
389 struct tm6000_core *dev = container_of(dma_q, struct tm6000_core, vidq); in tm6000_isoc_copy() local
394 print_err_status(dev, -1, urb->status); in tm6000_isoc_copy()
402 print_err_status(dev, i, status); in tm6000_isoc_copy()
411 if ((dev->fourcc) == V4L2_PIX_FMT_TM6000) { in tm6000_isoc_copy()
435 struct tm6000_core *dev = container_of(dma_q, struct tm6000_core, vidq); in tm6000_irq_callback() local
453 spin_lock(&dev->slock); in tm6000_irq_callback()
455 spin_unlock(&dev->slock); in tm6000_irq_callback()
472 static int tm6000_alloc_urb_buffers(struct tm6000_core *dev) in tm6000_alloc_urb_buffers() argument
477 if (dev->urb_buffer != NULL) in tm6000_alloc_urb_buffers()
480 dev->urb_buffer = kmalloc(sizeof(void *)*num_bufs, GFP_KERNEL); in tm6000_alloc_urb_buffers()
481 if (!dev->urb_buffer) { in tm6000_alloc_urb_buffers()
486 dev->urb_dma = kmalloc(sizeof(dma_addr_t *)*num_bufs, GFP_KERNEL); in tm6000_alloc_urb_buffers()
487 if (!dev->urb_dma) { in tm6000_alloc_urb_buffers()
493 dev->urb_buffer[i] = usb_alloc_coherent( in tm6000_alloc_urb_buffers()
494 dev->udev, dev->urb_size, in tm6000_alloc_urb_buffers()
495 GFP_KERNEL, &dev->urb_dma[i]); in tm6000_alloc_urb_buffers()
496 if (!dev->urb_buffer[i]) { in tm6000_alloc_urb_buffers()
498 dev->urb_size, i); in tm6000_alloc_urb_buffers()
501 memset(dev->urb_buffer[i], 0, dev->urb_size); in tm6000_alloc_urb_buffers()
510 static int tm6000_free_urb_buffers(struct tm6000_core *dev) in tm6000_free_urb_buffers() argument
514 if (dev->urb_buffer == NULL) in tm6000_free_urb_buffers()
518 if (dev->urb_buffer[i]) { in tm6000_free_urb_buffers()
519 usb_free_coherent(dev->udev, in tm6000_free_urb_buffers()
520 dev->urb_size, in tm6000_free_urb_buffers()
521 dev->urb_buffer[i], in tm6000_free_urb_buffers()
522 dev->urb_dma[i]); in tm6000_free_urb_buffers()
523 dev->urb_buffer[i] = NULL; in tm6000_free_urb_buffers()
526 kfree(dev->urb_buffer); in tm6000_free_urb_buffers()
527 kfree(dev->urb_dma); in tm6000_free_urb_buffers()
528 dev->urb_buffer = NULL; in tm6000_free_urb_buffers()
529 dev->urb_dma = NULL; in tm6000_free_urb_buffers()
537 static void tm6000_uninit_isoc(struct tm6000_core *dev) in tm6000_uninit_isoc() argument
542 dev->isoc_ctl.buf = NULL; in tm6000_uninit_isoc()
543 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in tm6000_uninit_isoc()
544 urb = dev->isoc_ctl.urb[i]; in tm6000_uninit_isoc()
549 dev->isoc_ctl.urb[i] = NULL; in tm6000_uninit_isoc()
551 dev->isoc_ctl.transfer_buffer[i] = NULL; in tm6000_uninit_isoc()
555 tm6000_free_urb_buffers(dev); in tm6000_uninit_isoc()
557 kfree(dev->isoc_ctl.urb); in tm6000_uninit_isoc()
558 kfree(dev->isoc_ctl.transfer_buffer); in tm6000_uninit_isoc()
560 dev->isoc_ctl.urb = NULL; in tm6000_uninit_isoc()
561 dev->isoc_ctl.transfer_buffer = NULL; in tm6000_uninit_isoc()
562 dev->isoc_ctl.num_bufs = 0; in tm6000_uninit_isoc()
568 static int tm6000_prepare_isoc(struct tm6000_core *dev) in tm6000_prepare_isoc() argument
570 struct tm6000_dmaqueue *dma_q = &dev->vidq; in tm6000_prepare_isoc()
576 tm6000_uninit_isoc(dev); in tm6000_prepare_isoc()
578 tm6000_ir_int_stop(dev); in tm6000_prepare_isoc()
580 usb_set_interface(dev->udev, in tm6000_prepare_isoc()
581 dev->isoc_in.bInterfaceNumber, in tm6000_prepare_isoc()
582 dev->isoc_in.bAlternateSetting); in tm6000_prepare_isoc()
585 tm6000_ir_int_start(dev); in tm6000_prepare_isoc()
587 pipe = usb_rcvisocpipe(dev->udev, in tm6000_prepare_isoc()
588 dev->isoc_in.endp->desc.bEndpointAddress & in tm6000_prepare_isoc()
591 size = usb_maxpacket(dev->udev, pipe, usb_pipeout(pipe)); in tm6000_prepare_isoc()
593 if (size > dev->isoc_in.maxsize) in tm6000_prepare_isoc()
594 size = dev->isoc_in.maxsize; in tm6000_prepare_isoc()
596 dev->isoc_ctl.max_pkt_size = size; in tm6000_prepare_isoc()
600 dev->urb_size = sb_size; in tm6000_prepare_isoc()
602 dev->isoc_ctl.num_bufs = num_bufs; in tm6000_prepare_isoc()
604 dev->isoc_ctl.urb = kmalloc(sizeof(void *)*num_bufs, GFP_KERNEL); in tm6000_prepare_isoc()
605 if (!dev->isoc_ctl.urb) { in tm6000_prepare_isoc()
610 dev->isoc_ctl.transfer_buffer = kmalloc(sizeof(void *)*num_bufs, in tm6000_prepare_isoc()
612 if (!dev->isoc_ctl.transfer_buffer) { in tm6000_prepare_isoc()
614 kfree(dev->isoc_ctl.urb); in tm6000_prepare_isoc()
618 dprintk(dev, V4L2_DEBUG_QUEUE, "Allocating %d x %d packets" in tm6000_prepare_isoc()
621 dev->isoc_in.maxsize, size); in tm6000_prepare_isoc()
624 if (!dev->urb_buffer && tm6000_alloc_urb_buffers(dev) < 0) { in tm6000_prepare_isoc()
628 tm6000_free_urb_buffers(dev); in tm6000_prepare_isoc()
629 kfree(dev->isoc_ctl.urb); in tm6000_prepare_isoc()
630 kfree(dev->isoc_ctl.transfer_buffer); in tm6000_prepare_isoc()
635 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in tm6000_prepare_isoc()
639 tm6000_uninit_isoc(dev); in tm6000_prepare_isoc()
643 dev->isoc_ctl.urb[i] = urb; in tm6000_prepare_isoc()
645 urb->transfer_dma = dev->urb_dma[i]; in tm6000_prepare_isoc()
646 dev->isoc_ctl.transfer_buffer[i] = dev->urb_buffer[i]; in tm6000_prepare_isoc()
648 usb_fill_bulk_urb(urb, dev->udev, pipe, in tm6000_prepare_isoc()
649 dev->isoc_ctl.transfer_buffer[i], sb_size, in tm6000_prepare_isoc()
651 urb->interval = dev->isoc_in.endp->desc.bInterval; in tm6000_prepare_isoc()
664 static int tm6000_start_thread(struct tm6000_core *dev) in tm6000_start_thread() argument
666 struct tm6000_dmaqueue *dma_q = &dev->vidq; in tm6000_start_thread()
675 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { in tm6000_start_thread()
676 int rc = usb_submit_urb(dev->isoc_ctl.urb[i], GFP_ATOMIC); in tm6000_start_thread()
680 tm6000_uninit_isoc(dev); in tm6000_start_thread()
714 struct tm6000_core *dev = fh->dev; in free_buffer() local
729 spin_lock_irqsave(&dev->slock, flags); in free_buffer()
730 if (dev->isoc_ctl.buf == buf) in free_buffer()
731 dev->isoc_ctl.buf = NULL; in free_buffer()
732 spin_unlock_irqrestore(&dev->slock, flags); in free_buffer()
744 struct tm6000_core *dev = fh->dev; in buffer_prepare() local
773 if (!dev->isoc_ctl.num_bufs) { in buffer_prepare()
774 rc = tm6000_prepare_isoc(dev); in buffer_prepare()
778 rc = tm6000_start_thread(dev); in buffer_prepare()
797 struct tm6000_core *dev = fh->dev; in buffer_queue() local
798 struct tm6000_dmaqueue *vidq = &dev->vidq; in buffer_queue()
823 static bool is_res_read(struct tm6000_core *dev, struct tm6000_fh *fh) in is_res_read() argument
826 if (dev->resources == fh && dev->is_res_read) in is_res_read()
832 static bool is_res_streaming(struct tm6000_core *dev, struct tm6000_fh *fh) in is_res_streaming() argument
835 if (dev->resources == fh) in is_res_streaming()
841 static bool res_get(struct tm6000_core *dev, struct tm6000_fh *fh, in res_get() argument
845 if (dev->resources == fh && dev->is_res_read == is_res_read) in res_get()
849 if (dev->resources) in res_get()
853 dev->resources = fh; in res_get()
854 dev->is_res_read = is_res_read; in res_get()
855 dprintk(dev, V4L2_DEBUG_RES_LOCK, "res: get\n"); in res_get()
859 static void res_free(struct tm6000_core *dev, struct tm6000_fh *fh) in res_free() argument
862 if (dev->resources != fh) in res_free()
865 dev->resources = NULL; in res_free()
866 dprintk(dev, V4L2_DEBUG_RES_LOCK, "res: put\n"); in res_free()
876 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev; in vidioc_querycap() local
881 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); in vidioc_querycap()
882 if (dev->tuner_type != TUNER_ABSENT) in vidioc_querycap()
938 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev; in vidioc_try_fmt_vid_cap() local
944 dprintk(dev, 2, "Fourcc format (0x%08x)" in vidioc_try_fmt_vid_cap()
953 tm6000_get_std_res(dev); in vidioc_try_fmt_vid_cap()
955 f->fmt.pix.width = dev->width; in vidioc_try_fmt_vid_cap()
956 f->fmt.pix.height = dev->height; in vidioc_try_fmt_vid_cap()
976 struct tm6000_core *dev = fh->dev; in vidioc_s_fmt_vid_cap() local
987 dev->fourcc = f->fmt.pix.pixelformat; in vidioc_s_fmt_vid_cap()
989 tm6000_set_fourcc_format(dev); in vidioc_s_fmt_vid_cap()
1028 struct tm6000_core *dev = fh->dev; in vidioc_streamon() local
1035 if (!res_get(dev, fh, false)) in vidioc_streamon()
1043 struct tm6000_core *dev = fh->dev; in vidioc_streamoff() local
1052 res_free(dev, fh); in vidioc_streamoff()
1061 struct tm6000_core *dev = fh->dev; in vidioc_s_std() local
1063 dev->norm = norm; in vidioc_s_std()
1064 rc = tm6000_init_analog_mode(dev); in vidioc_s_std()
1066 fh->width = dev->width; in vidioc_s_std()
1067 fh->height = dev->height; in vidioc_s_std()
1072 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm); in vidioc_s_std()
1080 struct tm6000_core *dev = fh->dev; in vidioc_g_std() local
1082 *norm = dev->norm; in vidioc_g_std()
1097 struct tm6000_core *dev = fh->dev; in vidioc_enum_input() local
1104 if (!dev->vinput[n].type) in vidioc_enum_input()
1109 if (dev->vinput[n].type == TM6000_INPUT_TV) in vidioc_enum_input()
1114 strcpy(i->name, iname[dev->vinput[n].type]); in vidioc_enum_input()
1124 struct tm6000_core *dev = fh->dev; in vidioc_g_input() local
1126 *i = dev->input; in vidioc_g_input()
1134 struct tm6000_core *dev = fh->dev; in vidioc_s_input() local
1139 if (!dev->vinput[i].type) in vidioc_s_input()
1142 dev->input = i; in vidioc_s_input()
1144 rc = vidioc_s_std(file, priv, dev->norm); in vidioc_s_input()
1153 struct tm6000_core *dev = container_of(ctrl->handler, struct tm6000_core, ctrl_handler); in tm6000_s_ctrl() local
1158 tm6000_set_reg(dev, TM6010_REQ07_R08_LUMA_CONTRAST_ADJ, val); in tm6000_s_ctrl()
1161 tm6000_set_reg(dev, TM6010_REQ07_R09_LUMA_BRIGHTNESS_ADJ, val); in tm6000_s_ctrl()
1164 tm6000_set_reg(dev, TM6010_REQ07_R0A_CHROMA_SATURATION_ADJ, val); in tm6000_s_ctrl()
1167 tm6000_set_reg(dev, TM6010_REQ07_R0B_CHROMA_HUE_PHASE_ADJ, val); in tm6000_s_ctrl()
1179 struct tm6000_core *dev = container_of(ctrl->handler, in tm6000_radio_s_ctrl() local
1185 dev->ctl_mute = val; in tm6000_radio_s_ctrl()
1186 tm6000_tvaudio_set_mute(dev, val); in tm6000_radio_s_ctrl()
1189 dev->ctl_volume = val; in tm6000_radio_s_ctrl()
1190 tm6000_set_volume(dev, val); in tm6000_radio_s_ctrl()
1204 struct tm6000_core *dev = fh->dev; in vidioc_g_tuner() local
1206 if (UNSET == dev->tuner_type) in vidioc_g_tuner()
1217 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t); in vidioc_g_tuner()
1219 t->audmode = dev->amode; in vidioc_g_tuner()
1228 struct tm6000_core *dev = fh->dev; in vidioc_s_tuner() local
1230 if (UNSET == dev->tuner_type) in vidioc_s_tuner()
1236 dev->amode = V4L2_TUNER_MODE_STEREO; in vidioc_s_tuner()
1238 dev->amode = t->audmode; in vidioc_s_tuner()
1239 dprintk(dev, 3, "audio mode: %x\n", t->audmode); in vidioc_s_tuner()
1241 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t); in vidioc_s_tuner()
1250 struct tm6000_core *dev = fh->dev; in vidioc_g_frequency() local
1252 if (UNSET == dev->tuner_type) in vidioc_g_frequency()
1257 f->frequency = dev->freq; in vidioc_g_frequency()
1259 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_frequency, f); in vidioc_g_frequency()
1268 struct tm6000_core *dev = fh->dev; in vidioc_s_frequency() local
1270 if (UNSET == dev->tuner_type) in vidioc_s_frequency()
1275 dev->freq = f->frequency; in vidioc_s_frequency()
1276 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, f); in vidioc_s_frequency()
1285 struct tm6000_core *dev = fh->dev; in radio_g_tuner() local
1297 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t); in radio_g_tuner()
1306 struct tm6000_core *dev = fh->dev; in radio_s_tuner() local
1310 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t); in radio_s_tuner()
1321 struct tm6000_core *dev = video_drvdata(file); in __tm6000_open() local
1327 dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: open called (dev=%s)\n", in __tm6000_open()
1343 dev->users++; in __tm6000_open()
1345 dprintk(dev, V4L2_DEBUG_OPEN, "open dev=%s type=%s users=%d\n", in __tm6000_open()
1347 dev->users); in __tm6000_open()
1352 dev->users--; in __tm6000_open()
1358 fh->dev = dev; in __tm6000_open()
1360 dev->radio = radio; in __tm6000_open()
1362 dev->fourcc = format[0].fourcc; in __tm6000_open()
1364 fh->fmt = format_by_fourcc(dev->fourcc); in __tm6000_open()
1366 tm6000_get_std_res(dev); in __tm6000_open()
1368 fh->width = dev->width; in __tm6000_open()
1369 fh->height = dev->height; in __tm6000_open()
1371 dprintk(dev, V4L2_DEBUG_OPEN, "Open: fh=0x%08lx, dev=0x%08lx, " in __tm6000_open()
1373 (unsigned long)fh, (unsigned long)dev, in __tm6000_open()
1374 (unsigned long)&dev->vidq); in __tm6000_open()
1375 dprintk(dev, V4L2_DEBUG_OPEN, "Open: list_empty " in __tm6000_open()
1376 "queued=%d\n", list_empty(&dev->vidq.queued)); in __tm6000_open()
1377 dprintk(dev, V4L2_DEBUG_OPEN, "Open: list_empty " in __tm6000_open()
1378 "active=%d\n", list_empty(&dev->vidq.active)); in __tm6000_open()
1381 rc = tm6000_init_analog_mode(dev); in __tm6000_open()
1385 dev->mode = TM6000_MODE_ANALOG; in __tm6000_open()
1389 NULL, &dev->slock, in __tm6000_open()
1392 sizeof(struct tm6000_buffer), fh, &dev->lock); in __tm6000_open()
1394 dprintk(dev, V4L2_DEBUG_OPEN, "video_open: setting radio device\n"); in __tm6000_open()
1395 tm6000_set_audio_rinput(dev); in __tm6000_open()
1396 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_radio); in __tm6000_open()
1397 tm6000_prepare_isoc(dev); in __tm6000_open()
1398 tm6000_start_thread(dev); in __tm6000_open()
1420 struct tm6000_core *dev = fh->dev; in tm6000_read() local
1425 if (!res_get(fh->dev, fh, true)) in tm6000_read()
1428 if (mutex_lock_interruptible(&dev->lock)) in tm6000_read()
1432 mutex_unlock(&dev->lock); in tm6000_read()
1453 if (!!is_res_streaming(fh->dev, fh)) in __tm6000_poll()
1456 if (!is_res_read(fh->dev, fh)) { in __tm6000_poll()
1475 struct tm6000_core *dev = fh->dev; in tm6000_poll() local
1478 mutex_lock(&dev->lock); in tm6000_poll()
1480 mutex_unlock(&dev->lock); in tm6000_poll()
1487 struct tm6000_core *dev = fh->dev; in tm6000_release() local
1490 dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: close called (dev=%s, users=%d)\n", in tm6000_release()
1491 video_device_node_name(vdev), dev->users); in tm6000_release()
1493 mutex_lock(&dev->lock); in tm6000_release()
1494 dev->users--; in tm6000_release()
1496 res_free(dev, fh); in tm6000_release()
1498 if (!dev->users) { in tm6000_release()
1499 tm6000_uninit_isoc(dev); in tm6000_release()
1502 tm6000_ir_int_stop(dev); in tm6000_release()
1504 usb_reset_configuration(dev->udev); in tm6000_release()
1506 if (dev->int_in.endp) in tm6000_release()
1507 usb_set_interface(dev->udev, in tm6000_release()
1508 dev->isoc_in.bInterfaceNumber, 2); in tm6000_release()
1510 usb_set_interface(dev->udev, in tm6000_release()
1511 dev->isoc_in.bInterfaceNumber, 0); in tm6000_release()
1514 tm6000_ir_int_start(dev); in tm6000_release()
1522 mutex_unlock(&dev->lock); in tm6000_release()
1530 struct tm6000_core *dev = fh->dev; in tm6000_mmap() local
1533 if (mutex_lock_interruptible(&dev->lock)) in tm6000_mmap()
1536 mutex_unlock(&dev->lock); in tm6000_mmap()
1612 static void vdev_init(struct tm6000_core *dev, in vdev_init() argument
1618 vfd->v4l2_dev = &dev->v4l2_dev; in vdev_init()
1620 vfd->lock = &dev->lock; in vdev_init()
1622 snprintf(vfd->name, sizeof(vfd->name), "%s %s", dev->name, type_name); in vdev_init()
1624 video_set_drvdata(vfd, dev); in vdev_init()
1627 int tm6000_v4l2_register(struct tm6000_core *dev) in tm6000_v4l2_register() argument
1631 v4l2_ctrl_handler_init(&dev->ctrl_handler, 6); in tm6000_v4l2_register()
1632 v4l2_ctrl_handler_init(&dev->radio_ctrl_handler, 2); in tm6000_v4l2_register()
1633 v4l2_ctrl_new_std(&dev->radio_ctrl_handler, &tm6000_radio_ctrl_ops, in tm6000_v4l2_register()
1635 v4l2_ctrl_new_std(&dev->radio_ctrl_handler, &tm6000_radio_ctrl_ops, in tm6000_v4l2_register()
1637 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1639 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1641 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1643 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1645 v4l2_ctrl_add_handler(&dev->ctrl_handler, in tm6000_v4l2_register()
1646 &dev->radio_ctrl_handler, NULL); in tm6000_v4l2_register()
1648 if (dev->radio_ctrl_handler.error) in tm6000_v4l2_register()
1649 ret = dev->radio_ctrl_handler.error; in tm6000_v4l2_register()
1650 if (!ret && dev->ctrl_handler.error) in tm6000_v4l2_register()
1651 ret = dev->ctrl_handler.error; in tm6000_v4l2_register()
1655 vdev_init(dev, &dev->vfd, &tm6000_template, "video"); in tm6000_v4l2_register()
1657 dev->vfd.ctrl_handler = &dev->ctrl_handler; in tm6000_v4l2_register()
1660 INIT_LIST_HEAD(&dev->vidq.active); in tm6000_v4l2_register()
1661 INIT_LIST_HEAD(&dev->vidq.queued); in tm6000_v4l2_register()
1663 ret = video_register_device(&dev->vfd, VFL_TYPE_GRABBER, video_nr); in tm6000_v4l2_register()
1667 dev->name); in tm6000_v4l2_register()
1672 dev->name, video_device_node_name(&dev->vfd)); in tm6000_v4l2_register()
1674 if (dev->caps.has_radio) { in tm6000_v4l2_register()
1675 vdev_init(dev, &dev->radio_dev, &tm6000_radio_template, in tm6000_v4l2_register()
1677 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler; in tm6000_v4l2_register()
1678 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO, in tm6000_v4l2_register()
1682 dev->name); in tm6000_v4l2_register()
1687 dev->name, video_device_node_name(&dev->radio_dev)); in tm6000_v4l2_register()
1694 video_unregister_device(&dev->vfd); in tm6000_v4l2_register()
1696 v4l2_ctrl_handler_free(&dev->ctrl_handler); in tm6000_v4l2_register()
1697 v4l2_ctrl_handler_free(&dev->radio_ctrl_handler); in tm6000_v4l2_register()
1701 int tm6000_v4l2_unregister(struct tm6000_core *dev) in tm6000_v4l2_unregister() argument
1703 video_unregister_device(&dev->vfd); in tm6000_v4l2_unregister()
1706 tm6000_free_urb_buffers(dev); in tm6000_v4l2_unregister()
1708 video_unregister_device(&dev->radio_dev); in tm6000_v4l2_unregister()