RE: i.MX51 ChipIdea USB device endpoints questions

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

 



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?

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

��.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