diff options
author | Thi Tran <thi@us.ibm.com> | 2014-01-15 08:02:08 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-01-15 13:39:24 -0600 |
commit | 6edbadc455c9d18b5b956f0204de5d9cba359da2 (patch) | |
tree | 9e868aaf8d24d37e4c4cde0cf2af7801c9854476 /src/usr/hwpf/hwp/dram_initialization | |
parent | 64e21a1e6626fae91eae03b560bfd2b2d97d248f (diff) | |
download | talos-hostboot-6edbadc455c9d18b5b956f0204de5d9cba359da2.tar.gz talos-hostboot-6edbadc455c9d18b5b956f0204de5d9cba359da2.zip |
INITPROC: Hostboot SW238407 Masked bits for PCINESTFIR
Change-Id: I08f9fd35929b25add2f9949d0e751f07be82aa42
CQ:SW238407
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8076
Tested-by: Jenkins Server
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/dram_initialization')
-rw-r--r-- | src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.C | 72 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.H | 9 |
2 files changed, 72 insertions, 9 deletions
diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.C b/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.C index 7b1cd0ac4..458e919ae 100644 --- a/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.C +++ b/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: proc_pcie_config.C,v 1.4 2013/01/20 19:28:14 jmcgill Exp $ +// $Id: proc_pcie_config.C,v 1.6 2014/01/14 19:25:02 jmcgill Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_pcie_config.C,v $ //------------------------------------------------------------------------------ // *! (C) Copyright International Business Machines Corp. 2012 @@ -102,8 +102,9 @@ fapi::ReturnCode proc_pcie_config_pbcq_fir( const fapi::Target & i_target) { fapi::ReturnCode rc; + uint32_t rc_ecmd = 0; - ecmdDataBufferBase zero_data(64); + ecmdDataBufferBase data(64); // mark function entry FAPI_INF("proc_pcie_config_pbcq_fir: Start"); @@ -112,9 +113,17 @@ fapi::ReturnCode proc_pcie_config_pbcq_fir( for (size_t i = 0; i < PROC_PCIE_CONFIG_NUM_PHB; i++) { // clear FIR + rc_ecmd |= data.flushTo0(); + if (rc_ecmd) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error 0x%x setting up PCIE Nest FIR clear data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } rc = fapiPutScom(i_target, PROC_PCIE_CONFIG_PCIE_NEST_FIR[i], - zero_data); + data); if (!rc.ok()) { FAPI_ERR("proc_pcie_config_pbcq_fir: Error from fapiPutScom (PCIE%d_FIR_0x%08X)", @@ -125,7 +134,7 @@ fapi::ReturnCode proc_pcie_config_pbcq_fir( // clear FIR WOF rc = fapiPutScom(i_target, PROC_PCIE_CONFIG_PCIE_NEST_FIR_WOF[i], - zero_data); + data); if (!rc.ok()) { FAPI_ERR("proc_pcie_config_pbcq_fir: Error from fapiPutScom (PCIE%d_FIR_WOF_0x%08X)", @@ -133,10 +142,59 @@ fapi::ReturnCode proc_pcie_config_pbcq_fir( break; } - // clear FIR mask + // set action0 + rc_ecmd |= data.setDoubleWord(0, PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION0_VAL); + if (rc_ecmd) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error 0x%x setting up PCIE Nest FIR Action0 register data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutScom(i_target, + PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION0[i], + data); + if (!rc.ok()) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error from fapiPutScom (PCIE%d_FIR_ACTION0_0x%08X)", + i, PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION0[i]); + break; + } + + // set action1 + rc_ecmd |= data.setDoubleWord(0, PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION1_VAL); + if (rc_ecmd) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error 0x%x setting up PCIE Nest FIR Action1 register data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + + rc = fapiPutScom(i_target, + PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION1[i], + data); + if (!rc.ok()) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error from fapiPutScom (PCIE%d_FIR_ACTION1_0x%08X)", + i, PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION1[i]); + break; + } + + // set mask + rc_ecmd |= data.setDoubleWord(0, PROC_PCIE_CONFIG_PCIE_NEST_FIR_MASK_VAL); + if (rc_ecmd) + { + FAPI_ERR("proc_pcie_config_pbcq_fir: Error 0x%x setting up PCIE Nest FIR Mask register data buffer", + rc_ecmd); + rc.setEcmdError(rc_ecmd); + break; + } + rc = fapiPutScom(i_target, PROC_PCIE_CONFIG_PCIE_NEST_FIR_MASK[i], - zero_data); + data); if (!rc.ok()) { FAPI_ERR("proc_pcie_config_pbcq_fir: Error from fapiPutScom (PCIE%d_FIR_MASK_0x%08X)", diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.H b/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.H index c2920cb15..5b11073ca 100644 --- a/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.H +++ b/src/usr/hwpf/hwp/dram_initialization/proc_pcie_config/proc_pcie_config.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: proc_pcie_config.H,v 1.1 2012/11/05 21:52:37 jmcgill Exp $ +// $Id: proc_pcie_config.H,v 1.2 2014/01/13 18:21:59 jmcgill Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_pcie_config.H,v $ //------------------------------------------------------------------------------ // *! (C) Copyright International Business Machines Corp. 2012 @@ -92,6 +92,11 @@ const uint32_t PROC_PCIE_CONFIG_PCIE_NEST_FIR_MASK[PROC_PCIE_CONFIG_NUM_PHB] = PCIE2_FIR_MASK_0x02012803 }; +const uint64_t PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION0_VAL = 0x5B8F819000000000ULL; +const uint64_t PROC_PCIE_CONFIG_PCIE_NEST_FIR_ACTION1_VAL = 0x7F8F819000000000ULL; +const uint64_t PROC_PCIE_CONFIG_PCIE_NEST_FIR_MASK_VAL = 0x0030006E00000000ULL; + + //------------------------------------------------------------------------------ // Structure definitions //------------------------------------------------------------------------------ |