|
|
|
@ -168,30 +168,6 @@ static unsigned int usb_get_max_lun(struct us_data *us) |
|
|
|
|
return (len > 0) ? *result : 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int usb_storage_register(struct usb_device *dev, unsigned char iface) |
|
|
|
|
{ |
|
|
|
|
int lun, max_lun, start = usb_max_devs; |
|
|
|
|
int nb_dev = 0; |
|
|
|
|
|
|
|
|
|
if (!usb_storage_probe(dev, iface, &usb_stor[usb_max_devs])) |
|
|
|
|
return nb_dev; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* OK, it's a storage device. Iterate over its LUNs |
|
|
|
|
* and populate `usb_dev_desc'. |
|
|
|
|
*/ |
|
|
|
|
max_lun = usb_get_max_lun(&usb_stor[usb_max_devs]); |
|
|
|
|
for (lun = 0; lun <= max_lun && usb_max_devs < USB_MAX_STOR_DEV; lun++) { |
|
|
|
|
usb_dev_desc[usb_max_devs].lun = lun; |
|
|
|
|
if (usb_stor_get_info(dev, &usb_stor[start], |
|
|
|
|
&usb_dev_desc[usb_max_devs]) == 1) { |
|
|
|
|
nb_dev++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nb_dev; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
* scan the usb and reports device info |
|
|
|
|
* to the user if mode = 1 |
|
|
|
@ -199,7 +175,7 @@ static int usb_storage_register(struct usb_device *dev, unsigned char iface) |
|
|
|
|
*/ |
|
|
|
|
int usb_stor_scan(int mode) |
|
|
|
|
{ |
|
|
|
|
unsigned char i, iface; |
|
|
|
|
unsigned char i; |
|
|
|
|
struct usb_device *dev; |
|
|
|
|
|
|
|
|
|
if (mode == 1) |
|
|
|
@ -225,10 +201,23 @@ int usb_stor_scan(int mode) |
|
|
|
|
if (dev == NULL) |
|
|
|
|
break; /* no more devices available */ |
|
|
|
|
|
|
|
|
|
for (iface = 0; iface < dev->config.no_of_if; iface++) { |
|
|
|
|
usb_max_devs += usb_storage_register(dev, iface); |
|
|
|
|
if (usb_storage_probe(dev, 0, &usb_stor[usb_max_devs])) { |
|
|
|
|
/* OK, it's a storage device. Iterate over its LUNs
|
|
|
|
|
* and populate `usb_dev_desc'. |
|
|
|
|
*/ |
|
|
|
|
int lun, max_lun, start = usb_max_devs; |
|
|
|
|
|
|
|
|
|
max_lun = usb_get_max_lun(&usb_stor[usb_max_devs]); |
|
|
|
|
for (lun = 0; |
|
|
|
|
lun <= max_lun && usb_max_devs < USB_MAX_STOR_DEV; |
|
|
|
|
lun++) { |
|
|
|
|
usb_dev_desc[usb_max_devs].lun = lun; |
|
|
|
|
if (usb_stor_get_info(dev, &usb_stor[start], |
|
|
|
|
&usb_dev_desc[usb_max_devs]) == 1) { |
|
|
|
|
usb_max_devs++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* if storage device */ |
|
|
|
|
if (usb_max_devs == USB_MAX_STOR_DEV) { |
|
|
|
|
printf("max USB Storage Device reached: %d stopping\n", |
|
|
|
|