summaryrefslogtreecommitdiff
path: root/common/usb.c
diff options
context:
space:
mode:
authorVivek Gautam <gautam.vivek@samsung.com>2013-04-12 16:34:34 +0530
committerMarek Vasut <marex@denx.de>2013-05-05 23:54:22 +0200
commit605bd75af565011aa46e6d80a32e2aa03aff8159 (patch)
tree1ca4e1cc010c7b6cdf53826cd3aff098e7205dad /common/usb.c
parentceb4972a8f4082019f2b36bd24a27b5dedaa4801 (diff)
USB: Some cleanup prior to USB 3.0 interface addition
Some cleanup in usb framework, nothing much on feature side. Signed-off-by: Vikas C Sajjan <vikas.sajjan@samsung.com> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Diffstat (limited to 'common/usb.c')
-rw-r--r--common/usb.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/common/usb.c b/common/usb.c
index 50fa466b4a5..8407974f773 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -348,6 +348,7 @@ static int usb_parse_config(struct usb_device *dev,
struct usb_descriptor_header *head;
int index, ifno, epno, curr_if_num;
u16 ep_wMaxPacketSize;
+ struct usb_interface *if_desc = NULL;
ifno = -1;
epno = -1;
@@ -375,23 +376,27 @@ static int usb_parse_config(struct usb_device *dev,
&buffer[index])->bInterfaceNumber != curr_if_num) {
/* this is a new interface, copy new desc */
ifno = dev->config.no_of_if;
+ if_desc = &dev->config.if_desc[ifno];
dev->config.no_of_if++;
- memcpy(&dev->config.if_desc[ifno],
- &buffer[index], buffer[index]);
- dev->config.if_desc[ifno].no_of_ep = 0;
- dev->config.if_desc[ifno].num_altsetting = 1;
+ memcpy(if_desc, &buffer[index], buffer[index]);
+ if_desc->no_of_ep = 0;
+ if_desc->num_altsetting = 1;
curr_if_num =
- dev->config.if_desc[ifno].desc.bInterfaceNumber;
+ if_desc->desc.bInterfaceNumber;
} else {
/* found alternate setting for the interface */
- dev->config.if_desc[ifno].num_altsetting++;
+ if (ifno >= 0) {
+ if_desc = &dev->config.if_desc[ifno];
+ if_desc->num_altsetting++;
+ }
}
break;
case USB_DT_ENDPOINT:
epno = dev->config.if_desc[ifno].no_of_ep;
+ if_desc = &dev->config.if_desc[ifno];
/* found an endpoint */
- dev->config.if_desc[ifno].no_of_ep++;
- memcpy(&dev->config.if_desc[ifno].ep_desc[epno],
+ if_desc->no_of_ep++;
+ memcpy(&if_desc->ep_desc[epno],
&buffer[index], buffer[index]);
ep_wMaxPacketSize = get_unaligned(&dev->config.\
if_desc[ifno].\