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.

TDA4VL-Q1: How to enable USB 3.0 on TDA4VL EVM

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

Hello,

USB SSD is connected to type c port on TDA4VL EVM but it works in USB 2.0.

output of "lsusb -t" on TDA4VL

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M

But USB3.0 on TDA4VM, with same SSD and same type c cable

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M

How can I enable USB 3.0 on TDA4VL EVM?

if lsusb output has "/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M", is enabled SERDES for USB 3.0 ?

Best regards,

Wilson

  • HI Wilson 

    In the sdk usb is configured for the 2.0 as serdes is configured for the EDP and  PCI and only two protocol can be supported at a time.

    If you want to enable the EDP+USB you can take a look at this patch https://git.ti.com/cgit/ti-linux-kernel/ti-upstream-tools/tree/arch/arm64/boot/dts/ti/k3-j721s2-usb3.dtso?h=ti-linux-5.10.y

    Regards
    Diwakar

  • Hi Diwakar,

    SSD can't be detected with usb3 dtb. usb mode is DRD(SW3.3:0 SW3.4:1)

    lsusb shows only hubs.

    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    SSD detectoin can be done with "k3-j721s2-vision-apps.dtbo".

    With "k3-j721s2-vision-apps.dtbo k3-j721s2-usb3.dtbo", there was no output from lsusb.

    Best regards,

    Wilson.

  • Hi Wilson

    Which sdk version are you using ?

    SSD detectoin can be done with "k3-j721s2-vision-apps.dtbo".

    In which mode it is detecting super speed or high speed ?

    i tested with on 8.6 sdk with the suggested changes and could see that the SSD is getting detected in usb 3.0

    Regards
    Diwakar

  • Hi Diwakra

    I'm using 08.06.00.10_j721s2 and my status is as follows.

    • no overlay :  no ssd detection
    • k3-j721s2-vision-apps.dtbo : ssd detected but use 2.0
    • k3-j721s2-usb3.dtbo : no ssd detection

    Could you share your k3-j721s2-usb3.dtbo file? 

    Best regards,

    Wilson

  • Hi Wilson,

    Diwakar will address this once he gets back from vacation later this week.

    regards

    Suman

  • Hi Wilson

    i add the changes in the k3-j721s2-common-proc-board.dts

    attached the dtb which i used

     https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/k3_2D00_j721s2_2D00_common_2D00_proc_2D00_board.dtb

    Regards
    Diwakar

  • Hi Diwakar

    Thanks for sharing.

    SSD worked in USB 3.0 with your dtb!!!

    Could you share modified dts file and try overlay file?

    I need to switch to PCIE to use NVME SSD in some case.

    Thanks & regards,

    Wilson.

  • Hi Wilson 

    Could you share modified dts file and try overlay file?

    It should be possible with the overlay as well 

    here is the dtsi which i used 

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/k3_2D00_j721s2_2D00_common_2D00_proc_2D00_board.dts

    Regards
    Diwakar

  • Hi Diwakar

    Whenever I ran the ssd write test app, the app hung with with following kernel messages.
    Test code is attached.

    6371.main.cpp

    [  291.069205] Unable to handle kernel paging request at virtual address 00000000b0600028
    [  291.077174] Mem abort info:
    [  291.080008]   ESR = 0x96000005
    [  291.083092]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  291.088429]   SET = 0, FnV = 0
    [  291.091492]   EA = 0, S1PTW = 0
    [  291.094623] Data abort info:
    [  291.097506]   ISV = 0, ISS = 0x00000005
    [  291.101379]   CM = 0, WnR = 0
    [  291.104346] user pgtable: 4k pages, 48-bit VAs, pgdp=000000088716f000
    [  291.110773] [00000000b0600028] pgd=000000089410c003, p4d=000000089410c003, pud=0000000000000000
    [  291.119462] Internal error: Oops: 96000005 [#1] PREEMPT SMP
    [  291.125016] Modules linked in: xt_conntrack xt_MASQUERADE xt_addrtype iptable_filter iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c ip_tables x_tables br_netfilter bridge stp llc overlay xfrm_user xfrm_algo md5 ecb aes_neon_bs aes_neon_blk des_generic libdes cbc cdc_ether usbnet r8152 usb_storage usbhid bluetooth ecdh_generic ecc rfkill xhci_plat_hcd xhci_hcd rpmsg_char cdns3 udc_core roles usbcore usb_common cdns_csi2rx v4l2_fwnode ti_am335x_adc kfifo_buf crct10dif_ce phy_can_transceiver ti_k3_r5_remoteproc wave5 sa2ul j721e_csi2rx pvrsrvkm(O) v4l2_mem2mem ti_am335x_tscadc sha512_generic cdns_mhdp8546 videobuf2_dma_contig ti_k3_dsp_remoteproc authenc videobuf2_memops videobuf2_v4l2 virtio_rpmsg_bus cdns3_ti videobuf2_common cdns_dphy m_can_platform cdns_dsi m_can ti_sn65dsi86 can_dev optee_rng rng_core sch_fq_codel rpmsg_kdrv_switch fuse cryptodev(O) ipv6
    [  291.202995] CPU: 0 PID: 69 Comm: kworker/0:1H Tainted: G           O      5.10.162-g76b3e88d56 #1
    [  291.211842] Hardware name: Texas Instruments J721S2 EVM (DT)
    [  291.217495] Workqueue: kblockd blk_mq_run_work_fn
    [  291.222187] pstate: 20000005 (nzCv daif -PAN -UAO -TCO BTYPE=--)
    [  291.228179] pc : __blk_rq_map_sg+0x168/0x500
    [  291.232433] lr : __blk_rq_map_sg+0xd4/0x500
    [  291.236600] sp : ffff800011e139a0
    [  291.239900] x29: ffff800011e139a0 x28: ffff000807106598
    [  291.245196] x27: 0000000000000000 x26: ffff800011e13a90
    [  291.250493] x25: 0000000000000009 x24: 00000000b0600000
    [  291.255789] x23: ffff000807106300 x22: 0000000000000000
    [  291.261086] x21: 0000000000000000 x20: ffff000801c33dc0
    [  291.266382] x19: 0000000000001000 x18: 000000001944ac82
    [  291.271678] x17: 0000000029369975 x16: 00000000a0a996af
    [  291.276974] x15: 000002b5cebe55c2 x14: 00000000ffffffff
    [  291.282270] x13: 0000000bffffffff x12: 0000000000000001
    [  291.287566] x11: fffffe002c0f8d80 x10: 0000000000002000
    [  291.292863] x9 : ffff00003343bf78 x8 : ffff000809ea0000
    [  291.298159] x7 : 0000000000000001 x6 : 000000000000003f
    [  291.303455] x5 : ffff000809e9efe0 x4 : ffff00003343bf78
    [  291.308751] x3 : ffff800011e13a90 x2 : 0000000000000000
    [  291.314047] x1 : fffffe002c0f8d80 x0 : 0000000000000000
    [  291.319344] Call trace:
    [  291.321781]  __blk_rq_map_sg+0x168/0x500
    [  291.325692]  scsi_alloc_sgtables+0x80/0x2f0
    [  291.329864]  sd_init_command+0x150/0xa80
    [  291.333771]  scsi_queue_rq+0x274/0x828
    [  291.337506]  blk_mq_dispatch_rq_list+0x104/0x778
    [  291.342108]  blk_mq_do_dispatch_sched+0x280/0x2d8
    [  291.346795]  __blk_mq_sched_dispatch_requests+0x11c/0x1a0
    [  291.352177]  blk_mq_sched_dispatch_requests+0x38/0x78
    [  291.357211]  __blk_mq_run_hw_queue+0xac/0x128
    [  291.361550]  blk_mq_run_work_fn+0x20/0x30
    [  291.365548]  process_one_work+0x1a0/0x328
    [  291.369542]  worker_thread+0x4c/0x420
    [  291.373189]  kthread+0x140/0x160
    [  291.376405]  ret_from_fork+0x10/0x34
    [  291.379968] Code: 9a8b0021 f9004fe1 f9400318 b4001ad8 (29455716)
    [  291.386046] ---[ end trace ba2810956f680ff6 ]---

    Best regards,

    Wilson.

  • Hi Wilson 

    As the thread is related to enabling the USB3.0 and the above question is deviating from the title so please raise a new thread for the same

    mentioning the details like the usecase.

    Regards
    Diwakar

  • Hi Diwakar

    I will make another post. Let's concentrate on USB 3.0.

    I'll try DTB code you shared tomorrow.

    Regards,

    Wilson.

  • I'll try DTB code you shared tomorrow.

    Sure 

  • Hi Diwakar,

    I found reason why overlay doesn't work. According to https://elinux.org/Device_Tree_Source_Undocumented , "delete-property" is not supported in overlay.

    Best regards,

    Wilson

  • Hi Wilson 

    I found reason why overlay doesn't work. According to https://elinux.org/Device_Tree_Source_Undocumented , "delete-property" is not supported in overlay.

    Good to know , if you dont have any other question on the above topic we can close this thread.

    Regards
    Diwakar

  • Sure, please close.