RE: [PATCH v5 02/46] usb: gadget: add endpoint capabilities flags

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

 



From: Robert Baldyga
> Sent: 31 July 2015 15:00
> Introduce struct usb_ep_caps which contains information about capabilities
> of usb endpoints - supported transfer types and directions. This structure
> should be filled by UDC driver for each of its endpoints, and will be
> used in epautoconf in new ep matching mechanism which will replace ugly
> guessing of endpoint capabilities basing on its name.
> 
> Signed-off-by: Robert Baldyga <r.baldyga@xxxxxxxxxxx>
> ---
>  include/linux/usb/gadget.h | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
> index 68fb5e8..a9a4959 100644
> --- a/include/linux/usb/gadget.h
> +++ b/include/linux/usb/gadget.h
> @@ -141,10 +141,29 @@ struct usb_ep_ops {
>  };
...
> +struct usb_ep_caps {
> +	unsigned type_control:1;
> +	unsigned type_iso:1;
> +	unsigned type_bulk:1;
> +	unsigned type_int:1;
> +	unsigned dir_in:1;
> +	unsigned dir_out:1;
> +};

With the way this is used (eg below from 13/46)

+
+		if (i == 0) {
+			ep->ep.caps.type_control = true;
+		} else {
+			ep->ep.caps.type_iso = true;
+			ep->ep.caps.type_bulk = true;
+			ep->ep.caps.type_int = true;
+		}
+
+		ep->ep.caps.dir_in = true;
+		ep->ep.caps.dir_out = true;

I think it would be more obvious if you used a u8 and explicit bitmasks.
The initialisation (as above) would the be explicitly assigning 'not supported'
to the other fields.
The compiler will also generate much better code...

	David

��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




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

  Powered by Linux