Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> writes: > epautoconf has two global variables which count the endpoint number > current endpoint assignet endpoint. > This patch removes the global variable and keeps it as per (UDC) gadget. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > drivers/usb/gadget/epautoconf.c | 23 ++++++----------------- > include/linux/usb/gadget.h | 6 ++++++ > 2 files changed, 12 insertions(+), 17 deletions(-) > > diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c > index 51f3d42..2c6c61f 100644 > --- a/drivers/usb/gadget/epautoconf.c > +++ b/drivers/usb/gadget/epautoconf.c > @@ -22,17 +22,6 @@ > > #include "gadget_chips.h" > > - > -/* we must assign addresses for configurable endpoints (like net2280) */ > -static unsigned epnum; > - > -// #define MANY_ENDPOINTS > -#ifdef MANY_ENDPOINTS > -/* more than 15 configurable endpoints */ > -static unsigned in_epnum; > -#endif > - > - > /* > * This should work with endpoints from controller drivers sharing the > * same endpoint naming convention. By example: > @@ -178,14 +167,14 @@ ep_matches ( > desc->bEndpointAddress |= num; > #ifdef MANY_ENDPOINTS > } else if (desc->bEndpointAddress & USB_DIR_IN) { > - if (++in_epnum > 15) > + if (++gadget->in_epnum > 15) > return 0; > - desc->bEndpointAddress = USB_DIR_IN | in_epnum; > + desc->bEndpointAddress = USB_DIR_IN | gadget->in_epnum; > #endif > } else { > - if (++epnum > 15) > + if (++gadget->epnum > 15) > return 0; > - desc->bEndpointAddress |= epnum; > + desc->bEndpointAddress |= gadget->epnum; > } > > /* report (variable) full speed bulk maxpacket */ > @@ -386,8 +375,8 @@ void usb_ep_autoconfig_reset (struct usb_gadget *gadget) > ep->driver_data = NULL; > } > #ifdef MANY_ENDPOINTS > - in_epnum = 0; > + gadget->in_epnum = 0; > #endif > - epnum = 0; > + gadget->epnum = 0; > } > > diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h > index fdf85a7..01fe02a 100644 > --- a/include/linux/usb/gadget.h > +++ b/include/linux/usb/gadget.h > @@ -537,6 +537,12 @@ struct usb_gadget { > unsigned a_alt_hnp_support:1; > const char *name; > struct device dev; > + unsigned epnum; > +/* #define MANY_ENDPOINTS */ > +#ifdef MANY_ENDPOINTS > + /* more than 15 configurable endpoints */ > + unsigned in_epnum; > +#endif > }; This looks tricky. At the moment, MANY_ENDPOINTS is not defined anywhere, but if for some reason someone tries to define it in some composite gadgets, we may end up with different definitions of usb_gadget structure. It appears to me that we should drop this all together or switch it to Kconfig option. > static inline void set_gadget_data(struct usb_gadget *gadget, void *data) > -- > 1.7.10.4 > > -- > 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 -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz (o o) ooo +----<email/xmpp: mpn@xxxxxxxxxx>--------------ooO--(_)--Ooo--
Attachment:
pgpxD13aiRFey.pgp
Description: PGP signature