diff --git a/openpower/package/hostboot/hostboot-0004-Downgrade-OCC-Config-Data-Version-if-no-FIR-Master.patch b/openpower/package/hostboot/hostboot-0004-Downgrade-OCC-Config-Data-Version-if-no-FIR-Master.patch
new file mode 100644
index 0000000..4cda4f5
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0004-Downgrade-OCC-Config-Data-Version-if-no-FIR-Master.patch
@@ -0,0 +1,42 @@
+From 93266f96f39f038fc8ad396a5df316c07980f4bf Mon Sep 17 00:00:00 2001
+From: Dan Crowell <dcrowell@us.ibm.com>
+Date: Sat, 28 Feb 2015 11:54:47 -0600
+Subject: [PATCH 3/4] Downgrade OCC Config Data Version if no FIR Master
+
+Change-Id: Idc48298a9c3068da2216172da474ebff93eb3839
+(cherry picked from commit f84f34cc5628d9e7d7d55d0e95462b3fe22d80d5)
+---
+ src/include/usr/hwpf/hwp/occ/occ_common.H |    2 ++
+ src/usr/hwpf/hwp/occ/occ_common.C         |    3 +++
+ 2 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/src/include/usr/hwpf/hwp/occ/occ_common.H b/src/include/usr/hwpf/hwp/occ/occ_common.H
+index ca7ab39..7ddb302 100644
+--- a/src/include/usr/hwpf/hwp/occ/occ_common.H
++++ b/src/include/usr/hwpf/hwp/occ/occ_common.H
+@@ -58,6 +58,8 @@ namespace HBOCC
+     enum
+     {
+         OccHostDataVersion = 3,
++        PRE_FIR_MASTER_VERSION = 2,
++
+         OCC_LIDID = 0x81e00430,
+         OCC_IBSCOM_RANGE_IN_MB = MEGABYTE,
+ 
+diff --git a/src/usr/hwpf/hwp/occ/occ_common.C b/src/usr/hwpf/hwp/occ/occ_common.C
+index 98e6382..0373727 100644
+--- a/src/usr/hwpf/hwp/occ/occ_common.C
++++ b/src/usr/hwpf/hwp/occ/occ_common.C
+@@ -170,6 +170,9 @@ namespace HBOCC
+         }
+ #else
+         config_data->firMaster = 0;
++        //force to an older version so we can support
++        // older levels of OCC
++        config_data->version = PRE_FIR_MASTER_VERSION;
+ #endif
+ 
+         TRACUCOMP( g_fapiTd,
+-- 
+1.7.4.1
+
diff --git a/openpower/package/hostboot/hostboot-0004-revert-OCC-v3.patch b/openpower/package/hostboot/hostboot-0004-revert-OCC-v3.patch
deleted file mode 100644
index 5999ffc..0000000
--- a/openpower/package/hostboot/hostboot-0004-revert-OCC-v3.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-From 4619901bd09eccbe26d430195c4e8019f6993b0b Mon Sep 17 00:00:00 2001
-From: Matt Ploetz <maploetz@us.ibm.com>
-Date: Mon, 23 Feb 2015 17:09:14 -0600
-Subject: [PATCH] Revert "Set FIR master in HOMER config data"
-
-This reverts commit 84023756531d9c48d2e4939326f4048f2dadbe28.
----
- src/include/usr/hwpf/hwp/occ/occ_common.H | 27 ++----------------
- src/usr/diag/HBconfig                     |  6 ----
- src/usr/hwpf/hwp/occ/occ.C                |  2 +-
- src/usr/hwpf/hwp/occ/occ_common.C         | 46 +++++++++++++++++++------------
- src/usr/hwpf/hwp/occ/runtime/rt_occ.C     |  2 +-
- 5 files changed, 33 insertions(+), 50 deletions(-)
-
-diff --git a/src/include/usr/hwpf/hwp/occ/occ_common.H b/src/include/usr/hwpf/hwp/occ/occ_common.H
-index 8245539..1886e51 100644
---- a/src/include/usr/hwpf/hwp/occ/occ_common.H
-+++ b/src/include/usr/hwpf/hwp/occ/occ_common.H
-@@ -36,38 +36,19 @@ namespace HBOCC
-     struct occHostConfigDataArea_t
-     {
-         uint32_t version;
--
--        //For computation of timebase frequency
-         uint32_t nestFrequency;
--
--        // For determining the interrupt type to Host
--        //  0x00000000 = Use FSI2HOST Mailbox
--        //  0x00000001 = Use OCC interrupt line through PSIHB complex
-         uint32_t interruptType;
--
--        // For informing OCC if it is the FIR master:
--        //  0x00000000 = Default
--        //  0x00000001 = FIR Master
--        uint32_t firMaster;
--
--        // FIR collection configuration data needed by FIR Master
--        //  OCC in the event of a checkstop
--        uint8_t firdataConfig[3072];
-     };
- 
-     enum
-     {
--        OccHostDataVersion = 3,
-+        OccHostDataVersion = 2,
-         OCC_LIDID = 0x81e00430,
-         OCC_IBSCOM_RANGE_IN_MB = MEGABYTE,
- 
-         // Interrupt Types
-         USE_FSI2HOST_MAILBOX = 0x00000000,
--        USE_PSIHB_COMPLEX    = 0x00000001,
--
--        // FIR Master
--        NOT_FIR_MASTER = 0x00000000,
--        IS_FIR_MASTER  = 0x00000001
-+        USE_PSIHB_COMPLEX    = 0x00000001
-     };
- 
-     enum occAction_t
-@@ -78,15 +59,13 @@ namespace HBOCC
-     /**
-      * @brief Sets up OCC Host data
-      *
--     * @param[in] i_proc:         target processor to load
-      * @param[in] i_occHostDataVirtAddr Virtual
-      *                       address of current
-      *                       proc's Host data area.
-      *
-      * @return errlHndl_t  Error log Host data setup failed
-      */
--    errlHndl_t loadHostDataToHomer(TARGETING::Target* i_proc,
--                                   void* i_occHostDataVirtAddr);
-+    errlHndl_t loadHostDataToHomer(void* i_occHostDataVirtAddr);
- 
-     /**
-      * @brief Execute procedures and steps required to load
-diff --git a/src/usr/diag/HBconfig b/src/usr/diag/HBconfig
-index 973cecd..a516133 100644
---- a/src/usr/diag/HBconfig
-+++ b/src/usr/diag/HBconfig
-@@ -2,9 +2,3 @@ config HBRT_PRD
-     default n
-     help
-         Enable HBRT PRD.
--
--config ENABLE_CHECKSTOP_ANALYSIS
--    default n
--    help
--        Enable collection of FIR data by OCC for checkstops and
--        post-checkstop analysis by PRD on system reboot
-diff --git a/src/usr/hwpf/hwp/occ/occ.C b/src/usr/hwpf/hwp/occ/occ.C
-index ac2f4b1..f56c909 100644
---- a/src/usr/hwpf/hwp/occ/occ.C
-+++ b/src/usr/hwpf/hwp/occ/occ.C
-@@ -133,7 +133,7 @@ namespace HBOCC
-                                            (i_homerVirtAddrBase) +
-                                 tmpOffset + HOMER_OFFSET_TO_OCC_HOST_DATA;
-             void* occHostVirt = reinterpret_cast<void*>(i_homerHostVirtAddr);
--            l_errl = HBOCC::loadHostDataToHomer(i_target,occHostVirt);
-+            l_errl = HBOCC::loadHostDataToHomer(occHostVirt);
-             if( l_errl != NULL )
-             {
-                 TRACFCOMP( g_fapiImpTd, ERR_MRK"loading Host Data Area failed!" );
-diff --git a/src/usr/hwpf/hwp/occ/occ_common.C b/src/usr/hwpf/hwp/occ/occ_common.C
-index e444b26..97d36f4 100644
---- a/src/usr/hwpf/hwp/occ/occ_common.C
-+++ b/src/usr/hwpf/hwp/occ/occ_common.C
-@@ -119,9 +119,14 @@ namespace HBOCC
- 
-     /**
-      * @brief Sets up OCC Host data
-+     *
-+     * @param[in] i_occHostDataVirtAddr Virtual
-+     *                       address of current
-+     *                       proc's Host data area.
-+     *
-+     * @return errlHndl_t  Error log Host data setup failed
-      */
--    errlHndl_t loadHostDataToHomer( TARGETING::Target* i_proc,
--                                    void* i_occHostDataVirtAddr)
-+    errlHndl_t loadHostDataToHomer(void* i_occHostDataVirtAddr)
-     {
-         TRACUCOMP( g_fapiTd,
-                    ENTER_MRK"loadHostDataToHomer(%p)",
-@@ -156,22 +161,6 @@ namespace HBOCC
-             config_data->interruptType = USE_PSIHB_COMPLEX;
-         }
- 
--#ifdef CONFIG_ENABLE_CHECKSTOP_ANALYSIS
--        // Figure out the FIR master
--        TARGETING::Target* masterproc = NULL;
--        tS.masterProcChipTargetHandle( masterproc );
--        if( masterproc == i_proc )
--        {
--            config_data->firMaster = IS_FIR_MASTER;
--        }
--        else
--        {
--            config_data->firMaster = NOT_FIR_MASTER;
--        }
--#else
--        config_data->firMaster = 0;
--#endif
--
-         TRACUCOMP( g_fapiTd,
-                    EXIT_MRK"loadHostDataToHomer");
- 
-@@ -181,6 +170,16 @@ namespace HBOCC
-     /**
-      * @brief Execute procedures and steps necessary
-      *        to load OCC data in specified processor
-+     *
-+     * @param[in] i_target   Target proc to load
-+     * @param[in] i_homerVirtAddrBase Virtual
-+     *                       address of current
-+     *                       proc's HOMER
-+     * @param[in] i_homerPhysAddrBase Physical
-+     *                       address of current
-+     *                       proc's HOMER
-+     *
-+     * @return errlHndl_t  Error log image load failed
-      */
-      errlHndl_t loadOCC(TARGETING::Target* i_target,
-                     uint64_t i_homerPhysAddr,
-@@ -300,6 +299,12 @@ namespace HBOCC
-      * @brief Start OCC for specified DCM pair of processors.
-      *        If 2nd input is NULL, OCC will be setup on just
-      *        one target.
-+     *
-+     * @param[in] i_target0:    target of first processor in DCM pair
-+     * @param[in] i_target1:    target of second processor in DCM pair
-+     * @param[out] o_failedTarget failed target in case of an error
-+     *
-+     * @return errlHndl_t  Error log of startOCC failed
-      */
-     errlHndl_t startOCC (Target* i_target0,
-                          Target* i_target1,
-@@ -418,6 +423,11 @@ namespace HBOCC
-      * @brief Stop OCC for specified DCM pair of processors.
-      *        If 2nd input is NULL, OCC will be setup on just
-      *        one target.
-+     *
-+     * @param[in] i_target0:    target of first processor in DCM pair
-+     * @param[in] i_target1:    target of second processor in DCM pair
-+     *
-+     * @return errlHndl_t  Error log of stopOCC failed
-      */
-     errlHndl_t stopOCC(TARGETING::Target * i_target0,
-                        TARGETING::Target * i_target1)
-diff --git a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
-index 1bc02a8..8583801 100644
---- a/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
-+++ b/src/usr/hwpf/hwp/occ/runtime/rt_occ.C
-@@ -179,7 +179,7 @@ namespace RT_OCC
- 
-             void* occHostVirt = reinterpret_cast <void *> (i_homer_addr_va +
-                                 HOMER_OFFSET_TO_OCC_HOST_DATA);
--            err = HBOCC::loadHostDataToHomer(proc_target,occHostVirt);
-+            err = HBOCC::loadHostDataToHomer(occHostVirt);
-             if( err != NULL )
-             {
-                 TRACFCOMP( g_fapiImpTd, ERR_MRK"loading Host Data Area failed!" );
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/hostboot-0006-Provide-OCC-Target-with-FRU_ID-attribute.patch b/openpower/package/hostboot/hostboot-0006-Provide-OCC-Target-with-FRU_ID-attribute.patch
deleted file mode 100644
index a459876..0000000
--- a/openpower/package/hostboot/hostboot-0006-Provide-OCC-Target-with-FRU_ID-attribute.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 27a08856a62b32d028315951da06bf091bd22bf6 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Thu, 26 Feb 2015 12:50:20 -0600
-Subject: [PATCH 1/5] Provide OCC Target with FRU_ID attribute
-
-Required with github commits:
-https://github.com/open-power/habanero-xml/commit/dc738f40fc6e6c63c2bf6e25dca0f85987c870b8
-and
-https://github.com/open-power/palmetto-xml/commit/84f5bf5cc10459a85340cd0cc82a8c65b5bc4c97
-
-Change-Id: I8dd08fe5b4649f1398675c47db3abbdb8a5363b0
-RTC:124817
-(cherry picked from commit 15d270e5f3f7b49fd26e2656b6d5b617aea207d9)
----
- src/usr/targeting/common/xmltohb/target_types.xml |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
-index 4dcc796..6dc4e58 100644
---- a/src/usr/targeting/common/xmltohb/target_types.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types.xml
-@@ -1726,6 +1726,9 @@
-     <attribute>
-         <id>OCC_MASTER_CAPABLE</id>
-     </attribute>
-+    <attribute>
-+        <id>FRU_ID</id>
-+    </attribute>
- </targetType>
- 
- </attributes>
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot/hostboot-0006-Revert-SW294127-INITPROC-FSP-Hostboot-fast-exit-powe.patch b/openpower/package/hostboot/hostboot-0006-Revert-SW294127-INITPROC-FSP-Hostboot-fast-exit-powe.patch
new file mode 100644
index 0000000..bb5a0ae
--- /dev/null
+++ b/openpower/package/hostboot/hostboot-0006-Revert-SW294127-INITPROC-FSP-Hostboot-fast-exit-powe.patch
@@ -0,0 +1,544 @@
+From 114bf3bb36fffe6c3c9c5894ebaae5772edb35ff Mon Sep 17 00:00:00 2001
+From: Andrew Geissler <andrewg@us.ibm.com>
+Date: Sat, 28 Feb 2015 12:28:05 -0600
+Subject: [PATCH] Revert "SW294127:INITPROC: FSP&Hostboot - fast exit power down"
+
+This reverts commit bffe97031429bd5656930f7453c496ce2594e5e6.
+---
+ .../mss_draminit_mc/mss_draminit_mc.C              |   19 +-
+ src/usr/hwpf/hwp/initfiles/mba_def.initfile        |  423 +++++---------------
+ 2 files changed, 118 insertions(+), 324 deletions(-)
+
+diff --git a/src/usr/hwpf/hwp/dram_training/mss_draminit_mc/mss_draminit_mc.C b/src/usr/hwpf/hwp/dram_training/mss_draminit_mc/mss_draminit_mc.C
+index 53f3132..350efb7 100644
+--- a/src/usr/hwpf/hwp/dram_training/mss_draminit_mc/mss_draminit_mc.C
++++ b/src/usr/hwpf/hwp/dram_training/mss_draminit_mc/mss_draminit_mc.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2012,2015                        */
++/* Contributors Listed Below - COPYRIGHT 2012,2014                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -22,7 +22,7 @@
+ /* permissions and limitations under the License.                         */
+ /*                                                                        */
+ /* IBM_PROLOG_END_TAG                                                     */
+-// $Id: mss_draminit_mc.C,v 1.48 2014/12/05 15:37:43 dcadiga Exp $
++// $Id: mss_draminit_mc.C,v 1.47 2014/09/24 14:48:18 dcadiga Exp $
+ //------------------------------------------------------------------------------
+ // *! (C) Copyright International Business Machines Corp. 2011
+ // *! All Rights Reserved -- Property of IBM
+@@ -46,7 +46,6 @@
+ //------------------------------------------------------------------------------
+ // Version:|  Author: |  Date:  | Comment:
+ //---------|----------|---------|-----------------------------------------------
+-//  1.48   | dcadiga  |05-DEC-14| Powerdown control at initfile
+ //  1.47   | dcadiga  |09-SEP-14| Removed SPARE cke disable step
+ //  1.46   | gollub   |07-APR-14| Removed call to mss_unmask_inband_errors (moved it to proc_cen_framelock)
+ //  1.45   | dcadiga  |14-FEB-14| Periodic Cal Fix for DD2
+@@ -255,14 +254,12 @@ ReturnCode mss_draminit_mc_cloned(Target& i_target)
+ 
+         // Step Five: Setup Power Management
+         FAPI_INF( "+++ Setting Up Power Management +++");
+-        FAPI_INF( "+++ POWER MANAGEMENT HANDLED AT INITFILE +++");
+-        //Procedure commented out because domain reduction enablement now handled at the initfile
+-        //rc = mss_enable_power_management(l_mbaChiplets[i]);
+-        //if(rc)
+-        //{
+-        //   FAPI_ERR("---Error During Power Management Setup and Enable rc = 0x%08X (creator = %d)---", uint32_t(rc), rc.getCreator());
+-        //   return rc;
+-        //}
++        rc = mss_enable_power_management(l_mbaChiplets[i]);
++        if(rc)
++        {
++           FAPI_ERR("---Error During Power Management Setup and Enable rc = 0x%08X (creator = %d)---", uint32_t(rc), rc.getCreator());
++           return rc;
++        }
+   
+     }
+ 
+diff --git a/src/usr/hwpf/hwp/initfiles/mba_def.initfile b/src/usr/hwpf/hwp/initfiles/mba_def.initfile
+index 61eba9e..88aafb9 100644
+--- a/src/usr/hwpf/hwp/initfiles/mba_def.initfile
++++ b/src/usr/hwpf/hwp/initfiles/mba_def.initfile
+@@ -1,9 +1,9 @@
+-#-- $Id: mba_def.initfile,v 1.70 2014/12/05 16:21:33 yctschan Exp $
++
++#-- $Id: mba_def.initfile,v 1.69 2014/09/24 14:44:15 asaetow Exp $
+ #-- CHANGE HISTORY:
+ #--------------------------------------------------------------------------------
+ #-- Version:|Author: | Date:  | Comment:
+ #-- --------|--------|--------|--------------------------------------------------
+-#--     1.70|yctschan|12/05/14| Updated settings for fast exit power down
+ #--     1.69|asaetow | 9/24/14| Force SpareCKE sync. Spare DRAM workaround.
+ #--     1.68|jdsloat | 4/04/14| Turned off Power controls for GA1 concerns - Turn back on at a later date
+ #--     1.67|tschang | 4/01/14| Adjusted the PUP Avail and SEPD/FEPD time.
+@@ -144,12 +144,93 @@ define def_equal_test     =  (SYS.ATTR_SCRATCH_UINT32_1 == SYS.ATTR_SCRATCH_UINT
+ #    <valueType>uint32</valueType>
+ #    <enum>DISABLE = 0</enum>
+ 
++#<attribute>
++#    <id>ATTR_EFF_DIMM_RANKS_CONFIGED</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Bit wise representation of master ranks in each DIMM that are used for reads and writes. Used in various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
++#Dimensions are [port][dimm]  A/B=Mba_0 C/D=Mba_1 There are only two DIMM ranks: DIMM0 and DIMM1 where DIMM0 is the furthest from the centaur.
++#creator: mss_eff_cnfg
++#consumer: various
++#firmware notes: none</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#    <array> 2 2</array>
++#    <persistRuntime/>
++#</attribute>
++#
++#<attribute>
++#    <id>ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Specifies the number of master ranks per DIMM.</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#    <array> 2 2</array>
++#</attribute>
++#
++#<attribute>
++#    <id>ATTR_EFF_NUM_RANKS_PER_DIMM</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Number of ranks in each DIMM. Used in various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
++#values are 0,1,2, 4 up to 32
++#creator: mss_eff_cnfg
++#consumer: various
++#firmware notes: none</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#    <array> 2 2</array>
++#    <persistRuntime/>
++#</attribute>
++#
++#<attribute>
++#    <id>ATTR_EFF_DRAM_BANKS</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Number of DRAM banks.  Used in various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.  Each memory channel will have a value.
++#creator: mss_eff_cnfg
++#consumer: various
++#firmware notes: none</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#</attribute>
++#
++#<attribute>
++#    <id>ATTR_EFF_DRAM_ROWS</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Number of DRAM rows.  Used in various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.  Each memory channel will have a value.
++#creator: mss_eff_cnfg
++#consumer: various
++#firmware notes: none</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#</attribute>
++#
++#<attribute>
++#    <id>ATTR_EFF_DRAM_COLS</id>
++#    <targetType>TARGET_TYPE_MBA_CHIPLET</targetType>
++#    <description>Number of DRAM columns.  Used in various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.  Each memory channel will have a value.
++#creator: mss_eff_cnfg
++#consumer: various
++#firmware notes: none</description>
++#    <valueType>uint8</valueType>
++#    <writeable/>
++#    <odmVisable/>
++#    <odmChangeable/>
++#</attribute
+ 
+ 
+ # mba tmr0 register timings are added to the value below
+ define def_margin1      = (1);
+ define def_margin2      = (0);
+-define def_margin_pup_fast   = (0);
++define def_margin_pup_fast   = (7);
+ define def_margin_pup_slow   = (0);
+ define def_margin_rdtag = (4);
+ 
+@@ -263,22 +344,6 @@ define def_C3c_C4C_ddr4                       = ((def_2b_1socket_ddr4)||(def_2b_
+ define def_C4A_ddr4                           = ((def_2a_1socket_ddr4)||(def_2a_2socket_ddr4)||(def_3a_ddr4_cdimm  )||(def_7a_1socket_ddr4)||(def_7a_2socket_ddr4)||(def_3a_1socket_ddr4)||(def_3a_2socket_ddr4)||(def_4a_ddr4_cdimm));
+ define def_IS5D                               = ((def_5d_1socket     )||(def_5d_2socket));
+ 
+-# ODT Mappings
+-define  def_odt_mapping_1a           = (def_1a_1socket);
+-define  def_odt_mapping_1b1dimm      = (def_1b_1socket      ||def_3a_1socket      ||def_3a_1socket_ddr4 ||def_3b_1socket      ||def_3c_1socket_ddr4);
+-define  def_odt_mapping_1b2dimm      = (def_3c_2socket_ddr4   ||def_1b_2socket        ||def_3a_2socket        ||def_3a_2socket_ddr4   ||def_3b_2socket);
+-#define  def_odt_mapping_1bcdimm      = (def_1a_2socket        ||def_1b_cdimm        ||def_3a_cdimm        ||def_3a_ddr4_cdimm   ||def_3b_cdimm        ||def_3b_ddr4_cdimm   ||def_3c_cdimm        ||def_3c_ddr4_cdimm);
+-define  def_odt_mapping_1bcdimm      = (def_1a_2socket        ||def_3a_cdimm        ||def_3a_ddr4_cdimm   ||def_3b_cdimm        ||def_3b_ddr4_cdimm   ||def_3c_cdimm        ||def_3c_ddr4_cdimm);
+-define  def_odt_mapping_1c2dimm      = (def_1c_2socket_odt);
+-define  def_odt_mapping_1c1dimm      = (def_1c_1socket_odt);
+-define  def_odt_mapping_1ccdimm      = (def_1c_cdimm        ||def_4a_cdimm        ||def_4a_ddr4_cdimm   ||def_4b_ddr4_cdimm   ||def_4c_ddr4_cdimm);
+-define  def_odt_mapping_1dx82dimm    = (def_1d_2socket);
+-define  def_odt_mapping_1dx4         = (def_1d_1socket);
+-define  def_odt_mapping_2abc         = (def_2a_1socket      ||def_2a_2socket        ||def_2a_1socket_ddr4 ||def_2a_2socket_ddr4   ||def_2a_cdimm        ||def_2a_ddr4_cdimm   ||def_2b_1socket      ||def_2b_2socket        ||def_2b_1socket_ddr4 ||def_2b_2socket_ddr4   ||def_2b_cdimm        ||def_2b_ddr4_cdimm   ||def_2c_1socket      ||def_2c_2socket        ||def_2c_1socket_ddr4 ||def_2c_2socket_ddr4   ||def_2c_ddr4_cdimm);
+-define  def_odt_mapping_56781lrdm    = (def_5b_1socket      ||def_5c_1socket      ||def_7a_1socket      ||def_7a_1socket_ddr4 ||def_7b_1socket      ||def_7b_1socket_ddr4 ||def_7c_1socket      ||def_7c_1socket_ddr4);
+-define  def_odt_mapping_56782lrdm    = (def_5b_2socket        ||def_5c_2socket        ||def_7a_2socket        ||def_7a_2socket_ddr4   ||def_7b_2socket        ||def_7b_2socket_ddr4   ||def_7c_2socket        ||def_7c_2socket_ddr4);
+-define  def_odt_mapping_5d1dimm      = (def_5d_1socket);
+-define  def_odt_mapping_5d2dimm      = (def_5d_2socket);
+ 
+ 
+ #gdial std_size           (            MBA_SRQ.mba_tmr1q_cfg_tfaw, MBA_SRQ.pc.MBAREF0Q_cfg_trfc,  MBA_SRQ.pc.MBAREF0Q_cfg_refr_tsv_stack, MBA_SRQ.pc.MBARPC0Q_cfg_pup_pdn, MBA_SRQ.pc.MBARPC0Q_cfg_pdn_pup, MBA_SRQ.pc.MBARPC0Q_cfg_pup_avail, MBA_SRQ.mba_tmr0q_RRSMSR_dly  , MBA_SRQ.mba_tmr0q_RRSMDR_dly, MBA_SRQ.mba_tmr0q_WWSMSR_dly, MBA_SRQ.mba_tmr0q_WWSMDR_dly  , MBA_SRQ.MBA_TMR0Q_Trrd,   MBA_SRQ.srqdbg.cfg_std_size_id)=
+@@ -1944,31 +2009,29 @@ scom 0x03010432    {
+ #
+ scom 0x03010434    {
+     bits    ,   scom_data   ,       ATTR_FUNCTIONAL,   expr;
+-    2       ,   0b0       ,           1            ,   (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 0); # cfg_min_max_domains       36
+-    2       ,   0b1       ,           1            ,   (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED != 0); # cfg_min_max_domains       36
+-#    3:5     ,   0b001       ,           1            ,   any; # cfg_min_max_domains       36
+-    6:10    ,   0b00100  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly4  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail   - performance enhancemnt
+-    6:10    ,   0b00011  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly4  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail   - performance enhancemnt
+-    6:10    ,   0b00101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly5  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00100  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly5  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00110  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly6  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00101  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly6  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00111  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly7  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00110  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly7  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b01000  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly8  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b00111  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly8  == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b01101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly13 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b01100  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly13 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b10000  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly16 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b01111  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly16 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b10100  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly20 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b10011  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly20 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b10111  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly23 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b10110  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly23 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b11010  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly26 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b11001  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly26 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b11101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly29 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 1) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
+-    6:10    ,   0b11100  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly29 == 1) && (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && ((CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 2) || (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE == 3)); # MBARPC0Q_cfg_pup_avail     36
++#    3:5     ,   0b010       ,           1            ,   any; # cfg_min_max_domains       36
++    6:10    ,   0b00100  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly4  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail   - performance enhancemnt
++    6:10    ,   0b00100  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly4  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail   - performance enhancemnt
++    6:10    ,   0b00101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly5  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b00101  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly5  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b00110  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly6  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b00110  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly6  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b00111  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly7  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b00111  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly7  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b01000  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly8  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b01000  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly8  == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b01101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly13 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b01101  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly13 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10000  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly16 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10000  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly16 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10100  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly20 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10100  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly20 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10111  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly23 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b10111  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly23 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b11010  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly26 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b11010  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly26 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b11101  + def_margin_pup_slow   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly29 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 0); # MBARPC0Q_cfg_pup_avail     36
++    6:10    ,   0b11101  + def_margin_pup_fast   ,           1            ,   (def_MBARPC0Q_cfg_pup_avail_dly29 == 1) && (ATTR_EFF_DRAM_DLL_PPD == 1); # MBARPC0Q_cfg_pup_avail     36
+     11:15   ,   0b00011     ,           1            ,   (def_MBARPC0Q_cfg_pdn_pup_dly3 == 1); # MBARPC0Q_cfg_pup_pup       37
+     11:15   ,   0b00100     ,           1            ,   (def_MBARPC0Q_cfg_pdn_pup_dly4 == 1); # MBARPC0Q_cfg_pup_pup       37
+     11:15   ,   0b00101     ,           1            ,   (def_MBARPC0Q_cfg_pdn_pup_dly5 == 1); # MBARPC0Q_cfg_pup_pup       37
+@@ -1977,286 +2040,20 @@ scom 0x03010434    {
+     16:20   ,   0b00100     ,           1            ,   (def_MBARPC0Q_cfg_pup_pdn_dly4 == 1); # MBARPC0Q_cfg_pup_pdn       38
+     16:20   ,   0b00101     ,           1            ,   (def_MBARPC0Q_cfg_pup_pdn_dly5 == 1); # MBARPC0Q_cfg_pup_pdn       38
+     16:20   ,   0b00110     ,           1            ,   (def_MBARPC0Q_cfg_pup_pdn_dly6 == 1); # MBARPC0Q_cfg_pup_pdn       38
+-    22      ,   0b0         ,           1            ,   (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 0);
+-    22      ,   0b1         ,           1            ,   (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED != 0);
++    22      ,   0b0         ,           1            ,   any; # cfg_min_domain_reduction_enable set to 1 to enable power controls
+     23:32   ,   0b0000000011,           1            ,   any; # Set min doman reduction time to 30.7 us (10.245us * 3)
+     42      ,   0b1         ,           1            ,   any; # Force SpareCKE sync
+-    43      ,   0b1         ,           1            ,   any; # Use 1 in 8k 2:1 cycle pulses for min domain reduction time interval
++    43      ,   0b0         ,           1            ,   any; # Use 1 in 8k 2:1 cycle pulses for min domain reduction time interval
+ }
+ 
+-# had to shifts the data to be able to get it into the proper positions
+-define shift_pwr_map1 = (ATTR_VPD_CKE_PWR_MAP >> 60);
+-define shift_pwr_map2 = (ATTR_VPD_CKE_PWR_MAP >> 56);
+-define shift_pwr_map3 = (ATTR_VPD_CKE_PWR_MAP >> 52);
+-define shift_pwr_map4 = (ATTR_VPD_CKE_PWR_MAP >> 48);
+-define shift_pwr_map5 = (ATTR_VPD_CKE_PWR_MAP >> 44);
+-define shift_pwr_map6 = (ATTR_VPD_CKE_PWR_MAP >> 40);
+-define shift_pwr_map7 = (ATTR_VPD_CKE_PWR_MAP >> 36);
+-define shift_pwr_map8 = (ATTR_VPD_CKE_PWR_MAP >> 32);
+-define shift_pwr_map9 = (ATTR_VPD_CKE_PWR_MAP >> 28);
+-define shift_pwr_map10 = (ATTR_VPD_CKE_PWR_MAP >> 24);
+-define shift_pwr_map11 = (ATTR_VPD_CKE_PWR_MAP >> 20);
+-define shift_pwr_map12 = (ATTR_VPD_CKE_PWR_MAP >> 16);
+-define shift_pwr_map13 = (ATTR_VPD_CKE_PWR_MAP >> 12);
+-define shift_pwr_map14 = (ATTR_VPD_CKE_PWR_MAP >> 8);
+-define shift_pwr_map15 = (ATTR_VPD_CKE_PWR_MAP >> 4);
+-
+ # MBAPC1Q    power control settings reg 1
+ #
+ scom 0x03010435    {
+     bits    ,   scom_data   ,       ATTR_FUNCTIONAL,   expr;
+-    0:3    ,   shift_pwr_map1 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-    0:3     ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk0_rd_cke    36
+-    0:3     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-    0:3     ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-    0:3     ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-    0:3     ,   0x9         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-    0:3     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-    0:3     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-    0:3     ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-    0:3     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-    0:3     ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-    0:3     ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-    0:3     ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-    0:3     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-    0:3     ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1); # cfg_mrnk0_rd_cke    36
+-    4:7    ,   shift_pwr_map2 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-    4:7     ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk1_rd_cke    36
+-    4:7     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-    4:7     ,   0xE         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-    4:7     ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-    4:7     ,   0x5         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-    4:7     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-    4:7     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-    4:7     ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-    4:7     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-    4:7     ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-    4:7     ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-    4:7     ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-    4:7     ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-    4:7     ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-    8:11   ,   shift_pwr_map3 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk2_rd_cke    36
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   8:11    ,   0x9         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   8:11    ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   8:11    ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   8:11    ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   8:11    ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   8:11    ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   8:11    ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   12:15   ,   shift_pwr_map4 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk3_rd_cke    36
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   12:15   ,   0x5         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   12:15   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   12:15   ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   12:15   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   12:15   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   12:15   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   12:15   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   16:19   ,   shift_pwr_map5 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk4_rd_cke    36
+-   16:19   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   16:19   ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   16:19   ,   0xA         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   16:19   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   16:19   ,   0x3         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   16:19   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   16:19   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   16:19   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   16:19   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   16:19   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   20:23   ,   shift_pwr_map6 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk5_rd_cke    36
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   20:23   ,   0xB         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   20:23   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   20:23   ,   0x9         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   20:23   ,   0x3         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   20:23   ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   20:23   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   20:23   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   20:23   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   20:23   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-}
+-
+-
+-scom 0x03010435    {
+-    bits    ,   scom_data   ,       ATTR_FUNCTIONAL,   expr;
+-   24:27   ,   shift_pwr_map7 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk6_rd_cke    37
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   24:27   ,   0xA         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   24:27   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   24:27   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   24:27   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   24:27   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   28:31   ,   shift_pwr_map8 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk7_rd_cke    37
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   28:31   ,   0x9         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   28:31   ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   28:31   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   28:31   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   28:31   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   32:35   ,   shift_pwr_map9 ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk0_wr_cke    38
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   32:35   ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   32:35   ,   0xA         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   32:35   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   32:35   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   32:35   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   32:35   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   32:35   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   32:35   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   36:39   ,   shift_pwr_map10,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   32:35   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1); # cfg_mrnk0_wr_cke    38
+-   36:39   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1);
+-   36:39   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   36:39   ,   0xE         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   36:39   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   36:39   ,   0x6         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   36:39   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   36:39   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   36:39   ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   36:39   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   36:39   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   36:39   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   36:39   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   36:39   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   36:39   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   40:43   ,   shift_pwr_map11,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk2_wr_cke    38
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   40:43   ,   0xA         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   40:43   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   40:43   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   40:43   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   40:43   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   40:43   ,   0x8         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   40:43   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   44:47   ,   shift_pwr_map12,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk3_wr_cke    38
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   44:47   ,   0x6         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   44:47   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   44:47   ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   44:47   ,   0xC         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   44:47   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   44:47   ,   0x4         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   44:47   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
++    0:63    ,   ATTR_VPD_CKE_PWR_MAP ,          1            ,    any; # data from VP now
+ }
+ 
+ 
+-scom 0x03010435    {
+-    bits    ,   scom_data   ,       ATTR_FUNCTIONAL,   expr;
+-   48:51   ,   shift_pwr_map13,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   48:51   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk4_wr_cke    38
+-   48:51   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   48:51   ,   0x7         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   48:51   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   48:51   ,   0x6         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   48:51   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   48:51   ,   0x3         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   48:51   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   48:51   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   48:51   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   48:51   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   48:51   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   48:51   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   48:51   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   52:55   ,   shift_pwr_map14,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk5_wr_cke    38
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   52:55   ,   0xB         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   52:55   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   52:55   ,   0x5         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   52:55   ,   0x3         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   52:55   ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   52:55   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   52:55   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   52:55   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   52:55   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   56:59   ,   shift_pwr_map15,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk6_wr_cke    38
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   56:59   ,   0x6         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   56:59   ,   0xF         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   56:59   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   56:59   ,   0x2         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   56:59   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-   60:63   ,   ATTR_VPD_CKE_PWR_MAP,     1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 1) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 2); # slow exit pdown
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1a        == 1); # cfg_mrnk7_wr_cke    38
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b1dimm   == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1b2dimm   == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1bcdimm   == 1);
+-   60:63   ,   0x5         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c2dimm   == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1c1dimm   == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1ccdimm   == 1);
+-   60:63   ,   0xD         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx82dimm == 1);
+-   60:63   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_1dx4      == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_2abc      == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56781lrdm == 1);
+-   60:63   ,   0x1         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_56782lrdm == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d1dimm   == 1);
+-   60:63   ,   0x0         ,          1            ,    (SYS.ATTR_MRW_POWER_CONTROL_REQUESTED == 2) && (CENTAUR.ATTR_VPD_POWER_CONTROL_CAPABLE != 1) && (def_odt_mapping_5d2dimm   == 1);
+-}
+ 
+ ###########################
+ # MBA CKE mapping tables  #
+-- 
+1.7.4.1
+
diff --git a/openpower/package/hostboot/hostboot-0007-Update-dev-tree-with-additional-sensor-information.patch b/openpower/package/hostboot/hostboot-0007-Update-dev-tree-with-additional-sensor-information.patch
deleted file mode 100644
index c83b019..0000000
--- a/openpower/package/hostboot/hostboot-0007-Update-dev-tree-with-additional-sensor-information.patch
+++ /dev/null
@@ -1,510 +0,0 @@
-From d8c341b72aad30bff1417f1a2cec82af9cc14786 Mon Sep 17 00:00:00 2001
-From: Richard J. Knight <rjknight@us.ibm.com>
-Date: Thu, 19 Feb 2015 23:47:03 -0600
-Subject: [PATCH 2/5] Update dev tree with additional sensor information
-
-    -Add sensor type, reading type and specific offsets.
-    -Add IPMI entity ID and instance information for sensors
-    -Include IPMI Enity instance in targets which have ipmi sensors
-     attribute
-
-Change-Id: I02b0a5046c67e2e00af30a0c78cbcc182ae4c0cd
-RTC:123186
-(cherry picked from commit ff8c81ac1ab76d9835165a8dae4a0e3b1e5a0055)
----
- src/include/usr/ipmi/ipmisensor.H                  |   96 ++++++++++++++++++++
- src/usr/devtree/bld_devtree.C                      |   89 ++++++++++++++-----
- src/usr/ipmi/ipmisensor.C                          |   76 ++++++++++++++++
- src/usr/targeting/common/Targets.pm                |    2 +-
- .../common/xmltohb/attribute_types_hb.xml          |   73 +++++++++++++++
- .../targeting/common/xmltohb/target_types_hb.xml   |   12 ++-
- 6 files changed, 322 insertions(+), 26 deletions(-)
-
-diff --git a/src/include/usr/ipmi/ipmisensor.H b/src/include/usr/ipmi/ipmisensor.H
-index 7b4e3fa..ef00bfa 100644
---- a/src/include/usr/ipmi/ipmisensor.H
-+++ b/src/include/usr/ipmi/ipmisensor.H
-@@ -48,6 +48,20 @@ namespace SENSOR
-     const uint8_t INVALID_TYPE = 0xFF;
- 
-     /**
-+     *  @enum sensorReadingTypes
-+     *  Sensor specific completion codes, defined in IPMI Spec.
-+     *
-+     */
-+    enum sensorReadingType
-+    {
-+        THRESHOLD                   = 0x01,
-+        DIGITAL_ASSERT_DEASSERT     = 0x03,
-+        DIGITAL_ENABLE_DISABLE      = 0x09,
-+        SENSOR_SPECIFIC             = 0x6f,
-+    };
-+
-+
-+    /**
-      *  @enum procStatusSensorOffsets
-      *  Sensor specific completion codes, defined in IPMI Spec.
-      *
-@@ -90,6 +104,74 @@ namespace SENSOR
-         CRITICAL_OVER_TEMP              = 0x0A,
-     };
- 
-+    /**
-+     *  @enum firmwareBootProgressSensorOffsets
-+     *  Boot progress specific offsets defined in IPMI Spec.
-+     *
-+     */
-+    enum firmwareProgressSensorOffsets
-+    {
-+        // offset 02h
-+        SYSTEM_FIRMWARE_PROGRESS = 0x02,
-+    };
-+
-+    /**
-+     *  @enum discrete09_Offsets
-+     *
-+     *      Offsets specific to IPMI sensor reading type 09
-+     *      digital discrete senosrs. These offsets result in
-+     *      Device Enabled or Device Disabled events in the
-+     *      BMC event log.
-+     *
-+     */
-+    enum discrete09_Offsets
-+    {
-+        // offset 00h
-+        DEVICE_DISABLED = 0x0,
-+
-+        //offset 01h
-+        DEVICE_ENABLED  = 0x1,
-+    };
-+
-+     /**
-+     *  @enum discrete03_Offsets
-+     *
-+     *      Offsets specific to IPMI sensor reading type 03
-+     *      digital discrete senosrs. These offsets result in generic
-+     *      State Asserted or State Deasserted events in the
-+     *      BMC event log.
-+     *
-+     */
-+    enum discrete03_Offsets
-+    {
-+        // offset 00h
-+        DEASSERTED = 0x00,
-+
-+        //offset 01h
-+        ASSERTED   = 0x01,
-+    };
-+
-+     /**
-+     *  @enum acpiPowerState_Offsets
-+     *
-+     *      Offsets specific to IPMI ACPI Power state
-+     *      senosrs. These offsets result in power
-+     *      state messages in the BMC event log.
-+     *
-+     */
-+    enum acpiPowerState_Offsets
-+    {
-+        // offset 0h
-+        S0_G0_WORKING   = 0x00,
-+
-+        // offset 05h
-+        G5_SOFT_OFF     = 0x05,
-+
-+        //offset 0Bh
-+        LEGACY_ON       = 0x0B,
-+
-+    };
-+
-     //**  Bit definition for set sensor reading cmd operation field
-     //      [7:6] 10b - write given values to event data bytes let BMC handle
-     //                  offset in event data 1 when an external event is
-@@ -827,6 +909,20 @@ namespace SENSOR
-     errlHndl_t getAPSSChannelSensorNumbers(
-                                      const uint16_t (* &o_sensor_numbers)[16]);
- 
-+    /**
-+     *   Helper function to return a mask of the supported masks for the
-+     *   sensor passed in.
-+     *
-+     *  @param[i] - sensor name to determine the offset for.
-+     *  @param[o] - sensor reading type, defined in IPMI spec for the
-+     *              passed in sensor number.
-+     *
-+     *
-+     *  @return sensor offsets
-+     */
-+    uint16_t getSensorOffsets(TARGETING::SENSOR_NAME i_name,
-+                              sensorReadingType &o_readType );
-+
- 
- 
- }; // end namespace
-diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
-index dd81392..f4647a3 100644
---- a/src/usr/devtree/bld_devtree.C
-+++ b/src/usr/devtree/bld_devtree.C
-@@ -1299,17 +1299,40 @@ errlHndl_t bld_fdt_mem(devTree * i_dt, bool i_smallTree)
-     return errhdl;
- }
- 
-+
-+#ifdef CONFIG_BMC_IPMI
-+enum
-+{
-+    ENTITY_ID_MASK      = 0x00FF,
-+    SENSOR_TYPE_MASK    = 0xFF00,
-+};
-+
- /* create a node for each IPMI sensor in the system, the sensor unit number
-    corresponds to the BMC assigned sensor number */
- uint32_t bld_sensor_node(devTree * i_dt, const dtOffset_t & i_parentNode,
--                         const uint16_t sensorData[] )
-+                         const uint16_t sensorData[],
-+                         uint32_t instance, uint32_t chipId )
- {
- 
--    const uint32_t sensorNumber = sensorData[
-+    SENSOR::sensorReadingType readType;
-+
-+    // pass in the sensor name to get back the supported offsets and the event
-+    // reading type for this sensor.
-+    uint32_t offsets = SENSOR::getSensorOffsets(
-+             static_cast<TARGETING::SENSOR_NAME>(
-+                 sensorData[TARGETING::IPMI_SENSOR_ARRAY_NAME_OFFSET]),
-+             readType);
-+
-+    const uint16_t sensorNumber = sensorData[
-                         TARGETING::IPMI_SENSOR_ARRAY_NUMBER_OFFSET];
- 
--    const uint32_t sensorName =
--                        sensorData[TARGETING::IPMI_SENSOR_ARRAY_NAME_OFFSET];
-+    // the sensor name is a combination of the sensor type + entity ID
-+    const uint16_t sensorType = (
-+        sensorData[TARGETING::IPMI_SENSOR_ARRAY_NAME_OFFSET]
-+                    & SENSOR_TYPE_MASK) >> 8;
-+
-+    const uint16_t entityId =
-+        sensorData[TARGETING::IPMI_SENSOR_ARRAY_NAME_OFFSET] & ENTITY_ID_MASK;
- 
-     /* Build sensor node based on sensor number */
-     dtOffset_t sensorNode = i_dt->addNode(i_parentNode, "sensor", sensorNumber);
-@@ -1317,22 +1340,35 @@ uint32_t bld_sensor_node(devTree * i_dt, const dtOffset_t & i_parentNode,
-     i_dt->addPropertyCell32(sensorNode, "reg", sensorNumber);
- 
-     // add sensor type
--    i_dt->addPropertyCell32(sensorNode, "ipmi-sensor-type", sensorName);
--
--   // @TODO RTC:113902
--    // get more info from Ben H. regarding what info he needs
--    // add the name of the sensor
--    //i_dt->addPropertyString(sensorNode, "name", sensorToString( sensorName ));
--    //   i_dt->addPropertyCell32(sensorNode, "ipmi-entity-type",
--    //                                          sensorData[ENTITY_TYPE_OFFSET]);
--    //   i_dt->addPropertyCell32(sensorNode, "ipmi-reading-type",
--    //                                         sensorData[READING_TYPE_OFFSET]);
--
--    /* return the phandle for this sensor, might need to add it to the
--    cpus node per Ben H. proposal */
-+    i_dt->addPropertyCell32(sensorNode, "ipmi-sensor-type", sensorType);
-+    i_dt->addPropertyCell32(sensorNode, "ipmi-entity-id", entityId);
-+    i_dt->addPropertyCell32(sensorNode, "ipmi-entity-instance", instance);
-+    i_dt->addPropertyCell32(sensorNode, "ipmi-sensor-offsets", offsets);
-+    i_dt->addPropertyCell32(sensorNode, "ipmi-sensor-reading-type", readType);
-+
-+    // currently we only add the chip ID to the OCC sensor
-+    if(chipId != 0xFF )
-+    {
-+        i_dt->addPropertyCell32(sensorNode, "ibm,chip-id", chipId);
-+    }
-+
-+    /* return the phandle for this sensor */
-     return i_dt->getPhandle(sensorNode);
- }
- 
-+// return the IPMI entity instance from the SDR for this
-+// target.
-+uint32_t getInstanceNumber( TARGETING::Target * i_pTarget )
-+{
-+    AttributeTraits<ATTR_IPMI_INSTANCE>::Type l_instance;
-+
-+   l_instance = i_pTarget->getAttr<TARGETING::ATTR_IPMI_INSTANCE>();
-+
-+   return l_instance;
-+
-+}
-+
-+// build the sensor node for a given target
- uint32_t bld_sensor_node(devTree * i_dt, const dtOffset_t & i_sensorNode,
-         TARGETING::Target * i_pTarget )
- {
-@@ -1344,6 +1380,17 @@ uint32_t bld_sensor_node(devTree * i_dt, const dtOffset_t & i_sensorNode,
-      * for each sensor */
-     if ( i_pTarget->tryGetAttr<ATTR_IPMI_SENSORS>(l_sensors) )
-     {
-+        uint32_t chipId = 0xFF;
-+
-+        // add the chip id to the OCC sensor since OPAL needs it to figure out
-+        // which OCC it is.
-+        if( TARGETING::TYPE_OCC == i_pTarget->getAttr<TARGETING::ATTR_TYPE>())
-+        {
-+            ConstTargetHandle_t proc = getParentChip(i_pTarget);
-+
-+            chipId = getProcChipId( proc );
-+        }
-+
-         for(uint16_t i=0; i< array_rows; i++)
-         {
-             /*  if the sensor number is 0xFF move on */
-@@ -1351,7 +1398,8 @@ uint32_t bld_sensor_node(devTree * i_dt, const dtOffset_t & i_sensorNode,
-             {
-                 /* use this row to create the next sensor node - ignoring
-                  * return value for now */
--                bld_sensor_node(i_dt, i_sensorNode, l_sensors[i] );
-+                bld_sensor_node(i_dt, i_sensorNode, l_sensors[i],
-+                        getInstanceNumber(i_pTarget) , chipId );
-             }
-             else
-             {
-@@ -1394,10 +1442,6 @@ errlHndl_t bld_fdt_sensors(devTree * i_dt, const dtOffset_t & i_parentNode,
-     i_dt->addPropertyCell32(sensorNode, "#address-cells", 1);
-     i_dt->addPropertyCell32(sensorNode, "#size-cells", 0);
- 
--    // pass ALL IPMI_SENSORS to opal
--    // @TODO RTC:113902 - add remaining sensor info and limit sensors
--    // and adjust the sensors passed to opal to match their requirements
--
-     /*  loop through all the targets and get the IPMI sensor data if it
-         exists */
-     for (TargetIterator itr = TARGETING::targetService().begin();
-@@ -1454,6 +1498,7 @@ errlHndl_t bld_fdt_bmc(devTree * i_dt, bool i_smallTree)
- 
-     return errhdl;
- }
-+#endif
- 
- errlHndl_t bld_fdt_vpd(devTree * i_dt, bool i_smallTree)
- {
-diff --git a/src/usr/ipmi/ipmisensor.C b/src/usr/ipmi/ipmisensor.C
-index 3e15e91..fc7284b 100644
---- a/src/usr/ipmi/ipmisensor.C
-+++ b/src/usr/ipmi/ipmisensor.C
-@@ -1121,4 +1121,80 @@ namespace SENSOR
-         return NULL;
-     }
- 
-+    uint16_t getSensorOffsets( TARGETING::SENSOR_NAME i_name,
-+                             sensorReadingType &o_readType )
-+    {
-+
-+        uint16_t offsets = 0;
-+
-+        // most of our sensors use generic sensor specific reading types
-+        // so use that as the default value
-+        o_readType = SENSOR_SPECIFIC;
-+
-+        // sensor type is lower byte of sensor name, if we dont match
-+        // based on name, then try the sensor type
-+        uint16_t t = ( i_name >> 8 ) & 0x00FF;
-+
-+        switch( i_name )
-+        {
-+            case TARGETING::SENSOR_NAME_FW_BOOT_PROGRESS:
-+                {
-+                    offsets = ( 1 << SYSTEM_FIRMWARE_PROGRESS );
-+                    break;
-+                }
-+            case TARGETING::SENSOR_NAME_OCC_ACTIVE:
-+                {
-+                    offsets = ( 1 << DEVICE_DISABLED ) |
-+                              ( 1 << DEVICE_ENABLED );
-+                    o_readType = DIGITAL_ENABLE_DISABLE;
-+                    break;
-+                }
-+            case TARGETING::SENSOR_NAME_HOST_STATUS:
-+                {
-+                    offsets = ( 1 << S0_G0_WORKING ) |
-+                              ( 1 << G5_SOFT_OFF )   |
-+                              ( 1 << LEGACY_ON );
-+                    break;
-+                }
-+            case TARGETING::SENSOR_NAME_PCI_ACTIVE:
-+            case TARGETING::SENSOR_NAME_OS_BOOT:
-+                {
-+                    // default all offsets enabled
-+                    offsets = 0x7FFF;
-+                    break;
-+                }
-+
-+                default:
-+                {
-+                    // try sensor type
-+                    switch (t)
-+                    {
-+                        case TARGETING::SENSOR_TYPE_FAULT:
-+                            offsets = ( 1 << ASSERTED );
-+                            o_readType = DIGITAL_ASSERT_DEASSERT;
-+                            break;
-+
-+                        case TARGETING::SENSOR_TYPE_PROCESSOR:
-+                            offsets = ( 1 << PROC_PRESENCE_DETECTED ) |
-+                                      ( 1 << PROC_DISABLED )         |
-+                                      ( 1 << IERR );
-+                            break;
-+
-+                        case TARGETING::SENSOR_TYPE_MEMORY:
-+                            offsets = ( 1 << MEMORY_DEVICE_DISABLED ) |
-+                                      ( 1 << MEM_DEVICE_PRESENCE_DETECTED );
-+                            break;
-+                        default:
-+                            offsets = 0;
-+                            o_readType = THRESHOLD;
-+                            break;
-+                    }
-+
-+                }
-+        }
-+
-+        return offsets;
-+    }
-+
-+
- }; // end name space
-diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
-index eb1ea1f..29f6bcb 100644
---- a/src/usr/targeting/common/Targets.pm
-+++ b/src/usr/targeting/common/Targets.pm
-@@ -195,7 +195,7 @@ sub printAttribute
-     $filter{ENTITY_ID_LOOKUP}               = 1;
-     $filter{ENTITY_INSTANCE}                = 1;
-     $filter{MBA_NUM}                        = 1;
--    $filter{IPMI_INSTANCE}                  = 1;
-+    $filter{IPMI_INSTANCE}                  = 0;
-     $filter{IPMI_NAME}                      = 1;
-     $filter{INSTANCE_ID}                    = 1;
-     #$filter{ADC_CHANNEL_SENSOR_NUMBERS}     = 1;
-diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-index 3bb57e6..74fb492 100644
---- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-+++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml
-@@ -822,6 +822,16 @@
-     <writeable/>
-     <hbOnly/>
- </attribute>
-+<attribute>
-+    <id>IPMI_INSTANCE</id>
-+    <description>Holds the IPMI instance number for this entity.</description>
-+    <simpleType>
-+        <uint32_t>
-+        </uint32_t>
-+    </simpleType>
-+    <persistency>non-volatile</persistency>
-+    <readable/>
-+</attribute>
- <enumerationType>
-     <id>ENTITY_ID</id>
-     <description>Enumeration indicating the IPMI entity ID, these values are
-@@ -1003,6 +1013,69 @@
-     </enumerator>
- </enumerationType>
- 
-+<enumerationType>
-+    <id>SENSOR_TYPE</id>
-+    <description>Enumeration indicating the IPMI sensor type, these values
-+        are defined in the IPMI specification. These values will be used when
-+    sending sensor reading events to the BMC.</description>
-+    <enumerator>
-+        <name>NA</name>
-+        <value>0</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>TEMPERATURE</name>
-+        <value>0x01</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>PROCESSOR</name>
-+        <value>0x07</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>MEMORY</name>
-+        <value>0x0c</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>SYS_FW_PROGRESS</name>
-+        <value>0x0F</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>SYS_EVENT</name>
-+        <value>0x12</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>OS_BOOT</name>
-+       <value>0x1F</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>APCI_POWER_STATE</name>
-+        <value>0x22</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>FREQ</name>
-+        <value>0xC1</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>POWER</name>
-+        <value>0xC2</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>BOOT_COUNT</name>
-+        <value>0xC3</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>PCI_LINK_PRES</name>
-+        <value>0xC4</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>PWR_LIMIT_ACTIVE</name>
-+        <value>0xC4</value>
-+    </enumerator>
-+    <enumerator>
-+        <name>FAULT</name>
-+        <value>0xC7</value>
-+    </enumerator>
-+</enumerationType>
-+
- <!-- IPMI Sensor numbers are defined in the IPMI spec as 8 bit values. However
- in the hostboot code they will be defined as a uint16_t to allow us to add
- additonal information. An example relates to error logs returned by the OCC,
-diff --git a/src/usr/targeting/common/xmltohb/target_types_hb.xml b/src/usr/targeting/common/xmltohb/target_types_hb.xml
-index 8255b70..bd00b87 100644
---- a/src/usr/targeting/common/xmltohb/target_types_hb.xml
-+++ b/src/usr/targeting/common/xmltohb/target_types_hb.xml
-@@ -33,6 +33,14 @@
-      ================================================================= -->
- 
- <targetTypeExtension>
-+    <id>base</id>
-+    <attribute>
-+        <id>IPMI_INSTANCE</id>
-+        <default>0</default>
-+    </attribute>
-+</targetTypeExtension>
-+
-+<targetTypeExtension>
-     <id>sys-sys-power8</id>
-     <attribute><id>IS_MPIPL_HB</id></attribute>
-     <attribute><id>IBSCOM_ENABLE_OVERRIDE</id></attribute>
-@@ -182,9 +190,7 @@
-     <attribute>
-         <id>PSTATE_TABLE</id>
-     </attribute>
--    <attribute>
--        <id>IPMI_SENSORS</id>
--    </attribute>
-+    <attribute><id>IPMI_SENSORS</id></attribute>
- </targetTypeExtension>
- 
- <targetTypeExtension>
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot/hostboot-0008-Report-pnor-side-booted-up-on-A-B-to-OPAL.patch b/openpower/package/hostboot/hostboot-0008-Report-pnor-side-booted-up-on-A-B-to-OPAL.patch
deleted file mode 100644
index 7abf536..0000000
--- a/openpower/package/hostboot/hostboot-0008-Report-pnor-side-booted-up-on-A-B-to-OPAL.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From 2dd8eb6b90b7dfe63587292e163e27075f652b40 Mon Sep 17 00:00:00 2001
-From: Bill Schwartz <whs@us.ibm.com>
-Date: Wed, 11 Feb 2015 05:17:23 -0600
-Subject: [PATCH 4/5] Report pnor side booted up on A/B to OPAL
-
-This story will use the getPnorInfo and getSideInfo interfaces
-to fill in devtree entries informing Opal about the existence,
-location, and state of PNOR sides that we know about.  We will pass up a list
-of TOCs associated with the active side and the inactive side.
-
-RTC: 109703
-Change-Id: I740b086a9e22a0bc167141e3565bf813e50d9a00
-(cherry picked from commit b42f65df9fddb3938c096c23ccdcb2568a727120)
----
- src/include/usr/pnor/pnorif.H |    5 ++
- src/usr/devtree/bld_devtree.C |  110 +++++++++++++++++++++++++++++++++++++++++
- src/usr/pnor/pnor_common.H    |    1 -
- src/usr/pnor/pnordd.C         |    3 +-
- 4 files changed, 117 insertions(+), 2 deletions(-)
-
-diff --git a/src/include/usr/pnor/pnorif.H b/src/include/usr/pnor/pnorif.H
-index e12ccf1..0fc5a83 100644
---- a/src/include/usr/pnor/pnorif.H
-+++ b/src/include/usr/pnor/pnorif.H
-@@ -120,6 +120,11 @@ struct SideInfo_t
-     uint64_t hbbMmioOffset; /**< HBB MMIO Offset associated with hbbAddress*/
- };
- 
-+enum
-+{
-+    INVALID_OFFSET = 0xFFFFFFF,  // Invalid primary or alternate TOC
-+};
-+
- /**
-  * @brief Returns information about a given side of pnor
-  *
-diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
-index f4647a3..d90c1fd 100644
---- a/src/usr/devtree/bld_devtree.C
-+++ b/src/usr/devtree/bld_devtree.C
-@@ -405,6 +405,113 @@ void add_i2c_info( const TARGETING::Target* i_targ,
- 
- }
- 
-+void bld_getSideInfo(PNOR::SideId i_side,
-+                     uint32_t     o_TOCaddress[2],
-+                     uint8_t    & o_count,
-+                     bool       & o_isGolden)
-+{
-+    errlHndl_t  errhdl = NULL;
-+    PNOR::SideInfo_t  l_info;
-+
-+    o_count = 0;
-+    o_isGolden = false;
-+
-+    errhdl = getSideInfo (i_side, l_info);
-+    if (!errhdl)
-+    {
-+        // return the valid TOC offsets & count of valid TOCs
-+        if (PNOR::INVALID_OFFSET != l_info.primaryTOC)
-+        {
-+            o_TOCaddress[o_count++] = l_info.primaryTOC;
-+        }
-+        if (PNOR::INVALID_OFFSET != l_info.backupTOC)
-+        {
-+            o_TOCaddress[o_count++] = l_info.backupTOC;
-+        }
-+        o_isGolden      = l_info.isGolden;
-+    }
-+    else
-+    {
-+        // commit error and return 0 TOC offsets
-+        errlCommit(errhdl, DEVTREE_COMP_ID);
-+    }
-+
-+    return;
-+}
-+
-+void bld_fdt_pnor(devTree *   i_dt,
-+                  dtOffset_t  i_parentNode)
-+{
-+    do
-+    {
-+        uint32_t l_active[2]    = {PNOR::INVALID_OFFSET,PNOR::INVALID_OFFSET};
-+        uint32_t l_golden[2]    = {PNOR::INVALID_OFFSET,PNOR::INVALID_OFFSET};
-+        uint8_t  l_count = 0;
-+        bool     l_isGolden = false;
-+        bool     l_goldenFound = false;
-+        uint8_t  l_goldenCount = 0;
-+        PNOR::PnorInfo_t l_pnorInfo;
-+
-+        //Get pnor address and size
-+        getPnorInfo (l_pnorInfo);
-+
-+        dtOffset_t l_pnorNode = i_dt->addNode(i_parentNode,
-+                                              "pnor",
-+                                              l_pnorInfo.mmioOffset);
-+
-+        const uint8_t l_isaLinkage = 0; // 0==Mem
-+        uint32_t pnor_prop[3] = {l_isaLinkage,
-+                                 l_pnorInfo.mmioOffset,
-+                                 l_pnorInfo.flashSize};
-+        i_dt->addPropertyCells32(l_pnorNode, "reg", pnor_prop, 3);
-+
-+        //Add Working/Active parition
-+        bld_getSideInfo(PNOR::WORKING,l_active,l_count,l_isGolden);
-+        if (l_count) // valid TOCs present
-+        {
-+            i_dt->addPropertyCells32(l_pnorNode,
-+                                 "active-image-tocs", l_active, l_count);
-+            // capture golden
-+            if (l_isGolden)
-+            {
-+                l_golden[0] = l_active[0];
-+                l_golden[1] = l_active[1];
-+                l_goldenCount = l_count;
-+                l_goldenFound = true;
-+            }
-+        }
-+
-+#if CONFIG_PNOR_TWO_SIDE_SUPPORT
-+        //Add Alternate parition
-+        uint32_t l_alternate[2] = {PNOR::INVALID_OFFSET,PNOR::INVALID_OFFSET};
-+
-+        bld_getSideInfo(PNOR::ALTERNATE,l_alternate,l_count,l_isGolden);
-+        if (l_count) // valid TOCs present
-+        {
-+            i_dt->addPropertyCells32(l_pnorNode,
-+                                 "alternate-image-tocs",l_alternate,l_count);
-+            // capture golden
-+            if (l_isGolden)
-+            {
-+                l_golden[0] = l_alternate[0];
-+                l_golden[1] = l_alternate[1];
-+                l_goldenCount = l_count;
-+                l_goldenFound = true;
-+            }
-+        }
-+#endif
-+
-+        //Include golden if there is one
-+        if (l_goldenFound)
-+        {
-+            i_dt->addPropertyCells32(l_pnorNode,
-+                                 "golden-image-tocs",l_golden,l_goldenCount);
-+        }
-+
-+    } while (0);
-+
-+    return;
-+}
- 
- void bld_xscom_node(devTree * i_dt, dtOffset_t & i_parentNode,
-                     const TARGETING::Target * i_pProc, uint32_t i_chipid)
-@@ -488,6 +595,8 @@ void bld_xscom_node(devTree * i_dt, dtOffset_t & i_parentNode,
-         i_dt->addPropertyCell32(lpcNode, "#address-cells", 2);
-         i_dt->addPropertyCell32(lpcNode, "#size-cells", 1);
- 
-+        bld_fdt_pnor (i_dt, lpcNode);
-+
-     }
- 
-     /*NX*/
-@@ -908,6 +1017,7 @@ void load_hbrt_image(uint64_t& io_address)
-     }
- }
- 
-+
- errlHndl_t bld_fdt_system(devTree * i_dt, bool i_smallTree)
- {
-     errlHndl_t errhdl = NULL;
-diff --git a/src/usr/pnor/pnor_common.H b/src/usr/pnor/pnor_common.H
-index dd7ab2e..7213add 100644
---- a/src/usr/pnor/pnor_common.H
-+++ b/src/usr/pnor/pnor_common.H
-@@ -61,7 +61,6 @@ namespace PNOR {
-         SUPPORTED_FFS_VERSION = 0x1,  /**< Supported FFS Version */
-         FFS_TABLE_BASE_ADDR = 0x0,    /**< Currently only have FFS table */
-         TOC_SIZE = 0x8000,
--        INVALID_OFFSET = 0xFFFFFFF,
-     };
- 
-     /**
-diff --git a/src/usr/pnor/pnordd.C b/src/usr/pnor/pnordd.C
-index 13667ce..c0c7b0e 100644
---- a/src/usr/pnor/pnordd.C
-+++ b/src/usr/pnor/pnordd.C
-@@ -46,6 +46,7 @@
- #include <errl/errludstring.H>
- #include <targeting/common/targetservice.H>
- #include "pnordd.H"
-+#include "pnor_common.H"
- #include <pnor/pnorif.H>
- #include <pnor/pnor_reasoncodes.H>
- #include <sys/time.h>
-@@ -196,7 +197,7 @@ bool usingL3Cache()
-  */
- void getPnorInfo( PnorInfo_t& o_pnorInfo )
- {
--    o_pnorInfo.mmioOffset = 0; //LPC_SFC_MMIO_OFFSET;//@fixme-need Prachi's code for this
-+    o_pnorInfo.mmioOffset = LPC_SFC_MMIO_OFFSET|LPC_FW_SPACE;
-     o_pnorInfo.norWorkarounds =
-       Singleton<PnorDD>::instance().getNorWorkarounds();
-     o_pnorInfo.flashSize =
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot/hostboot-0009-Change-Opal-Devtree-IPMI-FRU_ID-Name.patch b/openpower/package/hostboot/hostboot-0009-Change-Opal-Devtree-IPMI-FRU_ID-Name.patch
deleted file mode 100644
index 35944b9..0000000
--- a/openpower/package/hostboot/hostboot-0009-Change-Opal-Devtree-IPMI-FRU_ID-Name.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 90c6df43a7b7836f973d0fbae5c751742d305e37 Mon Sep 17 00:00:00 2001
-From: Bill Hoffa <wghoffa@us.ibm.com>
-Date: Fri, 27 Feb 2015 11:33:07 -0600
-Subject: [PATCH 4/5] Change Opal Devtree IPMI FRU_ID Name
-
-Change-Id: I95156302b65c1a1be611d081e842eaf2aac5d03a
-RTC:124830
-(cherry picked from commit 3847eee998f35baeee1a3c085042ff0cdb78e5d1)
----
- src/usr/devtree/bld_devtree.C |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
-index d90c1fd..66b0d6f 100644
---- a/src/usr/devtree/bld_devtree.C
-+++ b/src/usr/devtree/bld_devtree.C
-@@ -1600,7 +1600,7 @@ errlHndl_t bld_fdt_bmc(devTree * i_dt, bool i_smallTree)
-     TARGETING::targetService().getTopLevelTarget(pSys);
-     assert(pSys != NULL,
-                "bld_fdt_bmc - Error: Could not find the top level target.");
--    i_dt->addPropertyCell32(bmcNode, "fruId",
-+    i_dt->addPropertyCell32(bmcNode, "firmware-fru-id",
-                                    pSys->getAttr<TARGETING::ATTR_FRU_ID>());
- 
-     /* create a node to hold the sensors */
--- 
-1.7.4.1
-
diff --git a/openpower/package/hostboot/hostboot.mk b/openpower/package/hostboot/hostboot.mk
index a415be2..cdba674 100644
--- a/openpower/package/hostboot/hostboot.mk
+++ b/openpower/package/hostboot/hostboot.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-HOSTBOOT_VERSION ?= 6c9eac071a9a79921c4b360af53e023dad19666f
+HOSTBOOT_VERSION ?= c1c0f838d21167482e292246435e7c07f8bfa3bd
 HOSTBOOT_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_VERSION))
 
 HOSTBOOT_LICENSE = Apache-2.0
