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

