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
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.
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 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