mdc800 216 drivers/usb/image/mdc800.c static struct mdc800_data* mdc800; mdc800 273 drivers/usb/image/mdc800.c struct mdc800_data* mdc800=urb->context; mdc800 274 drivers/usb/image/mdc800.c struct device *dev = &mdc800->dev->dev; mdc800 280 drivers/usb/image/mdc800.c if (!mdc800->camera_busy) mdc800 282 drivers/usb/image/mdc800.c mdc800->camera_busy=1; mdc800 288 drivers/usb/image/mdc800.c if (mdc800->camera_busy && mdc800_isReady (b)) mdc800 290 drivers/usb/image/mdc800.c mdc800->camera_busy=0; mdc800 299 drivers/usb/image/mdc800.c memcpy (mdc800->camera_response,b,8); mdc800 303 drivers/usb/image/mdc800.c wake_up= ( mdc800->camera_request_ready > 0 ) mdc800 306 drivers/usb/image/mdc800.c ((mdc800->camera_request_ready == 1) && (!mdc800->camera_busy)) mdc800 308 drivers/usb/image/mdc800.c ((mdc800->camera_request_ready == 2) && data_received) mdc800 310 drivers/usb/image/mdc800.c ((mdc800->camera_request_ready == 3) && (mdc800->camera_busy)) mdc800 317 drivers/usb/image/mdc800.c mdc800->camera_request_ready=0; mdc800 318 drivers/usb/image/mdc800.c mdc800->irq_woken=1; mdc800 319 drivers/usb/image/mdc800.c wake_up (&mdc800->irq_wait); mdc800 335 drivers/usb/image/mdc800.c mdc800->camera_request_ready=1+mode; mdc800 337 drivers/usb/image/mdc800.c wait_event_timeout(mdc800->irq_wait, mdc800->irq_woken, mdc800 339 drivers/usb/image/mdc800.c mdc800->irq_woken = 0; mdc800 341 drivers/usb/image/mdc800.c if (mdc800->camera_request_ready>0) mdc800 343 drivers/usb/image/mdc800.c mdc800->camera_request_ready=0; mdc800 344 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, "timeout waiting for camera.\n"); mdc800 348 drivers/usb/image/mdc800.c if (mdc800->state == NOT_CONNECTED) mdc800 352 drivers/usb/image/mdc800.c mdc800->camera_request_ready=0; mdc800 365 drivers/usb/image/mdc800.c struct mdc800_data* mdc800=urb->context; mdc800 369 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 372 drivers/usb/image/mdc800.c mdc800->state=READY; mdc800 373 drivers/usb/image/mdc800.c mdc800->written = 1; mdc800 374 drivers/usb/image/mdc800.c wake_up (&mdc800->write_wait); mdc800 383 drivers/usb/image/mdc800.c struct mdc800_data* mdc800=urb->context; mdc800 388 drivers/usb/image/mdc800.c memcpy (mdc800->out, urb->transfer_buffer, 64); mdc800 389 drivers/usb/image/mdc800.c mdc800->out_count=64; mdc800 390 drivers/usb/image/mdc800.c mdc800->out_ptr=0; mdc800 391 drivers/usb/image/mdc800.c mdc800->download_left-=64; mdc800 392 drivers/usb/image/mdc800.c if (mdc800->download_left == 0) mdc800 394 drivers/usb/image/mdc800.c mdc800->state=READY; mdc800 397 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 400 drivers/usb/image/mdc800.c mdc800->downloaded = 1; mdc800 401 drivers/usb/image/mdc800.c wake_up (&mdc800->download_wait); mdc800 433 drivers/usb/image/mdc800.c if (mdc800->dev != NULL) mdc800 461 drivers/usb/image/mdc800.c mdc800->endpoint[i]=-1; mdc800 466 drivers/usb/image/mdc800.c mdc800->endpoint[i]=intf_desc->endpoint [j].desc.bEndpointAddress ; mdc800 473 drivers/usb/image/mdc800.c if (mdc800->endpoint[i] == -1) mdc800 483 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 488 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 492 drivers/usb/image/mdc800.c mdc800->dev=dev; mdc800 493 drivers/usb/image/mdc800.c mdc800->open=0; mdc800 497 drivers/usb/image/mdc800.c mdc800->irq_urb, mdc800 498 drivers/usb/image/mdc800.c mdc800->dev, mdc800 499 drivers/usb/image/mdc800.c usb_rcvintpipe (mdc800->dev,mdc800->endpoint [1]), mdc800 500 drivers/usb/image/mdc800.c mdc800->irq_urb_buffer, mdc800 503 drivers/usb/image/mdc800.c mdc800, mdc800 508 drivers/usb/image/mdc800.c mdc800->write_urb, mdc800 509 drivers/usb/image/mdc800.c mdc800->dev, mdc800 510 drivers/usb/image/mdc800.c usb_sndbulkpipe (mdc800->dev, mdc800->endpoint[0]), mdc800 511 drivers/usb/image/mdc800.c mdc800->write_urb_buffer, mdc800 514 drivers/usb/image/mdc800.c mdc800 mdc800 518 drivers/usb/image/mdc800.c mdc800->download_urb, mdc800 519 drivers/usb/image/mdc800.c mdc800->dev, mdc800 520 drivers/usb/image/mdc800.c usb_rcvbulkpipe (mdc800->dev, mdc800->endpoint [3]), mdc800 521 drivers/usb/image/mdc800.c mdc800->download_urb_buffer, mdc800 524 drivers/usb/image/mdc800.c mdc800 mdc800 527 drivers/usb/image/mdc800.c mdc800->state=READY; mdc800 529 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 531 drivers/usb/image/mdc800.c usb_set_intfdata(intf, mdc800); mdc800 541 drivers/usb/image/mdc800.c struct mdc800_data* mdc800 = usb_get_intfdata(intf); mdc800 545 drivers/usb/image/mdc800.c if (mdc800) { mdc800 546 drivers/usb/image/mdc800.c if (mdc800->state == NOT_CONNECTED) mdc800 553 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 554 drivers/usb/image/mdc800.c mdc800->state=NOT_CONNECTED; mdc800 556 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->irq_urb); mdc800 557 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->write_urb); mdc800 558 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->download_urb); mdc800 559 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 561 drivers/usb/image/mdc800.c mdc800->dev = NULL; mdc800 592 drivers/usb/image/mdc800.c return mdc800->pic_len; mdc800 611 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 613 drivers/usb/image/mdc800.c if (mdc800->state == NOT_CONNECTED) mdc800 618 drivers/usb/image/mdc800.c if (mdc800->open) mdc800 624 drivers/usb/image/mdc800.c mdc800->in_count=0; mdc800 625 drivers/usb/image/mdc800.c mdc800->out_count=0; mdc800 626 drivers/usb/image/mdc800.c mdc800->out_ptr=0; mdc800 627 drivers/usb/image/mdc800.c mdc800->pic_index=0; mdc800 628 drivers/usb/image/mdc800.c mdc800->pic_len=-1; mdc800 629 drivers/usb/image/mdc800.c mdc800->download_left=0; mdc800 631 drivers/usb/image/mdc800.c mdc800->camera_busy=0; mdc800 632 drivers/usb/image/mdc800.c mdc800->camera_request_ready=0; mdc800 635 drivers/usb/image/mdc800.c mdc800->irq_urb->dev = mdc800->dev; mdc800 636 drivers/usb/image/mdc800.c retval = usb_submit_urb (mdc800->irq_urb, GFP_KERNEL); mdc800 638 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 644 drivers/usb/image/mdc800.c mdc800->open=1; mdc800 645 drivers/usb/image/mdc800.c dev_dbg(&mdc800->dev->dev, "Mustek MDC800 device opened.\n"); mdc800 648 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 660 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 661 drivers/usb/image/mdc800.c if (mdc800->open && (mdc800->state != NOT_CONNECTED)) mdc800 663 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->irq_urb); mdc800 664 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->write_urb); mdc800 665 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->download_urb); mdc800 666 drivers/usb/image/mdc800.c mdc800->open=0; mdc800 673 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 687 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 688 drivers/usb/image/mdc800.c if (mdc800->state == NOT_CONNECTED) mdc800 690 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 693 drivers/usb/image/mdc800.c if (mdc800->state == WORKING) mdc800 697 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 700 drivers/usb/image/mdc800.c if (!mdc800->open) mdc800 702 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 710 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 714 drivers/usb/image/mdc800.c sts=left > (mdc800->out_count-mdc800->out_ptr)?mdc800->out_count-mdc800->out_ptr:left; mdc800 719 drivers/usb/image/mdc800.c if (mdc800->state == DOWNLOAD) mdc800 721 drivers/usb/image/mdc800.c mdc800->out_count=0; mdc800 722 drivers/usb/image/mdc800.c mdc800->out_ptr=0; mdc800 725 drivers/usb/image/mdc800.c mdc800->download_urb->dev = mdc800->dev; mdc800 726 drivers/usb/image/mdc800.c retval = usb_submit_urb (mdc800->download_urb, GFP_KERNEL); mdc800 728 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 731 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 734 drivers/usb/image/mdc800.c wait_event_timeout(mdc800->download_wait, mdc800 735 drivers/usb/image/mdc800.c mdc800->downloaded, mdc800 737 drivers/usb/image/mdc800.c mdc800->downloaded = 0; mdc800 738 drivers/usb/image/mdc800.c if (mdc800->download_urb->status != 0) mdc800 740 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 743 drivers/usb/image/mdc800.c mdc800->download_urb->status); mdc800 744 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 751 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 758 drivers/usb/image/mdc800.c if (copy_to_user(ptr, &mdc800->out [mdc800->out_ptr], mdc800 760 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 765 drivers/usb/image/mdc800.c mdc800->out_ptr+=sts; mdc800 769 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 785 drivers/usb/image/mdc800.c mutex_lock(&mdc800->io_lock); mdc800 786 drivers/usb/image/mdc800.c if (mdc800->state != READY) mdc800 788 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 791 drivers/usb/image/mdc800.c if (!mdc800->open ) mdc800 793 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 802 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 808 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 815 drivers/usb/image/mdc800.c mdc800->in_count=0; mdc800 816 drivers/usb/image/mdc800.c mdc800->out_count=0; mdc800 817 drivers/usb/image/mdc800.c mdc800->out_ptr=0; mdc800 818 drivers/usb/image/mdc800.c mdc800->download_left=0; mdc800 822 drivers/usb/image/mdc800.c if (mdc800->in_count < 8) mdc800 824 drivers/usb/image/mdc800.c mdc800->in[mdc800->in_count] = c; mdc800 825 drivers/usb/image/mdc800.c mdc800->in_count++; mdc800 829 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 834 drivers/usb/image/mdc800.c if (mdc800->in_count == 8) mdc800 840 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 842 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 846 drivers/usb/image/mdc800.c answersize=mdc800_getAnswerSize (mdc800->in[1]); mdc800 848 drivers/usb/image/mdc800.c mdc800->state=WORKING; mdc800 849 drivers/usb/image/mdc800.c memcpy (mdc800->write_urb->transfer_buffer, mdc800->in,8); mdc800 850 drivers/usb/image/mdc800.c mdc800->write_urb->dev = mdc800->dev; mdc800 851 drivers/usb/image/mdc800.c retval = usb_submit_urb (mdc800->write_urb, GFP_KERNEL); mdc800 853 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 856 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 859 drivers/usb/image/mdc800.c wait_event_timeout(mdc800->write_wait, mdc800->written, mdc800 861 drivers/usb/image/mdc800.c mdc800->written = 0; mdc800 862 drivers/usb/image/mdc800.c if (mdc800->state == WORKING) mdc800 864 drivers/usb/image/mdc800.c usb_kill_urb(mdc800->write_urb); mdc800 865 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 869 drivers/usb/image/mdc800.c switch ((unsigned char) mdc800->in[1]) mdc800 873 drivers/usb/image/mdc800.c if (mdc800->pic_len < 0) mdc800 875 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, mdc800 878 drivers/usb/image/mdc800.c mdc800->state=READY; mdc800 879 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 882 drivers/usb/image/mdc800.c mdc800->pic_len=-1; mdc800 886 drivers/usb/image/mdc800.c mdc800->download_left=answersize+64; mdc800 887 drivers/usb/image/mdc800.c mdc800->state=DOWNLOAD; mdc800 898 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, "requesting answer from irq fails\n"); mdc800 899 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 905 drivers/usb/image/mdc800.c memcpy (mdc800->out, mdc800->camera_response,8); mdc800 908 drivers/usb/image/mdc800.c memcpy (&mdc800->out[8], mdc800->camera_response,8); mdc800 910 drivers/usb/image/mdc800.c mdc800->out_ptr=0; mdc800 911 drivers/usb/image/mdc800.c mdc800->out_count=16; mdc800 914 drivers/usb/image/mdc800.c if (mdc800->in [1] == (char) 0x07) mdc800 916 drivers/usb/image/mdc800.c mdc800->pic_len=(int) 65536*(unsigned char) mdc800->camera_response[0]+256*(unsigned char) mdc800->camera_response[1]+(unsigned char) mdc800->camera_response[2]; mdc800 918 drivers/usb/image/mdc800.c dev_dbg(&mdc800->dev->dev, "cached imagesize = %i\n", mdc800->pic_len); mdc800 926 drivers/usb/image/mdc800.c dev_err(&mdc800->dev->dev, "Command Timeout.\n"); mdc800 927 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 931 drivers/usb/image/mdc800.c mdc800->state=READY; mdc800 937 drivers/usb/image/mdc800.c mutex_unlock(&mdc800->io_lock); mdc800 986 drivers/usb/image/mdc800.c mdc800=kzalloc (sizeof (struct mdc800_data), GFP_KERNEL); mdc800 987 drivers/usb/image/mdc800.c if (!mdc800) mdc800 990 drivers/usb/image/mdc800.c mdc800->dev = NULL; mdc800 991 drivers/usb/image/mdc800.c mdc800->state=NOT_CONNECTED; mdc800 992 drivers/usb/image/mdc800.c mutex_init (&mdc800->io_lock); mdc800 994 drivers/usb/image/mdc800.c init_waitqueue_head (&mdc800->irq_wait); mdc800 995 drivers/usb/image/mdc800.c init_waitqueue_head (&mdc800->write_wait); mdc800 996 drivers/usb/image/mdc800.c init_waitqueue_head (&mdc800->download_wait); mdc800 998 drivers/usb/image/mdc800.c mdc800->irq_woken = 0; mdc800 999 drivers/usb/image/mdc800.c mdc800->downloaded = 0; mdc800 1000 drivers/usb/image/mdc800.c mdc800->written = 0; mdc800 1002 drivers/usb/image/mdc800.c mdc800->irq_urb_buffer=kmalloc (8, GFP_KERNEL); mdc800 1003 drivers/usb/image/mdc800.c if (!mdc800->irq_urb_buffer) mdc800 1005 drivers/usb/image/mdc800.c mdc800->write_urb_buffer=kmalloc (8, GFP_KERNEL); mdc800 1006 drivers/usb/image/mdc800.c if (!mdc800->write_urb_buffer) mdc800 1008 drivers/usb/image/mdc800.c mdc800->download_urb_buffer=kmalloc (64, GFP_KERNEL); mdc800 1009 drivers/usb/image/mdc800.c if (!mdc800->download_urb_buffer) mdc800 1012 drivers/usb/image/mdc800.c mdc800->irq_urb=usb_alloc_urb (0, GFP_KERNEL); mdc800 1013 drivers/usb/image/mdc800.c if (!mdc800->irq_urb) mdc800 1015 drivers/usb/image/mdc800.c mdc800->download_urb=usb_alloc_urb (0, GFP_KERNEL); mdc800 1016 drivers/usb/image/mdc800.c if (!mdc800->download_urb) mdc800 1018 drivers/usb/image/mdc800.c mdc800->write_urb=usb_alloc_urb (0, GFP_KERNEL); mdc800 1019 drivers/usb/image/mdc800.c if (!mdc800->write_urb) mdc800 1036 drivers/usb/image/mdc800.c if (mdc800 != NULL) mdc800 1040 drivers/usb/image/mdc800.c kfree(mdc800->download_urb_buffer); mdc800 1041 drivers/usb/image/mdc800.c kfree(mdc800->write_urb_buffer); mdc800 1042 drivers/usb/image/mdc800.c kfree(mdc800->irq_urb_buffer); mdc800 1044 drivers/usb/image/mdc800.c usb_free_urb(mdc800->write_urb); mdc800 1045 drivers/usb/image/mdc800.c usb_free_urb(mdc800->download_urb); mdc800 1046 drivers/usb/image/mdc800.c usb_free_urb(mdc800->irq_urb); mdc800 1048 drivers/usb/image/mdc800.c kfree (mdc800); mdc800 1050 drivers/usb/image/mdc800.c mdc800 = NULL; mdc800 1059 drivers/usb/image/mdc800.c usb_free_urb (mdc800->irq_urb); mdc800 1060 drivers/usb/image/mdc800.c usb_free_urb (mdc800->download_urb); mdc800 1061 drivers/usb/image/mdc800.c usb_free_urb (mdc800->write_urb); mdc800 1063 drivers/usb/image/mdc800.c kfree (mdc800->irq_urb_buffer); mdc800 1064 drivers/usb/image/mdc800.c kfree (mdc800->write_urb_buffer); mdc800 1065 drivers/usb/image/mdc800.c kfree (mdc800->download_urb_buffer); mdc800 1067 drivers/usb/image/mdc800.c kfree (mdc800); mdc800 1068 drivers/usb/image/mdc800.c mdc800 = NULL;