sur40 238 drivers/input/touchscreen/sur40.c static void sur40_process_video(struct sur40_state *sur40); sur40 390 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = polldev->private; sur40 392 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "open\n"); sur40 393 drivers/input/touchscreen/sur40.c sur40_init(sur40); sur40 399 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = polldev->private; sur40 401 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "close\n"); sur40 453 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = polldev->private; sur40 458 drivers/input/touchscreen/sur40.c struct sur40_header *header = &sur40->bulk_in_buffer->header; sur40 459 drivers/input/touchscreen/sur40.c struct sur40_blob *inblob = &sur40->bulk_in_buffer->blobs[0]; sur40 461 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "poll\n"); sur40 468 drivers/input/touchscreen/sur40.c result = usb_bulk_msg(sur40->usbdev, sur40 469 drivers/input/touchscreen/sur40.c usb_rcvbulkpipe(sur40->usbdev, sur40->bulk_in_epaddr), sur40 470 drivers/input/touchscreen/sur40.c sur40->bulk_in_buffer, sur40->bulk_in_size, sur40 473 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "received %d bytes\n", bulk_read); sur40 476 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "error in usb_bulk_read\n"); sur40 483 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "transfer size mismatch\n"); sur40 490 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "need %d blobs\n", need_blobs); sur40 506 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "received %d blobs\n", packet_blobs); sur40 514 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "processing blob\n"); sur40 523 drivers/input/touchscreen/sur40.c sur40_process_video(sur40); sur40 527 drivers/input/touchscreen/sur40.c static void sur40_process_video(struct sur40_state *sur40) sur40 530 drivers/input/touchscreen/sur40.c struct sur40_image_header *img = (void *)(sur40->bulk_in_buffer); sur40 536 drivers/input/touchscreen/sur40.c if (!vb2_start_streaming_called(&sur40->queue)) sur40 540 drivers/input/touchscreen/sur40.c spin_lock(&sur40->qlock); sur40 541 drivers/input/touchscreen/sur40.c if (list_empty(&sur40->buf_list)) { sur40 542 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "buffer queue empty\n"); sur40 543 drivers/input/touchscreen/sur40.c spin_unlock(&sur40->qlock); sur40 546 drivers/input/touchscreen/sur40.c new_buf = list_entry(sur40->buf_list.next, struct sur40_buffer, list); sur40 548 drivers/input/touchscreen/sur40.c spin_unlock(&sur40->qlock); sur40 550 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "buffer acquired\n"); sur40 553 drivers/input/touchscreen/sur40.c result = usb_bulk_msg(sur40->usbdev, sur40 554 drivers/input/touchscreen/sur40.c usb_rcvbulkpipe(sur40->usbdev, VIDEO_ENDPOINT), sur40 555 drivers/input/touchscreen/sur40.c sur40->bulk_in_buffer, sur40->bulk_in_size, sur40 559 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "error in usb_bulk_read\n"); sur40 564 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "received %d bytes (%zd expected)\n", sur40 570 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "image magic mismatch\n"); sur40 574 drivers/input/touchscreen/sur40.c if (le32_to_cpu(img->size) != sur40->pix_fmt.sizeimage) { sur40 575 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "image size mismatch\n"); sur40 579 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "header acquired\n"); sur40 583 drivers/input/touchscreen/sur40.c result = usb_sg_init(&sgr, sur40->usbdev, sur40 584 drivers/input/touchscreen/sur40.c usb_rcvbulkpipe(sur40->usbdev, VIDEO_ENDPOINT), 0, sur40 585 drivers/input/touchscreen/sur40.c sgt->sgl, sgt->nents, sur40->pix_fmt.sizeimage, 0); sur40 587 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "error %d in usb_sg_init\n", result); sur40 593 drivers/input/touchscreen/sur40.c dev_err(sur40->dev, "error %d in usb_sg_wait\n", sgr.status); sur40 597 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "image acquired\n"); sur40 600 drivers/input/touchscreen/sur40.c if (sur40->sequence == -1) sur40 605 drivers/input/touchscreen/sur40.c new_buf->vb.sequence = sur40->sequence++; sur40 608 drivers/input/touchscreen/sur40.c dev_dbg(sur40->dev, "buffer marked done\n"); sur40 649 drivers/input/touchscreen/sur40.c struct sur40_state *sur40; sur40 669 drivers/input/touchscreen/sur40.c sur40 = kzalloc(sizeof(struct sur40_state), GFP_KERNEL); sur40 670 drivers/input/touchscreen/sur40.c if (!sur40) sur40 680 drivers/input/touchscreen/sur40.c INIT_LIST_HEAD(&sur40->buf_list); sur40 681 drivers/input/touchscreen/sur40.c spin_lock_init(&sur40->qlock); sur40 682 drivers/input/touchscreen/sur40.c mutex_init(&sur40->lock); sur40 685 drivers/input/touchscreen/sur40.c poll_dev->private = sur40; sur40 696 drivers/input/touchscreen/sur40.c usb_make_path(usbdev, sur40->phys, sizeof(sur40->phys)); sur40 697 drivers/input/touchscreen/sur40.c strlcat(sur40->phys, "/input0", sizeof(sur40->phys)); sur40 698 drivers/input/touchscreen/sur40.c poll_dev->input->phys = sur40->phys; sur40 701 drivers/input/touchscreen/sur40.c sur40->usbdev = usbdev; sur40 702 drivers/input/touchscreen/sur40.c sur40->dev = &interface->dev; sur40 703 drivers/input/touchscreen/sur40.c sur40->input = poll_dev; sur40 706 drivers/input/touchscreen/sur40.c sur40->bulk_in_size = usb_endpoint_maxp(endpoint); sur40 707 drivers/input/touchscreen/sur40.c sur40->bulk_in_epaddr = endpoint->bEndpointAddress; sur40 708 drivers/input/touchscreen/sur40.c sur40->bulk_in_buffer = kmalloc(sur40->bulk_in_size, GFP_KERNEL); sur40 709 drivers/input/touchscreen/sur40.c if (!sur40->bulk_in_buffer) { sur40 724 drivers/input/touchscreen/sur40.c snprintf(sur40->v4l2.name, sizeof(sur40->v4l2.name), "%s", DRIVER_LONG); sur40 725 drivers/input/touchscreen/sur40.c error = v4l2_device_register(sur40->dev, &sur40->v4l2); sur40 733 drivers/input/touchscreen/sur40.c sur40->queue = sur40_queue; sur40 734 drivers/input/touchscreen/sur40.c sur40->queue.drv_priv = sur40; sur40 735 drivers/input/touchscreen/sur40.c sur40->queue.lock = &sur40->lock; sur40 736 drivers/input/touchscreen/sur40.c sur40->queue.dev = sur40->dev; sur40 739 drivers/input/touchscreen/sur40.c error = vb2_queue_init(&sur40->queue); sur40 743 drivers/input/touchscreen/sur40.c sur40->pix_fmt = sur40_pix_format[0]; sur40 744 drivers/input/touchscreen/sur40.c sur40->vdev = sur40_video_device; sur40 745 drivers/input/touchscreen/sur40.c sur40->vdev.v4l2_dev = &sur40->v4l2; sur40 746 drivers/input/touchscreen/sur40.c sur40->vdev.lock = &sur40->lock; sur40 747 drivers/input/touchscreen/sur40.c sur40->vdev.queue = &sur40->queue; sur40 748 drivers/input/touchscreen/sur40.c video_set_drvdata(&sur40->vdev, sur40); sur40 751 drivers/input/touchscreen/sur40.c v4l2_ctrl_handler_init(&sur40->hdl, 4); sur40 752 drivers/input/touchscreen/sur40.c sur40->v4l2.ctrl_handler = &sur40->hdl; sur40 753 drivers/input/touchscreen/sur40.c sur40->vsvideo = (SUR40_CONTRAST_DEF << 4) | SUR40_GAIN_DEF; sur40 755 drivers/input/touchscreen/sur40.c v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_BRIGHTNESS, sur40 759 drivers/input/touchscreen/sur40.c v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_CONTRAST, sur40 763 drivers/input/touchscreen/sur40.c v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, V4L2_CID_GAIN, sur40 767 drivers/input/touchscreen/sur40.c v4l2_ctrl_new_std(&sur40->hdl, &sur40_ctrl_ops, sur40 771 drivers/input/touchscreen/sur40.c v4l2_ctrl_handler_setup(&sur40->hdl); sur40 773 drivers/input/touchscreen/sur40.c if (sur40->hdl.error) { sur40 776 drivers/input/touchscreen/sur40.c v4l2_ctrl_handler_free(&sur40->hdl); sur40 780 drivers/input/touchscreen/sur40.c error = video_register_device(&sur40->vdev, VFL_TYPE_TOUCH, -1); sur40 788 drivers/input/touchscreen/sur40.c usb_set_intfdata(interface, sur40); sur40 794 drivers/input/touchscreen/sur40.c video_unregister_device(&sur40->vdev); sur40 796 drivers/input/touchscreen/sur40.c v4l2_device_unregister(&sur40->v4l2); sur40 798 drivers/input/touchscreen/sur40.c kfree(sur40->bulk_in_buffer); sur40 800 drivers/input/touchscreen/sur40.c input_free_polled_device(sur40->input); sur40 802 drivers/input/touchscreen/sur40.c kfree(sur40); sur40 810 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = usb_get_intfdata(interface); sur40 812 drivers/input/touchscreen/sur40.c v4l2_ctrl_handler_free(&sur40->hdl); sur40 813 drivers/input/touchscreen/sur40.c video_unregister_device(&sur40->vdev); sur40 814 drivers/input/touchscreen/sur40.c v4l2_device_unregister(&sur40->v4l2); sur40 816 drivers/input/touchscreen/sur40.c input_unregister_polled_device(sur40->input); sur40 817 drivers/input/touchscreen/sur40.c input_free_polled_device(sur40->input); sur40 818 drivers/input/touchscreen/sur40.c kfree(sur40->bulk_in_buffer); sur40 819 drivers/input/touchscreen/sur40.c kfree(sur40); sur40 836 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = vb2_get_drv_priv(q); sur40 842 drivers/input/touchscreen/sur40.c return sizes[0] < sur40->pix_fmt.sizeimage ? -EINVAL : 0; sur40 845 drivers/input/touchscreen/sur40.c sizes[0] = sur40->pix_fmt.sizeimage; sur40 856 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = vb2_get_drv_priv(vb->vb2_queue); sur40 857 drivers/input/touchscreen/sur40.c unsigned long size = sur40->pix_fmt.sizeimage; sur40 860 drivers/input/touchscreen/sur40.c dev_err(&sur40->usbdev->dev, "buffer too small (%lu < %lu)\n", sur40 874 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = vb2_get_drv_priv(vb->vb2_queue); sur40 877 drivers/input/touchscreen/sur40.c spin_lock(&sur40->qlock); sur40 878 drivers/input/touchscreen/sur40.c list_add_tail(&buf->list, &sur40->buf_list); sur40 879 drivers/input/touchscreen/sur40.c spin_unlock(&sur40->qlock); sur40 882 drivers/input/touchscreen/sur40.c static void return_all_buffers(struct sur40_state *sur40, sur40 887 drivers/input/touchscreen/sur40.c spin_lock(&sur40->qlock); sur40 888 drivers/input/touchscreen/sur40.c list_for_each_entry_safe(buf, node, &sur40->buf_list, list) { sur40 892 drivers/input/touchscreen/sur40.c spin_unlock(&sur40->qlock); sur40 903 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = vb2_get_drv_priv(vq); sur40 905 drivers/input/touchscreen/sur40.c sur40->sequence = 0; sur40 915 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = vb2_get_drv_priv(vq); sur40 917 drivers/input/touchscreen/sur40.c sur40->sequence = -1; sur40 920 drivers/input/touchscreen/sur40.c return_all_buffers(sur40, VB2_BUF_STATE_ERROR); sur40 927 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = video_drvdata(file); sur40 931 drivers/input/touchscreen/sur40.c usb_make_path(sur40->usbdev, cap->bus_info, sizeof(cap->bus_info)); sur40 977 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = video_drvdata(file); sur40 981 drivers/input/touchscreen/sur40.c sur40->pix_fmt = sur40_pix_format[1]; sur40 985 drivers/input/touchscreen/sur40.c sur40->pix_fmt = sur40_pix_format[0]; sur40 989 drivers/input/touchscreen/sur40.c f->fmt.pix = sur40->pix_fmt; sur40 996 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = video_drvdata(file); sur40 998 drivers/input/touchscreen/sur40.c f->fmt.pix = sur40->pix_fmt; sur40 1004 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = container_of(ctrl->handler, sur40 1006 drivers/input/touchscreen/sur40.c u8 value = sur40->vsvideo; sur40 1010 drivers/input/touchscreen/sur40.c sur40_set_irlevel(sur40, ctrl->val); sur40 1014 drivers/input/touchscreen/sur40.c sur40_set_vsvideo(sur40, value); sur40 1018 drivers/input/touchscreen/sur40.c sur40_set_vsvideo(sur40, value); sur40 1021 drivers/input/touchscreen/sur40.c sur40_set_preprocessor(sur40, ctrl->val); sur40 1054 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = video_drvdata(file); sur40 1061 drivers/input/touchscreen/sur40.c f->discrete.width = sur40->pix_fmt.width; sur40 1062 drivers/input/touchscreen/sur40.c f->discrete.height = sur40->pix_fmt.height; sur40 1069 drivers/input/touchscreen/sur40.c struct sur40_state *sur40 = video_drvdata(file); sur40 1073 drivers/input/touchscreen/sur40.c || (f->width != sur40->pix_fmt.width) sur40 1074 drivers/input/touchscreen/sur40.c || (f->height != sur40->pix_fmt.height))