On Fri, Apr 11, 2014 at 12:16:17PM +0000, Ebright, Dave wrote: > Peter, > > Thanks for your response. I understand that currently for the i.MX51 in the ChipIdea drivers that the DEN value is 8 which results in defining endpoints ep[0-7]in and ep[0-7]out. I am looking to develop a piece of automated test equipment and drivers that emulates an existing device which has the following endpoints: > > ep0in - control > ep0out - control > ep3out - bulk > ep3in - bulk > ep4in - interrupt > ep1out - bulk > ep1in - bulk > ep5out - bulk > ep5in - bulk > ep6in - interrupt > ep9out - bulk > ep9in - bulk > ep10in - interrupt > > Thus the number of endpoints is not a problem, but I'm thinking that having ep9out, ep9in, and ep10in would not work (they are not defined). For instance if I want to write a user space gadget driver on top of gadgetfs, these endpoints will not even be present for use. Only endpoints ep[0-7]in and ep[0-7]out are accessible via gadgetfs. > > So are you saying that I could open up ep2in and ep2out which are not used to act as ep9in and ep9out for instance where ep2 is the physical endpoint, but I initialize it like ep9? Will that work? Can you explain this further? Do you mean at init I could set up the endpoint address to be 9, but use physical endpoint 2 and that should work? > Then, do special handling at your application: sprintf(name, "/dev/gadget/ep%din", index); if (index == 9) { desc_source.bEndpointAddress = USB_DIR_IN | 2; desc_sink.bEndpointAddress = USB_DIR_OUT | 2; } Peter > Thanks, > > Dave > > -----Original Message----- > From: Peter Chen [mailto:peter.chen@xxxxxxxxxxxxx] > Sent: Thursday, April 10, 2014 9:43 PM > To: Ebright, Dave > Cc: linux-usb@xxxxxxxxxxxxxxx > Subject: Re: i.MX51 ChipIdea USB device endpoints questions > > On Thu, Apr 10, 2014 at 07:08:22PM +0000, Ebright, Dave wrote: > > Hi Peter, > > > > > > > > I’m not sure what mailing list to post this to, but maybe you know… > > Linux usb mail list is the best place to ask linux usb questions. > > > > > > > > I am looking at the i.MX51 USB device functionality for a project I am > > working on and in the DCCPARAMS register (read only) there is the DEN > > field which defines the number of endpoints built into the device > > controller. For the i.MX51 when the register is read the DEN is set to > > 8. Valid values for this field are 0-16. My first question is do you > > know of any way of increasing this value? I don’t believe it can be based > > on the following from the i.MX51 reference manual: > > > > > > > > “The ARC USB-HS OTG High-Speed USB On-The-Go device controller hardware > > supports up to the USB > > > > 2.0 maximum of 32 endpoint specified numbers. Each additional endpoint > > beyond the required endpoint > > > > position adds additional hardware logic. The maximum number of endpoint > > numbers available to the DCD > > > > is configured at hardware synthesis timer. After synthesis, the DCD can > > enable, disable and configure > > > > endpoint type up to the maximum selected during synthesis.” > > > > > > > > Does synthesis mean when the processor chip is created or does it mean > > when the chip first starts up HW senses what the value should be? > > When the IC guys begin to integrate usb ip, the endpoint number can be changed, but once the chip has finished, this number can't be changed. > > > > > > > > > Any idea if it would work to just over-ride the ci->hw_ep_map value set in > > hw_device_init()? Not sure what the synthesis does? The ChipIdea > > register set is still the same, but I assume the functionality is somehow > > limited in the core? > > Yes, this value is fixed for certain chipidea IP usb controller. > > > > > > > > > If the number of endpoints cannot be increased, would it be possible to > > map an unused endpoint number to a higher endpoint number. For example > > let’s say I want my device to use endpoint 9, but endpoint 9 is not > > defined due to the DEN value of 8. Endpoint 7 exists and is not being > > used. Would it be possible to customize the chipidea drivers to map > > endpoint 9 to use endpoint 7 for a custom application or does the USB OTG > > chipidea core perform HW controlled endpoint addressing (HW looks at > > endpoint and sends data to the appropriate endpoint queue independent of > > the driver)? > > > > > > If endpoint number is 8, for chipidea udc driver, the ci_hw_ep[0..7] is the physical RX endpoint 0-7, , the name is "ep[0..7]out", the ci_hw_ep[8..15] is the physical TX endpoint 0-7, the name is "ep[0..7]in". > > What's the reason you want to customize endpoint number? Currently, it will allocate the smallest un-used endpoint number for application. > > -- > > Best Regards, > Peter Chen > -- Best Regards, Peter Chen -- 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