This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/DM385: How many USB UART port supported by DM385?

Part Number: DM385

Tool/software: Linux

Customer extended 10 USB UART port by HUB, they can be emurated by DM385 and can found the node under /dev/ttyACMX, but can only open 5 of them, over 5 return error, customer debug find the error occur on urb create, how can it support more USB UART?

And we found each USB UART need 3 endpoints in this wiki:  

in below wiki page, AM335x USB has 15 endpoint, DM385 should be the same USB IP. 

http://processors.wiki.ti.com/index.php/StarterWare_USB#Comparison_to_StellarisWare_USB

but on both AM335x and DM385 TRM, the USB 2.0 has 15 RX and 15 TX endpoints, totally 30 endpoints, not 15.

Need your clarification the endpoint number, and confirm the max USB UART ports can be supported?

  • Hi,

    You are right. If it is DM38x, then it supports 15 EPs as opposed to DM36x which supports 4 EPs. Can you check if there is any musb layer error in kernel log when open is done ?
  • Customer said, there is no log message about that.

    they track into driver/kernel, find the problem on musb_schedule( ) in musb_host.c, it return ENOSPC.

    the function check resource from resource pool, if not available:

    - if it is bulk endpoint, then get reserved bulk endpoint( full speed to full speed, high speed to high speed, can't be high speed to full speed)

    - if it other endpoint( for example interrupt endpoint) then return ENOSPC (-28).

    customer's extended device all are full speed, so they modified as below:

    -- change interrupt endpoint attribution to bulk endpoint in cdc_acm driver, and create bulk urb.

    -- change MSB_POWER register, force it to work in full speed mode.

    with those modification, can support more device, but it is not stable, it is prone to disconnect and time out.

    Need your advises~~~

  • Hi Tony,
    Though there is limit in the no. of isochronous and interrupt endpoints (15 EPs), but still it should be able to allocate 5. Can you check what is the fifo_mode value in the musb_core.c, if dyn_fifo is enabled ?
  • Already enabled fifo_mode, same result: not stable when more than 5.

    Yes, it is able to support up to 5. but customer need up to 10.

  • Hi Tony,

    What is the value set for fifo_mode ?

    Can you share the disconnect and timeout logs ? Which layer timesout ?