adutux.c (8ff546b801e5cca0337c0f0a7234795d0a6309a1) adutux.c (5b5e0928f742cfa853b2411400a1b19fa379d758)
1/*
2 * adutux - driver for ADU devices from Ontrak Control Systems
3 * This is an experimental driver. Use at your own risk.
4 * This driver is not supported by Ontrak Control Systems.
5 *
6 * Copyright (c) 2003 John Homppi (SCO, leave this notice here)
7 *
8 * This program is free software; you can redistribute it and/or

--- 549 unchanged lines hidden (view full) ---

558 remove_wait_queue(&dev->write_wait, &waita);
559 retval = mutex_lock_interruptible(&dev->mtx);
560 if (retval) {
561 retval = bytes_written ? bytes_written : retval;
562 goto exit_nolock;
563 }
564
565 dev_dbg(&dev->udev->dev,
1/*
2 * adutux - driver for ADU devices from Ontrak Control Systems
3 * This is an experimental driver. Use at your own risk.
4 * This driver is not supported by Ontrak Control Systems.
5 *
6 * Copyright (c) 2003 John Homppi (SCO, leave this notice here)
7 *
8 * This program is free software; you can redistribute it and/or

--- 549 unchanged lines hidden (view full) ---

558 remove_wait_queue(&dev->write_wait, &waita);
559 retval = mutex_lock_interruptible(&dev->mtx);
560 if (retval) {
561 retval = bytes_written ? bytes_written : retval;
562 goto exit_nolock;
563 }
564
565 dev_dbg(&dev->udev->dev,
566 "%s : in progress, count = %Zd\n",
566 "%s : in progress, count = %zd\n",
567 __func__, count);
568 } else {
569 spin_unlock_irqrestore(&dev->buflock, flags);
570 set_current_state(TASK_RUNNING);
571 remove_wait_queue(&dev->write_wait, &waita);
567 __func__, count);
568 } else {
569 spin_unlock_irqrestore(&dev->buflock, flags);
570 set_current_state(TASK_RUNNING);
571 remove_wait_queue(&dev->write_wait, &waita);
572 dev_dbg(&dev->udev->dev, "%s : sending, count = %Zd\n",
572 dev_dbg(&dev->udev->dev, "%s : sending, count = %zd\n",
573 __func__, count);
574
575 /* write the data into interrupt_out_buffer from userspace */
576 buffer_size = usb_endpoint_maxp(dev->interrupt_out_endpoint);
577 bytes_to_write = count > buffer_size ? buffer_size : count;
578 dev_dbg(&dev->udev->dev,
573 __func__, count);
574
575 /* write the data into interrupt_out_buffer from userspace */
576 buffer_size = usb_endpoint_maxp(dev->interrupt_out_endpoint);
577 bytes_to_write = count > buffer_size ? buffer_size : count;
578 dev_dbg(&dev->udev->dev,
579 "%s : buffer_size = %Zd, count = %Zd, bytes_to_write = %Zd\n",
579 "%s : buffer_size = %zd, count = %zd, bytes_to_write = %zd\n",
580 __func__, buffer_size, count, bytes_to_write);
581
582 if (copy_from_user(dev->interrupt_out_buffer, buffer, bytes_to_write) != 0) {
583 retval = -EFAULT;
584 goto exit;
585 }
586
587 /* send off the urb */

--- 233 unchanged lines hidden ---
580 __func__, buffer_size, count, bytes_to_write);
581
582 if (copy_from_user(dev->interrupt_out_buffer, buffer, bytes_to_write) != 0) {
583 retval = -EFAULT;
584 goto exit;
585 }
586
587 /* send off the urb */

--- 233 unchanged lines hidden ---