/** * Deassert GPIO port reset. * * Transition to LinkStateResetDuration state * * @param[in] CurrentEngine Pointer to engine config descriptor * @param[in] Pcie Platform configuration * */ VOID PcieTrainingDeassertReset ( IN PCIe_ENGINE_CONFIG *CurrentEngine, IN PCIe_PLATFORM_CONFIG *Pcie ) { PCIe_SLOT_RESET_INFO ResetInfo; ResetInfo.ResetControl = DeassertSlotReset; ResetInfo.ResetId = CurrentEngine->Type.Port.PortData.ResetId; LibAmdMemCopy (&ResetInfo.StdHeader, GnbLibGetHeader (Pcie), sizeof (AMD_CONFIG_PARAMS), GnbLibGetHeader (Pcie)); AgesaPcieSlotResetControl (0, &ResetInfo); PcieTrainingSetPortState (CurrentEngine, LinkTrainingResetTimeout, TRUE, Pcie); }
/** * Assert GPIO port reset. * * Transition to LinkStateResetDuration state * * @param[in] CurrentEngine Pointer to engine config descriptor * @param[in] Pcie Pointer to global PCIe configuration * */ VOID STATIC PcieTrainingAssertReset ( IN PCIe_ENGINE_CONFIG *CurrentEngine, IN PCIe_PLATFORM_CONFIG *Pcie ) { PCIe_SLOT_RESET_INFO ResetInfo; ResetInfo.ResetControl = AssertSlotReset; ResetInfo.ResetId = CurrentEngine->Type.Port.PortData.ResetId; LibAmdMemCopy (&ResetInfo.StdHeader, GnbLibGetHeader (Pcie), sizeof (AMD_CONFIG_PARAMS), GnbLibGetHeader (Pcie)); PcieConfigRunProcForAllEngines ( DESCRIPTOR_ALLOCATED | DESCRIPTOR_PCIE_ENGINE, PcieSetResetStateOnEnginesV2, (VOID *)&CurrentEngine->Type.Port.PortData.ResetId, Pcie ); AgesaPcieSlotResetControl (0, &ResetInfo); }
/** * Deassert GPIO port reset. * * Transition to LinkStateResetDuration state * * @param[in] CurrentEngine Pointer to engine config descriptor * @param[in] Pcie Platform configuration * */ VOID PcieTrainingDeassertResetV2 ( IN PCIe_ENGINE_CONFIG *CurrentEngine, IN PCIe_PLATFORM_CONFIG *Pcie ) { PCIe_SLOT_RESET_INFO ResetInfo; ResetInfo.ResetControl = DeassertSlotReset; ResetInfo.ResetId = CurrentEngine->Type.Port.PortData.ResetId; LibAmdMemCopy (&ResetInfo.StdHeader, GnbLibGetHeader (Pcie), sizeof (AMD_CONFIG_PARAMS), GnbLibGetHeader (Pcie)); AgesaPcieSlotResetControl (0, &ResetInfo); GnbLibPciRMW ( CurrentEngine->Type.Port.Address.AddressValue | DxFxx68_ADDRESS, AccessWidth32, (UINT32) ~DxFxx68_LinkDis_MASK, 0 << DxFxx68_LinkDis_OFFSET, GnbLibGetHeader (Pcie) ); PcieTrainingSetPortStateV2 (CurrentEngine, LinkTrainingResetTimeout, TRUE, Pcie); }