usb: ohci: Add an ohci_alloc_urb() function
authorHans de Goede <hdegoede@redhat.com>
Wed, 13 May 2015 12:42:16 +0000 (14:42 +0200)
committerSimon Glass <sjg@chromium.org>
Fri, 15 May 2015 00:49:35 +0000 (18:49 -0600)
Add an ohci_alloc_urb() function, this is a preparation patch for adding
interrupt queue support.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Marek Vasut <marex@denx.de>
drivers/usb/host/ohci-hcd.c

index 5364ced6b66219e8737c87ffebe5255aa350f8eb..17f3ac66be21bf252e371f73cce1bb0aff7db2e7 100644 (file)
@@ -1505,6 +1505,26 @@ static ohci_dev_t *ohci_get_ohci_dev(ohci_t *ohci, int devnum, int intr)
 
 /* common code for handling submit messages - used for all but root hub */
 /* accesses. */
+static urb_priv_t *ohci_alloc_urb(struct usb_device *dev, unsigned long pipe,
+               void *buffer, int transfer_len, int interval)
+{
+       urb_priv_t *urb;
+
+       urb = calloc(1, sizeof(urb_priv_t));
+       if (!urb) {
+               printf("ohci: Error out of memory allocating urb\n");
+               return NULL;
+       }
+
+       urb->dev = dev;
+       urb->pipe = pipe;
+       urb->transfer_buffer = buffer;
+       urb->transfer_buffer_length = transfer_len;
+       urb->interval = interval;
+
+       return urb;
+}
+
 static int submit_common_msg(ohci_t *ohci, struct usb_device *dev,
                unsigned long pipe, void *buffer, int transfer_len,
                struct devrequest *setup, int interval)
@@ -1515,14 +1535,9 @@ static int submit_common_msg(ohci_t *ohci, struct usb_device *dev,
        urb_priv_t *urb;
        ohci_dev_t *ohci_dev;
 
-       urb = malloc(sizeof(urb_priv_t));
-       memset(urb, 0, sizeof(urb_priv_t));
-
-       urb->dev = dev;
-       urb->pipe = pipe;
-       urb->transfer_buffer = buffer;
-       urb->transfer_buffer_length = transfer_len;
-       urb->interval = interval;
+       urb = ohci_alloc_urb(dev, pipe, buffer, transfer_len, interval);
+       if (!urb)
+               return -ENOMEM;
 
 #ifdef DEBUG
        urb->actual_length = 0;