Hi,
we have been reviewing answers on e2e such as below, and are looking for confirmation that it is possible to reset a C6678 without having to do a POR. We are looking for a working proven mechanism to do the reset via PCIe from an external PCIe RC Host.
During warm boot, the reset is coming from platform reset, by executing Windows 10 restart, power stays on for entire platform. Windows 10 will perform PCIe bus reset, which causes typical PCIe cards to performs their own reset operations and come to the same consistent state as from cold reset. Unfortunately C6678 does not respond to PCIe bus reset currently in any way. As a result of this situation, upon Windows 10 reboot and C6678 Windows driver re-loading, it finds C6678 in unknown state.
What we need to do in this situation is to bring C6678 into consistent state, which would be to perform a reset operation on it via PCIe. Doing so is a common practice for Windows 10 drivers, which communicate with a peripheral device. What we are inquiring about is a 100% reliable way of resetting C6678 via PCIe. If it is possible, then please advise how to accomplish that.
As a side note, here is the current Cold boot flow:
During cold boot, the reset is coming from power off state, Windows 10 boots and enumerates PCIe bus. By that time C6678 completes its own POR reset and runs its boot rom code, which enables PCIe support (thus Windows can see C6678 as PCIe type device). Then Windows 10 device driver for C6678 will set up inbound and outbound translation, and configure C6678 using access to its registers via PCIe. Driver will then initialize C6678 PLLs, MSMC, DDR and program IBL, instruct C6678 jump to IBL, then program app and instruct C6678 jump to app to start executing it. Finally Windows 10 driver for C6678 will declare it ready.
The sequence above works well.
Could you comment on how to accomplish a reliable reset via PCIe bus reset?
Thanks,
--Gunter