summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/prodrive/atlas/romstage_fsp_params.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mainboard/prodrive/atlas/romstage_fsp_params.c b/src/mainboard/prodrive/atlas/romstage_fsp_params.c
index 5c523c5cdc..fedb298ee4 100644
--- a/src/mainboard/prodrive/atlas/romstage_fsp_params.c
+++ b/src/mainboard/prodrive/atlas/romstage_fsp_params.c
@@ -60,4 +60,30 @@ void mainboard_memory_init_params(FSPM_UPD *memupd)
memupd->FspmConfig.CpuPcieRpClockReqMsgEnable[0] = 0;
memupd->FspmConfig.CpuPcieRpClockReqMsgEnable[1] = 0;
memupd->FspmConfig.CpuPcieRpClockReqMsgEnable[2] = 0;
+
+ // shared clock
+ memupd->FspmConfig.PcieClkSrcUsage[0] = 0x80;
+ memupd->FspmConfig.PcieClkSrcClkReq[0] = 0xFF;
+ // i225
+ memupd->FspmConfig.PcieClkSrcUsage[1] = 9; // RP 10
+ memupd->FspmConfig.PcieClkSrcClkReq[1] = 1;
+
+ // FIX Apparently Rootports don't like the idea of not having a clksrc and clkreq
+ // attached to it. For example if we set PcieClkSrcClkReq[1] above to 0xFF (unused)
+ // it will not come back out of L1. You can easily test this on windows by trying to
+ // update the i225 driver in device manager or use setpci in Linux to set Device in D3.
+ // The same applies to all other rootports no matter which devices are connected to it.
+ // Therefore we put each rootport (that does not have a clkreq, clksrc)
+ // to a not connected (not routed out) clksrc and clkreq. That seems to be a current FSP Bug.
+ // workaround and will be removed as soon as FSP is fixed.
+ memupd->FspmConfig.PcieClkSrcUsage[2] = 4; // Rootport 5
+ memupd->FspmConfig.PcieClkSrcClkReq[2] = 0;
+ memupd->FspmConfig.PcieClkSrcUsage[3] = 5; // Rootport 6
+ memupd->FspmConfig.PcieClkSrcClkReq[3] = 0;
+ memupd->FspmConfig.PcieClkSrcUsage[4] = 8; // Rootport 9
+ memupd->FspmConfig.PcieClkSrcClkReq[4] = 0;
+ memupd->FspmConfig.PcieClkSrcUsage[5] = 6; // Rootport 7
+ memupd->FspmConfig.PcieClkSrcClkReq[5] = 0;
+ memupd->FspmConfig.PcieClkSrcUsage[6] = 7; // Rootport 8
+ memupd->FspmConfig.PcieClkSrcClkReq[6] = 0;
}