diff options
author | Thi Tran <thi@us.ibm.com> | 2014-06-30 09:36:45 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-07-14 13:44:34 -0500 |
commit | 324b0b69f5a3f5fcf546d98e7510218ab0fa5131 (patch) | |
tree | dbfdc0f392eeb1a913bb7c30d5843045cbaf99bd /src/usr/hwpf/hwp/build_winkle_images | |
parent | 45267fc417c04f6a15f9273f42f11880c348760e (diff) | |
download | talos-hostboot-324b0b69f5a3f5fcf546d98e7510218ab0fa5131.tar.gz talos-hostboot-324b0b69f5a3f5fcf546d98e7510218ab0fa5131.zip |
SW267246: poreslw_init - Code propagation
CQ:SW267246
Change-Id: I6ef0f81d1f05fc11e1f0ee6b2e74cf75c7ab1411
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11842
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Tested-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11879
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/build_winkle_images')
-rw-r--r-- | src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C index e745e07f9..82a76d9f4 100644 --- a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C +++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C @@ -22,7 +22,7 @@ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: p8_poreslw_init.C,v 1.21 2014/02/17 18:30:20 stillgs Exp $ +// $Id: p8_poreslw_init.C,v 1.26 2014/06/27 17:23:36 stillgs Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_poreslw_init.C,v $ //------------------------------------------------------------------------------ // *! (C) Copyright International Business Machines Corp. 2011 @@ -416,7 +416,8 @@ poreslw_ex_setup(const Target& i_target) uint8_t pm_winkle_entry ; uint8_t pm_winkle_exit ; - + uint8_t core_vret_voff_value; + uint8_t eco_vret_voff_value; // These enums must match the enum values in pm_hwp_attributes.xml @@ -478,12 +479,16 @@ poreslw_ex_setup(const Target& i_target) pm_sleep_exit = 0; // 0=assisted, 1=HW pm_sleep_type = 1; // 0=fast, 1=deep + // Due to L3 High Availability Write Pointers that must be // saved upon a Deep Winkle Entry, this transition must be // assisted. pm_winkle_entry = 0; // 0=assisted, 1=HW pm_winkle_exit = 0; // 0=assisted, 1=HW pm_winkle_type = 1; // 0=fast, 1=deep + + core_vret_voff_value = 0x0B; // Default PFET control values for Deep + eco_vret_voff_value = 0x0B; // Default PFET control values for Deep // Sleep /* @@ -613,12 +618,14 @@ poreslw_ex_setup(const Target& i_target) // else sleep type = 0 (fast), sleep power up sel = 0 if (pm_sleep_type) { - e_rc |= set_data.setBit(PM_SLEEP_POWER_OFF_SEL_BIT); + e_rc |= set_data.setBit(PM_SLEEP_POWER_OFF_SEL_BIT); } else { e_rc |= clear_data.clearBit(PM_SLEEP_POWER_OFF_SEL_BIT); + core_vret_voff_value = 0x00; + eco_vret_voff_value = 0x00; } // If winkle entry = 1 (hardware), winkle power down enable = 1 @@ -653,6 +660,8 @@ poreslw_ex_setup(const Target& i_target) else { e_rc |= clear_data.clearBit(PM_WINKLE_POWER_OFF_SEL_BIT); + core_vret_voff_value = 0x00; + eco_vret_voff_value = 0x00; } // Check for any errors from set/clear ops into the buffers @@ -815,6 +824,44 @@ poreslw_ex_setup(const Target& i_target) rc = p8_pm_pcbs_fsm_trace_chip(i_target, "poreslw_init after OCC clearing Special Wakeup"); if (!rc.ok()) { break; } } + + // ------------------------------------------------------------- + FAPI_DBG("\tSetting Core Voff Settings"); + e_rc |= data.flushTo0(); + e_rc |= data.insertFromRight(core_vret_voff_value, 0, 8); + if (e_rc) + { + FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc); + rc.setEcmdError(e_rc); + break; + } + + address = EX_CorePFVRET_REG_0x100F0130 + (0x01000000 * l_ex_number); + rc = fapiPutScom(i_target, address, data ); + if(!rc.ok()) + { + FAPI_ERR("PutScom error 0x%08llu", address); + break; + } + + // ------------------------------------------------------------- + FAPI_DBG("\tSetting ECO Voff Settings"); + e_rc |= data.flushTo0(); + e_rc |= data.insertFromRight(eco_vret_voff_value, 0, 8); + if (e_rc) + { + FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc); + rc.setEcmdError(e_rc); + break; + } + + address = EX_ECOPFVRET_REG_0x100F0150 + (0x01000000 * l_ex_number); + rc = fapiPutScom(i_target, address, data ); + if(!rc.ok()) + { + FAPI_ERR("PutScom error 0x%08llu", address); + break; + } // -------------------------------------- // Initialize the special wake-up tracking attributes |