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.

DM8148 EVM PCIe test

Other Parts Discussed in Thread: TUSB7340

has anybody tested the PCIe port with an of the shelf PCIe card?

I know there is a diagnostic test from Mistral that sends and receives a few packet but one of my customer struggling with a real PCIe application!

 

thanks

F

  • I've successfully used a TUSB7340 EVM from TI with the TI8148 EVM.  I needed to disable MSI and fell back to legacy PCI interrupts as there seems to be a problem there.  Additionally, I had to setup a PCI quirk to set the Max Read Request Size to 256 since the TUSB7340 defaults to 512 (off the top of my head...).  The PCIe device enumerates and loads the xHCI driver, USB 3.0, 2.0, and 1.1 work from there.  Tested with a USB 3.0 HDD, numerous USB 2.0 flash drives, and a low speed keyboard.

     

    The TI wiki ( http://processors.wiki.ti.com/index.php/DM81xx_AM38xx_PCI_Express_Root_Complex_Driver_User_Guide ) also describes how to make everything work with a Broadcom NetXtreme BCM5751 based Gigabit Ethernet Controller.

  • Thanks Kyle

    That was good info and great help,

    Faraz

  • Thanks for the hint ! Now my TUSB7340 seems to works too.

    If you want to use MSI than just comment out in /drivers/usb/host/xhci.c at the int xhci_run the lines (around line 400)

    ret=xhci_setup_msic(xhci);

    if (ret)

    So that the TUSB7340 uses MSI and not MSI-X - for me it seems that the TI814x isn't able to do MSI-X.

    Regards, Andy

  • Hi,

    Can you please clarify if you commented the following?

    //        ret = xhci_setup_msix(xhci);
    //        if (ret)
                    /* fall back to msi*/
                    ret = xhci_setup_msi(xhci);

    ... and thus used MSI? Or did you use legacy interrupt as Kyle mentioned earlier in this thread?

    I want to rule out any issue in MSI handling on 816x, 814x, ideally xhci_setup_msix() should return error but xhci_setup_msi() should succeed.

    I am particularly referring to the error you got for MSI on thread:

    xhci_hcd 0000:01:00.0: Failed to enable MSI-X
    >>> xhci_hcd 0000:01:00.0: failed to allocate MSI entry

    (Sorry for not following up earlier as I was offline most of the time last month.)

       Thanks.

  • Yes, this is right - this will use MSI, not MSI-X or legacy interrupts.

    And Yes I think too, that the xhci_setup_msix() should not succeed.

    The log with the msi error you mentioned was made with msi/msi-x disabled in the kernel, to show that I've tested all I can ;) - the "right" log - with mis/msi-x enabled in the kernel looks like that:

    ...

    PCI: enabling device 0000:01:00.0 (0140 -> 0142)
    xhci_hcd 0000:01:00.0: xHCI Host Controller
    xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 3
    xhci_hcd 0000:01:00.0: irq 48, io mem 0x20000000

    ...

    and a cat on /proc/interrupts will show something like that:

               CPU0
      4:          0        INTC  omap2_elm
     12:        205        INTC  edma
     14:          0        INTC  edma_error
     16:          0        INTC  ahci
     17:          0        INTC  cppi41_dma
     18:          1        INTC  musb-hdrc.0
     19:          1        INTC  musb-hdrc.1
     28:        607        INTC  mmc0
     30:          1        INTC  omap_i2c
     38:          0        INTC  HDMI
     40:          0        INTC  cpsw.0
     41:      32504        INTC  cpsw.0
     42:      30681        INTC  cpsw.0
     43:          0        INTC  cpsw.0
     44:          0        INTC  serial idle
     45:          0        INTC  serial idle
     46:          0        INTC  serial idle
     67:       1629        INTC  gp timer
     70:        251        INTC  omap_i2c
     72:        337        INTC  serial idle, OMAP UART0
     73:          0        INTC  serial idle
     74:          0        INTC  serial idle
     75:          0        INTC  rtc0
     76:          0        INTC  rtc0
     77:       2439        INTC  mailbox-dsp, mailbox-video, mailbox-vpss
    122:          0        INTC  omap-iommu.1
    123:          0        INTC  omap-iommu.0
    368:          0    PCIe-MSI  xhci_hcd

    ...

    Regards, Andy

  • Hi Kyle Manna,

    Can you please tell me, in which file (kernel source code) exactly you changed the Max read request size from 512 to 256.

    I am also facing the same issue and I am using DM8168 processor.

    Thanks in advance.

    Regards,
    Salih