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.

TDA4VM-Q1: How to software restart USB Controller for USB0/USB1?

Part Number: TDA4VM-Q1
Other Parts Discussed in Thread: TDA4VM

HI, Dear Expert.

Customer have a problem for "USB enumeration", connection concept as below.

TDA4VM USB0 (usb device mode) -> USB HUB -> USB MDD (display device) (usb host mode)

They found MDD "some times" does not enumerate successfully by TDA4, so I doubt TDA4 USB D+/D- do not return to default state, because we found USB D+ (DP) do not return to pull up 1.8V when enumerates failed.

Need debug suggestion, my question as below : 

Question 1 : Do we have way to restart (reset) TDA4 USB controller in Linux?

Question 2 : Do we have any USB status register to identify error happens? 

Question 3 : Do we have any register to know pin USB0_VBUS or USB1_VBUS status? because I want to know how to detect USB host attach.

Already ref this thread, I think it should be similar to our debug case.

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1016567/j721exsomxevm-usb-modem-not-recognized-in-j7/3766182?tisearch=e2e-sitesearch&keymatch=PWRUP_RST_N#3766182

And already start debugging

Many Thanks

Gibbs

  • Hi Gibbs,

    Not sure what customer is doing below, 

    TDA4VM USB0 (usb device mode) -> USB HUB -> USB MDD (display device) (usb host mode)

    Can you further describe their use case? What is MDD here?

    Is the issue seen at the Linux bootloader or the Kernel level? The Linux USB driver does not provide any such support to restart the controller.

    Will wait for your response before we can answer your queries.

    Thanks.

  • Hi, Praveen

    Thanks your replies

    let's me show their application diagram first

    This application is CID (Central Information Display) in car, and MDD is a "Mirroring Display Device". Basically, you can think MDD is a smart phone, it  automatic mirror it's display to CID screen when MDD plug in. The problem is : automatic mirror display failed when MDD plugin some times. After repeat SW/HW debugging, we already know TDA4 USB D+ signal not to return default status, we not sure the reason.

    About your question.

    Q 1: Is the issue seen at the Linux bootloader or the Kernel level?

    A 1: TDA4 works well in Linux, I think this is a USB device mount problem, and already ask customer dump related "dmesg" in user space. 

    Q2 : Linux USB driver does not provide any such support to restart the controller.

    A2 : I think (guess) we can "re-mount (bind) " TDA4 linux "USB controller (device) related driver"  when error happens, and check this workaround works or not. So we need related command. I think R/W register is also fine.

    Thanks

    Gibbs

  • Hello Gibbs,

    Thanks for the diagram and answers to the questions. We understand the use-case much better.

    Now, to answer you queries:

    -1- The Linux driver does not have a way to reset the TDA4 USB controller. 

    For -2- and -3-, we will have to check internally and get back to you in a 1-2 days.

    Thanks.

  • Hello Praveen,

    Follow last discussion, should we have any update?

    Many Thanks

    Gibbs

  • Hi Gibbs,

    Thanks for your patience on this.

    The registers for the USB SS can be found in the PSDK RTOS path pdk<version>/packages/ti/csl/src/ip/usb/V5/V5_1/cslr_usb3p0ss.h

    For your query 2, we could not find this support.

    For your query 3, Suggest checking the USB3P0SS_CTRL_DRD_OTGSTS (0x06000014), see above header file to check bit field.

    Thanks.

  • Hi, Praveen

    Thanks your replies.

    Do we have any example code (ex:PSDK RTOS), it tell us how to "restart USB controller"?

    Thanks

    Gibbs

  • Hi Gibbs,

    The PSDK RTOS does not provide support for USB, Hence there is no example code. The above is just the CSL header file having the USB register definitions.

    Thanks.