[PATCH] USB: fsl_udc_core: Use (&) instead of (==) to compare ISO XFER

Michal Nazarewicz mina86 at mina86.com
Tue Nov 22 12:22:10 EST 2011


On Tue, 22 Nov 2011 02:15:21 +0100, Peter Chen <peter.chen at freescale.com> wrote:

> Some ISO gadgets, like audio, has SYNC attribute as well as
> USB_ENDPOINT_XFER_ISOC for their bmAttributes at ISO endpoint
> descriptor. So, it needs to use & instead of == to judge if
> it is ISO XFER.
>
> Signed-off-by: Peter Chen <peter.chen at freescale.com>
> ---
>  drivers/usb/gadget/fsl_udc_core.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c
> index d786ba3..bf40de3 100644
> --- a/drivers/usb/gadget/fsl_udc_core.c
> +++ b/drivers/usb/gadget/fsl_udc_core.c
> @@ -877,7 +877,7 @@ fsl_ep_queue(struct usb_ep *_ep, struct usb_request *_req, gfp_t gfp_flags)
>  		VDBG("%s, bad ep", __func__);
>  		return -EINVAL;
>  	}
> -	if (ep->desc->bmAttributes == USB_ENDPOINT_XFER_ISOC) {
> +	if (ep->desc->bmAttributes & USB_ENDPOINT_XFER_ISOC) {

What you really meant is:

(ep->desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_ISOC

It would probably be useful to create a function that performs that check rather
than having to type all of that every time.

>  		if (req->req.length > ep->ep.maxpacket)
>  			return -EMSGSIZE;
>  	}
> @@ -1032,7 +1032,7 @@ static int fsl_ep_set_halt(struct usb_ep *_ep, int value)
>  		goto out;
>  	}
>-	if (ep->desc->bmAttributes == USB_ENDPOINT_XFER_ISOC) {
> +	if (ep->desc->bmAttributes & USB_ENDPOINT_XFER_ISOC) {
>  		status = -EOPNOTSUPP;
>  		goto out;
>  	}


-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +----<email/xmpp: mpn at google.com>--------------ooO--(_)--Ooo--


More information about the Linuxppc-dev mailing list