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>
master
Vivek Gautam 11 years ago committed by Marek Vasut
parent ceb4972a8f
commit 605bd75af5
  1. 21
      common/usb.c
  2. 30
      common/usb_storage.c
  3. 2
      include/usb_defs.h

@ -348,6 +348,7 @@ static int usb_parse_config(struct usb_device *dev,
struct usb_descriptor_header *head; struct usb_descriptor_header *head;
int index, ifno, epno, curr_if_num; int index, ifno, epno, curr_if_num;
u16 ep_wMaxPacketSize; u16 ep_wMaxPacketSize;
struct usb_interface *if_desc = NULL;
ifno = -1; ifno = -1;
epno = -1; epno = -1;
@ -375,23 +376,27 @@ static int usb_parse_config(struct usb_device *dev,
&buffer[index])->bInterfaceNumber != curr_if_num) { &buffer[index])->bInterfaceNumber != curr_if_num) {
/* this is a new interface, copy new desc */ /* this is a new interface, copy new desc */
ifno = dev->config.no_of_if; ifno = dev->config.no_of_if;
if_desc = &dev->config.if_desc[ifno];
dev->config.no_of_if++; dev->config.no_of_if++;
memcpy(&dev->config.if_desc[ifno], memcpy(if_desc, &buffer[index], buffer[index]);
&buffer[index], buffer[index]); if_desc->no_of_ep = 0;
dev->config.if_desc[ifno].no_of_ep = 0; if_desc->num_altsetting = 1;
dev->config.if_desc[ifno].num_altsetting = 1;
curr_if_num = curr_if_num =
dev->config.if_desc[ifno].desc.bInterfaceNumber; if_desc->desc.bInterfaceNumber;
} else { } else {
/* found alternate setting for the interface */ /* 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; break;
case USB_DT_ENDPOINT: case USB_DT_ENDPOINT:
epno = dev->config.if_desc[ifno].no_of_ep; epno = dev->config.if_desc[ifno].no_of_ep;
if_desc = &dev->config.if_desc[ifno];
/* found an endpoint */ /* found an endpoint */
dev->config.if_desc[ifno].no_of_ep++; if_desc->no_of_ep++;
memcpy(&dev->config.if_desc[ifno].ep_desc[epno], memcpy(&if_desc->ep_desc[epno],
&buffer[index], buffer[index]); &buffer[index], buffer[index]);
ep_wMaxPacketSize = get_unaligned(&dev->config.\ ep_wMaxPacketSize = get_unaligned(&dev->config.\
if_desc[ifno].\ if_desc[ifno].\

@ -269,9 +269,9 @@ int usb_stor_scan(int mode)
lun++) { lun++) {
usb_dev_desc[usb_max_devs].lun = lun; usb_dev_desc[usb_max_devs].lun = lun;
if (usb_stor_get_info(dev, &usb_stor[start], if (usb_stor_get_info(dev, &usb_stor[start],
&usb_dev_desc[usb_max_devs]) == 1) { &usb_dev_desc[usb_max_devs]) == 1) {
usb_max_devs++; usb_max_devs++;
} }
} }
} }
/* if storage device */ /* if storage device */
@ -504,7 +504,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
dir_in = US_DIRECTION(srb->cmd[0]); dir_in = US_DIRECTION(srb->cmd[0]);
#ifdef BBB_COMDAT_TRACE #ifdef BBB_COMDAT_TRACE
printf("dir %d lun %d cmdlen %d cmd %p datalen %d pdata %p\n", printf("dir %d lun %d cmdlen %d cmd %p datalen %lu pdata %p\n",
dir_in, srb->lun, srb->cmdlen, srb->cmd, srb->datalen, dir_in, srb->lun, srb->cmdlen, srb->cmd, srb->datalen,
srb->pdata); srb->pdata);
if (srb->cmdlen) { if (srb->cmdlen) {
@ -1209,6 +1209,7 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,
{ {
struct usb_interface *iface; struct usb_interface *iface;
int i; int i;
struct usb_endpoint_descriptor *ep_desc;
unsigned int flags = 0; unsigned int flags = 0;
int protocol = 0; int protocol = 0;
@ -1291,24 +1292,25 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,
* We will ignore any others. * We will ignore any others.
*/ */
for (i = 0; i < iface->desc.bNumEndpoints; i++) { for (i = 0; i < iface->desc.bNumEndpoints; i++) {
ep_desc = &iface->ep_desc[i];
/* is it an BULK endpoint? */ /* is it an BULK endpoint? */
if ((iface->ep_desc[i].bmAttributes & if ((ep_desc->bmAttributes &
USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) { USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) {
if (iface->ep_desc[i].bEndpointAddress & USB_DIR_IN) if (ep_desc->bEndpointAddress & USB_DIR_IN)
ss->ep_in = iface->ep_desc[i].bEndpointAddress & ss->ep_in = ep_desc->bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK; USB_ENDPOINT_NUMBER_MASK;
else else
ss->ep_out = ss->ep_out =
iface->ep_desc[i].bEndpointAddress & ep_desc->bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK; USB_ENDPOINT_NUMBER_MASK;
} }
/* is it an interrupt endpoint? */ /* is it an interrupt endpoint? */
if ((iface->ep_desc[i].bmAttributes & if ((ep_desc->bmAttributes &
USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) { USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) {
ss->ep_int = iface->ep_desc[i].bEndpointAddress & ss->ep_int = ep_desc->bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK; USB_ENDPOINT_NUMBER_MASK;
ss->irqinterval = iface->ep_desc[i].bInterval; ss->irqinterval = ep_desc->bInterval;
} }
} }
debug("Endpoints In %d Out %d Int %d\n", debug("Endpoints In %d Out %d Int %d\n",

@ -247,7 +247,7 @@
#define HUB_CHAR_OCPM 0x0018 #define HUB_CHAR_OCPM 0x0018
/* /*
*Hub Status & Hub Change bit masks * Hub Status & Hub Change bit masks
*/ */
#define HUB_STATUS_LOCAL_POWER 0x0001 #define HUB_STATUS_LOCAL_POWER 0x0001
#define HUB_STATUS_OVERCURRENT 0x0002 #define HUB_STATUS_OVERCURRENT 0x0002

Loading…
Cancel
Save