diff options
Diffstat (limited to 'drivers/usb/storage')
| -rw-r--r-- | drivers/usb/storage/shuttle_usbat.c | 2 | ||||
| -rw-r--r-- | drivers/usb/storage/uas.c | 13 | ||||
| -rw-r--r-- | drivers/usb/storage/unusual_devs.h | 14 | 
3 files changed, 22 insertions, 7 deletions
diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c index 4ef2a80728f7..008d805c3d21 100644 --- a/drivers/usb/storage/shuttle_usbat.c +++ b/drivers/usb/storage/shuttle_usbat.c @@ -1851,7 +1851,7 @@ static int usbat_probe(struct usb_interface *intf,  	us->transport_name = "Shuttle USBAT";  	us->transport = usbat_flash_transport;  	us->transport_reset = usb_stor_CB_reset; -	us->max_lun = 1; +	us->max_lun = 0;  	result = usb_stor_probe2(us);  	return result; diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index a7ac97cc5949..511b22953167 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -137,7 +137,7 @@ static void uas_do_work(struct work_struct *work)  		if (!(cmdinfo->state & IS_IN_WORK_LIST))  			continue; -		err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_NOIO); +		err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_ATOMIC);  		if (!err)  			cmdinfo->state &= ~IS_IN_WORK_LIST;  		else @@ -803,7 +803,7 @@ static int uas_eh_task_mgmt(struct scsi_cmnd *cmnd,  	devinfo->running_task = 1;  	memset(&devinfo->response, 0, sizeof(devinfo->response)); -	sense_urb = uas_submit_sense_urb(cmnd, GFP_NOIO, +	sense_urb = uas_submit_sense_urb(cmnd, GFP_ATOMIC,  					 devinfo->use_streams ? tag : 0);  	if (!sense_urb) {  		shost_printk(KERN_INFO, shost, @@ -813,7 +813,7 @@ static int uas_eh_task_mgmt(struct scsi_cmnd *cmnd,  		spin_unlock_irqrestore(&devinfo->lock, flags);  		return FAILED;  	} -	if (uas_submit_task_urb(cmnd, GFP_NOIO, function, tag)) { +	if (uas_submit_task_urb(cmnd, GFP_ATOMIC, function, tag)) {  		shost_printk(KERN_INFO, shost,  			     "%s: %s: submit task mgmt urb failed\n",  			     __func__, fname); @@ -1030,7 +1030,7 @@ static int uas_configure_endpoints(struct uas_dev_info *devinfo)  		devinfo->use_streams = 0;  	} else {  		devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1, -						    3, 256, GFP_KERNEL); +						    3, 256, GFP_NOIO);  		if (devinfo->qdepth < 0)  			return devinfo->qdepth;  		devinfo->use_streams = 1; @@ -1047,7 +1047,7 @@ static void uas_free_streams(struct uas_dev_info *devinfo)  	eps[0] = usb_pipe_endpoint(udev, devinfo->status_pipe);  	eps[1] = usb_pipe_endpoint(udev, devinfo->data_in_pipe);  	eps[2] = usb_pipe_endpoint(udev, devinfo->data_out_pipe); -	usb_free_streams(devinfo->intf, eps, 3, GFP_KERNEL); +	usb_free_streams(devinfo->intf, eps, 3, GFP_NOIO);  }  static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -1096,16 +1096,17 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)  	if (result)  		goto free_streams; +	usb_set_intfdata(intf, shost);  	result = scsi_add_host(shost, &intf->dev);  	if (result)  		goto free_streams;  	scsi_scan_host(shost); -	usb_set_intfdata(intf, shost);  	return result;  free_streams:  	uas_free_streams(devinfo); +	usb_set_intfdata(intf, NULL);  set_alt0:  	usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0);  	if (shost) diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index f4a82291894a..174a447868cd 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h @@ -234,6 +234,20 @@ UNUSUAL_DEV(  0x0421, 0x0495, 0x0370, 0x0370,  		USB_SC_DEVICE, USB_PR_DEVICE, NULL,  		US_FL_MAX_SECTORS_64 ), +/* Reported by Daniele Forsi <dforsi@gmail.com> */ +UNUSUAL_DEV(  0x0421, 0x04b9, 0x0350, 0x0350, +		"Nokia", +		"5300", +		USB_SC_DEVICE, USB_PR_DEVICE, NULL, +		US_FL_MAX_SECTORS_64 ), + +/* Patch submitted by Victor A. Santos <victoraur.santos@gmail.com> */ +UNUSUAL_DEV(  0x0421, 0x05af, 0x0742, 0x0742, +		"Nokia", +		"305", +		USB_SC_DEVICE, USB_PR_DEVICE, NULL, +		US_FL_MAX_SECTORS_64), +  /* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */  UNUSUAL_DEV(  0x0421, 0x06aa, 0x1110, 0x1110,  		"Nokia",  | 
