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/DRA829V supports multiple PCIe reference clock (refclk) configurations, where each of the SERDES reference clock can be supplied from either external input or from on-chip PLL output. Additionally, the SOC can output standard 100MH reference clocks to driven external devices.
With these configurations, system integrators can create PCIe interconnections based on either Common Reference Clock or Separate (distributed) Reference Clock architecture.
This article explains how to route the PCIe refclk externally, and how to test it on the TDA4VM/DRA829 EVM.
By default, the EVM and stock Linux SDK software uses the following configuration:
To route the TDA4VM refclk to the PCIe slot, and test on the EVM, the following steps are needed:
1. Perform resistor modification on the EVM, to route TDA4VM refclk to the PCIe slots:
2. Apply the out-of-tree patch as attached in this article to Linux PCIe driver source code. This patch perform the following tasks:
Note that since the SERDES are already using internal PLL ouputs, all we did with the patch was just to route the SERDES clock to the REFCLK IO buffers then enables them.
3. (optional) If for any reason the end-point device is not recognized, perform a manual rescan of the PCIe interface, by issuing following commands on the Linux prompt:
echo 1 > /sys/bus/pci/devices/0002:00:00.0/remove (shown NVME node, replace the device node if using other slots)
echo 1 > /sys/bus/pci/rescan
4. By now the PCIe device shall be clocked by the TDA4VM.
In case of debug and testing, the following registers shall be checked using devmem2 utility on the Linux command prompt (using NVME slot as example, update register address if other other slots):
· //enable PADs of ACSPCIe
devmem2 0x00118094 reads 0x01000000 as expected.
· //refclk select for ACSPCIe
devmem2 0x00108078 read 0x00000100 as expected.
Patch for SDK7.3:
Patch for SDK8.x:
Hi all,
Updated patch for SDK8.6:
0001-PCIe-internal-refclk-patches-for-8.6-SDK-on-TDA4VM-J.patch
For SDK7.3 and SDK8.x, on top of patches posted by Jian, additional patches needed in dts device tree files for selecting the correct clock for serdes:
0001-DTS-changes-for-internal-PCIe-refclk-needed-on-top-o.patch
If the internal refclk is used due to board modification, and if below errors are showing up in dmesg, then the above dts file patch should resolve this issue.
[ 1.658310] cdns-sierra-phy 5000000.serdes: PLL lock of lane failed
[ 1.669163] phy phy-5000000.serdes.1: phy poweron failed --> -110
[ 1.675390] j721e-pcie 2900000.pcie: Failed to init phy
[ 1.680756] j721e-pcie: probe of 2900000.pcie failed with error -110
Regards,
Takuma