We are having issues getting our C6678 to enumerate on the PCIe bus.
The 6678 is configured as a PCIe Endpoint on our custom card, and it appears that at sometime during the enumeration process, the PCIe state machine (LTSSM) in the DSP is disabled (LTSSM_EN = 0).
We suspect that this occurs when the DSP receives a PCIe Hot Reset sometime during enumeration.
We are booting up in PCIe mode, so there is no code running that would allow the DSP to re-enable the LTSSM.
We took a look at the TI Forum, and identified a couple of posts that appear to be related to ours:
http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/348306.aspx?pi303753=1
Eventually gives a hint that the PCIe reset ( PERST#) needs to reset the DSP, and that monitoring LTSSM and resetting LTSSM_EN is needed if PERST# isn't there(?)
http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/221855/783786.aspx#783786
Here the discussion is about a system with 2 FPGAs and 2 DSPs and a switch card, and the DSPs don't enumerate but the FPGA's do. This is similar to what we are seeing in our system.
The user eventually states that he sent a hot reset to the DSP, and the LTSSM state went to 0, which matches our suspicion.
Also, in section 2.11.2.1, step 6 of SPRUG56C states "Upon reset, the LTSSM_EN is de-asserted automatically
by hardware." I am not sure which reset they are talking about.
Is it true that the C6678 DSP LTSSM is disabled after receiving a Hot Reset?
If so, how should this issue be dealt with if booting over PCIe, and there is no DSP SW running?