[alsa-devel] [PATCH v3] ALSA: snd-usb-audio: set the timeout for usb control set messages to 5000 ms

Daniel Mack zonque at gmail.com
Sun Apr 21 10:17:26 CEST 2013


On 20.04.2013 23:06, Daniel Schürmann wrote:
> This is an other version of the patch send via git send-email. I still 
> distinguish between set and get but as long both are 5000 ms GCC will 
> remove it anyway. IMHO this is more easy read and there is no need to 
> explain why we use a get timeout for set messages.
> 
> Commit message:

Next time, please put information that should not be part of the commit
log message (such as the lines above) underneath the "---" marker. But
maybe Takashi can do that when applying?

> Set the timeout for USB control set messages according to the USB 2
> spec, using the macros from include/linux/usb.h.     
> The get timout becomes 5000 ms even though it is 500 ms in the    
> spec. This patch is required to run the Hercules RMX2 which needs a
> timeout of 1240 ms.
> 
> Signed-off-by: Daniel Schürmann <daschuer at mixxx.org>

Acked-by: Daniel Mack <zonque at gmail.com>

> ---
>  sound/usb/helper.c |   10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/usb/helper.c b/sound/usb/helper.c
> index c1db28f..6209024 100644
> --- a/sound/usb/helper.c
> +++ b/sound/usb/helper.c
> @@ -86,14 +86,22 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
>  {
>  	int err;
>  	void *buf = NULL;
> +	int timeout;
>  
>  	if (size > 0) {
>  		buf = kmemdup(data, size, GFP_KERNEL);
>  		if (!buf)
>  			return -ENOMEM;
>  	}
> +
> +	if (requesttype & USB_DIR_IN)
> +		timeout = USB_CTRL_GET_TIMEOUT;
> +	else
> +		timeout = USB_CTRL_SET_TIMEOUT;
> +
>  	err = usb_control_msg(dev, pipe, request, requesttype,
> -			      value, index, buf, size, 1000);
> +			      value, index, buf, size, timeout);
> +
>  	if (size > 0) {
>  		memcpy(data, buf, size);
>  		kfree(buf);
> 



More information about the Alsa-devel mailing list