Lines Matching defs:sur40

105 #define DRIVER_SHORT   "sur40"
238 static void sur40_process_video(struct sur40_state *sur40);
394 struct sur40_state *sur40 = input_get_drvdata(input);
396 dev_dbg(sur40->dev, "open\n");
397 return sur40_init(sur40);
403 struct sur40_state *sur40 = input_get_drvdata(input);
405 dev_dbg(sur40->dev, "close\n");
457 struct sur40_state *sur40 = input_get_drvdata(input);
459 struct sur40_header *header = &sur40->bulk_in_buffer->header;
460 struct sur40_blob *inblob = &sur40->bulk_in_buffer->blobs[0];
462 dev_dbg(sur40->dev, "poll\n");
469 result = usb_bulk_msg(sur40->usbdev,
470 usb_rcvbulkpipe(sur40->usbdev, sur40->bulk_in_epaddr),
471 sur40->bulk_in_buffer, sur40->bulk_in_size,
474 dev_dbg(sur40->dev, "received %d bytes\n", bulk_read);
477 dev_err(sur40->dev, "error in usb_bulk_read\n");
484 dev_err(sur40->dev, "transfer size mismatch\n");
491 dev_dbg(sur40->dev, "need %d blobs\n", need_blobs);
503 dev_dbg(sur40->dev, "packet ID mismatch\n");
507 dev_dbg(sur40->dev, "received %d blobs\n", packet_blobs);
515 dev_dbg(sur40->dev, "processing blob\n");
524 sur40_process_video(sur40);
528 static void sur40_process_video(struct sur40_state *sur40)
531 struct sur40_image_header *img = (void *)(sur40->bulk_in_buffer);
537 if (!vb2_start_streaming_called(&sur40->queue))
541 spin_lock(&sur40->qlock);
542 if (list_empty(&sur40->buf_list)) {
543 dev_dbg(sur40->dev, "buffer queue empty\n");
544 spin_unlock(&sur40->qlock);
547 new_buf = list_entry(sur40->buf_list.next, struct sur40_buffer, list);
549 spin_unlock(&sur40->qlock);
551 dev_dbg(sur40->dev, "buffer acquired\n");
554 result = usb_bulk_msg(sur40->usbdev,
555 usb_rcvbulkpipe(sur40->usbdev, VIDEO_ENDPOINT),
556 sur40->bulk_in_buffer, sur40->bulk_in_size,
560 dev_err(sur40->dev, "error in usb_bulk_read\n");
565 dev_err(sur40->dev, "received %d bytes (%zd expected)\n",
571 dev_err(sur40->dev, "image magic mismatch\n");
575 if (le32_to_cpu(img->size) != sur40->pix_fmt.sizeimage) {
576 dev_err(sur40->dev, "image size mismatch\n");
580 dev_dbg(sur40->dev, "header acquired\n");
584 result = usb_sg_init(&sgr, sur40->usbdev,
585 usb_rcvbulkpipe(sur40->usbdev, VIDEO_ENDPOINT), 0,
586 sgt->sgl, sgt->nents, sur40->pix_fmt.sizeimage, 0);
588 dev_err(sur40->dev, "error %d in usb_sg_init\n", result);
594 dev_err(sur40->dev, "error %d in usb_sg_wait\n", sgr.status);
598 dev_dbg(sur40->dev, "image acquired\n");
601 if (sur40->sequence == -1)
606 new_buf->vb.sequence = sur40->sequence++;
609 dev_dbg(sur40->dev, "buffer marked done\n");
655 struct sur40_state *sur40;
675 sur40 = kzalloc(sizeof(struct sur40_state), GFP_KERNEL);
676 if (!sur40)
686 INIT_LIST_HEAD(&sur40->buf_list);
687 spin_lock_init(&sur40->qlock);
688 mutex_init(&sur40->lock);
693 usb_make_path(usbdev, sur40->phys, sizeof(sur40->phys));
694 strlcat(sur40->phys, "/input0", sizeof(sur40->phys));
695 input->phys = sur40->phys;
705 input_set_drvdata(input, sur40);
714 sur40->usbdev = usbdev;
715 sur40->dev = &interface->dev;
716 sur40->input = input;
719 sur40->bulk_in_size = usb_endpoint_maxp(endpoint);
720 sur40->bulk_in_epaddr = endpoint->bEndpointAddress;
721 sur40->bulk_in_buffer = kmalloc(sur40->bulk_in_size, GFP_KERNEL);
722 if (!sur40->bulk_in_buffer) {
737 snprintf(sur40->v4l2.name, sizeof(sur40->v4l2.name), "%s", DRIVER_LONG);
738 error = v4l2_device_register(sur40->dev, &sur40->v4l2);
746 sur40->queue = sur40_queue;
747 sur40->queue.drv_priv = sur40;
748 sur40->queue.lock = &sur40->lock;
749 sur40->queue.dev = sur40->dev;
752 error = vb2_queue_init(&sur40->queue);
756 sur40->pix_fmt = sur40_pix_format[0];
757 sur40->vdev = sur40_video_device;
758 sur40->vdev.v4l2_dev = &sur40->v4l2;
759 sur40->vdev.lock = &sur40->lock;
760 sur40->vdev.queue = &sur40->queue;
761 video_set_drvdata(&sur40->vdev, sur40);
764 v4l2_ctrl_handler_init(&sur40->hdl, 4);
765 sur40->v4l2.ctrl_handler = &sur40->hdl;
766 sur40->vsvideo = (SUR40_CONTRAST_DEF << 4) | SUR40_GAIN_DEF;
768 v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_BRIGHTNESS,
772 v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_CONTRAST,
776 v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_GAIN,
780 v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops,
784 v4l2_ctrl_handler_setup(&sur40->hdl);
786 if (sur40->hdl.error) {
789 v4l2_ctrl_handler_free(&sur40->hdl);
790 error = sur40->hdl.error;
794 error = video_register_device(&sur40->vdev, VFL_TYPE_TOUCH, -1);
802 usb_set_intfdata(interface, sur40);
808 video_unregister_device(&sur40->vdev);
810 v4l2_device_unregister(&sur40->v4l2);
812 kfree(sur40->bulk_in_buffer);
816 kfree(sur40);
824 struct sur40_state *sur40 = usb_get_intfdata(interface);
826 v4l2_ctrl_handler_free(&sur40->hdl);
827 video_unregister_device(&sur40->vdev);
828 v4l2_device_unregister(&sur40->v4l2);
830 input_unregister_device(sur40->input);
831 kfree(sur40->bulk_in_buffer);
832 kfree(sur40);
849 struct sur40_state *sur40 = vb2_get_drv_priv(q);
856 return sizes[0] < sur40->pix_fmt.sizeimage ? -EINVAL : 0;
859 sizes[0] = sur40->pix_fmt.sizeimage;
870 struct sur40_state *sur40 = vb2_get_drv_priv(vb->vb2_queue);
871 unsigned long size = sur40->pix_fmt.sizeimage;
874 dev_err(&sur40->usbdev->dev, "buffer too small (%lu < %lu)\n",
888 struct sur40_state *sur40 = vb2_get_drv_priv(vb->vb2_queue);
891 spin_lock(&sur40->qlock);
892 list_add_tail(&buf->list, &sur40->buf_list);
893 spin_unlock(&sur40->qlock);
896 static void return_all_buffers(struct sur40_state *sur40,
901 spin_lock(&sur40->qlock);
902 list_for_each_entry_safe(buf, node, &sur40->buf_list, list) {
906 spin_unlock(&sur40->qlock);
917 struct sur40_state *sur40 = vb2_get_drv_priv(vq);
919 sur40->sequence = 0;
929 struct sur40_state *sur40 = vb2_get_drv_priv(vq);
931 sur40->sequence = -1;
934 return_all_buffers(sur40, VB2_BUF_STATE_ERROR);
941 struct sur40_state *sur40 = video_drvdata(file);
945 usb_make_path(sur40->usbdev, cap->bus_info, sizeof(cap->bus_info));
991 struct sur40_state *sur40 = video_drvdata(file);
995 sur40->pix_fmt = sur40_pix_format[1];
999 sur40->pix_fmt = sur40_pix_format[0];
1003 f->fmt.pix = sur40->pix_fmt;
1010 struct sur40_state *sur40 = video_drvdata(file);
1012 f->fmt.pix = sur40->pix_fmt;
1018 struct sur40_state *sur40 = container_of(ctrl->handler,
1020 u8 value = sur40->vsvideo;
1024 sur40_set_irlevel(sur40, ctrl->val);
1028 sur40_set_vsvideo(sur40, value);
1032 sur40_set_vsvideo(sur40, value);
1035 sur40_set_preprocessor(sur40, ctrl->val);
1068 struct sur40_state *sur40 = video_drvdata(file);
1075 f->discrete.width = sur40->pix_fmt.width;
1076 f->discrete.height = sur40->pix_fmt.height;
1083 struct sur40_state *sur40 = video_drvdata(file);
1087 || (f->width != sur40->pix_fmt.width)
1088 || (f->height != sur40->pix_fmt.height))