Re: [PATCH 2/2] usb: Re-enable usb-storage support dynamic id

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 14 Jan 2012, Huajun Li wrote:

> Enable usb-storage support dynamic id again by using a fixed id entry
> that describes a device using the Bulk-Only transport with the
> Transparent SCSI protocol.
> 
> Signed-off-by: Huajun Li <huajun.li.lee@xxxxxxxxx>
> ---
>  drivers/usb/storage/usb.c |   21 ++++++++++++++++++---
>  1 files changed, 18 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
> index 3dd7da9..58f5677 100644
> --- a/drivers/usb/storage/usb.c
> +++ b/drivers/usb/storage/usb.c
> @@ -125,6 +125,9 @@ static struct us_unusual_dev us_unusual_dev_list[] = {
>  	{ }		/* Terminating entry */
>  };
> 
> +static struct us_unusual_dev for_dynamic_ids =
> +		USUAL_DEV(USB_SC_SCSI, USB_PR_BULK, 0);
> +
>  #undef UNUSUAL_DEV
>  #undef COMPLIANT_DEV
>  #undef USUAL_DEV
> @@ -1027,8 +1030,10 @@ EXPORT_SYMBOL_GPL(usb_stor_disconnect);
>  static int storage_probe(struct usb_interface *intf,
>  			 const struct usb_device_id *id)
>  {
> +	struct us_unusual_dev *unusual_dev;
>  	struct us_data *us;
>  	int result;
> +	int size;
> 
>  	/*
>  	 * If libusual is configured, let it decide whether a standard
> @@ -1047,8 +1052,19 @@ static int storage_probe(struct usb_interface *intf,
>  	 * table, so we use the index of the id entry to find the
>  	 * corresponding unusual_devs entry.
>  	 */
> -	result = usb_stor_probe1(&us, intf, id,
> -			(id - usb_storage_usb_ids) + us_unusual_dev_list);
> +
> +	size = ARRAY_SIZE(us_unusual_dev_list);
> +	if (id >= usb_storage_usb_ids && id < usb_storage_usb_ids + size) {
> +		unusual_dev = (id - usb_storage_usb_ids) + us_unusual_dev_list;
> +	} else {
> +		unusual_dev = &for_dynamic_ids;
> +
> +		US_DEBUGP("%s %s 0x%04x 0x%04x\n", "Use Bulk-Only transport",
> +			"with the Transparent SCSI protocol for dynamic id:",
> +			id->idVendor, id->idProduct);
> +	}
> +
> +	result = usb_stor_probe1(&us, intf, id, unusual_dev);
>  	if (result)
>  		return result;
> 
> @@ -1074,7 +1090,6 @@ static struct usb_driver usb_storage_driver = {
>  	.id_table =	usb_storage_usb_ids,
>  	.supports_autosuspend = 1,
>  	.soft_unbind =	1,
> -	.no_dynamic_id = 1,
>  };
> 
>  static int __init usb_stor_init(void)

Reviewed-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux