AnsweredAssumed Answered

USB Device Endpoint Number

Question asked by James Lee on Oct 16, 2018

Hi ,

I'm working on i.MX6 Dual Solidrun's SOM + Hummingboard and build Linux Kernel 4.9.102 as my system.

 

I'm trying to designed OTG device mode using GadgetFS.

 

I could make /dev/gadget/2184000.usb. and ep0in/out ~ ep7in/out.

 

EP 2 and EP6 work using /dev/ep2out and /dev/ep6in.

 

I can make that my board send and recevice usb data with PC Applicaiion.

 

However My host side APP Program use Endpoint 2,4,6,8.

 

So I have to make /dev/ep8out  device file.

 

I could found that the enpoint device files are made in /drivers/usb/gadget/legacy/inode.c

 

And I could found that number of enpoint value is in /drivers/usb/chipidea/core.c as below.

 

------------------------------------------------------------------------------------------------

reg = hw_read(ci, CAP_DCCPARAMS, DCCPARAMS_DEN) >>
                __ffs(DCCPARAMS_DEN);
        ci->hw_ep_max = reg  * 2;   /* cache hw ENDPT_MAX */

 

------------------------------------------------------------------------------------------------

 

I could read the value of ci->hw_ep_max is 0x08.

 

So It can make only 16 nodes for enpoint device file (ep0in ~ ep7in 8ea and ep0out ~ ep7out 8ea)

----------------------------------------------------------------------

Device Controller Capability Parameters

DEN -> Device Enpoint Number

---------------------------------------------------------------------

 

Is it hardware specification of I.MX6 ?

 

How can I make /dev/ep8out file for Endpoint 8 ?

 

I have assigned EP address 0x08 to ep7out or ep6out But it didn't work.

 

Maybe Endpoints are mapped to each /dev/#ENDPOINT files.

 

Please let me know how can I do for it.

 

Thanks in Advanced!

Outcomes