Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ae09e87 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman
Browse files

staging: octeon-usb: cvmx_usb_submit_control: get params from urb



Get the transfer parameters from urb.

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9ccca707
Loading
Loading
Loading
Loading
+6 −27
Original line number Diff line number Diff line
@@ -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,9 +3453,6 @@ 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);
		break;
	case PIPE_BULK: