diff --git a/openpower/package/hostboot/p9Patches/hostboot-1020-Revert-jgr17071200-Removed-pdwn-settings.patch b/openpower/package/hostboot/p9Patches/hostboot-1020-Revert-jgr17071200-Removed-pdwn-settings.patch
new file mode 100644
index 0000000..1bf10aa
--- /dev/null
+++ b/openpower/package/hostboot/p9Patches/hostboot-1020-Revert-jgr17071200-Removed-pdwn-settings.patch
@@ -0,0 +1,677 @@
+From 73353ff38f95484714356befca6d27cbcefa1d61 Mon Sep 17 00:00:00 2001
+From: "Corey V. Swenson" <cswenson@us.ibm.com>
+Date: Fri, 9 Feb 2018 15:04:22 -0500
+Subject: [PATCH v1] Revert "jgr17071200 Removed pdwn settings"
+
+This reverts commit db4e2f31694ef29c34531fb0579d4d8b7340ca05.
+
+Change-Id: I45e61c75e5f47ef96c7f9de38d7c0184df37b9e9
+---
+ .../p9/procedures/hwp/initfiles/p9_obus_scom.C     | 603 +++++++++++++++++++++
+ 1 file changed, 603 insertions(+)
+
+diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_obus_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_obus_scom.C
+index 5c4595e..390061b 100644
+--- a/src/import/chips/p9/procedures/hwp/initfiles/p9_obus_scom.C
++++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_obus_scom.C
+@@ -40,6 +40,7 @@ constexpr uint64_t literal_0b00011 = 0b00011;
+ constexpr uint64_t literal_0b100 = 0b100;
+ constexpr uint64_t literal_0b1100 = 0b1100;
+ constexpr uint64_t literal_0b000000 = 0b000000;
++constexpr uint64_t literal_0b000 = 0b000;
+ constexpr uint64_t literal_0b01 = 0b01;
+ constexpr uint64_t literal_0x0 = 0x0;
+ constexpr uint64_t literal_0b010 = 0b010;
+@@ -929,6 +930,198 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8000001709010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080709010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080809010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080809010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080909010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080909010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080a09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080a09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080b09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080b09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080c09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080c09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080d09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080d09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080e09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080e09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000080f09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000080f09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_0_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_1_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_2_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8000081709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_3_RX_DAC_REGS_RX_DAC_REGS_RX_LANE_ANA_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8000081709010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x8000280009010c3full, l_scom_buffer ));
+ 
+             l_scom_buffer.insert<52, 5, 59, uint64_t>(literal_0b10000 );
+@@ -4457,6 +4650,198 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8000c81709010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_0_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_1_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200709010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200809010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200809010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200909010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200909010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200a09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200a09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200b09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_2_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200b09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200c09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200c09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200d09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200d09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200e09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200e09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002200f09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_3_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002200f09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_4_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_0_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_1_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_2_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8002201709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_RX0_RXPACKS_5_RXPACK_RD_SLICE_3_RD_RX_BIT_REGS_RX_LANE_DIG_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8002201709010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x8002280009010c3full, l_scom_buffer ));
+ 
+             if (( ! l_TGT2_ATTR_CHIP_EC_FEATURE_OBUS_HW419305))
+@@ -4913,6 +5298,198 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8002281709010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_0_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_1_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040709010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040809010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040809010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040909010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040909010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040a09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040a09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040b09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_2_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040b09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040c09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040c09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040d09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040d09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040e09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040e09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004040f09010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_3_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004040f09010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041009010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041109010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041109010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041209010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041209010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041309010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_4_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041309010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041409010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_0_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041409010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041509010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_1_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041509010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041609010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_2_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041609010c3full, l_scom_buffer));
++        }
++        {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8004041709010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED = 0x0;
++            l_scom_buffer.insert<48, 1, 63, uint64_t>
++            (l_IOO0_IOO_CPLT_TX0_TXPACKS_5_TXPACK_DD_SLICE_3_DD_TX_BIT_REGS_TX_LANE_PDWN_ENABLED );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8004041709010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x8008000009010c3full, l_scom_buffer ));
+ 
+             constexpr auto l_IOO0_IOO_CPLT_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_PG_SPARE_MODE_4_OFF = 0x0;
+@@ -4926,6 +5503,12 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8008080009010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8008100009010c3full, l_scom_buffer ));
++
++            l_scom_buffer.insert<48, 3, 61, uint64_t>(literal_0b000 );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8008100009010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x8008180009010c3full, l_scom_buffer ));
+ 
+             if (((l_TGT0_ATTR_IO_O_CHANNEL_TYPE == fapi2::ENUM_ATTR_IO_O_CHANNEL_TYPE_BOARD)
+@@ -5154,6 +5737,13 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8008880009010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x8008c00009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_IREF_PDWN_B_ON = 0x1;
++            l_scom_buffer.insert<54, 1, 63, uint64_t>(l_IOO0_IOO_CPLT_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_IREF_PDWN_B_ON );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x8008c00009010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x8008d00009010c3full, l_scom_buffer ));
+ 
+             if (( ! l_TGT2_ATTR_CHIP_EC_FEATURE_OBUS_HW419305))
+@@ -5224,12 +5814,25 @@ fapi2::ReturnCode p9_obus_scom(const fapi2::Target<fapi2::TARGET_TYPE_OBUS>& TGT
+             FAPI_TRY(fapi2::putScom(TGT0, 0x8009880009010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x800b800009010c3full, l_scom_buffer ));
++
++            constexpr auto l_IOO0_IOO_CPLT_RX0_RXCTL_DATASM_DATASM_REGS_RX_CTL_DATASM_CLKDIST_PDWN_OFF = 0x0;
++            l_scom_buffer.insert<60, 1, 63, uint64_t>(l_IOO0_IOO_CPLT_RX0_RXCTL_DATASM_DATASM_REGS_RX_CTL_DATASM_CLKDIST_PDWN_OFF );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x800b800009010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x800c0c0009010c3full, l_scom_buffer ));
+ 
+             l_scom_buffer.insert<48, 6, 58, uint64_t>(literal_0b000000 );
+             FAPI_TRY(fapi2::putScom(TGT0, 0x800c0c0009010c3full, l_scom_buffer));
+         }
+         {
++            FAPI_TRY(fapi2::getScom( TGT0, 0x800c140009010c3full, l_scom_buffer ));
++
++            l_scom_buffer.insert<48, 3, 61, uint64_t>(literal_0b000 );
++            FAPI_TRY(fapi2::putScom(TGT0, 0x800c140009010c3full, l_scom_buffer));
++        }
++        {
+             FAPI_TRY(fapi2::getScom( TGT0, 0x800f1c0009010c3full, l_scom_buffer ));
+ 
+             l_scom_buffer.insert<48, 5, 59, uint64_t>(literal_0b01110 );
+-- 
+1.8.2.2
+
