Felipe, On 10/14/2015 11:25 AM, Felipe Balbi wrote:
Hi, Bin Liu <b-liu@xxxxxx> writes:On 10/14/2015 10:56 AM, Felipe Balbi wrote:Hi, Bin Liu <b-liu@xxxxxx> writes:Hi, On 10/13/2015 01:22 PM, Felipe Balbi wrote:Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> writes:On Mon, Oct 12, 2015 at 11:34 AM, Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> wrote:We have a problem, when using more than 12 FTDI ports. Kernels tried: 3.18.1, 4.2.3 and 4.3-rc5. SoC am335x 600MHz Below the USB topology: # lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M |__ Port 1: Dev 2, If 0, Class=, Driver=hub/4p, 480M |__ Port 1: Dev 9, If 0, Class=, Driver=hub/4p, 480M |__ Port 1: Dev 10, If 0, Class=, Driver=ftdi_sio, 12M |__ Port 2: Dev 11, If 0, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 11, If 1, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 11, If 2, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 11, If 3, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 12, If 0, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 12, If 1, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 12, If 2, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 12, If 3, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 4, If 0, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 4, If 1, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 4, If 2, Class=, Driver=ftdi_sio, 480M |__ Port 2: Dev 4, If 3, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 7, If 0, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 7, If 1, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 7, If 2, Class=, Driver=ftdi_sio, 480M |__ Port 3: Dev 7, If 3, Class=, Driver=ftdi_sio, 480MHow many EPs does each FTDI device require? at least one INT EP, right? If I read it right, the topology above has 2 hubs, and 16 high-speed FTDI and 1 full-speed FTDI. So it requires at least 18 high-speed INT EPs. MUSB driver only has 11 high-speed EPs for mode-4 which is the EP configuration used by default. I am wondering how those devices got enumerated properly.dynamic EP allocation, but that has its own limitations.MUSB does not support dynamic EP allocation for INT/ISOCH.I remember isoc doesn't, not sure about int. Do you remember where that part of the code is off the top of your head ?
The MUSB EP allocation is in musb_schedule() in musb_host.c.It does not have specific policy for INT/ISOCH, but the issue is that for periodic EP, it got allocated during device enumeration but freed only when the device is disconnected. So practically there is no dynamic EP allocation for INT/ISOCH.
Regards, -Bin. -- 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