@@ -1241,7 +1241,7 @@ static int alauda_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - alauda_usb_ids) + alauda_unusual_dev_list,
- &alauda_host_template);
+ &alauda_host_template, 0);
if (result)
return result;
@@ -246,7 +246,7 @@ static int cypress_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - cypress_usb_ids) + cypress_unusual_dev_list,
- &cypress_host_template);
+ &cypress_host_template, 0);
if (result)
return result;
@@ -727,7 +727,7 @@ static int datafab_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - datafab_usb_ids) + datafab_unusual_dev_list,
- &datafab_host_template);
+ &datafab_host_template, 0);
if (result)
return result;
@@ -2331,7 +2331,7 @@ static int ene_ub6250_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - ene_ub6250_usb_ids) + ene_ub6250_unusual_dev_list,
- &ene_ub6250_host_template);
+ &ene_ub6250_host_template, 0);
if (result)
return result;
@@ -548,7 +548,7 @@ static int freecom_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - freecom_usb_ids) + freecom_unusual_dev_list,
- &freecom_host_template);
+ &freecom_host_template, 0);
if (result)
return result;
@@ -1545,7 +1545,7 @@ static int isd200_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - isd200_usb_ids) + isd200_unusual_dev_list,
- &isd200_host_template);
+ &isd200_host_template, 0);
if (result)
return result;
@@ -653,7 +653,7 @@ static int jumpshot_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - jumpshot_usb_ids) + jumpshot_unusual_dev_list,
- &jumpshot_host_template);
+ &jumpshot_host_template, 0);
if (result)
return result;
@@ -205,7 +205,7 @@ static int karma_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - karma_usb_ids) + karma_unusual_dev_list,
- &karma_host_template);
+ &karma_host_template, 0);
if (result)
return result;
@@ -280,7 +280,7 @@ static int onetouch_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - onetouch_usb_ids) + onetouch_unusual_dev_list,
- &onetouch_host_template);
+ &onetouch_host_template, 0);
if (result)
return result;
@@ -1041,7 +1041,7 @@ static int realtek_cr_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - realtek_cr_ids) +
realtek_cr_unusual_dev_list,
- &realtek_cr_host_template);
+ &realtek_cr_host_template, 0);
if (result)
return result;
@@ -1753,7 +1753,7 @@ static int sddr09_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - sddr09_usb_ids) + sddr09_unusual_dev_list,
- &sddr09_host_template);
+ &sddr09_host_template, 0);
if (result)
return result;
@@ -985,7 +985,7 @@ static int sddr55_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - sddr55_usb_ids) + sddr55_unusual_dev_list,
- &sddr55_host_template);
+ &sddr55_host_template, 0);
if (result)
return result;
@@ -1838,7 +1838,7 @@ static int usbat_probe(struct usb_interface *intf,
result = usb_stor_probe1(&us, intf, id,
(id - usbat_usb_ids) + usbat_unusual_dev_list,
- &usbat_host_template);
+ &usbat_host_template, 0);
if (result)
return result;
@@ -574,7 +574,7 @@ EXPORT_SYMBOL_GPL(usb_stor_adjust_quirks);
/* Get the unusual_devs entries and the string descriptors */
static int get_device_info(struct us_data *us, const struct usb_device_id *id,
- const struct us_unusual_dev *unusual_dev)
+ const struct us_unusual_dev *unusual_dev, int fflags_use_index)
{
struct usb_device *dev = us->pusb_dev;
struct usb_interface_descriptor *idesc =
@@ -590,6 +590,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id,
idesc->bInterfaceProtocol :
unusual_dev->useTransport;
us->fflags = id->driver_info;
+
usb_stor_adjust_quirks(us->pusb_dev, &us->fflags);
if (us->fflags & US_FL_IGNORE_DEVICE) {
@@ -925,7 +926,8 @@ int usb_stor_probe1(struct us_data **pus,
struct usb_interface *intf,
const struct usb_device_id *id,
const struct us_unusual_dev *unusual_dev,
- const struct scsi_host_template *sht)
+ const struct scsi_host_template *sht,
+ int fflags_use_index)
{
struct Scsi_Host *host;
struct us_data *us;
@@ -962,7 +964,7 @@ int usb_stor_probe1(struct us_data **pus,
goto BadDevice;
/* Get the unusual_devs entries and the descriptors */
- result = get_device_info(us, id, unusual_dev);
+ result = get_device_info(us, id, unusual_dev, fflags_use_index);
if (result)
goto BadDevice;
@@ -1120,7 +1122,7 @@ static int storage_probe(struct usb_interface *intf,
}
result = usb_stor_probe1(&us, intf, id, unusual_dev,
- &usb_stor_host_template);
+ &usb_stor_host_template, 1);
if (result)
return result;
@@ -187,7 +187,8 @@ extern int usb_stor_probe1(struct us_data **pus,
struct usb_interface *intf,
const struct usb_device_id *id,
const struct us_unusual_dev *unusual_dev,
- const struct scsi_host_template *sht);
+ const struct scsi_host_template *sht,
+ int fflags_use_index);
extern int usb_stor_probe2(struct us_data *us);
extern void usb_stor_disconnect(struct usb_interface *intf);
This patch adds a parameter to use driver_info translation function (which will be defined in the following patch). Only USB storage driver will use it, as other drivers do not need more than 32-bit quirk flags. Signed-off-by: Milan Broz <gmazyland@gmail.com> --- drivers/usb/storage/alauda.c | 2 +- drivers/usb/storage/cypress_atacb.c | 2 +- drivers/usb/storage/datafab.c | 2 +- drivers/usb/storage/ene_ub6250.c | 2 +- drivers/usb/storage/freecom.c | 2 +- drivers/usb/storage/isd200.c | 2 +- drivers/usb/storage/jumpshot.c | 2 +- drivers/usb/storage/karma.c | 2 +- drivers/usb/storage/onetouch.c | 2 +- drivers/usb/storage/realtek_cr.c | 2 +- drivers/usb/storage/sddr09.c | 2 +- drivers/usb/storage/sddr55.c | 2 +- drivers/usb/storage/shuttle_usbat.c | 2 +- drivers/usb/storage/usb.c | 10 ++++++---- drivers/usb/storage/usb.h | 3 ++- 15 files changed, 21 insertions(+), 18 deletions(-)