On Tue, Nov 18, 2014 at 03:11:54PM -0500, Jorge Ramirez-Ortiz wrote: > Add SS descriptors to support the capabilities provided by USB3 controller > drivers; unit tests run using a PLX 3380 [max transfer speed measured of 1Gbps] > > This driver shall fallback to lower operating modes when the higher ones are > not available. > > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@xxxxxxxxxx> > --- > drivers/usb/gadget/legacy/printer.c | 65 +++++++++++++++++++++++++++++++++---- > 1 file changed, 59 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/gadget/legacy/printer.c b/drivers/usb/gadget/legacy/printer.c > index 6474081..456730b 100644 > --- a/drivers/usb/gadget/legacy/printer.c > +++ b/drivers/usb/gadget/legacy/printer.c > @@ -208,6 +208,43 @@ static struct usb_descriptor_header *hs_printer_function[] = { > NULL > }; > > +/* > + * Added endpoint descriptors for 3.0 devices > + */ > + > +static struct usb_endpoint_descriptor ss_ep_in_desc = { > + .bLength = USB_DT_ENDPOINT_SIZE, > + .bDescriptorType = USB_DT_ENDPOINT, > + .bmAttributes = USB_ENDPOINT_XFER_BULK, > + .wMaxPacketSize = cpu_to_le16(1024), > +}; > + > +struct usb_ss_ep_comp_descriptor ss_ep_in_comp_desc = { > + .bLength = sizeof(ss_ep_in_comp_desc), > + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, > +}; > + > +static struct usb_endpoint_descriptor ss_ep_out_desc = { > + .bLength = USB_DT_ENDPOINT_SIZE, > + .bDescriptorType = USB_DT_ENDPOINT, > + .bmAttributes = USB_ENDPOINT_XFER_BULK, > + .wMaxPacketSize = cpu_to_le16(1024), > +}; > + > +struct usb_ss_ep_comp_descriptor ss_ep_out_comp_desc = { > + .bLength = sizeof(ss_ep_out_comp_desc), > + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, > +}; > + > +static struct usb_descriptor_header *ss_printer_function[] = { > + (struct usb_descriptor_header *) &intf_desc, > + (struct usb_descriptor_header *) &ss_ep_in_desc, > + (struct usb_descriptor_header *) &ss_ep_in_comp_desc, > + (struct usb_descriptor_header *) &ss_ep_out_desc, > + (struct usb_descriptor_header *) &ss_ep_out_comp_desc, > + NULL > +}; > + > static struct usb_otg_descriptor otg_descriptor = { > .bLength = sizeof otg_descriptor, > .bDescriptorType = USB_DT_OTG, > @@ -220,7 +257,20 @@ static const struct usb_descriptor_header *otg_desc[] = { > }; > > /* maxpacket and other transfer characteristics vary by speed. */ > -#define ep_desc(g, hs, fs) (((g)->speed == USB_SPEED_HIGH)?(hs):(fs)) > +static inline struct usb_endpoint_descriptor *ep_desc(struct usb_gadget *gadget, > + struct usb_endpoint_descriptor *fs, > + struct usb_endpoint_descriptor *hs, > + struct usb_endpoint_descriptor *ss) > +{ > + switch(gadget->speed) { ^^ missing space here. I'll fix it, but next time run your patches through scripts/checkpatch.pl -- balbi
Attachment:
signature.asc
Description: Digital signature