diff --git a/.gitmodules b/.gitmodules
index 621ac42..e128ce3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
 [submodule "buildroot"]
 	path = buildroot
-	branch = 2018.08-op-build
+	branch = 2018.11-op-build
 	url = https://github.com/open-power/buildroot
diff --git a/buildroot b/buildroot
index 511fa2a..5d7cc8c 160000
--- a/buildroot
+++ b/buildroot
@@ -1 +1 @@
-Subproject commit 511fa2a7990d17975a1e0b8b083557c4da574f7e
+Subproject commit 5d7cc8cb980ace084b8025522f05e83eb367c706
diff --git a/doc/release-notes/v2.0.12.rst b/doc/release-notes/v2.0.12.rst
new file mode 100644
index 0000000..40bd733
--- /dev/null
+++ b/doc/release-notes/v2.0.12.rst
@@ -0,0 +1,187 @@
+Release Notes for OpenPower Firmware v2.0.12
+============================================
+
+op-build v2.0.12 was released on Friday January 18th, 2019 and replaces
+op-build v2.0.11 as the current stable release in the 2.0.x series.
+
+It is recommended that v2.0.12 be used over any previous v2.0.x version
+due to the bug fixes contained.
+
+Updated Packages
+----------------
+
++--------------+----------+---------+---------------------------------+
+| Package      | Old      | New     | Platforms                       |
+|              | Version  | Version |                                 |
++==============+==========+=========+=================================+
+| hcode        | hw112818 | hw12311 | witherspoon, p9dsu, zaius,      |
+|              | a.op920  | 9a.op92 | romulus                         |
+|              |          | 0       |                                 |
++--------------+----------+---------+---------------------------------+
+| hostboot     | 3bf7fcf3 | d2c0cb9 | witherspoon, p9dsu, zaius,      |
+|              | 5960     | a339bf  | romulus                         |
++--------------+----------+---------+---------------------------------+
+| hostboot-bin | hw112818 | hw12311 | witherspoon, p9dsu, zaius,      |
+| aries        | a.op920  | 9a.op92 | habanero, garrison, barreleye,  |
+|              |          | 0       | firestone, palmetto, vesnin,    |
+|              |          |         | romulus                         |
++--------------+----------+---------+---------------------------------+
+| machine-xml  | 7cd20a6a | dce824c | witherspoon                     |
+|              | c8fe3    | 125884  |                                 |
++--------------+----------+---------+---------------------------------+
+| occ          | 3a505ffc | 39d7745 | witherspoon, p9dsu, zaius, zz,  |
+|              | 17519    | 2d00c   | romulus                         |
++--------------+----------+---------+---------------------------------+
+| petitboot    | v1.7.3   | v1.7.4  | witherspoon, p9dsu, zaius,      |
+|              |          |         | habanero, firenze, garrison,    |
+|              |          |         | barreleye, openpower_mambo,     |
+|              |          |         | pseries, firestone, palmetto,   |
+|              |          |         | openpower_p9_mambo, vesnin, zz, |
+|              |          |         | romulus                         |
++--------------+----------+---------+---------------------------------+
+| skiboot      | v6.0.14  | v6.0.15 | witherspoon, p9dsu, zaius,      |
+|              |          |         | habanero, firenze, garrison,    |
+|              |          |         | barreleye, openpower_mambo,     |
+|              |          |         | pseries, firestone, palmetto,   |
+|              |          |         | openpower_p9_mambo, vesnin, zz, |
+|              |          |         | romulus                         |
++--------------+----------+---------+---------------------------------+
+
+Package: hcode
+--------------
+
+`Repository <https://github.com/open-power/hcode>`__
+
+Commits
+~~~~~~~
+
+hostboot (1):
+
+-  `3ce9d71f1f2e <https://github.com/open-power/hcode/commit/3ce9d71f1f2e>`__
+   Release tag information updated for hw123119a.op920
+
+Package: hostboot
+-----------------
+
+`Repository <https://github.com/open-power/hostboot>`__
+
+Patches
+~~~~~~~
+
+-  `0001-Fix-RC09-ODT-errors-on-Nimbus-dual-drop-configs.patch <https://github.com/open-power/op-build/tree/v2.0.12-1-g8254d9d0ac3e/openpower/package/hostboot/0001-Fix-RC09-ODT-errors-on-Nimbus-dual-drop-configs.patch>`__
+-  `0007-Disable-warnings-that-crop-up-a-lot-with-GCC6.patch <https://github.com/open-power/op-build/tree/v2.0.12-1-g8254d9d0ac3e/openpower/package/hostboot/0007-Disable-warnings-that-crop-up-a-lot-with-GCC6.patch>`__
+-  `hostboot-1020-Revert-jgr17071200-Removed-pdwn-settings.patch <https://github.com/open-power/op-build/tree/v2.0.12-1-g8254d9d0ac3e/openpower/package/hostboot/hostboot-1020-Revert-jgr17071200-Removed-pdwn-settings.patch>`__
+
+.. _commits-1:
+
+Commits
+~~~~~~~
+
+Corey Swenson (1):
+
+-  `d2c0cb9a339b <https://github.com/open-power/hostboot/commit/d2c0cb9a339b>`__
+   Generate error when pnor is not accessed via ipmi
+
+Dan Crowell (1):
+
+-  `d76bea3ff0f5 <https://github.com/open-power/hostboot/commit/d76bea3ff0f5>`__
+   Add sync to doorbell function to avoid weak consistency bug
+
+Shelton Leung (1):
+
+-  `fbb9bf7216be <https://github.com/open-power/hostboot/commit/fbb9bf7216be>`__
+   HW474117 WAT to allow firmware to disable bypass on port
+
+Package: occ
+------------
+
+`Repository <https://github.com/open-power/occ>`__
+
+.. _patches-1:
+
+Patches
+~~~~~~~
+
+.. _commits-2:
+
+Commits
+~~~~~~~
+
+William Bryan (1):
+
+-  `39d77452d00c <https://github.com/open-power/occ/commit/39d77452d00c>`__
+   Fix memory bandwidth chom averages
+
+Package: petitboot
+------------------
+
+`Repository <https://github.com/open-power/petitboot>`__
+
+.. _commits-3:
+
+Commits
+~~~~~~~
+
+Samuel Mendoza-Jonas (2):
+
+-  `017aada974ef <https://github.com/open-power/petitboot/commit/017aada974ef>`__
+   lib/flash: Check if the partition is signed
+-  `8b9d8bf7c983 <https://github.com/open-power/petitboot/commit/8b9d8bf7c983>`__
+   discover/devmapper: Retry dm-device remove if busy
+
+.. _patches-2:
+
+Patches
+~~~~~~~
+
+.. _commits-4:
+
+Commits
+~~~~~~~
+
+Alexey Kardashevskiy (1):
+
+-  `12595094567a <https://github.com/open-power/skiboot/commit/12595094567a>`__
+   npu2: Advertise correct TCE page size
+
+Frederic Barrat (1):
+
+-  `e5e99d277fc5 <https://github.com/open-power/skiboot/commit/e5e99d277fc5>`__
+   i2c: Fix i2c request hang during opal init if timers are not checked
+
+Shilpasri G Bhat (1):
+
+-  `ad92cf94b5f7 <https://github.com/open-power/skiboot/commit/ad92cf94b5f7>`__
+   opal-prd: hservice: Enable hservice->wakeup() in BMC
+
+Vasant Hegde (1):
+
+-  `3bcfff5498b7 <https://github.com/open-power/skiboot/commit/3bcfff5498b7>`__
+   skiboot v6.0.15 release notes
+
+Package: witherspoon-xml
+------------------------
+
+`Repository <https://github.com/open-power/witherspoon-xml>`__
+
+.. _patches-3:
+
+Patches
+~~~~~~~
+
+.. _commits-5:
+
+Commits
+~~~~~~~
+
+Erich Hauptli (2):
+
+-  `c488a6234d09 <https://github.com/open-power/witherspoon-xml/commit/c488a6234d09>`__
+   Added value to TPM FRU ID
+-  `dce824c12588 <https://github.com/open-power/witherspoon-xml/commit/dce824c12588>`__
+   Backing out TPM FRU ID
+
+sannerd (1):
+
+-  `c8bca533fcea <https://github.com/open-power/witherspoon-xml/commit/c8bca533fcea>`__
+   Default Spectre/Meltdown HW Inits to Kernel mode (#78)
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index 8d82c0f..ff3c12d 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 341e499..3689e4d 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -13,7 +13,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 2275fcb..3b43d0b 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index 08a2c0c..b270ef0 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index ba2672f..fbb9799 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index cc99c6c..9ddb542 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -174,6 +174,8 @@
 # CONFIG_NET_VENDOR_PACKET_ENGINES is not set
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QEDE=m
 # CONFIG_NET_VENDOR_QUALCOMM is not set
 # CONFIG_NET_VENDOR_RDC is not set
 # CONFIG_NET_VENDOR_REALTEK is not set
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index 53cb229..3a9309c 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -11,7 +11,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
index f60e8ff..26f360c 100644
--- a/openpower/configs/p9dsu_defconfig
+++ b/openpower/configs/p9dsu_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index 6b5359e..3c1f1db 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/pseries_defconfig b/openpower/configs/pseries_defconfig
index db20243..9752375 100644
--- a/openpower/configs/pseries_defconfig
+++ b/openpower/configs/pseries_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/pseries_skiroot_defconfig"
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
index 513eeef..87e9e6c 100644
--- a/openpower/configs/romulus_defconfig
+++ b/openpower/configs/romulus_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -42,7 +42,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="romulus.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="romulus-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="d91ade7643d6cabc0ba1d5c6f53d3f02c5b01fda"
+BR2_OPENPOWER_MACHINE_XML_VERSION="741046046ec3a6fea28c3829b451801b16f22fd0"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="romulus.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="ROMULUS_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="ROMULUS_hb.mrw.xml"
diff --git a/openpower/configs/vesnin_defconfig b/openpower/configs/vesnin_defconfig
index c05c9f7..671847e 100644
--- a/openpower/configs/vesnin_defconfig
+++ b/openpower/configs/vesnin_defconfig
@@ -14,12 +14,14 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
 BR2_LINUX_KERNEL_ZIMAGE_EPAPR=y
 BR2_LINUX_KERNEL_XZ=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X=y
 BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/busybox.fragment"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_I2C_TOOLS=y
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index f39776b..a3bce25 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -42,7 +42,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="witherspoon.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="witherspoon-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="c488a6234d09ea9b1fff23fd00991cb6e6487df0"
+BR2_OPENPOWER_MACHINE_XML_VERSION="e76c2fc5aeb512a0eb33438c239746de5b629885"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="witherspoon.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="WITHERSPOON_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="WITHERSPOON_hb.mrw.xml"
diff --git a/openpower/configs/witherspoon_dev_defconfig b/openpower/configs/witherspoon_dev_defconfig
index 9ee7ebf..d94569b 100644
--- a/openpower/configs/witherspoon_dev_defconfig
+++ b/openpower/configs/witherspoon_dev_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
index e394138..a9b9518 100644
--- a/openpower/configs/zaius_defconfig
+++ b/openpower/configs/zaius_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
@@ -42,7 +42,7 @@
 BR2_OPENPOWER_POWER9=y
 BR2_HOSTBOOT_CONFIG_FILE="zaius.config"
 BR2_OPENPOWER_MACHINE_XML_GITHUB_PROJECT_VALUE="zaius-xml"
-BR2_OPENPOWER_MACHINE_XML_VERSION="40bf092f8f820c68983376bb4947d7792f93bdfd"
+BR2_OPENPOWER_MACHINE_XML_VERSION="6f6b5efd327958bf5ee7cc51a493d7b3d6f7cefe"
 BR2_OPENPOWER_MACHINE_XML_FILENAME="zaius.xml"
 BR2_OPENPOWER_SYSTEM_XML_FILENAME="ZAIUS_hb.system.xml"
 BR2_OPENPOWER_MRW_XML_FILENAME="ZAIUS_hb.mrw.xml"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
index 50261dc..acadd2d 100644
--- a/openpower/configs/zz_defconfig
+++ b/openpower/configs/zz_defconfig
@@ -13,7 +13,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.6"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.13"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch b/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
index 7218636..9ca189d 100644
--- a/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
+++ b/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
@@ -14,7 +14,7 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index c928dbbff881..2f5aff97f387 100644
+index dae3be1b9c8f..bd675c5db608 100644
 --- a/drivers/usb/host/xhci.c
 +++ b/drivers/usb/host/xhci.c
 @@ -794,6 +794,7 @@ static void xhci_shutdown(struct usb_hcd *hcd)
diff --git a/openpower/linux/0002-Release-OpenPower-kernel.patch b/openpower/linux/0002-Release-OpenPower-kernel.patch
index dfaea7c..cd0a91b 100644
--- a/openpower/linux/0002-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0002-Release-OpenPower-kernel.patch
@@ -9,13 +9,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index 20cbb8e84650..8b36760c6732 100644
+index 892ff14cbc9d..eb33670b9cf9 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -2,7 +2,7 @@
  VERSION = 4
  PATCHLEVEL = 19
- SUBLEVEL = 6
+ SUBLEVEL = 13
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = "People's Front"
diff --git a/openpower/package/hcode/Config.in b/openpower/package/hcode/Config.in
index a3bece0..b274188 100644
--- a/openpower/package/hcode/Config.in
+++ b/openpower/package/hcode/Config.in
@@ -31,7 +31,7 @@
 
 config BR2_HCODE_VERSION
 	string
-	default "hw112118a.930" if BR2_HCODE_LATEST_VERSION
+	default "hw121818a.930" if BR2_HCODE_LATEST_VERSION
 	default BR2_HCODE_CUSTOM_VERSION_VALUE \
 		if BR2_HCODE_CUSTOM_VERSION
 
diff --git a/openpower/package/hostboot-binaries/Config.in b/openpower/package/hostboot-binaries/Config.in
index bbb5d43..8993cf8 100644
--- a/openpower/package/hostboot-binaries/Config.in
+++ b/openpower/package/hostboot-binaries/Config.in
@@ -24,7 +24,7 @@
 
 config BR2_HOSTBOOT_BINARIES_VERSION
 	string
-	default "hw111318a.930" if BR2_HOSTBOOT_BINARIES_LATEST_VERSION
+	default "hw121518a.930" if BR2_HOSTBOOT_BINARIES_LATEST_VERSION
 	default BR2_HOSTBOOT_BINARIES_CUSTOM_VERSION_VALUE \
 		if BR2_HOSTBOOT_BINARIES_CUSTOM_VERSION
 
diff --git a/openpower/package/hostboot-p8/hostboot-p8.mk b/openpower/package/hostboot-p8/hostboot-p8.mk
index 5fb5840..759e468 100644
--- a/openpower/package/hostboot-p8/hostboot-p8.mk
+++ b/openpower/package/hostboot-p8/hostboot-p8.mk
@@ -3,7 +3,7 @@
 # hostboot for POWER8
 #
 ################################################################################
-HOSTBOOT_P8_VERSION ?= c35645e2d863e37a4356d141713e082505c51e94
+HOSTBOOT_P8_VERSION ?= c2471ac74bf8b39a2b2ae324b9d069baf444df2f
 
 HOSTBOOT_P8_SITE ?= $(call github,open-power,hostboot,$(HOSTBOOT_P8_VERSION))
 
diff --git a/openpower/package/hostboot/0001-Fix-RC09-ODT-errors-on-Nimbus-dual-drop-configs.patch b/openpower/package/hostboot/0001-Fix-RC09-ODT-errors-on-Nimbus-dual-drop-configs.patch
new file mode 100644
index 0000000..126d918
--- /dev/null
+++ b/openpower/package/hostboot/0001-Fix-RC09-ODT-errors-on-Nimbus-dual-drop-configs.patch
@@ -0,0 +1,73 @@
+From daab9055723d6cde608b0ea9bb2318ebb0594e0e Mon Sep 17 00:00:00 2001
+From: Louis Stermole <stermole@us.ibm.com>
+Date: Fri, 4 Jan 2019 10:26:21 -0500
+Subject: [PATCH] Fix RC09 ODT errors on Nimbus dual-drop configs
+
+Change-Id: Icefa3c20102627e8819b8f8738bb143d7156d3bb
+CQ:SW452278
+Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/70096
+Reviewed-by: Michael D. Pardeik <pardeik@us.ibm.com>
+Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
+Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
+Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
+Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
+Dev-Ready: Louis Stermole <stermole@us.ibm.com>
+Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
+---
+ .../p9/procedures/hwp/memory/p9_mss_eff_config.C      | 19 +++++++++++++++++--
+ 1 file changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
+index 6b078f9..7b40852 100755
+--- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
++++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
+@@ -5,7 +5,7 @@
+ /*                                                                        */
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+-/* Contributors Listed Below - COPYRIGHT 2015,2018                        */
++/* Contributors Listed Below - COPYRIGHT 2015,2019                        */
+ /* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+@@ -88,6 +88,8 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
+                   "Unable to decode VPD for %s", mss::c_str(i_target) );
+     }
+ 
++    // First we process the ODIC and ODT values since we need these initialized for both DIMM
++    // on a port if we're in a dual-drop config
+     for( const auto& l_spd : l_spd_facades )
+     {
+         const auto l_dimm = l_spd.get_dimm_target();
+@@ -96,7 +98,7 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
+         FAPI_TRY( mss::eff_dimm::factory( l_spd, l_eff_dimm),
+                   "Failed factory for %s",  mss::c_str(l_dimm));
+ 
+-        FAPI_INF("Running eff_config on %s", mss::c_str(l_dimm) );
++        FAPI_INF("Setting up ODIC and ODT attributes on %s", mss::c_str(l_dimm) );
+ 
+         FAPI_TRY(  l_eff_dimm->dram_odic(),
+                    "Failed dram_odic for %s", mss::c_str(l_dimm) );
+@@ -104,6 +106,19 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
+                    "Failed odt_wr for %s", mss::c_str(l_dimm) );
+         FAPI_TRY(  l_eff_dimm->odt_rd(),
+                    "Failed odt_rd for %s", mss::c_str(l_dimm) );
++    }
++
++    // Now we continue with the remainder of eff_config
++    for( const auto& l_spd : l_spd_facades )
++    {
++        const auto l_dimm = l_spd.get_dimm_target();
++
++        std::shared_ptr<mss::eff_dimm> l_eff_dimm;
++        FAPI_TRY( mss::eff_dimm::factory( l_spd, l_eff_dimm),
++                  "Failed factory for %s",  mss::c_str(l_dimm));
++
++        FAPI_INF("Running eff_config on %s", mss::c_str(l_dimm) );
++
+         FAPI_TRY( l_eff_dimm->rcd_mfg_id(),
+                   "Failed rcd_mfg_id for %s", mss::c_str(l_dimm) );
+         FAPI_TRY( l_eff_dimm->register_type(),
+-- 
+1.8.2.2
+
diff --git a/openpower/package/hostboot/0001-Revert-Fixes-LRDIMM-eff_config-bugs.patch b/openpower/package/hostboot/0001-Revert-Fixes-LRDIMM-eff_config-bugs.patch
deleted file mode 100644
index a7ce28d..0000000
--- a/openpower/package/hostboot/0001-Revert-Fixes-LRDIMM-eff_config-bugs.patch
+++ /dev/null
@@ -1,1683 +0,0 @@
-From 0cd588d30268958d8e4dc06e72c07a0cfdfc534a Mon Sep 17 00:00:00 2001
-From: Stewart Smith <stewart@linux.ibm.com>
-Date: Thu, 22 Nov 2018 10:51:50 +1100
-Subject: [PATCH] Revert "Fixes LRDIMM eff_config bugs"
-
-This reverts commit 40a34c94a981ebfe9e1ff95263663cda0cbaaa42.
-
-This broke p9dsu platforms with 16GB DIMMs.
-
-We'd die in ISTEP 15.1 and come back with callouts like this:
-
-10.12460|ERRL|Dumping errors reported prior to registration
-10.12793|================================================
-10.12794|Error reported by prdf (0xE500) PLID 0x90000005
-10.12794|  PRD Signature            : 0x240004 0x18A0000E
-10.15353|  Signature Description    : pu.mca:k0:n0:s0:p00:c4 (MCAECCFIR[14]) \
-					Mainline read UE
-10.17354|  UserData1   : 0x0024000400000103
-10.17354|  UserData2   : 0x18a0000e88047008
-10.17354|------------------------------------------------
-10.18357|  Callout type             : Hardware Callout
-10.20356|  CPU id                   : 2
-10.22360|  Target                   : Physical:/Sys0/Node0/DIMM5
-10.22361|  Deconfig State           : NO_DECONFIG
-10.22361|  GARD Error Type          : GARD_Fatal
-10.22362|  Priority                 : SRCI_PRIORITY_MED
-10.22362|------------------------------------------------
-10.22362|
-10.22363|------------------------------------------------
-10.22363|  System checkstop occurred during IPL on previous boot
-10.22364|------------------------------------------------
-10.22364|
-10.22364|------------------------------------------------
-10.22365|  Hostboot Build ID: hostboot-40a34c9-p36fbe89/hbicore.bin
-10.22365|================================================
-
-*IF* you were lucky enough to IPL, you'd have a bunch of GARD records
-for DIMMs that previously worked perfectly, as well as some runtime
-memory errors:
-
-root@bstn004p1:~# opal-gard list
- ID       | Error    | Type       | Path
----------------------------------------------------------
- 00000001 | 90000014 | Fatal      | /Sys0/Node0/DIMM1
- 00000002 | 90000019 | Fatal      | /Sys0/Node0/DIMM7
- 00000003 | 9000001e | Predictive | /Sys0/Node0/DIMM5
- 00000004 | 90000025 | Predictive | /Sys0/Node0/DIMM3
-=========================================================
-
-[   16.165513] Memory failure: 0x0: reserved kernel page still referenced by 1 users
-[   16.166347] Memory failure: 0x0: recovery action for reserved kernel page: Failed
-[   17.268941] Memory failure: 0x0: already hardware poisoned
-[   17.269908] Memory failure: 0x1: reserved kernel page still referenced by 1 users
-[   17.270776] Memory failure: 0x1: recovery action for reserved kernel page: Failed
-
-and from opal-prd:
-
-Nov 20 00:44:13 bstn004p1 opal-prd[2894]:
-MEM: Memory error: range 0000000000000800-0000000fffffeb40, type: uncorrectable
-MEM: Failed to offline memory! page addr: 0000000000000800 type: 1: \
-	Device or resource busy
-MEM: Memory error: range 0000000000000800-0000000fffffeb40, type: uncorrectable
-MEM: Failed to offline memory! page addr: 0000000000010800 type: 1: \
-	Device or resource busy
-
-Out of the three p9dsu systems I tried, the ones with 16GB DIMMs failed,
-and the ones with 32GB DIMMs did not. FRU snippets:
-
-FRU Device Description : P1-DIMMA1 (ID 12)
- Product Manufacturer  : Samsung Electronics
- Product Name          : DDR4-2666 32GiB 64-bit ECC RDIMM
- Product Part Number   : M393A4K40BB2-CTD
- Product Version       : 00
- Product Serial        : 34ee7214
-
-FRU Device Description : P1-DIMMA1 (ID 12)
- Product Manufacturer  : Samsung Electronics
- Product Name          : DDR4-2666 16GiB 64-bit ECC RDIMM
- Product Part Number   : M393A2K40BB2-CTD
- Product Version       : 00
- Product Serial        : 3446d454
-
-FRU Device Description : P1-DIMMA1 (ID 12)
-Product Manufacturer : Samsung Electronics
-Product Name : DDR4-2666 16GiB 64-bit ECC RDIMM
-Product Part Number : M393A2K40BB2-CTD
-Product Version : 00
-Product Serial : 3569b648
-
-So, for the moment, to not break existing hardware, revert the commit.
-
-Change-Id: Ib35da530c301e2c57e8bd495a4281fc750150f5d
-Fixes: https://github.com/open-power/hostboot/issues/150
-Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
----
- .../p9/procedures/hwp/initfiles/p9n_mca_scom.C     | 136 ++---
- .../procedures/hwp/memory/lib/dimm/bcw_load_ddr4.C |  16 +-
- .../hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H    |   9 +-
- .../p9/procedures/hwp/memory/lib/dimm/ddr4/mrs01.C |   2 +-
- .../p9/procedures/hwp/memory/lib/dimm/eff_dimm.C   | 617 ++++-----------------
- .../p9/procedures/hwp/memory/lib/dimm/eff_dimm.H   | 212 +------
- .../p9/procedures/hwp/memory/lib/phy/ddr_phy.C     |   6 +-
- .../procedures/hwp/memory/lib/shared/mss_const.H   |   1 -
- .../p9/procedures/hwp/memory/p9_mss_eff_config.C   |  20 -
- .../xml/error_info/p9_memory_mss_eff_config.xml    |  18 -
- 10 files changed, 172 insertions(+), 865 deletions(-)
- mode change 100755 => 100644 src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
- mode change 100755 => 100644 src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
-
-diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9n_mca_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9n_mca_scom.C
-index edce5e2..7b010b1 100644
---- a/src/import/chips/p9/procedures/hwp/initfiles/p9n_mca_scom.C
-+++ b/src/import/chips/p9/procedures/hwp/initfiles/p9n_mca_scom.C
-@@ -183,10 +183,10 @@ fapi2::ReturnCode p9n_mca_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& TGT0
-                                              literal_0x0) | l_TGT2_ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM[l_def_PORT_INDEX][literal_1]);
-         uint64_t l_def_SLOT1_DRAM_STACK_HEIGHT = (l_TGT2_ATTR_EFF_NUM_RANKS_PER_DIMM[l_def_PORT_INDEX][literal_1] /
-                 l_def_SLOT1_DENOMINATOR);
--        fapi2::ATTR_MSS_EFF_ODT_RD_Type l_TGT2_ATTR_MSS_EFF_ODT_RD;
--        FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MSS_EFF_ODT_RD, TGT2, l_TGT2_ATTR_MSS_EFF_ODT_RD));
--        fapi2::ATTR_MSS_EFF_ODT_WR_Type l_TGT2_ATTR_MSS_EFF_ODT_WR;
--        FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MSS_EFF_ODT_WR, TGT2, l_TGT2_ATTR_MSS_EFF_ODT_WR));
-+        fapi2::ATTR_MSS_VPD_MT_ODT_RD_Type l_TGT2_ATTR_MSS_VPD_MT_ODT_RD;
-+        FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MT_ODT_RD, TGT2, l_TGT2_ATTR_MSS_VPD_MT_ODT_RD));
-+        fapi2::ATTR_MSS_VPD_MT_ODT_WR_Type l_TGT2_ATTR_MSS_VPD_MT_ODT_WR;
-+        FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MT_ODT_WR, TGT2, l_TGT2_ATTR_MSS_VPD_MT_ODT_WR));
-         fapi2::ATTR_EFF_DRAM_TREFI_Type l_TGT2_ATTR_EFF_DRAM_TREFI;
-         FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TREFI, TGT2, l_TGT2_ATTR_EFF_DRAM_TREFI));
-         uint64_t l_def_REFRESH_INTERVAL = (l_TGT2_ATTR_EFF_DRAM_TREFI[l_def_PORT_INDEX] / (literal_8 * l_def_NUM_RANKS));
-@@ -712,133 +712,133 @@ fapi2::ReturnCode p9n_mca_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& TGT0
-         {
-             FAPI_TRY(fapi2::getScom( TGT0, 0x7010915ull, l_scom_buffer ));
- 
--            l_scom_buffer.insert<0, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<0, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_7) );
--            l_scom_buffer.insert<1, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<1, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_6) );
--            l_scom_buffer.insert<2, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<2, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_3) );
--            l_scom_buffer.insert<3, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<3, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_2) );
--            l_scom_buffer.insert<4, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<4, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_7) );
--            l_scom_buffer.insert<5, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<5, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_6) );
--            l_scom_buffer.insert<6, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<6, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_3) );
--            l_scom_buffer.insert<7, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<7, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_2) );
--            l_scom_buffer.insert<8, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<8, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_7) );
--            l_scom_buffer.insert<9, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<9, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_6) );
--            l_scom_buffer.insert<10, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<10, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_3) );
--            l_scom_buffer.insert<11, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<11, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_2) );
--            l_scom_buffer.insert<12, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<12, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_7) );
--            l_scom_buffer.insert<13, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<13, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_6) );
--            l_scom_buffer.insert<14, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<14, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_3) );
--            l_scom_buffer.insert<15, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<15, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_2) );
--            l_scom_buffer.insert<16, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<16, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_7) );
--            l_scom_buffer.insert<17, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<17, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_6) );
--            l_scom_buffer.insert<18, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<18, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_3) );
--            l_scom_buffer.insert<19, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<19, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_2) );
--            l_scom_buffer.insert<20, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<20, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_7) );
--            l_scom_buffer.insert<21, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<21, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_6) );
--            l_scom_buffer.insert<22, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<22, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_3) );
--            l_scom_buffer.insert<23, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<23, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_2) );
--            l_scom_buffer.insert<24, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<24, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_7) );
--            l_scom_buffer.insert<25, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<25, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_6) );
--            l_scom_buffer.insert<26, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<26, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_3) );
--            l_scom_buffer.insert<27, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<27, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_2) );
--            l_scom_buffer.insert<28, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<28, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_7) );
--            l_scom_buffer.insert<29, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<29, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_6) );
--            l_scom_buffer.insert<30, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<30, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_3) );
--            l_scom_buffer.insert<31, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<31, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_RD[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_2) );
--            l_scom_buffer.insert<32, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<32, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_7) );
--            l_scom_buffer.insert<33, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<33, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_6) );
--            l_scom_buffer.insert<34, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<34, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_3) );
--            l_scom_buffer.insert<35, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-+            l_scom_buffer.insert<35, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_0] >>
-                     literal_2) );
--            l_scom_buffer.insert<36, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<36, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_7) );
--            l_scom_buffer.insert<37, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<37, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_6) );
--            l_scom_buffer.insert<38, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<38, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_3) );
--            l_scom_buffer.insert<39, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-+            l_scom_buffer.insert<39, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_1] >>
-                     literal_2) );
--            l_scom_buffer.insert<40, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<40, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_7) );
--            l_scom_buffer.insert<41, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<41, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_6) );
--            l_scom_buffer.insert<42, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<42, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_3) );
--            l_scom_buffer.insert<43, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-+            l_scom_buffer.insert<43, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_2] >>
-                     literal_2) );
--            l_scom_buffer.insert<44, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<44, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_7) );
--            l_scom_buffer.insert<45, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<45, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_6) );
--            l_scom_buffer.insert<46, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<46, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_3) );
--            l_scom_buffer.insert<47, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-+            l_scom_buffer.insert<47, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_0][literal_3] >>
-                     literal_2) );
--            l_scom_buffer.insert<48, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<48, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_7) );
--            l_scom_buffer.insert<49, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<49, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_6) );
--            l_scom_buffer.insert<50, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<50, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_3) );
--            l_scom_buffer.insert<51, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-+            l_scom_buffer.insert<51, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_0] >>
-                     literal_2) );
--            l_scom_buffer.insert<52, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<52, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_7) );
--            l_scom_buffer.insert<53, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<53, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_6) );
--            l_scom_buffer.insert<54, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<54, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_3) );
--            l_scom_buffer.insert<55, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-+            l_scom_buffer.insert<55, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_1] >>
-                     literal_2) );
--            l_scom_buffer.insert<56, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<56, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_7) );
--            l_scom_buffer.insert<57, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<57, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_6) );
--            l_scom_buffer.insert<58, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<58, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_3) );
--            l_scom_buffer.insert<59, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-+            l_scom_buffer.insert<59, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_2] >>
-                     literal_2) );
--            l_scom_buffer.insert<60, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<60, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_7) );
--            l_scom_buffer.insert<61, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<61, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_6) );
--            l_scom_buffer.insert<62, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<62, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_3) );
--            l_scom_buffer.insert<63, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_EFF_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-+            l_scom_buffer.insert<63, 1, 63, uint64_t>((l_TGT2_ATTR_MSS_VPD_MT_ODT_WR[l_def_PORT_INDEX][literal_1][literal_3] >>
-                     literal_2) );
-             FAPI_TRY(fapi2::putScom(TGT0, 0x7010915ull, l_scom_buffer));
-         }
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/bcw_load_ddr4.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/bcw_load_ddr4.C
-index 3539735..92e65bc 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/bcw_load_ddr4.C
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/bcw_load_ddr4.C
-@@ -100,7 +100,6 @@ fapi2::ReturnCode bcw_load_ddr4( const fapi2::Target<TARGET_TYPE_DIMM>& i_target
-             { FUNC_SPACE_0,  DQ_DRIVER_CW,          eff_dimm_ddr4_bc03,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_0,  MDQ_RTT_CW,            eff_dimm_ddr4_bc04,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_0,  MDQ_DRIVER_CW,         eff_dimm_ddr4_bc05,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
--            { FUNC_SPACE_0,  CMD_SPACE_CW,          eff_dimm_ddr4_bc06,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_0,  RANK_PRESENCE_CW,      eff_dimm_ddr4_bc07,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_0,  RANK_SELECTION_CW,     eff_dimm_ddr4_bc08,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_0,  POWER_SAVING_CW,       eff_dimm_ddr4_bc09,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
-@@ -112,23 +111,14 @@ fapi2::ReturnCode bcw_load_ddr4( const fapi2::Target<TARGET_TYPE_DIMM>& i_target
-             { FUNC_SPACE_0,  ERROR_STATUS_CW,       eff_dimm_ddr4_bc0f,  mss::tmrc() , CW4_DATA_LEN, cw_info::BCW},
- 
-             // 8-bit BCW's now
--            // Function space 0 - we're already there, so that's nice
--            { FUNC_SPACE_0,  BUFF_CONFIG_CW,        eff_dimm_ddr4_f0bc1x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
--            { FUNC_SPACE_0, LRDIMM_OPERATING_SPEED, eff_dimm_ddr4_f0bc6x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
--
--            // Function space 2
--            { FUNC_SPACE_2,  FUNC_SPACE_SELECT_CW,  FUNC_SPACE_2,         mss::tmrd(), CW8_DATA_LEN, cw_info::BCW},
--            { FUNC_SPACE_2, HOST_DFE,               eff_dimm_ddr4_f2bcex, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
-+            // Function space 6
-+            { FUNC_SPACE_6,  FUNC_SPACE_SELECT_CW,  FUNC_SPACE_6,         mss::tmrd(), CW8_DATA_LEN, cw_info::BCW},
-+            { FUNC_SPACE_6, BUFF_TRAIN_CONFIG_CW,   eff_dimm_ddr4_f6bc4x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
- 
-             // Function space 5
-             { FUNC_SPACE_5, FUNC_SPACE_SELECT_CW,   FUNC_SPACE_5,         mss::tmrd(), CW8_DATA_LEN, cw_info::BCW},
--            { FUNC_SPACE_5, HOST_VREF_CW,           eff_dimm_ddr4_f5bc5x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
-             { FUNC_SPACE_5, DRAM_VREF_CW,           eff_dimm_ddr4_f5bc6x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
- 
--            // Function space 6
--            { FUNC_SPACE_6,  FUNC_SPACE_SELECT_CW,  FUNC_SPACE_6,         mss::tmrd(), CW8_DATA_LEN, cw_info::BCW},
--            { FUNC_SPACE_6, BUFF_TRAIN_CONFIG_CW,   eff_dimm_ddr4_f6bc4x, mss::tmrc(), CW8_DATA_LEN, cw_info::BCW},
--
- 
-             // So, we always want to know what function space we're in
-             // The way to do that is to always return to one function space
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
-index 05b1f2f..a92d8ea 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/data_buffer_ddr4.H
-@@ -90,12 +90,9 @@ enum db02_def : size_t
-     FUNC_SPACE_SELECT_CW = 0x7,
- 
-     // 8 bit BCWs
--    BUFF_CONFIG_CW = 0x1, // Func space 0
--    LRDIMM_OPERATING_SPEED = 0x6, // Func space 0
--    HOST_DFE = 0xE, // Func space 2
--    HOST_VREF_CW = 0x5, // Func space 5
--    DRAM_VREF_CW = 0x6, // Func space 5
--    BUFF_TRAIN_CONFIG_CW = 0x4, // Func space 6
-+    BUFF_CONFIG_CW = 0x1,
-+    DRAM_VREF_CW = 0x6,
-+    BUFF_TRAIN_CONFIG_CW = 0x4,
- };
- 
- namespace ddr4
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs01.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs01.C
-index 834ee1e..875c83f 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs01.C
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs01.C
-@@ -62,7 +62,7 @@ mrs01_data::mrs01_data( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
-     iv_qoff(0)
- {
-     FAPI_TRY( mss::eff_dram_dll_enable(i_target, iv_dll_enable), "Error in mrs01_data()" );
--    FAPI_TRY( mss::eff_dram_odic(i_target, &(iv_odic[0])), "Error in mrs01_data()" );
-+    FAPI_TRY( mss::vpd_mt_dram_drv_imp_dq_dqs(i_target, &(iv_odic[0])), "Error in mrs01_data()" );
-     FAPI_TRY( mss::eff_dram_al(i_target, iv_additive_latency), "Error in mrs01_data()" );
-     FAPI_TRY( mss::eff_dram_wr_lvl_enable(i_target, iv_wl_enable), "Error in mrs01_data()" );
-     FAPI_TRY( mss::eff_dram_rtt_nom(i_target, &(iv_rtt_nom[0])), "Error in mrs01_data()" );
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
-old mode 100755
-new mode 100644
-index b5e562a..ae55f78
---- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
-@@ -312,20 +312,9 @@ enum rc3x_encode : uint8_t
- enum bc03_encode : uint8_t
- {
-     // Bit position of the BC03 bit to enable/ disable DQ/ DQS drivers
--    BC03_HOST_DQ_DISABLE_POS = 4,
--    BC03_HOST_DQ_DISABLE = 1,
--    BC03_HOST_DQ_ENABLE = 0,
--};
--
--///
--/// @brief bc05_encode enums for DRAM Interface MDQ Driver Control Word
--///
--enum bc05_encode : uint8_t
--{
--    // Bit position of the BC05 bit to enable/ disable DQ/ DQS drivers
--    BC05_DRAM_DQ_DRIVER_DISABLE_POS = 4,
--    BC05_DRAM_DQ_DRIVER_DISABLE = 1,
--    BC05_DRAM_DQ_DRIVER_ENABLE = 0,
-+    BC03_DQ_DISABLE_POS = 4,
-+    BC03_DQ_DISABLE = 1,
-+    BC03_DQ_ENABLE = 0,
- };
- 
- 
-@@ -340,7 +329,6 @@ enum bc09_encode : uint8_t
-     BC09_CKE_POWER_DOWN_ENABLE_POS = 4,
-     BC09_CKE_POWER_ODT_OFF = 1,
-     BC09_CKE_POWER_ODT_ON = 0,
--    BC09_CKE_POWER_ODT_POS = 5,
- };
- 
- ///
-@@ -360,7 +348,6 @@ enum invalid_freq_function_encoding : uint8_t
-     RC0A = 0x0a,
-     RC3X = 0x30,
-     BC0A = 0x0a,
--    F0BC6X = 0x60,
- };
- 
- ///
-@@ -1418,28 +1405,6 @@ fapi_try_exit:
- }
- 
- ///
--/// @brief Determines & sets effective config for DRAM output driver impedance control
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_rdimm::dram_odic()
--{
--    uint8_t l_dram_odic[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vpd_odic[MAX_RANK_PER_DIMM];
--    FAPI_TRY( eff_dram_odic(iv_mcs, &l_dram_odic[0][0][0]));
--
--    // Gets the VPD value
--    FAPI_TRY( mss::vpd_mt_dram_drv_imp_dq_dqs(iv_dimm, &(l_vpd_odic[0])));
--
--    // Updates DRAM ODIC with the VPD value
--    memcpy(&(l_dram_odic[iv_port_index][iv_dimm_index][0]), l_vpd_odic, MAX_RANK_PER_DIMM);
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_ODIC, iv_mcs, l_dram_odic) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
- /// @brief Determines & sets effective config for tCCD_L
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- ///
-@@ -1926,8 +1891,8 @@ fapi2::ReturnCode eff_dimm::dimm_rc09()
-         // 2) Gets the ODT values for the other DIMM
-         uint8_t l_wr_odt[MAX_RANK_PER_DIMM] = {};
-         uint8_t l_rd_odt[MAX_RANK_PER_DIMM] = {};
--        FAPI_TRY(eff_odt_rd(l_other_dimm, l_rd_odt));
--        FAPI_TRY(eff_odt_wr(l_other_dimm, l_wr_odt));
-+        FAPI_TRY(vpd_mt_odt_rd(l_other_dimm, l_rd_odt));
-+        FAPI_TRY(vpd_mt_odt_wr(l_other_dimm, l_wr_odt));
- 
-         // 3) Checks whether this DIMM's ODTs are used for writes or reads that target the other DIMMs
-         for(uint8_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
-@@ -2897,42 +2862,6 @@ fapi_try_exit:
- }
- 
- ///
--/// @brief Determines & sets effective config for Vref DQ Train Value and Range
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
--fapi2::ReturnCode eff_lrdimm::vref_dq_train_value_and_range()
--{
--    uint8_t l_vref_dq_train_value[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vref_dq_train_range[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    fapi2::buffer<uint8_t> l_vref_range;
--
--    // Gets the attributes
--    FAPI_TRY( eff_vref_dq_train_value(iv_mcs, &l_vref_dq_train_value[0][0][0]) );
--    FAPI_TRY( eff_vref_dq_train_range(iv_mcs, &l_vref_dq_train_range[0][0][0]) );
--
--    // Using hardcoded values for 2R settings from the IBM SI team
--    // It should be good enough to get us going
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
--    {
--        constexpr uint8_t VREF_79PERCENT = 0x1d;
--        // Yes, range1 has a value of 0 this is taken from the JEDEC spec
--        constexpr uint8_t RANGE1 = 0x00;
--        l_vref_dq_train_value[iv_port_index][iv_dimm_index][l_rank] = VREF_79PERCENT;
--        l_vref_dq_train_range[iv_port_index][iv_dimm_index][l_rank] = RANGE1;
--    }
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_VREF_DQ_TRAIN_VALUE, iv_mcs, l_vref_dq_train_value),
--              "Failed setting attribute for ATTR_EFF_VREF_DQ_TRAIN_VALUE");
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_VREF_DQ_TRAIN_RANGE, iv_mcs, l_vref_dq_train_range),
--              "Failed setting attribute for ATTR_EFF_VREF_DQ_TRAIN_RANGE");
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
- /// @brief Determines & sets effective config for Vref DQ Train Enable
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- ///
-@@ -4350,7 +4279,7 @@ fapi2::ReturnCode eff_rdimm::dram_rtt_nom()
-     // Indexed by denominator. So, if RQZ is 240, and you have OHM240, then you're looking
-     // for mss::index 1. So this doesn't correspond directly with the table in the JEDEC spec,
-     // as that's not in "denominator order."
--    //                                                  0  RQZ/1  RQZ/2  RQZ/3  RQZ/4  RQZ/5  RQZ/6  RQZ/7
-+    //                                   0  RQZ/1  RQZ/2  RQZ/3  RQZ/4  RQZ/5  RQZ/6  RQZ/7
-     constexpr uint8_t rtt_nom_map[RTT_NOM_MAP_SIZE] = { 0, 0b100, 0b010, 0b110, 0b001, 0b101, 0b011, 0b111 };
- 
-     size_t l_rtt_nom_index = 0;
-@@ -4400,21 +4329,24 @@ fapi_try_exit:
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- /// @note used for MRS01
- ///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
- fapi2::ReturnCode eff_lrdimm::dram_rtt_nom()
- {
-+    std::vector< uint64_t > l_ranks;
-+
-+    uint8_t l_decoder_val = 0;
-     uint8_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
-     FAPI_TRY( eff_dram_rtt_nom(iv_mcs, &l_mcs_attrs[0][0][0]) );
- 
--    // The host is in charge of ensuring good termination from the buffer to the DRAM
--    // That means that we need to know and set the settings
--    // Currently, our SI team thinks that the 2R single drop open power settings will work for BUP
--    // We're going to hard code in those settings the above story can be used as a catchall to improve settings if need be
--    // Loops through all ranks
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
-+    // Get the value from the LRDIMM SPD
-+    FAPI_TRY( iv_spd_decoder.dram_rtt_nom(iv_freq, l_decoder_val));
-+
-+    // Plug into every rank position for the attribute so it'll fit the same style as the RDIMM value
-+    // Same value for every rank for LRDIMMs
-+    FAPI_TRY(mss::rank::ranks(iv_dimm, l_ranks));
-+
-+    for (const auto& l_rank : l_ranks)
-     {
--        // Taking the 34ohm value from up above
--        l_mcs_attrs[iv_port_index][iv_dimm_index][l_rank] = 0b111;
-+        l_mcs_attrs[iv_port_index][iv_dimm_index][mss::index(l_rank)] = l_decoder_val;
-     }
- 
-     FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_RTT_NOM, iv_mcs, l_mcs_attrs) );
-@@ -4481,21 +4413,23 @@ fapi_try_exit:
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- /// @note used for MRS02
- ///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
- fapi2::ReturnCode eff_lrdimm::dram_rtt_wr()
- {
-+    std::vector< uint64_t > l_ranks;
-+
-+    uint8_t l_decoder_val = 0;
-     uint8_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    FAPI_TRY( eff_dram_rtt_wr(iv_mcs, &l_mcs_attrs[0][0][0]) );
- 
--    // The host is in charge of ensuring good termination from the buffer to the DRAM
--    // That means that we need to know and set the settings
--    // Currently, our SI team thinks that the 2R single drop open power settings will work for BUP
--    // We're going to hard code in those settings the above story can be used as a catchall to improve settings if need be
--    // Loops through all ranks
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
-+    // Get the value from the LRDIMM SPD
-+    FAPI_TRY( iv_spd_decoder.dram_rtt_wr(iv_freq, l_decoder_val));
-+
-+    // Plug into every rank position for the attribute so it'll fit the same style as the RDIMM value
-+    // Same value for every rank for LRDIMMs
-+    FAPI_TRY(mss::rank::ranks(iv_dimm, l_ranks));
-+
-+    for (const auto& l_rank : l_ranks)
-     {
--        // Taking the disable value from up above
--        l_mcs_attrs[iv_port_index][iv_dimm_index][l_rank] = 0b000;
-+        l_mcs_attrs[iv_port_index][iv_dimm_index][mss::index(l_rank)] = l_decoder_val;
-     }
- 
-     // Set the attribute
-@@ -4554,23 +4488,27 @@ fapi_try_exit:
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- /// @note used for MRS05
- ///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
- fapi2::ReturnCode eff_lrdimm::dram_rtt_park()
- {
-     uint8_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
-+    uint8_t l_decoder_val_01 = 0;
-+    uint8_t l_decoder_val_23 = 0;
- 
-     FAPI_TRY( eff_dram_rtt_park(iv_mcs, &l_mcs_attrs[0][0][0]) );
- 
--    // The host is in charge of ensuring good termination from the buffer to the DRAM
--    // That means that we need to know and set the settings
--    // Currently, our SI team thinks that the 2R single drop open power settings will work for BUP
--    // We're going to hard code in those settings the above story can be used as a catchall to improve settings if need be
--    // Loops through all ranks
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
--    {
--        // Taking the disable value from up above
--        l_mcs_attrs[iv_port_index][iv_dimm_index][l_rank] = 0b000;
--    }
-+    // Get the value from the LRDIMM SPD
-+    FAPI_TRY( iv_spd_decoder.dram_rtt_park_ranks0_1(iv_freq, l_decoder_val_01),
-+              "%s failed to decode RTT_PARK for ranks 0/1", mss::c_str(iv_mcs) );
-+    FAPI_TRY( iv_spd_decoder.dram_rtt_park_ranks2_3(iv_freq, l_decoder_val_23),
-+              "%s failed to decode RTT_PARK for ranks 2/3", mss::c_str(iv_mcs) );
-+
-+    // Setting the four rank values for this dimm
-+    // Rank 0 and 1 have the same value, l_decoder_val_01
-+    // Rank 2 and 3 have the same value, l_decoder_val_23
-+    l_mcs_attrs[iv_port_index][iv_dimm_index][0] = l_decoder_val_01;
-+    l_mcs_attrs[iv_port_index][iv_dimm_index][1] = l_decoder_val_01;
-+    l_mcs_attrs[iv_port_index][iv_dimm_index][2] = l_decoder_val_23;
-+    l_mcs_attrs[iv_port_index][iv_dimm_index][3] = l_decoder_val_23;
- 
-     FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_RTT_PARK, iv_mcs, l_mcs_attrs) );
- 
-@@ -4661,16 +4599,13 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc01()
-     uint8_t l_dram_rtt_wr[MAX_RANK_PER_DIMM];
-     FAPI_TRY( mss::vpd_mt_dram_rtt_wr(iv_dimm, &(l_dram_rtt_wr[0])) );
- 
--    // Rzq is 240, so calculate from there
-     static const std::vector< std::pair<uint8_t, uint8_t> > l_rtt_wr_map =
-     {
-         {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_DISABLE, 0b000},
--        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_HIGHZ, 0b111},
--        // Note: we don't have this value for DDR4 RTT_WR, so we don't have a constant for it
--        {60, 0b001}, // RZQ/4
--        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM80, 0b110}, // RZQ/3
--        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM120, 0b010}, // RZQ/2
--        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM240, 0b100} // RZQ/1
-+        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_HIGHZ, 0b011},
-+        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM80, 0b100}, // RZQ/3
-+        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM120, 0b001}, // RZQ/2
-+        {fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_WR_OHM240, 0b010}
-     };
- 
-     FAPI_ASSERT( mss::find_value_from_key(l_rtt_wr_map, l_dram_rtt_wr[l_rank], l_encoding),
-@@ -4708,38 +4643,29 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc02()
-     // Retrieve MCS attribute data
-     uint8_t l_attrs_dimm_bc02[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
- 
--    uint8_t l_rank = 0;
--    // Indexed by denominator. So, if RQZ is 240, and you have OHM240, then you're looking
--    // for mss::index 1. So this doesn't correspond directly with the table in the JEDEC spec,
--    // as that's not in "denominator order."
--    constexpr uint64_t RTT_PARK_COUNT = 8;
--    //                                                 0  RQZ/1  RQZ/2  RQZ/3  RQZ/4  RQZ/5  RQZ/6  RQZ/7
--    constexpr uint8_t rtt_park_map[RTT_PARK_COUNT] = { 0, 0b100, 0b010, 0b110, 0b001, 0b101, 0b011, 0b111 };
-+    {
-+        uint8_t l_rank = 0;
-+        // Indexed by denominator. So, if RQZ is 240, and you have OHM240, then you're looking
-+        // for mss::index 1. So this doesn't correspond directly with the table in the JEDEC spec,
-+        // as that's not in "denominator order."
-+        constexpr uint64_t RTT_PARK_COUNT = 8;
-+        //                                                 0  RQZ/1  RQZ/2  RQZ/3  RQZ/4  RQZ/5  RQZ/6  RQZ/7
-+        constexpr uint8_t rtt_park_map[RTT_PARK_COUNT] = { 0, 0b100, 0b010, 0b110, 0b001, 0b101, 0b011, 0b111 };
- 
--    uint8_t l_rtt_park[MAX_RANK_PER_DIMM];
--    uint8_t l_rtt_park_index = 0;
-+        uint8_t l_rtt_park[MAX_RANK_PER_DIMM];
- 
--    FAPI_TRY( mss::vpd_mt_dram_rtt_park(iv_dimm, &(l_rtt_park[0])) );
-+        FAPI_TRY( mss::vpd_mt_dram_rtt_park(iv_dimm, &(l_rtt_park[0])) );
- 
--    // We have to be careful about 0
--    l_rtt_park_index = (l_rtt_park[l_rank] == 0) ?
--                       0 : fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_PARK_240OHM / l_rtt_park[l_rank];
-+        // Calculate the value for each rank and store in attribute
-+        uint8_t l_rtt_park_index = 0;
- 
--    // Make sure it's a valid index
--    FAPI_ASSERT( l_rtt_park_index < RTT_PARK_COUNT,
--                 fapi2::MSS_INVALID_RTT_PARK_CALCULATIONS()
--                 .set_RANK(l_rank)
--                 .set_RTT_PARK_INDEX(l_rtt_park_index)
--                 .set_RTT_PARK_FROM_VPD(l_rtt_park[mss::index(l_rank)])
--                 .set_DIMM_TARGET(iv_dimm),
--                 "Error calculating RTT_PARK for target %s rank %d, rtt_park from vpd is %d, index is %d",
--                 mss::c_str(iv_dimm),
--                 l_rank,
--                 l_rtt_park[mss::index(l_rank)],
--                 l_rtt_park_index);
-+        // We have to be careful about 0
-+        l_rtt_park_index = (l_rtt_park[l_rank] == 0) ?
-+                           0 : fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_RTT_PARK_240OHM / l_rtt_park[l_rank];
- 
--    // Map from RTT_PARK array to the value in the map
--    l_decoder_val = rtt_park_map[l_rtt_park_index];
-+        // Map from RTT_PARK array to the value in the map
-+        l_decoder_val = rtt_park_map[l_rtt_park_index];
-+    }
- 
-     FAPI_TRY( eff_dimm_ddr4_bc02(iv_mcs, &l_attrs_dimm_bc02[0][0]) );
-     l_attrs_dimm_bc02[iv_port_index][iv_dimm_index] = l_decoder_val;
-@@ -4798,7 +4724,7 @@ fapi2::ReturnCode eff_lrdimm_db01::dimm_bc03()
- 
-     // Using a writeBit for clarity sake
-     // Enabling Host interface DQ/DQS driver
--    l_result.writeBit<BC03_HOST_DQ_DISABLE_POS>(BC03_HOST_DQ_ENABLE);
-+    l_result.writeBit<BC03_DQ_DISABLE_POS>(BC03_DQ_ENABLE);
- 
-     FAPI_TRY( eff_dimm_ddr4_bc03(iv_mcs, &l_attrs_dimm_bc03[0][0]) );
-     l_attrs_dimm_bc03[iv_port_index][iv_dimm_index] = l_result;
-@@ -4834,7 +4760,7 @@ fapi2::ReturnCode eff_lrdimm_db02::dimm_bc03()
- 
-     // Treat buffer as 0th rank. LRDIMM in our eyes only have 1 rank
-     constexpr size_t l_rank = 0;
--    fapi2::buffer<uint8_t> l_result;
-+    fapi2::buffer<uint8_t> l_result = 0;
-     uint64_t l_ohm_value = 0;
-     uint8_t l_encoding = 0;
-     // attributes
-@@ -4858,7 +4784,7 @@ fapi2::ReturnCode eff_lrdimm_db02::dimm_bc03()
- 
-     // Using a writeBit for clarity sake
-     // Enabling DQ/DQS drivers
--    l_result.writeBit<BC03_HOST_DQ_DISABLE_POS>(BC03_HOST_DQ_ENABLE);
-+    l_result.writeBit<BC03_DQ_DISABLE_POS>(BC03_DQ_ENABLE);
- 
-     // Retrieve MCS attribute data
-     FAPI_TRY( eff_dimm_ddr4_bc03(iv_mcs, &l_attrs_dimm_bc03[0][0]) );
-@@ -4886,15 +4812,21 @@ fapi_try_exit:
- /// DRAM Interface MDQ/MDQS ODT Strength for Data Buffer
- /// Comes from SPD
- ///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
- fapi2::ReturnCode eff_lrdimm::dimm_bc04()
- {
-+    uint8_t l_decoder_val = 0;
-+
-     // Retrieve MCS attribute data
-     uint8_t l_attrs_dimm_bc04[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
-     FAPI_TRY( eff_dimm_ddr4_bc04(iv_mcs, &l_attrs_dimm_bc04[0][0]) );
-+    // Update MCS attribute
- 
--    // Taken from SI spreadsheet and JEDEC - we want 60 Ohms, so 0x01 for a value
--    l_attrs_dimm_bc04[iv_port_index][iv_dimm_index] = 0x01;
-+    // So the encoding from the SPD is the same as the encoding for the buffer control encoding
-+    // Simple grab and insert
-+    // Value is checked in decoder function for validity
-+    FAPI_TRY( iv_spd_decoder.data_buffer_mdq_rtt(iv_freq, l_decoder_val) );
-+
-+    // Update MCS attribute
- 
-     FAPI_INF("%s: BC04 settting (MDQ_RTT): %d", mss::c_str(iv_dimm), l_attrs_dimm_bc04[iv_port_index][iv_dimm_index] );
-     FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_BC04, iv_mcs, l_attrs_dimm_bc04) );
-@@ -4911,22 +4843,19 @@ fapi_try_exit:
- /// Page 57 Table 28
- /// @note DRAM Interface MDQ/MDQS Output Driver Impedance control
- ///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
- fapi2::ReturnCode eff_lrdimm::dimm_bc05()
- {
--    // Taken from the SI spreadsheet - we want 34 Ohms so 0x01
--    fapi2::buffer<uint8_t> l_result(0x01);
-+    uint8_t l_decoder_val;
- 
-     // Retrieve MCS attribute data
-     uint8_t l_attrs_dimm_bc05[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
-     FAPI_TRY( eff_dimm_ddr4_bc05(iv_mcs, &l_attrs_dimm_bc05[0][0]) );
- 
--    // Using a writeBit for clarity sake
--    // Enabling DQ/DQS drivers
--    l_result.writeBit<BC05_DRAM_DQ_DRIVER_DISABLE_POS>(BC05_DRAM_DQ_DRIVER_ENABLE);
--    l_attrs_dimm_bc05[iv_port_index][iv_dimm_index] = l_result;
-+    // Same as BC04, grab from SPD and put into BC
-+    FAPI_TRY( iv_spd_decoder.data_buffer_mdq_drive_strength(iv_freq, l_decoder_val) );
-+    l_attrs_dimm_bc05[iv_port_index][iv_dimm_index] = l_decoder_val;
- 
--    FAPI_INF("%s: BC05 settting (MDQ Drive Strength): 0x%02x", mss::c_str(iv_dimm),
-+    FAPI_INF("%s: BC05 settting (MDQ Drive Strenght): %d", mss::c_str(iv_dimm),
-              l_attrs_dimm_bc05[iv_port_index][iv_dimm_index] );
-     FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_BC05, iv_mcs, l_attrs_dimm_bc05) );
- 
-@@ -4935,32 +4864,6 @@ fapi_try_exit:
- }
- 
- ///
--/// @brief Determines & sets effective config for DIMM BC06
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--/// @noteCommand Space Control Word
--/// From DDR4DB02 Spec Rev 0.95
--/// Page 57 Table 28
--/// @note DRAM Interface MDQ/MDQS Output Driver Impedance control
--///
--fapi2::ReturnCode eff_lrdimm::dimm_bc06()
--{
--    constexpr uint8_t RESET_DLL = 0x00;
--
--    // Retrieve MCS attribute data
--    uint8_t l_attrs_dimm_bc06[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--    FAPI_TRY( eff_dimm_ddr4_bc06(iv_mcs, &l_attrs_dimm_bc06[0][0]) );
--
--    l_attrs_dimm_bc06[iv_port_index][iv_dimm_index] = RESET_DLL;
--
--    FAPI_INF("%s: BC06 settting (Command Space Control Word): 0x%02x", mss::c_str(iv_dimm),
--             l_attrs_dimm_bc06[iv_port_index][iv_dimm_index] );
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_BC06, iv_mcs, l_attrs_dimm_bc06) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
- /// @brief Determines & sets effective config for DIMM BC07
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- /// @note Rank Presence Control Word
-@@ -4972,7 +4875,7 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc07()
- {
-     // Map for the bc07 attribute, Each bit and its position represents one rank
-     // 0b0 == enabled, 0b1 == disabled
--    //                                                      1 rank  2 rank  3 rank  4 rank
-+    //                                                1 rank  2 rank  3 rank  4 rank
-     constexpr uint8_t const dram_map [MAX_RANK_PER_DIMM] = {0b1110, 0b1100, 0b1000, 0b0000};
-     uint8_t l_ranks_per_dimm = 0;
- 
-@@ -4986,15 +4889,7 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc07()
-     // Subtract so 1 rank == 0, 2 rank == 1, etc. For array mss::indexing
-     --l_ranks_per_dimm;
-     // Make sure we didn't overflow or screw up somehow
--    // TK Thoughts on if we need an official error code below??
--    FAPI_ASSERT(l_ranks_per_dimm < MAX_RANK_PER_DIMM,
--                fapi2::MSS_OUT_OF_BOUNDS_INDEXING()
--                .set_TARGET(iv_dimm)
--                .set_INDEX(l_ranks_per_dimm)
--                .set_LIST_SIZE(MAX_RANK_PER_DIMM)
--                .set_FUNCTION(EFF_BC07),
--                "%s has ranks per dimm (%u) out of bounds: %u",
--                mss::c_str(iv_dimm), l_ranks_per_dimm, MAX_RANK_PER_DIMM);
-+    fapi2::Assert (l_ranks_per_dimm < MAX_RANK_PER_DIMM);
- 
-     l_attrs_dimm_bc07[iv_port_index][iv_dimm_index] = dram_map[l_ranks_per_dimm];
- 
-@@ -5024,7 +4919,8 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc08()
-     // Update MCS attribute
-     FAPI_TRY( eff_dimm_ddr4_bc08(iv_mcs, &l_attrs_dimm_bc08[0][0]) );
-     // BC08 is used to set the rank for Write Leveling training modes
--    // This value is used in training so a value of 0 is fine for now
-+    // Defaulting to 0 because every dimm should have a rank 0, right?
-+    // This attribute should be set in training...
-     l_attrs_dimm_bc08[iv_port_index][iv_dimm_index] = 0;
- 
-     FAPI_INF("%s: BC08 settting: %d", mss::c_str(iv_dimm), l_attrs_dimm_bc08[iv_port_index][iv_dimm_index] );
-@@ -5051,9 +4947,9 @@ fapi2::ReturnCode eff_lrdimm::dimm_bc09()
- 
-     fapi2::buffer<uint8_t> l_setting = 0;
- 
--    // Enabling power down mode (when CKE's are low!) to bring us inline with RC09/RCD powerdown mode
--    l_setting.writeBit<BC09_CKE_POWER_DOWN_ENABLE_POS>(BC09_CKE_POWER_DOWN_ENABLE)
--    .writeBit<BC09_CKE_POWER_ODT_POS>(BC09_CKE_POWER_ODT_OFF);
-+    // Disabling for now until characterization can be done
-+    // Power/ performance setting
-+    l_setting.writeBit<BC09_CKE_POWER_DOWN_ENABLE_POS> (BC09_CKE_POWER_DOWN_DISABLE);
- 
-     // Update MCS attribute
-     FAPI_TRY( eff_dimm_ddr4_bc09(iv_mcs, &l_attrs_dimm_bc09[0][0]) );
-@@ -5126,7 +5022,6 @@ fapi2::ReturnCode eff_lrdimm_db01::dimm_bc0b()
- 
-     // Update MCS attribute
-     // Only option is to set it to 0 to signify 1.2 operating Voltage, everything else is reserved
--    // Per the IBM signal integrity team, the default value should be sufficient
-     l_attrs_dimm_bc0b[iv_port_index][iv_dimm_index] = 0;
- 
-     FAPI_INF("%s: BC0b settting: %d", mss::c_str(iv_dimm), l_attrs_dimm_bc0b[iv_port_index][iv_dimm_index] );
-@@ -5153,7 +5048,6 @@ fapi2::ReturnCode eff_lrdimm_db02::dimm_bc0b()
-     // Bits 0~1 (IBM numbering) are for slew rate
-     // Bit 3 is reserved, Bit 4 has to be 0 to signal 1.2 V Buffer Vdd Voltage
-     // Hard coding values to 0, sets slew rate to Moderate (according to Dan Phipps, this is fine)
--    // Per the IBM signal integrity team, the default value should be sufficient
-     l_attrs_dimm_bc0b[iv_port_index][iv_dimm_index] = 0;
- 
-     FAPI_INF("%s: BC0b settting: %d", mss::c_str(iv_dimm), l_attrs_dimm_bc0b[iv_port_index][iv_dimm_index] );
-@@ -5216,7 +5110,7 @@ fapi_try_exit:
- ///
- /// @brief Determines & sets effective config for DIMM BC0d
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
--/// @note Reserved for future use - set it to 0 for now
-+/// @note LDQ Operation Control Word
- /// From DDR4DB01 Spec Rev 1.0
- /// Page 61 Table 25
- /// All values are reserved for DB01, setting to 0
-@@ -5240,7 +5134,7 @@ fapi_try_exit:
- ///
- /// @brief Determines & sets effective config for DIMM BC0d
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
--/// @note Reserved for future use - set it to 0 for now
-+/// @note LDQ Operation Control Word
- /// From DDR4DB02 Spec Rev 0.95
- /// Page 60 Table 24
- /// @note This register is used by the Non Volatile controller (NVC) to change the mode of operation of the DDR4DB02
-@@ -5310,219 +5204,6 @@ fapi_try_exit:
- }
- 
- ///
--/// @brief Determines and sets DIMM BC1x
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::dimm_f0bc1x()
--{
--    uint8_t l_attrs_dimm_bc_1x[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f0bc1x(iv_mcs, &l_attrs_dimm_bc_1x[0][0]) );
--
--    // Setup to default as we want to be in runtime mode
--    l_attrs_dimm_bc_1x[iv_port_index][iv_dimm_index] = 0;
--
--    FAPI_INF( "%s: F0BC1X setting: 0x%02x", mss::c_str(iv_dimm), l_attrs_dimm_bc_1x[iv_port_index][iv_dimm_index] );
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F0BC1x, iv_mcs, l_attrs_dimm_bc_1x) );
--
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines and sets DIMM BC6x
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::dimm_f0bc6x()
--{
--    uint8_t l_attrs_dimm_bc_6x[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f0bc6x(iv_mcs, &l_attrs_dimm_bc_6x[0][0]) );
--
--    // Frequency encoding is the same as rc3x, so reusing here
--    switch(iv_freq)
--    {
--        case fapi2::ENUM_ATTR_MSS_FREQ_MT1866:
--            l_attrs_dimm_bc_6x[iv_port_index][iv_dimm_index] = rc3x_encode::MT1860_TO_MT1880;
--            break;
--
--        case fapi2::ENUM_ATTR_MSS_FREQ_MT2133:
--            l_attrs_dimm_bc_6x[iv_port_index][iv_dimm_index] = rc3x_encode::MT2120_TO_MT2140;
--            break;
--
--        case fapi2::ENUM_ATTR_MSS_FREQ_MT2400:
--            l_attrs_dimm_bc_6x[iv_port_index][iv_dimm_index] = rc3x_encode::MT2380_TO_MT2400;
--            break;
--
--        case fapi2::ENUM_ATTR_MSS_FREQ_MT2666:
--            l_attrs_dimm_bc_6x[iv_port_index][iv_dimm_index] = rc3x_encode::MT2660_TO_MT2680;
--            break;
--
--        default:
--            FAPI_ASSERT( false,
--                         fapi2::MSS_INVALID_FREQ_RC()
--                         .set_FREQ(iv_freq)
--                         .set_RC_NUM(F0BC6X)
--                         .set_DIMM_TARGET(iv_dimm),
--                         "%s: Invalid frequency for BC_6X encoding received: %d",
--                         mss::c_str(iv_dimm),
--                         iv_freq);
--            break;
--    }
--
--    FAPI_INF( "%s: F0BC6X setting: 0x%02x", mss::c_str(iv_dimm), l_attrs_dimm_bc_6x[iv_port_index][iv_dimm_index] );
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F0BC6x, iv_mcs, l_attrs_dimm_bc_6x) );
--
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines and sets DIMM F2BCEx
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::dimm_f2bcex()
--{
--    uint8_t l_attrs_dimm_f2bcex[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f2bcex(iv_mcs, &l_attrs_dimm_f2bcex[0][0]) );
--
--    // Setup to default as we want to be in runtime mode (not DFE mode)
--    l_attrs_dimm_f2bcex[iv_port_index][iv_dimm_index] = 0;
--
--    FAPI_INF( "%s: F2BCEX setting: 0x%02x", mss::c_str(iv_dimm), l_attrs_dimm_f2bcex[iv_port_index][iv_dimm_index] );
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F2BCEx, iv_mcs, l_attrs_dimm_f2bcex) );
--
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines and sets DIMM F5BC5x
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::dimm_f5bc5x()
--{
--    // Taken from DDR4 (this attribute is DDR4 only) spec MRS6 section VrefDQ training: values table
--    constexpr uint8_t JEDEC_MAX_TRAIN_VALUE   = 0b00110010;
--
--    // Gets the JEDEC VREFDQ range and value
--    fapi2::buffer<uint8_t> l_train_value;
--    fapi2::buffer<uint8_t> l_train_range;
--    uint8_t l_attrs_dimm_f5bc5x[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f5bc5x(iv_mcs, &l_attrs_dimm_f5bc5x[0][0]) );
--    FAPI_TRY(mss::get_vpd_wr_vref_range_and_value(iv_dimm, l_train_range, l_train_value));
--
--    FAPI_ASSERT(l_train_value <= JEDEC_MAX_TRAIN_VALUE,
--                fapi2::MSS_INVALID_VPD_VREF_DRAM_WR_RANGE()
--                .set_MAX(JEDEC_MAX_TRAIN_VALUE)
--                .set_VALUE(l_train_value)
--                .set_MCS_TARGET(iv_mcs),
--                "%s VPD DRAM VREF value out of range max 0x%02x value 0x%02x", mss::c_str(iv_dimm),
--                JEDEC_MAX_TRAIN_VALUE, l_train_value );
--
--    // F5BC5x is just the VREF training range
--    l_attrs_dimm_f5bc5x[iv_port_index][iv_dimm_index] = l_train_value;
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F5BC5x, iv_mcs, l_attrs_dimm_f5bc5x),
--              "Failed setting attribute for ATTR_EFF_DIMM_DDR4_F5BC5x");
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines and sets DIMM F5BC6x
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
--fapi2::ReturnCode eff_lrdimm::dimm_f5bc6x()
--{
--    constexpr uint8_t VREF_73PERCENT = 0x14;
--    uint8_t l_attrs_dimm_f5bc6x[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f5bc6x(iv_mcs, &l_attrs_dimm_f5bc6x[0][0]) );
--
--    // F5BC6x is just the VREF training range
--    l_attrs_dimm_f5bc6x[iv_port_index][iv_dimm_index] = VREF_73PERCENT;
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F5BC6x, iv_mcs, l_attrs_dimm_f5bc6x),
--              "Failed setting attribute for ATTR_EFF_DIMM_DDR4_F5BC6x");
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines and sets DIMM F6BC4x
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::dimm_f6bc4x()
--{
--    constexpr uint64_t WR_VREFDQ_BIT = 6;
--    constexpr uint64_t RD_VREFDQ_BIT = 5;
--
--    uint8_t l_attrs_dimm_f6bc4x[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {};
--    uint8_t l_buffer_rd_vref_range = 0;
--    uint8_t l_buffer_wr_vref_range = 0;
--    uint8_t l_wr_vref_value = 0; // Used in F5BC5x, but we need it for a helper function
--    fapi2::buffer<uint8_t> l_temp;
--
--    // Retrieve MCS attribute data
--    FAPI_TRY( eff_dimm_ddr4_f6bc4x(iv_mcs, &l_attrs_dimm_f6bc4x[0][0]) );
--
--    // Gets the WR VREF range
--    FAPI_TRY( get_vpd_wr_vref_range_and_value(iv_dimm, l_buffer_wr_vref_range, l_wr_vref_value) );
--
--    // Gets the RD VREF range
--    FAPI_TRY( iv_spd_decoder.data_buffer_vref_dq_range(l_buffer_rd_vref_range) );
--
--    // Setup to default as we want to be in runtime mode
--    l_temp.writeBit<WR_VREFDQ_BIT>(l_buffer_wr_vref_range)
--    .writeBit<RD_VREFDQ_BIT>(l_buffer_rd_vref_range);
--    l_attrs_dimm_f6bc4x[iv_port_index][iv_dimm_index] = l_temp;
--
--    FAPI_INF( "%s: F6BC4X setting: 0x%02x", mss::c_str(iv_dimm), l_attrs_dimm_f6bc4x[iv_port_index][iv_dimm_index] );
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DIMM_DDR4_F6BC4x, iv_mcs, l_attrs_dimm_f6bc4x) );
--
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines & sets effective config for DRAM output driver impedance control
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--// TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
--fapi2::ReturnCode eff_lrdimm::dram_odic()
--{
--    uint8_t l_dram_odic[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    FAPI_TRY( eff_dram_odic(iv_mcs, &l_dram_odic[0][0][0]));
--
--    // Updates DRAM ODIC with the VPD value
--    for(uint8_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
--    {
--        // JEDEC setting - taken from SI spreadsheet
--        l_dram_odic[iv_port_index][iv_dimm_index][l_rank] = fapi2::ENUM_ATTR_MSS_VPD_MT_DRAM_DRV_IMP_DQ_DQS_OHM34;
--    }
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_ODIC, iv_mcs, l_dram_odic) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
- /// @brief Grab the VPD blobs and decode into attributes
- /// @param[in] i_target FAPI2 target (MCS)
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
-@@ -5881,116 +5562,4 @@ fapi2::ReturnCode eff_dimm::phy_seq_refresh()
-                          iv_mcs,
-                          UINT8_VECTOR_TO_1D_ARRAY(l_phy_seq_ref_enable, PORTS_PER_MCS));
- }
--
--///
--/// @brief Determines & sets effective ODT write values
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_rdimm::odt_wr()
--{
--    uint8_t l_mcs_attr[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vpd_odt[MAX_RANK_PER_DIMM];
--
--    // Gets the VPD value
--    FAPI_TRY( mss::vpd_mt_odt_wr(iv_dimm, &(l_vpd_odt[0])));
--    FAPI_TRY( eff_odt_wr( iv_mcs, &(l_mcs_attr[0][0][0])) );
--
--
--    memcpy(&(l_mcs_attr[iv_port_index][iv_dimm_index][0]), l_vpd_odt, MAX_RANK_PER_DIMM);
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_EFF_ODT_WR, iv_mcs, l_mcs_attr) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines & sets effective ODT write values
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::odt_wr()
--{
--    constexpr uint8_t ODT_2R_1DROP_VALUES[MAX_RANK_PER_DIMM] =
--    {
--        0x40,
--        0x80,
--        0x00,
--        0x00,
--    };
--    uint8_t l_mcs_attr[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vpd_odt[MAX_RANK_PER_DIMM];
--
--    // Gets the VPD value
--    FAPI_TRY( mss::vpd_mt_odt_wr(iv_dimm, &(l_vpd_odt[0])));
--    FAPI_TRY( eff_odt_wr( iv_mcs, &(l_mcs_attr[0][0][0])) );
--
--    // Loops through and sets/updates all ranks
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
--    {
--        // TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
--        // So, here we do a bitwise or of our LR settings and our VPD settings
--        // The VPD contains the host <-> buffer settings
--        // The constant contains the buffer <-> DRAM
--        // Due to how the ODT functions, we need to or them
--        l_mcs_attr[iv_port_index][iv_dimm_index][l_rank] = l_vpd_odt[l_rank] | ODT_2R_1DROP_VALUES[l_rank];
--    }
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_EFF_ODT_WR, iv_mcs, l_mcs_attr) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines & sets effective ODT read values
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_rdimm::odt_rd()
--{
--    uint8_t l_mcs_attr[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vpd_odt[MAX_RANK_PER_DIMM];
--
--    // Gets the VPD value
--    FAPI_TRY( mss::vpd_mt_odt_rd(iv_dimm, &(l_vpd_odt[0])));
--    FAPI_TRY( eff_odt_rd( iv_mcs, &(l_mcs_attr[0][0][0])) );
--
--
--    memcpy(&(l_mcs_attr[iv_port_index][iv_dimm_index][0]), l_vpd_odt, MAX_RANK_PER_DIMM);
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_EFF_ODT_RD, iv_mcs, l_mcs_attr) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
--///
--/// @brief Determines & sets effective ODT read values
--/// @return fapi2::FAPI2_RC_SUCCESS if okay
--///
--fapi2::ReturnCode eff_lrdimm::odt_rd()
--{
--    uint8_t l_mcs_attr[PORTS_PER_MCS][MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM] = {};
--    uint8_t l_vpd_odt[MAX_RANK_PER_DIMM];
--
--    // Gets the VPD value
--    FAPI_TRY( mss::vpd_mt_odt_rd(iv_dimm, &(l_vpd_odt[0])));
--    FAPI_TRY( eff_odt_rd( iv_mcs, &(l_mcs_attr[0][0][0])) );
--
--    // Loops through and sets/updates all ranks
--    for(uint64_t l_rank = 0; l_rank < MAX_RANK_PER_DIMM; ++l_rank)
--    {
--        // TODO:RTC200577 Update LRDIMM termination settings for dual drop and 4 rank DIMM's
--        // So, here we do a bitwise or of our LR settings and our VPD settings
--        // The VPD contains the host <-> buffer settings
--        // The constant contains the buffer <-> DRAM
--        // Due to how the ODT functions, we need to or them
--        l_mcs_attr[iv_port_index][iv_dimm_index][l_rank] = l_vpd_odt[l_rank] | 0x00;
--    }
--
--    FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_EFF_ODT_RD, iv_mcs, l_mcs_attr) );
--
--fapi_try_exit:
--    return fapi2::current_err;
--}
--
- }//mss
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H
-index 693e14a..7e33c0b 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H
-@@ -291,12 +291,6 @@ class eff_dimm
-         fapi2::ReturnCode dram_dqs_time();
- 
-         ///
--        /// @brief Determines & sets effective config for DRAM output driver impedance control
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dram_odic() = 0;
--
--        ///
-         /// @brief Determines & sets effective config for tCCD_L
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -534,7 +528,7 @@ class eff_dimm
-         /// @brief Determines & sets effective config for Vref DQ Train Value and Range
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
--        virtual fapi2::ReturnCode vref_dq_train_value_and_range();
-+        fapi2::ReturnCode vref_dq_train_value_and_range();
- 
-         ///
-         /// @brief Determines & sets effective config for Vref DQ Train Enable
-@@ -571,18 +565,6 @@ class eff_dimm
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-         fapi2::ReturnCode odt_input_buffer();
--
--        ///
--        /// @brief Determines & sets effective ODT write values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_wr() = 0;
--
--        ///
--        /// @brief Determines & sets effective ODT read values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_rd() = 0;
-         ///
-         /// @brief Determines & sets effective config for data_mask
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-@@ -909,12 +891,6 @@ class eff_dimm
-         virtual fapi2::ReturnCode dimm_bc05() = 0;
- 
-         ///
--        /// @brief Determines and sets DIMM BC06
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_bc06() = 0;
--
--        ///
-         /// @brief Determines and sets DIMM BC07
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -969,43 +945,6 @@ class eff_dimm
-         ///
-         virtual fapi2::ReturnCode dimm_bc0f() = 0;
- 
--        ///
--        /// @brief Determines and sets DIMM F0BC1x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc1x() = 0;
--
--        ///
--        /// @brief Determines and sets DIMM F0BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc6x() = 0;
--
--        ///
--        /// @brief Determines and sets DIMM F2BCEx
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f2bcex() = 0;
--
--        ///
--        /// @brief Determines and sets DIMM F5BC5x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc5x() = 0;
--
--        ///
--        /// @brief Determines and sets DIMM F5BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc6x() = 0;
--
--
--        ///
--        /// @brief Determines and sets DIMM F6BC4x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f6bc4x() = 0;
--
-     private:
- 
-         ///
-@@ -1076,25 +1015,6 @@ class eff_lrdimm : public eff_dimm
-         ///
-         virtual ~eff_lrdimm() = default;
- 
--
--        ///
--        /// @brief Determines & sets effective config for Vref DQ Train Value and Range
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode vref_dq_train_value_and_range() final;
--
--        ///
--        /// @brief Determines & sets effective ODT write values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_wr() final;
--
--        ///
--        /// @brief Determines & sets effective ODT read values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_rd() final;
--
-         ///
-         /// @brief Sets the RTT_NOM value from SPD
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-@@ -1117,12 +1037,6 @@ class eff_lrdimm : public eff_dimm
-         virtual fapi2::ReturnCode dram_rtt_park() final;
- 
-         ///
--        /// @brief Determines & sets effective config for DRAM output driver impedance control
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dram_odic() final;
--
--        ///
-         /// @brief Determines and sets DIMM BC00
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -1159,12 +1073,6 @@ class eff_lrdimm : public eff_dimm
-         virtual fapi2::ReturnCode dimm_bc05() final;
- 
-         ///
--        /// @brief Determines and sets DIMM BC09
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_bc06() final;
--
--        ///
-         /// @brief Determines and sets DIMM BC07
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -1217,42 +1125,6 @@ class eff_lrdimm : public eff_dimm
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-         virtual fapi2::ReturnCode dimm_bc0f() final;
--
--        ///
--        /// @brief Determines and sets DIMM F0BC1x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc1x() final;
--
--        ///
--        /// @brief Determines and sets DIMM F0BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc6x() final;
--
--        ///
--        /// @brief Determines and sets DIMM F2BCex
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f2bcex() final;
--
--        ///
--        /// @brief Determines and sets DIMM F5BC5x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc5x() final;
--
--        ///
--        /// @brief Determines and sets DIMM F5BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc6x() final;
--
--        ///
--        /// @brief Determines and sets DIMM F6BC4x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f6bc4x() final;
- };
- 
- ///
-@@ -1398,18 +1270,6 @@ class eff_rdimm : public eff_dimm
-         ~eff_rdimm() = default;
- 
-         ///
--        /// @brief Determines & sets effective ODT write values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_wr() final;
--
--        ///
--        /// @brief Determines & sets effective ODT read values
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode odt_rd() final;
--
--        ///
-         /// @brief Sets the RTT_NOM value from SPD
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         /// @note used for MRS01
-@@ -1431,12 +1291,6 @@ class eff_rdimm : public eff_dimm
-         fapi2::ReturnCode dram_rtt_park() final;
- 
-         ///
--        /// @brief Determines & sets effective config for DRAM output driver impedance control
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dram_odic() final;
--
--        ///
-         /// @brief Determines and sets DIMM BC00
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -1491,15 +1345,6 @@ class eff_rdimm : public eff_dimm
-         }
- 
-         ///
--        /// @brief Determines and sets DIMM BC06
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        fapi2::ReturnCode dimm_bc06() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--        ///
-         /// @brief Determines and sets DIMM BC07
-         /// @return fapi2::FAPI2_RC_SUCCESS if okay
-         ///
-@@ -1579,61 +1424,6 @@ class eff_rdimm : public eff_dimm
-         {
-             return fapi2::FAPI2_RC_SUCCESS;
-         }
--
--        ///
--        /// @brief Determines and sets DIMM F0BC1x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc1x() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--        ///
--        /// @brief Determines and sets DIMM F0BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f0bc6x() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--        ///
--        /// @brief Determines and sets DIMM F2BCEx
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f2bcex() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--        ///
--        /// @brief Determines and sets DIMM F5BC5x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc5x() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--        ///
--        /// @brief Determines and sets DIMM F5BC6x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f5bc6x() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
--
--
--        ///
--        /// @brief Determines and sets DIMM F6BC4x
--        /// @return fapi2::FAPI2_RC_SUCCESS if okay
--        ///
--        virtual fapi2::ReturnCode dimm_f6bc4x() final
--        {
--            return fapi2::FAPI2_RC_SUCCESS;
--        }
- };
- }//mss
- 
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
-index c8f5940..187b60c 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
-@@ -1255,7 +1255,7 @@ fapi2::ReturnCode reset_odt_rd_config( const fapi2::Target<fapi2::TARGET_TYPE_MC
- 
-     const uint64_t l_dimm_count = count_dimm(i_target);
- 
--    FAPI_TRY( mss::eff_odt_rd(i_target, &(l_odt_rd[0][0])) );
-+    FAPI_TRY( mss::vpd_mt_odt_rd(i_target, &(l_odt_rd[0][0])) );
- 
-     return reset_odt_rd_config_helper<fapi2::TARGET_TYPE_MCA, MAX_DIMM_PER_PORT, MAX_RANK_PER_DIMM>(
-                i_target, l_dimm_count, l_odt_rd);
-@@ -1276,7 +1276,7 @@ fapi2::ReturnCode reset_odt_wr_config( const fapi2::Target<fapi2::TARGET_TYPE_MC
- 
-     const uint64_t l_dimm_count = count_dimm(i_target);
- 
--    FAPI_TRY( mss::eff_odt_wr(i_target, &(l_odt_wr[0][0])) );
-+    FAPI_TRY( mss::vpd_mt_odt_wr(i_target, &(l_odt_wr[0][0])) );
- 
-     return reset_odt_wr_config_helper<fapi2::TARGET_TYPE_MCA, MAX_DIMM_PER_PORT, MAX_RANK_PER_DIMM>(
-                i_target, l_dimm_count, l_odt_wr);
-@@ -1310,7 +1310,7 @@ fapi2::ReturnCode override_odt_wr_config( const fapi2::Target<fapi2::TARGET_TYPE
-                  i_rank );
- 
-     // read the attributes
--    FAPI_TRY( mss::eff_odt_wr(i_target, &(l_odt_wr[0][0])) );
-+    FAPI_TRY( mss::vpd_mt_odt_wr(i_target, &(l_odt_wr[0][0])) );
- 
-     // set the ODTs for the rank selected
-     // The ODT encoding is (for mranks only)
-diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
-index d1effb8..e7999e9 100644
---- a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
-+++ b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
-@@ -153,7 +153,6 @@ enum ffdc_function_codes
-     DRAM_BANK_BITS = 25,
-     DRAM_ROW_BITS = 26,
-     SOFT_POST_PACKAGE_REPAIR = 27,
--    EFF_BC07 = 28,
- 
-     // Used in fw_mark_store.H for MSS_INVALID_RANK_PASSED
-     FWMS_READ = 30,
-diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
-old mode 100755
-new mode 100644
-index 6b078f9..c05c519
---- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
-+++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C
-@@ -98,12 +98,6 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
- 
-         FAPI_INF("Running eff_config on %s", mss::c_str(l_dimm) );
- 
--        FAPI_TRY(  l_eff_dimm->dram_odic(),
--                   "Failed dram_odic for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->odt_wr(),
--                   "Failed odt_wr for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->odt_rd(),
--                   "Failed odt_rd for %s", mss::c_str(l_dimm) );
-         FAPI_TRY( l_eff_dimm->rcd_mfg_id(),
-                   "Failed rcd_mfg_id for %s", mss::c_str(l_dimm) );
-         FAPI_TRY( l_eff_dimm->register_type(),
-@@ -306,8 +300,6 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
-                   "Failed dimm_bc04 for %s", mss::c_str(l_dimm) );
-         FAPI_TRY( l_eff_dimm->dimm_bc05(),
-                   "Failed dimm_bc05 for %s", mss::c_str(l_dimm) );
--        FAPI_TRY( l_eff_dimm->dimm_bc06(),
--                  "Failed dimm_bc06 for %s", mss::c_str(l_dimm) );
-         FAPI_TRY( l_eff_dimm->dimm_bc07(),
-                   "Failed dimm_bc07 for %s", mss::c_str(l_dimm) );
-         FAPI_TRY( l_eff_dimm->dimm_bc08(),
-@@ -340,18 +332,6 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS>
-                    "Failed nibble_map for %s", mss::c_str(l_dimm) );
-         FAPI_TRY(  l_eff_dimm->wr_crc(),
-                    "Failed wr_crc for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f0bc1x(),
--                   "Failed dimm_f0bc1x for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f0bc6x(),
--                   "Failed dimm_f0bc6x for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f2bcex(),
--                   "Failed dimm_f2bcex for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f5bc5x(),
--                   "Failed dimm_f5bc5x for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f5bc6x(),
--                   "Failed dimm_f5bc6x for %s", mss::c_str(l_dimm) );
--        FAPI_TRY(  l_eff_dimm->dimm_f6bc4x(),
--                   "Failed dimm_f6bc4x for %s", mss::c_str(l_dimm) );
- 
-         // Sets up the calibration steps
-         FAPI_TRY( l_eff_dimm->cal_step_enable(),
-diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml
-index 9d9aea1..965e0de 100644
---- a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml
-+++ b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml
-@@ -486,24 +486,6 @@
-   </hwpError>
- 
-   <hwpError>
--    <rc>RC_MSS_INVALID_RTT_PARK_CALCULATIONS</rc>
--    <description>
--        Calculated the rtt_park_index into the VPD attribute incorrectly
--    </description>
--    <ffdc>RANK</ffdc>
--    <ffdc>RTT_PARK_INDEX</ffdc>
--    <ffdc>RTT_PARK_FROM_VPD</ffdc>
--    <ffdc>DIMM_TARGET</ffdc>
--    <callout>
--      <hw>
--        <hwid>VPD_PART</hwid>
--        <refTarget>MCS_TARGET</refTarget>
--      </hw>
--      <priority>HIGH</priority>
--    </callout>
--  </hwpError>
--
--  <hwpError>
-     <rc>RC_MSS_INVALID_RTT_NOM_CALCULATIONS</rc>
-     <description>
-         Calculated the rtt_nom_index into the VPD attribute incorrectly
--- 
-1.8.2.2
-
diff --git a/openpower/package/hostboot/Config.in b/openpower/package/hostboot/Config.in
index fe0cfbf..d83b826 100644
--- a/openpower/package/hostboot/Config.in
+++ b/openpower/package/hostboot/Config.in
@@ -28,7 +28,7 @@
 
 config BR2_HOSTBOOT_VERSION
 	string
-	default "3f1f2186bb80322594a3cc81241c390119d69552" if BR2_HOSTBOOT_LATEST_VERSION
+	default "3a992958a6d431a58a0cc72f6c5554ef0ed2f617" if BR2_HOSTBOOT_LATEST_VERSION
 	default "3f1f2186bb80322594a3cc81241c390119d69552" if BR2_HOSTBOOT_STABLE_VERSION
 	default BR2_HOSTBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_HOSTBOOT_CUSTOM_VERSION
diff --git a/openpower/package/libflash/libflash.mk b/openpower/package/libflash/libflash.mk
index e0c59af..8b9d336 100644
--- a/openpower/package/libflash/libflash.mk
+++ b/openpower/package/libflash/libflash.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBFLASH_VERSION = v6.2-rc1
+LIBFLASH_VERSION = v6.2
 LIBFLASH_SITE = $(call github,open-power,skiboot,$(LIBFLASH_VERSION))
 
 LIBFLASH_INSTALL_STAGING = YES
diff --git a/openpower/package/openpower-pnor/openpower-pnor.mk b/openpower/package/openpower-pnor/openpower-pnor.mk
index 11e3f5b..93f5533 100644
--- a/openpower/package/openpower-pnor/openpower-pnor.mk
+++ b/openpower/package/openpower-pnor/openpower-pnor.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-OPENPOWER_PNOR_VERSION ?= aa94a39eb470d1a50138f4d0b04a5a135c4431ff
+OPENPOWER_PNOR_VERSION ?= a4d9702936085a1a01ff305037b89dc6e915dd35
 OPENPOWER_PNOR_SITE ?= $(call github,open-power,pnor,$(OPENPOWER_PNOR_VERSION))
 
 OPENPOWER_PNOR_LICENSE = Apache-2.0
diff --git a/openpower/package/skiboot/Config.in b/openpower/package/skiboot/Config.in
index 78d40b5..e7350e2 100644
--- a/openpower/package/skiboot/Config.in
+++ b/openpower/package/skiboot/Config.in
@@ -31,7 +31,7 @@
 
 config BR2_SKIBOOT_VERSION
 	string
-	default "v6.2-rc2" if BR2_SKIBOOT_LATEST_VERSION
+	default "v6.2" if BR2_SKIBOOT_LATEST_VERSION
 	default BR2_SKIBOOT_CUSTOM_VERSION_VALUE \
 		if BR2_SKIBOOT_CUSTOM_VERSION
 
diff --git a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch
index 9fec1aa..5b4bcc7 100644
--- a/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch
+++ b/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0005-Fill-empty-sensor-id-to-reserved-id-0xFF.patch
@@ -1,8 +1,9 @@
-From a1f98d850d356001d37242ccf13f94114bd6378c Mon Sep 17 00:00:00 2001
-From: Artem Senichev <a.senichev@yadro.com>
-Date: Tue, 13 Mar 2018 15:44:05 +0300
-Subject: [PATCH] Fill empty sensor id to reserved id 0xFF
+From f03937aa32b79e8bde0fa5ff09a0e11e4750bb6f Mon Sep 17 00:00:00 2001
+From: Corey Swenson <cswenson@us.ibm.com>
+Date: Mon, 14 Jan 2019 12:46:22 -0600
+Subject: [PATCH] Vesnin patch
 
+Change-Id: I1116c92f9176d53630a9316312656c03f2a16723
 
 Hank Chang: This patch achieves the following goals:
 a. Auto set all empty sensors with reserved ID - 0xFF instead of being 0x0 in
@@ -20,15 +21,23 @@
 
 Signed-off-by: Artem Senichev <a.senichev@yadro.com>
 ---
- src/usr/ipmi/ipmisensor.C              |  5 +----
- src/usr/targeting/common/processMrw.pl | 21 ++++++++++++++++++---
- 2 files changed, 19 insertions(+), 7 deletions(-)
+ src/usr/ipmiext/ipmisensor.C           |  6 ++----
+ src/usr/targeting/common/processMrw.pl | 25 ++++++++++++++++++++-----
+ 2 files changed, 22 insertions(+), 9 deletions(-)
 
-diff --git a/src/usr/ipmi/ipmisensor.C b/src/usr/ipmi/ipmisensor.C
-index 4aa1c9f4b..a5bded63a 100644
---- a/src/usr/ipmi/ipmisensor.C
-+++ b/src/usr/ipmi/ipmisensor.C
-@@ -216,14 +216,11 @@ namespace SENSOR
+diff --git a/src/usr/ipmiext/ipmisensor.C b/src/usr/ipmiext/ipmisensor.C
+index e3c6405..63a4196 100644
+--- a/src/usr/ipmiext/ipmisensor.C
++++ b/src/usr/ipmiext/ipmisensor.C
+@@ -6,6 +6,7 @@
+ /* OpenPOWER HostBoot Project                                             */
+ /*                                                                        */
+ /* Contributors Listed Below - COPYRIGHT 2014,2019                        */
++/* [+] International Business Machines Corp.                              */
+ /*                                                                        */
+ /*                                                                        */
+ /* Licensed under the Apache License, Version 2.0 (the "License");        */
+@@ -214,14 +215,11 @@ namespace SENSOR
          }
          else
          {
@@ -45,9 +54,18 @@
  
          return l_err;
 diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
-index 8bfa7bddd..45d250872 100644
+index 8bfa7bd..66783c8 100644
 --- a/src/usr/targeting/common/processMrw.pl
 +++ b/src/usr/targeting/common/processMrw.pl
+@@ -6,7 +6,7 @@
+ #
+ # OpenPOWER HostBoot Project
+ #
+-# Contributors Listed Below - COPYRIGHT 2015,2017
++# Contributors Listed Below - COPYRIGHT 2015,2019
+ # [+] International Business Machines Corp.
+ #
+ #
 @@ -239,14 +239,29 @@ sub processIpmiSensors {
                  $sensor_name=$name."_".$name_suffix;
              }
@@ -81,6 +99,15 @@
              my $str=sprintf(
                  " %30s | %10s |  0x%02X  | 0x%02X |    0x%02x   |" .
                  " %4s | %4d | %4d | %10s | %s\n",
+@@ -1428,7 +1443,7 @@ Options:
+     exit(1);
+ }
+ 
+-# eliminate extra whitespace 
++# eliminate extra whitespace
+ #    Input: string to chop
+ sub nowhitespace
+ {
 -- 
-2.14.1
+1.8.2.2
 
diff --git a/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch b/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
new file mode 100644
index 0000000..7556b97
--- /dev/null
+++ b/openpower/patches/vesnin-patches/occ-p8/occ-0002-Add-temperature-sensor-support-for-CPU-cores.patch
@@ -0,0 +1,43 @@
+From 0ec6ab11dcec304876802d1ed7bb01bd059ae311 Mon Sep 17 00:00:00 2001
+From: Artem Senichev <a.senichev@yadro.com>
+Date: Tue, 18 Dec 2018 14:16:56 +0300
+Subject: [PATCH] Add temperature sensor support for CPU cores
+
+IPMI protocol imposes limits on numbers of sensors identifiers (1 byte).
+This limitation doesn't allow us to use unique temperature sensor ID for
+each CPU core (4 CPU * 12 cores = 48 sensors).
+
+OCC uses temperature sensor ID as channel label, these labels are handled
+by phosphor-hwmon service to identify the core:
+
+     I2C               sysfs                   config.yaml
+OCC -----> BMC Kernel -------> Phosphor-hwmon -------------> DBus
+     ID                label                   label->core
+
+This patch makes OCC use own ID as channel label instead of using IPMI
+temperature sensor ID. The new identifier consists of constant prefix
+(0x0f) and core index:
+ID = 0x0f00 + INDEX(core)
+
+Signed-off-by: Artem Senichev <a.senichev@yadro.com>
+---
+ src/occ/cmdh/cmdh_fsp_cmds.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/occ/cmdh/cmdh_fsp_cmds.c b/src/occ/cmdh/cmdh_fsp_cmds.c
+index 6276992..69c646e 100755
+--- a/src/occ/cmdh/cmdh_fsp_cmds.c
++++ b/src/occ/cmdh/cmdh_fsp_cmds.c
+@@ -393,7 +393,8 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr)
+     {
+         if(CORE_PRESENT(k))
+         {
+-            l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0C0 + k]->ipmi_sid;
++            // Set the core label as a constant prefix with index
++            l_tempSensorList[l_sensorHeader.count].id = 0x0f00 + k;
+             l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0C0 + k]->sample;
+             l_sensorHeader.count++;
+         }
+-- 
+2.19.2
+
diff --git a/openpower/scripts/firmware-whitelist b/openpower/scripts/firmware-whitelist
index 6d1b835..4eabb78 100755
--- a/openpower/scripts/firmware-whitelist
+++ b/openpower/scripts/firmware-whitelist
@@ -10,6 +10,7 @@
                 'cxgb4/t4fw-1.16.63.0.bin'
                 'cxgb4/t4fw.bin'
                 'cxgb3/'
+                'qed/qed_init_values_zipped-8.37.2.0.bin'
                 'ql2500_fw.bin')
 
 if [ -z "${TARGET_DIR}" ] ; then
