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 (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
728 spin_lock_irqsave(&dev->slock, flags); in free_buffer()
729 if (dev->isoc_ctl.buf == buf) in free_buffer()
730 dev->isoc_ctl.buf = NULL; in free_buffer()
731 spin_unlock_irqrestore(&dev->slock, flags); in free_buffer()
743 struct tm6000_core *dev = fh->dev; in buffer_prepare() local
772 if (!dev->isoc_ctl.num_bufs) { in buffer_prepare()
773 rc = tm6000_prepare_isoc(dev); in buffer_prepare()
777 rc = tm6000_start_thread(dev); in buffer_prepare()
796 struct tm6000_core *dev = fh->dev; in buffer_queue() local
797 struct tm6000_dmaqueue *vidq = &dev->vidq; in buffer_queue()
822 static bool is_res_read(struct tm6000_core *dev, struct tm6000_fh *fh) in is_res_read() argument
825 if (dev->resources == fh && dev->is_res_read) in is_res_read()
831 static bool is_res_streaming(struct tm6000_core *dev, struct tm6000_fh *fh) in is_res_streaming() argument
834 if (dev->resources == fh) in is_res_streaming()
840 static bool res_get(struct tm6000_core *dev, struct tm6000_fh *fh, in res_get() argument
844 if (dev->resources == fh && dev->is_res_read == is_res_read) in res_get()
848 if (dev->resources) in res_get()
852 dev->resources = fh; in res_get()
853 dev->is_res_read = is_res_read; in res_get()
854 dprintk(dev, V4L2_DEBUG_RES_LOCK, "res: get\n"); in res_get()
858 static void res_free(struct tm6000_core *dev, struct tm6000_fh *fh) in res_free() argument
861 if (dev->resources != fh) in res_free()
864 dev->resources = NULL; in res_free()
865 dprintk(dev, V4L2_DEBUG_RES_LOCK, "res: put\n"); in res_free()
875 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev; in vidioc_querycap() local
880 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); in vidioc_querycap()
881 if (dev->tuner_type != TUNER_ABSENT) in vidioc_querycap()
937 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev; in vidioc_try_fmt_vid_cap() local
943 dprintk(dev, 2, "Fourcc format (0x%08x)" in vidioc_try_fmt_vid_cap()
952 tm6000_get_std_res(dev); in vidioc_try_fmt_vid_cap()
954 f->fmt.pix.width = dev->width; in vidioc_try_fmt_vid_cap()
955 f->fmt.pix.height = dev->height; in vidioc_try_fmt_vid_cap()
975 struct tm6000_core *dev = fh->dev; in vidioc_s_fmt_vid_cap() local
986 dev->fourcc = f->fmt.pix.pixelformat; in vidioc_s_fmt_vid_cap()
988 tm6000_set_fourcc_format(dev); in vidioc_s_fmt_vid_cap()
1027 struct tm6000_core *dev = fh->dev; in vidioc_streamon() local
1034 if (!res_get(dev, fh, false)) in vidioc_streamon()
1042 struct tm6000_core *dev = fh->dev; in vidioc_streamoff() local
1051 res_free(dev, fh); in vidioc_streamoff()
1060 struct tm6000_core *dev = fh->dev; in vidioc_s_std() local
1062 dev->norm = norm; in vidioc_s_std()
1063 rc = tm6000_init_analog_mode(dev); in vidioc_s_std()
1065 fh->width = dev->width; in vidioc_s_std()
1066 fh->height = dev->height; in vidioc_s_std()
1071 v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_std, dev->norm); in vidioc_s_std()
1079 struct tm6000_core *dev = fh->dev; in vidioc_g_std() local
1081 *norm = dev->norm; in vidioc_g_std()
1096 struct tm6000_core *dev = fh->dev; in vidioc_enum_input() local
1103 if (!dev->vinput[n].type) in vidioc_enum_input()
1108 if (dev->vinput[n].type == TM6000_INPUT_TV) in vidioc_enum_input()
1113 strcpy(i->name, iname[dev->vinput[n].type]); in vidioc_enum_input()
1123 struct tm6000_core *dev = fh->dev; in vidioc_g_input() local
1125 *i = dev->input; in vidioc_g_input()
1133 struct tm6000_core *dev = fh->dev; in vidioc_s_input() local
1138 if (!dev->vinput[i].type) in vidioc_s_input()
1141 dev->input = i; in vidioc_s_input()
1143 rc = vidioc_s_std(file, priv, dev->norm); in vidioc_s_input()
1152 struct tm6000_core *dev = container_of(ctrl->handler, struct tm6000_core, ctrl_handler); in tm6000_s_ctrl() local
1157 tm6000_set_reg(dev, TM6010_REQ07_R08_LUMA_CONTRAST_ADJ, val); in tm6000_s_ctrl()
1160 tm6000_set_reg(dev, TM6010_REQ07_R09_LUMA_BRIGHTNESS_ADJ, val); in tm6000_s_ctrl()
1163 tm6000_set_reg(dev, TM6010_REQ07_R0A_CHROMA_SATURATION_ADJ, val); in tm6000_s_ctrl()
1166 tm6000_set_reg(dev, TM6010_REQ07_R0B_CHROMA_HUE_PHASE_ADJ, val); in tm6000_s_ctrl()
1178 struct tm6000_core *dev = container_of(ctrl->handler, in tm6000_radio_s_ctrl() local
1184 dev->ctl_mute = val; in tm6000_radio_s_ctrl()
1185 tm6000_tvaudio_set_mute(dev, val); in tm6000_radio_s_ctrl()
1188 dev->ctl_volume = val; in tm6000_radio_s_ctrl()
1189 tm6000_set_volume(dev, val); in tm6000_radio_s_ctrl()
1203 struct tm6000_core *dev = fh->dev; in vidioc_g_tuner() local
1205 if (UNSET == dev->tuner_type) in vidioc_g_tuner()
1216 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t); in vidioc_g_tuner()
1218 t->audmode = dev->amode; in vidioc_g_tuner()
1227 struct tm6000_core *dev = fh->dev; in vidioc_s_tuner() local
1229 if (UNSET == dev->tuner_type) in vidioc_s_tuner()
1235 dev->amode = V4L2_TUNER_MODE_STEREO; in vidioc_s_tuner()
1237 dev->amode = t->audmode; in vidioc_s_tuner()
1238 dprintk(dev, 3, "audio mode: %x\n", t->audmode); in vidioc_s_tuner()
1240 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t); in vidioc_s_tuner()
1249 struct tm6000_core *dev = fh->dev; in vidioc_g_frequency() local
1251 if (UNSET == dev->tuner_type) in vidioc_g_frequency()
1256 f->frequency = dev->freq; in vidioc_g_frequency()
1258 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_frequency, f); in vidioc_g_frequency()
1267 struct tm6000_core *dev = fh->dev; in vidioc_s_frequency() local
1269 if (UNSET == dev->tuner_type) in vidioc_s_frequency()
1274 dev->freq = f->frequency; in vidioc_s_frequency()
1275 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_frequency, f); in vidioc_s_frequency()
1284 struct tm6000_core *dev = fh->dev; in radio_g_tuner() local
1296 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, g_tuner, t); in radio_g_tuner()
1305 struct tm6000_core *dev = fh->dev; in radio_s_tuner() local
1309 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_tuner, t); in radio_s_tuner()
1320 struct tm6000_core *dev = video_drvdata(file); in __tm6000_open() local
1326 dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: open called (dev=%s)\n", in __tm6000_open()
1342 dev->users++; in __tm6000_open()
1344 dprintk(dev, V4L2_DEBUG_OPEN, "open dev=%s type=%s users=%d\n", in __tm6000_open()
1346 dev->users); in __tm6000_open()
1351 dev->users--; in __tm6000_open()
1357 fh->dev = dev; in __tm6000_open()
1359 dev->radio = radio; in __tm6000_open()
1361 dev->fourcc = format[0].fourcc; in __tm6000_open()
1363 fh->fmt = format_by_fourcc(dev->fourcc); in __tm6000_open()
1365 tm6000_get_std_res(dev); in __tm6000_open()
1367 fh->width = dev->width; in __tm6000_open()
1368 fh->height = dev->height; in __tm6000_open()
1370 dprintk(dev, V4L2_DEBUG_OPEN, "Open: fh=0x%08lx, dev=0x%08lx, " in __tm6000_open()
1372 (unsigned long)fh, (unsigned long)dev, in __tm6000_open()
1373 (unsigned long)&dev->vidq); in __tm6000_open()
1374 dprintk(dev, V4L2_DEBUG_OPEN, "Open: list_empty " in __tm6000_open()
1375 "queued=%d\n", list_empty(&dev->vidq.queued)); in __tm6000_open()
1376 dprintk(dev, V4L2_DEBUG_OPEN, "Open: list_empty " in __tm6000_open()
1377 "active=%d\n", list_empty(&dev->vidq.active)); in __tm6000_open()
1380 rc = tm6000_init_analog_mode(dev); in __tm6000_open()
1384 dev->mode = TM6000_MODE_ANALOG; in __tm6000_open()
1388 NULL, &dev->slock, in __tm6000_open()
1391 sizeof(struct tm6000_buffer), fh, &dev->lock); in __tm6000_open()
1393 dprintk(dev, V4L2_DEBUG_OPEN, "video_open: setting radio device\n"); in __tm6000_open()
1394 tm6000_set_audio_rinput(dev); in __tm6000_open()
1395 v4l2_device_call_all(&dev->v4l2_dev, 0, tuner, s_radio); in __tm6000_open()
1396 tm6000_prepare_isoc(dev); in __tm6000_open()
1397 tm6000_start_thread(dev); in __tm6000_open()
1419 struct tm6000_core *dev = fh->dev; in tm6000_read() local
1424 if (!res_get(fh->dev, fh, true)) in tm6000_read()
1427 if (mutex_lock_interruptible(&dev->lock)) in tm6000_read()
1431 mutex_unlock(&dev->lock); in tm6000_read()
1452 if (!!is_res_streaming(fh->dev, fh)) in __tm6000_poll()
1455 if (!is_res_read(fh->dev, fh)) { in __tm6000_poll()
1474 struct tm6000_core *dev = fh->dev; in tm6000_poll() local
1477 mutex_lock(&dev->lock); in tm6000_poll()
1479 mutex_unlock(&dev->lock); in tm6000_poll()
1486 struct tm6000_core *dev = fh->dev; in tm6000_release() local
1489 dprintk(dev, V4L2_DEBUG_OPEN, "tm6000: close called (dev=%s, users=%d)\n", in tm6000_release()
1490 video_device_node_name(vdev), dev->users); in tm6000_release()
1492 mutex_lock(&dev->lock); in tm6000_release()
1493 dev->users--; in tm6000_release()
1495 res_free(dev, fh); in tm6000_release()
1497 if (!dev->users) { in tm6000_release()
1498 tm6000_uninit_isoc(dev); in tm6000_release()
1501 tm6000_ir_int_stop(dev); in tm6000_release()
1503 usb_reset_configuration(dev->udev); in tm6000_release()
1505 if (dev->int_in.endp) in tm6000_release()
1506 usb_set_interface(dev->udev, in tm6000_release()
1507 dev->isoc_in.bInterfaceNumber, 2); in tm6000_release()
1509 usb_set_interface(dev->udev, in tm6000_release()
1510 dev->isoc_in.bInterfaceNumber, 0); in tm6000_release()
1513 tm6000_ir_int_start(dev); in tm6000_release()
1521 mutex_unlock(&dev->lock); in tm6000_release()
1529 struct tm6000_core *dev = fh->dev; in tm6000_mmap() local
1532 if (mutex_lock_interruptible(&dev->lock)) in tm6000_mmap()
1535 mutex_unlock(&dev->lock); in tm6000_mmap()
1611 static void vdev_init(struct tm6000_core *dev, in vdev_init() argument
1617 vfd->v4l2_dev = &dev->v4l2_dev; in vdev_init()
1619 vfd->lock = &dev->lock; in vdev_init()
1621 snprintf(vfd->name, sizeof(vfd->name), "%s %s", dev->name, type_name); in vdev_init()
1623 video_set_drvdata(vfd, dev); in vdev_init()
1626 int tm6000_v4l2_register(struct tm6000_core *dev) in tm6000_v4l2_register() argument
1630 v4l2_ctrl_handler_init(&dev->ctrl_handler, 6); in tm6000_v4l2_register()
1631 v4l2_ctrl_handler_init(&dev->radio_ctrl_handler, 2); in tm6000_v4l2_register()
1632 v4l2_ctrl_new_std(&dev->radio_ctrl_handler, &tm6000_radio_ctrl_ops, in tm6000_v4l2_register()
1634 v4l2_ctrl_new_std(&dev->radio_ctrl_handler, &tm6000_radio_ctrl_ops, in tm6000_v4l2_register()
1636 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1638 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1640 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1642 v4l2_ctrl_new_std(&dev->ctrl_handler, &tm6000_ctrl_ops, in tm6000_v4l2_register()
1644 v4l2_ctrl_add_handler(&dev->ctrl_handler, in tm6000_v4l2_register()
1645 &dev->radio_ctrl_handler, NULL); in tm6000_v4l2_register()
1647 if (dev->radio_ctrl_handler.error) in tm6000_v4l2_register()
1648 ret = dev->radio_ctrl_handler.error; in tm6000_v4l2_register()
1649 if (!ret && dev->ctrl_handler.error) in tm6000_v4l2_register()
1650 ret = dev->ctrl_handler.error; in tm6000_v4l2_register()
1654 vdev_init(dev, &dev->vfd, &tm6000_template, "video"); in tm6000_v4l2_register()
1656 dev->vfd.ctrl_handler = &dev->ctrl_handler; in tm6000_v4l2_register()
1659 INIT_LIST_HEAD(&dev->vidq.active); in tm6000_v4l2_register()
1660 INIT_LIST_HEAD(&dev->vidq.queued); in tm6000_v4l2_register()
1662 ret = video_register_device(&dev->vfd, VFL_TYPE_GRABBER, video_nr); in tm6000_v4l2_register()
1666 dev->name); in tm6000_v4l2_register()
1671 dev->name, video_device_node_name(&dev->vfd)); in tm6000_v4l2_register()
1673 if (dev->caps.has_radio) { in tm6000_v4l2_register()
1674 vdev_init(dev, &dev->radio_dev, &tm6000_radio_template, in tm6000_v4l2_register()
1676 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler; in tm6000_v4l2_register()
1677 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO, in tm6000_v4l2_register()
1681 dev->name); in tm6000_v4l2_register()
1686 dev->name, video_device_node_name(&dev->radio_dev)); in tm6000_v4l2_register()
1693 video_unregister_device(&dev->vfd); in tm6000_v4l2_register()
1695 v4l2_ctrl_handler_free(&dev->ctrl_handler); in tm6000_v4l2_register()
1696 v4l2_ctrl_handler_free(&dev->radio_ctrl_handler); in tm6000_v4l2_register()
1700 int tm6000_v4l2_unregister(struct tm6000_core *dev) in tm6000_v4l2_unregister() argument
1702 video_unregister_device(&dev->vfd); in tm6000_v4l2_unregister()
1705 tm6000_free_urb_buffers(dev); in tm6000_v4l2_unregister()
1707 video_unregister_device(&dev->radio_dev); in tm6000_v4l2_unregister()