staging: octeon-usb: cvmx_usb_submit_control: get params from urb
authorAaro Koskinen <aaro.koskinen@iki.fi>
Sun, 6 Oct 2013 19:22:31 +0000 (22:22 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Oct 2013 05:02:21 +0000 (22:02 -0700)
Get the transfer parameters from urb.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/octeon-usb/octeon-hcd.c

index 2555039..27f73db 100644 (file)
@@ -2474,45 +2474,27 @@ static int cvmx_usb_submit_interrupt(struct cvmx_usb_state *usb,
  * @usb:           USB device state populated by cvmx_usb_initialize().
  * @pipe_handle:
  *                 Handle to the pipe for the transfer.
- * @control_header:
- *                 USB 8 byte control header physical address.
- *                 Note that this is NOT A POINTER, but the
- *                 full 64bit physical address of the buffer.
- * @buffer:        Physical address of the data buffer in
- *                 memory. Note that this is NOT A POINTER, but
- *                 the full 64bit physical address of the
- *                 buffer. This may be zero if buffer_length is
- *                 zero.
- * @buffer_length:
- *                 Length of buffer in bytes.
- * @urb:           URB returned when the callback is called.
+ * @urb:           URB.
  *
  * Returns: A submitted transaction handle or negative on
  *         failure. Negative values are error codes.
  */
-static int cvmx_usb_submit_control(struct cvmx_usb_state *usb,
-                                  int pipe_handle, uint64_t control_header,
-                                  uint64_t buffer, int buffer_length,
+static int cvmx_usb_submit_control(struct cvmx_usb_state *usb, int pipe_handle,
                                   struct urb *urb)
 {
        int submit_handle;
+       int buffer_length = urb->transfer_buffer_length;
+       uint64_t control_header = urb->setup_dma;
        union cvmx_usb_control_header *header =
                cvmx_phys_to_ptr(control_header);
 
        /* Pipe handle checking is done later in a common place */
-       if (unlikely(!control_header))
-               return -EINVAL;
-       /* Some drivers send a buffer with a zero length. God only knows why */
-       if (unlikely(buffer && (buffer_length < 0)))
-               return -EINVAL;
-       if (unlikely(!buffer && (buffer_length != 0)))
-               return -EINVAL;
        if ((header->s.request_type & 0x80) == 0)
                buffer_length = le16_to_cpu(header->s.length);
 
        submit_handle = __cvmx_usb_submit_transaction(usb, pipe_handle,
                                                      CVMX_USB_TRANSFER_CONTROL,
-                                                     buffer,
+                                                     urb->transfer_dma,
                                                      buffer_length,
                                                      control_header,
                                                      0, /* iso_start_frame */
@@ -3471,10 +3453,7 @@ static int octeon_usb_urb_enqueue(struct usb_hcd *hcd,
                dev_dbg(dev, "Submit control to %d.%d\n",
                        usb_pipedevice(urb->pipe), usb_pipeendpoint(urb->pipe));
                submit_handle = cvmx_usb_submit_control(&priv->usb, pipe_handle,
-                                           urb->setup_dma,
-                                           urb->transfer_dma,
-                                           urb->transfer_buffer_length,
-                                           urb);
+                                                       urb);
                break;
        case PIPE_BULK:
                dev_dbg(dev, "Submit bulk to %d.%d\n",