+Tom Hi Franck,
On 4 March 2015 at 13:07, <franck.jull...@gmail.com> wrote: > From: Franck Jullien <franck.jull...@gmail.com> > > Mass storage is not necessary present on interface 0. This > patch allow usb_stor_scan to look in every available interface. > > Signed-off-by: Franck Jullien <franck.jull...@gmail.com> > --- > > v2: create a new function to improve indentation > > v3: more indentation improvement > > common/usb_storage.c | 45 ++++++++++++++++++++++++++++----------------- > 1 files changed, 28 insertions(+), 17 deletions(-) > > diff --git a/common/usb_storage.c b/common/usb_storage.c > index 1411737..05c96a8 100644 > --- a/common/usb_storage.c > +++ b/common/usb_storage.c > @@ -208,6 +208,30 @@ 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++; Should start or usb_max_devs increase here? This will use the same block_dev_desc_t for each device, won't it? > + } > + } > + > + return nb_dev; > +} > + > > /******************************************************************************* > * scan the usb and reports device info > * to the user if mode = 1 > @@ -215,7 +239,7 @@ static unsigned int usb_get_max_lun(struct us_data *us) > */ > int usb_stor_scan(int mode) > { > - unsigned char i; > + unsigned char i, iface; > struct usb_device *dev; > > if (mode == 1) > @@ -241,23 +265,10 @@ int usb_stor_scan(int mode) > if (dev == NULL) > break; /* no more devices available */ > > - 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++; > - } > - } > + for (iface = 0; iface < dev->config.no_of_if; iface++) { > + usb_max_devs += usb_storage_register(dev, iface); > } > + > /* if storage device */ > if (usb_max_devs == USB_MAX_STOR_DEV) { > printf("max USB Storage Device reached: %d > stopping\n", > -- > 1.7.1 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot