Hi Oliver, On 02/05/2014 09:13 PM, oliver@xxxxxxxxxx wrote:
From: Oliver Neukum <oneukum@xxxxxxx> uas_probe() calls usb_alloc_streams(). That can fail on XHCI with -ENOSYS if the controller doesn't support streams. In that case devices should be handed over to storage. Thus the driver needs to return -ENODEV so that the driver core will give other drivers a chance.
I'm afraid that that won't work, it won't change the result of uas_use_uas_driver() so usb-storage still will fail to bind. I'm not sure which version you're looking at, but the new re-enabled uas code as it will be going upstream for 3.15 is here: http://git.linuxtv.org/hgoede/gspca.git/shortlog/refs/heads/usb-next-for-sarah For the above specifically see: http://git.linuxtv.org/hgoede/gspca.git/commitdiff/dda9e7db4e293defeff4956018183e06749528dc So to fix this we would need to export if an hcd supports streams with some hcd flag / property and then as_use_uas_driver() can check this flag (in combination with connection speed). Regards, Hans
Signed-off-by: Oliver Neukum <oneukum@xxxxxxx> --- drivers/usb/storage/uas.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index a7ac97c..4dc1aa5 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -1110,7 +1110,7 @@ set_alt0: usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0); if (shost) scsi_host_put(shost); - return result; + return result == -ENOSYS ? -ENODEV : result; } static int uas_pre_reset(struct usb_interface *intf)
-- 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