On Tue, 9 Jun 2015, Li Jun wrote: > > > -/* USB_DT_OTG (from OTG 1.0a supplement) */ > > > +/* USB_DT_OTG */ > > > struct usb_otg_descriptor { > > > __u8 bLength; > > > __u8 bDescriptorType; > > > > > > __u8 bmAttributes; /* support for HNP, SRP, etc */ > > > + struct bcdOTG otg_rev[0]; > > > > why not just __le16 bcdOTG here ? > > usb_otg_descriptor of OTG 1.0 and 2.0 have different size, if directly add > __le16 bcdOTG here, then it cannot used for OTG 1.0. > I use a zero length array as Peter suggested here for bcdOTG, then the size > of usb_otg_descriptor is still 3(not 5), which is compliant with OTG 1.x, if OTG > 2.0 or later, we can use member of otg_rev to add bcdOTG, then the size > of usb_otg_descriptor + bcdOTG will be 5, in one word, I want to use existing > usb_otg_descriptor struct to cover both OTG 1.x and 2.0 In the end, you may find it is simpler to use two different structures: usb_otg_descriptor and usb_otg_20_descriptor. Try it and see. Alan Stern -- 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