Lines Matching refs:dev

106 	struct device *dev;
144 struct msi2500_dev *dev)
149 spin_lock_irqsave(&dev->queued_bufs_lock, flags);
150 if (list_empty(&dev->queued_bufs))
153 buf = list_entry(dev->queued_bufs.next, struct msi2500_frame_buf, list);
156 spin_unlock_irqrestore(&dev->queued_bufs_lock, flags);
242 static int msi2500_convert_stream(struct msi2500_dev *dev, u8 *dst, u8 *src,
254 if (i == 0 && dev->next_sample != sample[0]) {
255 dev_dbg_ratelimited(dev->dev,
257 sample[0] - dev->next_sample,
258 src_len, dev->next_sample,
266 dev_dbg_ratelimited(dev->dev, "%*ph\n", 12, &src[4]);
270 switch (dev->pixelformat) {
282 dev->next_sample = sample[i] + 504;
304 dev->next_sample = sample[i] + 252;
309 dev_dbg_ratelimited(dev->dev, "%*ph\n", 24, &src[1000]);
314 dev->next_sample = sample[i] + 384;
321 dev->next_sample = sample[i] + 504;
328 dev->next_sample = sample[i] + 336;
335 dev->next_sample = sample[i] + 252;
343 if (unlikely(time_is_before_jiffies(dev->jiffies_next))) {
346 dev->jiffies_next + msecs_to_jiffies(MSECS));
347 unsigned int samples = dev->next_sample - dev->sample;
349 dev->jiffies_next = jiffies + msecs_to_jiffies(MSECS);
350 dev->sample = dev->next_sample;
351 dev_dbg(dev->dev, "size=%u samples=%u msecs=%u sample rate=%lu\n",
365 struct msi2500_dev *dev = (struct msi2500_dev *)urb->context;
373 dev_dbg(dev->dev, "URB (%p) unlinked %ssynchronously\n",
379 dev_dbg(dev->dev, "called with status %d\n", urb->status);
381 if (++dev->isoc_errors > MAX_ISOC_ERRORS)
382 dev_dbg(dev->dev, "Too many ISOC errors, bailing out\n");
386 dev->isoc_errors = 0;
396 dev_dbg_ratelimited(dev->dev,
410 fbuf = msi2500_get_next_fill_buf(dev);
412 dev->vb_full++;
413 dev_dbg_ratelimited(dev->dev,
415 dev->vb_full);
421 flen = msi2500_convert_stream(dev, ptr, iso_buf, flen);
429 dev_dbg(dev->dev, "Error (%d) re-submitting urb\n", i);
432 static void msi2500_iso_stop(struct msi2500_dev *dev)
436 dev_dbg(dev->dev, "\n");
440 if (dev->urbs[i]) {
441 dev_dbg(dev->dev, "Unlinking URB %p\n", dev->urbs[i]);
442 usb_kill_urb(dev->urbs[i]);
447 static void msi2500_iso_free(struct msi2500_dev *dev)
451 dev_dbg(dev->dev, "\n");
455 if (dev->urbs[i]) {
456 dev_dbg(dev->dev, "Freeing URB\n");
457 if (dev->urbs[i]->transfer_buffer) {
458 usb_free_coherent(dev->udev,
459 dev->urbs[i]->transfer_buffer_length,
460 dev->urbs[i]->transfer_buffer,
461 dev->urbs[i]->transfer_dma);
463 usb_free_urb(dev->urbs[i]);
464 dev->urbs[i] = NULL;
470 static void msi2500_isoc_cleanup(struct msi2500_dev *dev)
472 dev_dbg(dev->dev, "\n");
474 msi2500_iso_stop(dev);
475 msi2500_iso_free(dev);
479 static int msi2500_isoc_init(struct msi2500_dev *dev)
484 dev_dbg(dev->dev, "\n");
486 dev->isoc_errors = 0;
488 ret = usb_set_interface(dev->udev, 0, 1);
496 msi2500_isoc_cleanup(dev);
499 dev->urbs[i] = urb;
500 dev_dbg(dev->dev, "Allocated URB at 0x%p\n", urb);
503 urb->dev = dev->udev;
504 urb->pipe = usb_rcvisocpipe(dev->udev, 0x81);
506 urb->transfer_buffer = usb_alloc_coherent(dev->udev,
510 dev_err(dev->dev,
512 msi2500_isoc_cleanup(dev);
517 urb->context = dev;
528 ret = usb_submit_urb(dev->urbs[i], GFP_KERNEL);
530 dev_err(dev->dev,
533 msi2500_isoc_cleanup(dev);
536 dev_dbg(dev->dev, "URB 0x%p submitted.\n", dev->urbs[i]);
544 static void msi2500_cleanup_queued_bufs(struct msi2500_dev *dev)
548 dev_dbg(dev->dev, "\n");
550 spin_lock_irqsave(&dev->queued_bufs_lock, flags);
551 while (!list_empty(&dev->queued_bufs)) {
554 buf = list_entry(dev->queued_bufs.next,
559 spin_unlock_irqrestore(&dev->queued_bufs_lock, flags);
566 struct msi2500_dev *dev =
569 dev_dbg(dev->dev, "\n");
571 mutex_lock(&dev->vb_queue_lock);
572 mutex_lock(&dev->v4l2_lock);
574 dev->udev = NULL;
575 v4l2_device_disconnect(&dev->v4l2_dev);
576 video_unregister_device(&dev->vdev);
577 spi_unregister_master(dev->master);
578 mutex_unlock(&dev->v4l2_lock);
579 mutex_unlock(&dev->vb_queue_lock);
581 v4l2_device_put(&dev->v4l2_dev);
587 struct msi2500_dev *dev = video_drvdata(file);
589 dev_dbg(dev->dev, "\n");
592 strscpy(cap->card, dev->vdev.name, sizeof(cap->card));
593 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
603 struct msi2500_dev *dev = vb2_get_drv_priv(vq);
605 dev_dbg(dev->dev, "nbuffers=%d\n", *nbuffers);
610 sizes[0] = PAGE_ALIGN(dev->buffersize);
611 dev_dbg(dev->dev, "nbuffers=%d sizes[0]=%d\n", *nbuffers, sizes[0]);
618 struct msi2500_dev *dev = vb2_get_drv_priv(vb->vb2_queue);
625 if (unlikely(!dev->udev)) {
630 spin_lock_irqsave(&dev->queued_bufs_lock, flags);
631 list_add_tail(&buf->list, &dev->queued_bufs);
632 spin_unlock_irqrestore(&dev->queued_bufs_lock, flags);
651 static int msi2500_ctrl_msg(struct msi2500_dev *dev, u8 cmd, u32 data)
659 msi2500_dbg_usb_control_msg(dev->dev, request, requesttype,
661 ret = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0), request,
664 dev_err(dev->dev, "failed %d, cmd %02x, data %04x\n",
670 static int msi2500_set_usb_adc(struct msi2500_dev *dev)
678 f_sr = dev->f_adc;
681 bandwidth_auto = v4l2_ctrl_find(&dev->hdl,
684 bandwidth = v4l2_ctrl_find(&dev->hdl,
686 v4l2_ctrl_s_ctrl(bandwidth, dev->f_adc);
690 switch (dev->pixelformat) {
775 dev_dbg(dev->dev, "div_out=%u f_vco=%u\n", div_out, f_vco);
789 dev_dbg(dev->dev,
793 ret = msi2500_ctrl_msg(dev, CMD_WREG, 0x00608008);
797 ret = msi2500_ctrl_msg(dev, CMD_WREG, 0x00000c05);
801 ret = msi2500_ctrl_msg(dev, CMD_WREG, 0x00020000);
805 ret = msi2500_ctrl_msg(dev, CMD_WREG, 0x00480102);
809 ret = msi2500_ctrl_msg(dev, CMD_WREG, 0x00f38008);
813 ret = msi2500_ctrl_msg(dev, CMD_WREG, reg7);
817 ret = msi2500_ctrl_msg(dev, CMD_WREG, reg4);
821 ret = msi2500_ctrl_msg(dev, CMD_WREG, reg3);
828 struct msi2500_dev *dev = vb2_get_drv_priv(vq);
831 dev_dbg(dev->dev, "\n");
833 if (!dev->udev)
836 if (mutex_lock_interruptible(&dev->v4l2_lock))
840 v4l2_subdev_call(dev->v4l2_subdev, core, s_power, 1);
842 ret = msi2500_set_usb_adc(dev);
844 ret = msi2500_isoc_init(dev);
846 msi2500_cleanup_queued_bufs(dev);
848 ret = msi2500_ctrl_msg(dev, CMD_START_STREAMING, 0);
850 mutex_unlock(&dev->v4l2_lock);
857 struct msi2500_dev *dev = vb2_get_drv_priv(vq);
859 dev_dbg(dev->dev, "\n");
861 mutex_lock(&dev->v4l2_lock);
863 if (dev->udev)
864 msi2500_isoc_cleanup(dev);
866 msi2500_cleanup_queued_bufs(dev);
870 if (dev->udev && !msi2500_ctrl_msg(dev, CMD_STOP_STREAMING, 0)) {
872 msi2500_ctrl_msg(dev, CMD_WREG, 0x01000003);
876 v4l2_subdev_call(dev->v4l2_subdev, core, s_power, 0);
878 mutex_unlock(&dev->v4l2_lock);
893 struct msi2500_dev *dev = video_drvdata(file);
895 dev_dbg(dev->dev, "index=%d\n", f->index);
897 if (f->index >= dev->num_formats)
908 struct msi2500_dev *dev = video_drvdata(file);
910 dev_dbg(dev->dev, "pixelformat fourcc %4.4s\n",
911 (char *)&dev->pixelformat);
913 f->fmt.sdr.pixelformat = dev->pixelformat;
914 f->fmt.sdr.buffersize = dev->buffersize;
922 struct msi2500_dev *dev = video_drvdata(file);
923 struct vb2_queue *q = &dev->vb_queue;
926 dev_dbg(dev->dev, "pixelformat fourcc %4.4s\n",
932 for (i = 0; i < dev->num_formats; i++) {
934 dev->pixelformat = formats[i].pixelformat;
935 dev->buffersize = formats[i].buffersize;
941 dev->pixelformat = formats[0].pixelformat;
942 dev->buffersize = formats[0].buffersize;
952 struct msi2500_dev *dev = video_drvdata(file);
955 dev_dbg(dev->dev, "pixelformat fourcc %4.4s\n",
958 for (i = 0; i < dev->num_formats; i++) {
974 struct msi2500_dev *dev = video_drvdata(file);
977 dev_dbg(dev->dev, "index=%d\n", v->index);
982 ret = v4l2_subdev_call(dev->v4l2_subdev, tuner, s_tuner, v);
991 struct msi2500_dev *dev = video_drvdata(file);
994 dev_dbg(dev->dev, "index=%d\n", v->index);
1004 ret = v4l2_subdev_call(dev->v4l2_subdev, tuner, g_tuner, v);
1015 struct msi2500_dev *dev = video_drvdata(file);
1018 dev_dbg(dev->dev, "tuner=%d type=%d\n", f->tuner, f->type);
1021 f->frequency = dev->f_adc;
1025 ret = v4l2_subdev_call(dev->v4l2_subdev, tuner, g_frequency, f);
1036 struct msi2500_dev *dev = video_drvdata(file);
1039 dev_dbg(dev->dev, "tuner=%d type=%d frequency=%u\n",
1043 dev->f_adc = clamp_t(unsigned int, f->frequency,
1046 dev_dbg(dev->dev, "ADC frequency=%u Hz\n", dev->f_adc);
1047 ret = msi2500_set_usb_adc(dev);
1049 ret = v4l2_subdev_call(dev->v4l2_subdev, tuner, s_frequency, f);
1060 struct msi2500_dev *dev = video_drvdata(file);
1063 dev_dbg(dev->dev, "tuner=%d type=%d index=%d\n",
1074 ret = v4l2_subdev_call(dev->v4l2_subdev, tuner,
1132 struct msi2500_dev *dev = container_of(v, struct msi2500_dev, v4l2_dev);
1134 v4l2_ctrl_handler_free(&dev->hdl);
1135 v4l2_device_unregister(&dev->v4l2_dev);
1136 kfree(dev);
1142 struct msi2500_dev *dev = spi_master_get_devdata(master);
1148 dev_dbg(dev->dev, "msg=%*ph\n", t->len, t->tx_buf);
1153 ret = msi2500_ctrl_msg(dev, CMD_WREG, data);
1164 struct msi2500_dev *dev;
1175 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1176 if (!dev) {
1181 mutex_init(&dev->v4l2_lock);
1182 mutex_init(&dev->vb_queue_lock);
1183 spin_lock_init(&dev->queued_bufs_lock);
1184 INIT_LIST_HEAD(&dev->queued_bufs);
1185 dev->dev = &intf->dev;
1186 dev->udev = interface_to_usbdev(intf);
1187 dev->f_adc = bands[0].rangelow;
1188 dev->pixelformat = formats[0].pixelformat;
1189 dev->buffersize = formats[0].buffersize;
1190 dev->num_formats = NUM_FORMATS;
1192 dev->num_formats -= 2;
1195 dev->vb_queue.type = V4L2_BUF_TYPE_SDR_CAPTURE;
1196 dev->vb_queue.io_modes = VB2_MMAP | VB2_USERPTR | VB2_READ;
1197 dev->vb_queue.drv_priv = dev;
1198 dev->vb_queue.buf_struct_size = sizeof(struct msi2500_frame_buf);
1199 dev->vb_queue.ops = &msi2500_vb2_ops;
1200 dev->vb_queue.mem_ops = &vb2_vmalloc_memops;
1201 dev->vb_queue.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
1202 ret = vb2_queue_init(&dev->vb_queue);
1204 dev_err(dev->dev, "Could not initialize vb2 queue\n");
1209 dev->vdev = msi2500_template;
1210 dev->vdev.queue = &dev->vb_queue;
1211 dev->vdev.queue->lock = &dev->vb_queue_lock;
1212 video_set_drvdata(&dev->vdev, dev);
1215 dev->v4l2_dev.release = msi2500_video_release;
1216 ret = v4l2_device_register(&intf->dev, &dev->v4l2_dev);
1218 dev_err(dev->dev, "Failed to register v4l2-device (%d)\n", ret);
1223 master = spi_alloc_master(dev->dev, 0);
1229 dev->master = master;
1233 spi_master_set_devdata(master, dev);
1241 sd = v4l2_spi_new_subdev(&dev->v4l2_dev, master, &board_info);
1242 dev->v4l2_subdev = sd;
1244 dev_err(dev->dev, "cannot get v4l2 subdevice\n");
1250 v4l2_ctrl_handler_init(&dev->hdl, 0);
1251 if (dev->hdl.error) {
1252 ret = dev->hdl.error;
1253 dev_err(dev->dev, "Could not initialize controls\n");
1258 v4l2_ctrl_add_handler(&dev->hdl, sd->ctrl_handler, NULL, true);
1260 dev->v4l2_dev.ctrl_handler = &dev->hdl;
1261 dev->vdev.v4l2_dev = &dev->v4l2_dev;
1262 dev->vdev.lock = &dev->v4l2_lock;
1263 dev->vdev.device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
1266 ret = video_register_device(&dev->vdev, VFL_TYPE_SDR, -1);
1268 dev_err(dev->dev,
1272 dev_info(dev->dev, "Registered as %s\n",
1273 video_device_node_name(&dev->vdev));
1274 dev_notice(dev->dev,
1278 v4l2_ctrl_handler_free(&dev->hdl);
1280 spi_unregister_master(dev->master);
1282 v4l2_device_unregister(&dev->v4l2_dev);
1284 kfree(dev);