aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/octeon-usb
diff options
context:
space:
mode:
authorAaro Koskinen <aaro.koskinen@iki.fi>2013-10-06 19:22:31 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-10-07 05:02:21 (GMT)
commit2ae09e872197f5f5ce3976c4c2c98bd7352746d0 (patch)
tree1476a26a0248e3bccb949216abc3c2735e5a5ff1 /drivers/staging/octeon-usb
parent9ccca707183f2b425842db6624dd7ba6c7484762 (diff)
staging: octeon-usb: cvmx_usb_submit_control: get params from urb
Get the transfer parameters from urb. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/octeon-usb')
-rw-r--r--drivers/staging/octeon-usb/octeon-hcd.c33
1 files changed, 6 insertions, 27 deletions
diff --git a/drivers/staging/octeon-usb/octeon-hcd.c b/drivers/staging/octeon-usb/octeon-hcd.c
index 25550393..27f73db 100644
--- a/drivers/staging/octeon-usb/octeon-hcd.c
+++ b/drivers/staging/octeon-usb/octeon-hcd.c
@@ -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",

Privacy Policy