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.

TMDSEVM6657LE fails after a soft reboot

Hi all,

So, we currently have the TMDSEVM6657LE. Since we wanted to use this over PCIe, we have it plugged into the AMC to PCIe Adapter card.

Currently, on a cold boot (turn the machine completely off, and then back on), the card shows up properly in lspci. However, if we then reboot the machine (a warm boot), the card no longer shows up in lspci.

I was wondering if anyone has any ideas on how to go about making the card continue to show up after a soft reboot. I'd be glad to give any further information that I can, but I'm not sure what information is useful.

We are running this under Linux (Ubuntu 10.04) in a Dell PowerEdge T410.

Thanks!
Bill Lynch

  • Bill,

    The PCIe module in C66x does not have reset isolation feature. Every time the DSP or host PC receives reset, the PCIe link will be down and the PCIe module needs to re-initialized to get the link up (re-train the link).

    The ROM PCIe boot code (EVM set in PCIe boot mode) usually initializes the PCIe module. I guess when you reset the host machine, the DSP EVM does not get reset and the ROM boot process does not be re-initialized (PCIe boot code does not be re-run).

    Probably you would like to reset the EVM along with the host machine and let PCIe boot code to re-initialize the PCIe module.

    Or you can re-run the PCIe initialize code on DSP to get PCIe module ready for enumeration along with resetting host machine. The PCIe LLD example project (C:\ti\pdk_C6657_1_1_1_4\packages\ti\drv\exampleProjects\PCIE_exampleProject)  has the example initialization code for PCIe (from "main()" to "System_printf ("Link is up.\n");").

    The timing of the second choice might be tricky since you need to make sure the PCIe is re-initialized before Host machine finishes the enumeration.

  • One followup question that I'm not sure about, and might make this clear to me.

    Do you know what steps the PCI core should be taking on a soft reboot? I'm wondering because this may allow me to write some code to the DSP so that I can prep the card for a reboot.

    Or, am I misunderstanding, and that when a soft reboot occurs, does the DSP get completely rebooted, but the host expects it to have retained certain parts of the configuration?

    Thanks!

  • What I thought that you rebooted the Linux machine but the DSP card stayed alive. But I could be wrong.

    My point is no matter which side get reset (either host machine or DSP card), we need to re-train the PCIe link on both sides to get the link up again.

    If DSP gets reset (either along with host machine in the case of cold reset, or reset by itself), the PCIe registers will be reset to default values. If the EVM is setup to PCIe boot mode, the boot ROM code will take care of the PCIe initialization on DSP side for the link up. If the EVM is in other boot mode, we need to run some code to initialize the PCIe module for the link up. The PCIe LLD example as I mentioned before has the procedure of manual initialization.

    If the DSP card stays alive when you reset host machine, the PCIe modules registers in DSP remain the current setup, but it could not re-train the PCIe link, which was broken when reset host machine. In this case, we may need to manually set LTSSM_EN to 1 again to retrain the link on DSP side.