diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c42385..d54c71d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -73,4 +73,8 @@
 target_link_libraries (zfboemcmds ${CMAKE_THREAD_LIBS_INIT})
 target_link_libraries (zfboemcmds phosphor_logging)
 
+set (PACKAGE_DIR /usr/share/ipmi-providers/)
+set (CONFIG_FILES post_desc.json)
+
 install (TARGETS zfboemcmds DESTINATION lib/ipmid-providers)
+install (FILES ${CONFIG_FILES} DESTINATION ${PACKAGE_DIR})
diff --git a/post_desc.json b/post_desc.json
new file mode 100644
index 0000000..a67b2df
--- /dev/null
+++ b/post_desc.json
@@ -0,0 +1,296 @@
+{
+"Phase1": [
+  [ "0x00", "Not used" ],
+  [ "0x01", "POWER_ON" ],
+  [ "0x02", "MICROCODE" ],
+  [ "0x03", "CACHE_ENABLED" ],
+  [ "0x04", "SECSB_INIT" ],
+  [ "0x05", "OEM_INIT_ENTRY" ],
+  [ "0x06", "CPU_EARLY_INIT" ],
+  [ "0x1D", "OEM_pMEM_INIT" ],
+  [ "0x19", "PM_SB_INITS" ],
+  [ "0xA1", "STS_COLLECT_INFO" ],
+  [ "0xA3", "STS_SETUP_PATH" ],
+  [ "0xA7", "STS_TOPOLOGY_DISC" ],
+  [ "0xA8", "STS_FINAL_ROUTE" ],
+  [ "0xA9", "STS_FINAL_IO_SAD" ],
+  [ "0xAA", "STS_PROTOCOL_SET" ],
+  [ "0xAE", "STS_COHERNCY_SETUP" ],
+  [ "0xAF", "STS_KTI_COMPLETE" ],
+  [ "0xE0", "S3_RESUME_START" ],
+  [ "0xE1", "S3_BOOT_SCRIPT_EXE" ],
+  [ "0xE4", "AMI_PROG_CODE" ],
+  [ "0xE3", "S3_OS_WAKE" ],
+  [ "0xE5", "AMI_PROG_CODE" ],
+  [ "0xB0", "STS_DIMM_DETECT" ],
+  [ "0xB1", "STS_CHECK_INIT" ],
+  [ "0xB4", "STS_RAKE_DETECT" ],
+  [ "0xB2", "STS_SPD_DATA" ],
+  [ "0xB3", "STS_GLOBAL_EARILY" ],
+  [ "0xB6", "STS_DDRIO_INIT" ],
+  [ "0xB7", "STS_TRAIN_DRR" ],
+  [ "0xBE", "STS_GET_MARGINS" ],
+  [ "0xB8", "STS_INIT_THROTTLING" ],
+  [ "0xB9", "STS_MEMBIST" ],
+  [ "0xBA", "STS_MEMINIT" ],
+  [ "0xBB", "STS_DDR_M_INIT" ],
+  [ "0xBC", "STS_RAS_MEMMAP" ],
+  [ "0xBF", "STS_MRC_DONE" ],
+  [ "0xE6", "AMI_PROG_CODE" ],
+  [ "0xE7", "AMI_PROG_CODE" ],
+  [ "0xE8", "S3_RESUME_FAIL" ],
+  [ "0xE9", "S3_PPI_NOT_FOUND" ],
+  [ "0xEB", "S3_OS_WAKE_ERR" ],
+  [ "0xEC", "AMI_ERR_CODE" ],
+  [ "0xED", "AMI_ERR_CODE" ],
+  [ "0xEE", "AMI_ERR_CODE" ],
+  [ "0xA0", "STS_DATA_INIT" ],
+  [ "0xA6", "STS_PBSP_SYNC" ],
+  [ "0xAB", "STS_FULL_SPEED" ],
+  [ "0x07", "AP_INIT" ],
+  [ "0x08", "NB_INIT" ],
+  [ "0x09", "SB_INIT" ],
+  [ "0x0A", "OEM_INIT_END" ],
+  [ "0x0B", "CASHE_INIT" ],
+  [ "0x0C", "SEC_ERR" ],
+  [ "0x0D", "SEC_ERR" ],
+  [ "0x0E", "MICROC_N_FOUND" ],
+  [ "0x0F", "MICROC_N_LOAD" ],
+  [ "0x10", "PEI_CORE_START" ],
+  [ "0x11", "PM_CPU_INITS" ],
+  [ "0x12", "PM_CPU_INIT1" ],
+  [ "0x13", "PM_CPU_INIT2" ],
+  [ "0x14", "PM_CPU_INIT3" ],
+  [ "0x15", "PM_NB_INITS" ],
+  [ "0x16", "PM_NB_INIT1" ],
+  [ "0x17", "PM_NB_INIT2" ],
+  [ "0x18", "PM_NB_INIT3" ],
+  [ "0x1A", "PM_SB_INIT1" ],
+  [ "0x1B", "PM_SB_INIT2" ],
+  [ "0x1C", "PM_SB_INIT3" ],
+  [ "0x1E", "OEM_pMEM_INIT" ],
+  [ "0x1F", "OEM_pMEM_INIT" ],
+  [ "0x20", "OEM_pMEM_INIT" ],
+  [ "0x21", "OEM_pMEM_INIT" ],
+  [ "0x22", "OEM_pMEM_INIT" ],
+  [ "0x23", "OEM_pMEM_INIT" ],
+  [ "0x24", "OEM_pMEM_INIT" ],
+  [ "0x25", "OEM_pMEM_INIT" ],
+  [ "0x26", "OEM_pMEM_INIT" ],
+  [ "0x27", "OEM_pMEM_INIT" ],
+  [ "0x28", "OEM_pMEM_INIT" ],
+  [ "0x29", "OEM_pMEM_INIT" ],
+  [ "0x2A", "OEM_pMEM_INIT" ],
+  [ "0x2B", "MEM_INIT_SPD" ],
+  [ "0x2C", "MEM_INIT_PRS" ],
+  [ "0x2D", "MEM_INIT_PROG" ],
+  [ "0x2E", "MEM_INIT_CFG" ],
+  [ "0x2F", "MEM_INIT" ],
+  [ "0x30", "ASL_STATUS" ],
+  [ "0x31", "MEM_INSTALLED" ],
+  [ "0x32", "CPU_INITS" ],
+  [ "0x33", "CPU_CACHE_INIT" ],
+  [ "0x34", "CPU_AP_INIT" ],
+  [ "0x35", "CPU_BSP_INIT" ],
+  [ "0x36", "CPU_SMM_INIT" ],
+  [ "0x37", "NB_INITS" ],
+  [ "0x38", "NB_INIT1" ],
+  [ "0x39", "NB_INIT2" ],
+  [ "0x3A", "NB_INIT3" ],
+  [ "0x3B", "SB_INITS" ],
+  [ "0x3C", "SB_INIT1" ],
+  [ "0x3D", "SB_INIT2" ],
+  [ "0x3E", "SB_INIT3" ],
+  [ "0x3F", "OEM_pMEM_INIT" ],
+  [ "0x41", "OEM_pMEM_INIT" ],
+  [ "0x42", "OEM_pMEM_INIT" ],
+  [ "0x43", "OEM_pMEM_INIT" ],
+  [ "0x44", "OEM_pMEM_INIT" ],
+  [ "0x45", "OEM_pMEM_INIT" ],
+  [ "0x46", "OEM_pMEM_INIT" ],
+  [ "0x47", "OEM_pMEM_INIT" ],
+  [ "0x48", "OEM_pMEM_INIT" ],
+  [ "0x49", "OEM_pMEM_INIT" ],
+  [ "0x4A", "OEM_pMEM_INIT" ],
+  [ "0x4B", "OEM_pMEM_INIT" ],
+  [ "0x4C", "OEM_pMEM_INIT" ],
+  [ "0x4D", "OEM_pMEM_INIT" ],
+  [ "0x4E", "OEM_pMEM_INIT" ],
+  [ "0x50", "INVALID_MEM" ],
+  [ "0x51", "SPD_READ_FAIL" ],
+  [ "0x52", "INVALID_MEM_SIZE" ],
+  [ "0x53", "NO_USABLE_MEMORY" ],
+  [ "0x54", "MEM_INIT_ERROR" ],
+  [ "0x55", "MEM_NOT_INSTALLED" ],
+  [ "0x56", "INVALID_CPU" ],
+  [ "0x57", "CPU_MISMATCH" ],
+  [ "0x58", "CPU_SELFTEST_FAIL" ],
+  [ "0x59", "MICROCODE_FAIL" ],
+  [ "0x5A", "CPU_INT_ERR" ],
+  [ "0x5B", "RESET_PPI_ERR" ],
+  [ "0x5C", "BMC_SELF_TEST_F" ],
+  [ "0x5D", "AMI_ERR_CODE" ],
+  [ "0x5E", "AMI_ERR_CODE" ],
+  [ "0x5F", "AMI_ERR_CODE" ],
+  [ "0xE2", "S3_VIDEO_REPOST" ],
+  [ "0xEA", "S3_BOOT_SCRIPT_ERR" ],
+  [ "0xEF", "AMI_ERR_CODE" ],
+  [ "0xF0", "REC_BY_FW" ],
+  [ "0xF1", "REC_BY_USER" ],
+  [ "0xF2", "REC_STARTED" ],
+  [ "0xF3", "REC_FW_FOUNDED" ],
+  [ "0xF4", "REC_FW_LOADED" ],
+  [ "0xF5", "AMI_PROG_CODE" ],
+  [ "0xF6", "AMI_PROG_CODE" ],
+  [ "0xF7", "AMI_PROG_CODE" ],
+  [ "0xF8", "RECOVERY_PPI_FAIL" ],
+  [ "0xFA", "RECOVERY_CAP_ERR" ],
+  [ "0xFB", "AMI_ERR_CODE" ],
+  [ "0xFC", "AMI_ERR_CODE" ],
+  [ "0xFD", "AMI_ERR_CODE" ],
+  [ "0xFE", "AMI_ERR_CODE" ],
+  [ "0xFF", "AMI_ERR_CODE" ],
+  [ "0xB5", "STS_CHAN_EARILY" ],
+  [ "0xBD", "STS_RAS_CONF" ],
+  [ "0x4F", "DXE_IPL_START" ]
+],
+
+"Phase2": [
+  [ "0x61", "NVRAM_INIT" ],
+  [ "0x9A", "USB_INIT" ],
+  [ "0x78", "ACPI_INIT" ],
+  [ "0x68", "PCI_BRIDEGE_INIT" ],
+  [ "0x70", "SB_DXE_START" ],
+  [ "0x79", "CSM_INIT" ],
+  [ "0xD1", "NB_INIT_ERR" ],
+  [ "0xD2", "SB_INIT_ERR" ],
+  [ "0xD4", "PCI_ALLOC_ERR" ],
+  [ "0x92", "PCIB_INIT" ],
+  [ "0x94", "PCIB_ENUMERATION" ],
+  [ "0x95", "PCIB_REQ_RESOURCE" ],
+  [ "0x96", "PCIB_ASS_RESOURCE" ],
+  [ "0xEF", "PCIB_INIT" ],
+  [ "0x99", "SUPER_IO_INIT" ],
+  [ "0x91", "DRIVER_CONN_START" ],
+  [ "0xD5", "NO_SPACE_ROM" ],
+  [ "0x97", "CONSOLE_INPUT_CONN" ],
+  [ "0xB2", "LEGACY_ROM_INIT" ],
+  [ "0xAA", "ACPI_ACPI_MODE" ],
+  [ "0xC0", "OEM_BDS_INIT" ],
+  [ "0xBB", "AMI_CODE" ],
+  [ "0xC1", "OEM_BDS_INIT" ],
+  [ "0x98", "CONSOLE_OUTPUT_CONN" ],
+  [ "0x9D", "USB_ENABLE" ],
+  [ "0x9C", "USB_DETECT" ],
+  [ "0xB4", "USB_HOT_PLUG" ],
+  [ "0xA0", "IDE_INIT" ],
+  [ "0xA2", "IDE_DETECT" ],
+  [ "0xA9", "START_OF_SETUP" ],
+  [ "0xAB", "SETUP_INIT_WAIT" ],
+  [ "0x01", "S1_SLEEP_STATE" ],
+  [ "0x02", "S2_SLEEP_STATE" ],
+  [ "0x03", "S3_SLEEP_STATE" ],
+  [ "0x04", "S4_SLEEP_STATE" ],
+  [ "0x05", "S5_SLEEP_STATE" ],
+  [ "0x06", "S6_SLEEP_STATE" ],
+  [ "0x10", "WEAK_FROM_S1" ],
+  [ "0x20", "WEAK_FROM_S2" ],
+  [ "0x30", "WEAK_FROM_S3" ],
+  [ "0x40", "WEAK_FROM_S4" ],
+  [ "0xAC", "ACPI_PIC_MODE" ],
+  [ "0x60", "DXE_CORE_START" ],
+  [ "0x62", "INSTALL_SB_SERVICE" ],
+  [ "0x63", "CPU_DXE_STARTED" ],
+  [ "0x64", "CPU_DXE_INIT" ],
+  [ "0x65", "CPU_DXE_INIT" ],
+  [ "0x66", "CPU_DXE_INIT" ],
+  [ "0x67", "CPU_DXE_INIT" ],
+  [ "0x69", "NB_DEX_INIT" ],
+  [ "0x6B", "NB_DEX_BRI_START" ],
+  [ "0x6C", "NB_DEX_BRI_START" ],
+  [ "0x6D", "NB_DEX_BRI_START" ],
+  [ "0x6E", "NB_DEX_BRI_START" ],
+  [ "0x6F", "NB_DEX_BRI_START" ],
+  [ "0x71", "SB_DEX_SMM_INIT" ],
+  [ "0x72", "SB_DEX_DEV_START" ],
+  [ "0x73", "SB_DEX_BRI_START" ],
+  [ "0x74", "SB_DEX_BRI_START" ],
+  [ "0x75", "SB_DEX_BRI_START" ],
+  [ "0x76", "SB_DEX_BRI_START" ],
+  [ "0x77", "SB_DEX_BRI_START" ],
+  [ "0x7A", "AMI_DXE_CODE" ],
+  [ "0x7B", "AMI_DXE_CODE" ],
+  [ "0x7C", "AMI_DXE_CODE" ],
+  [ "0x7D", "AMI_DXE_CODE" ],
+  [ "0x7E", "AMI_DXE_CODE" ],
+  [ "0x7F", "AMI_DXE_CODE" ],
+  [ "0x80", "OEM_DEX_INIT" ],
+  [ "0x81", "OEM_DEX_INIT" ],
+  [ "0x82", "OEM_DEX_INIT" ],
+  [ "0x83", "OEM_DEX_INIT" ],
+  [ "0x84", "OEM_DEX_INIT" ],
+  [ "0x85", "OEM_DEX_INIT" ],
+  [ "0x86", "OEM_DEX_INIT" ],
+  [ "0x87", "OEM_DEX_INIT" ],
+  [ "0x88", "OEM_DEX_INIT" ],
+  [ "0x89", "OEM_DEX_INIT" ],
+  [ "0x8A", "OEM_DEX_INIT" ],
+  [ "0x8B", "OEM_DEX_INIT" ],
+  [ "0x8C", "OEM_DEX_INIT" ],
+  [ "0x8D", "OEM_DEX_INIT" ],
+  [ "0x8E", "OEM_DEX_INIT" ],
+  [ "0x8F", "OEM_DEX_INIT" ],
+  [ "0x90", "BDS_START" ],
+  [ "0x93", "PCIB_HOT_PLUG_INIT" ],
+  [ "0x9B", "USB_RESET" ],
+  [ "0x9E", "AMI_CODE" ],
+  [ "0x9F", "AMI_CODE" ],
+  [ "0xA1", "IDE_RESET" ],
+  [ "0xA3", "IDE_ENABLE" ],
+  [ "0xA4", "SCSI_INIT" ],
+  [ "0xA5", "SCSI_RESET" ],
+  [ "0xA6", "SCSI_DETECT" ],
+  [ "0xA7", "SCSI_ENABLE" ],
+  [ "0xA8", "SETUP_VERIFY_PW" ],
+  [ "0xAD", "READY_TO_BOOT" ],
+  [ "0xAE", "LEGACY_BOOT_EVE" ],
+  [ "0xAF", "EXIT_BOOT_EVE" ],
+  [ "0xB0", "SET_VIR_ADDR_START" ],
+  [ "0xB1", "SET_VIR_ADDR_END" ],
+  [ "0xB3", "SYS_RESET" ],
+  [ "0xB5", "PCIB_HOT_PLUG" ],
+  [ "0xB6", "CLEAN_NVRAM" ],
+  [ "0xB7", "CONFIG_RESET" ],
+  [ "0xB8", "AMI_CODE" ],
+  [ "0xB9", "AMI_CODE" ],
+  [ "0xBA", "ASL_CODE" ],
+  [ "0xBC", "AMI_CODE" ],
+  [ "0xBD", "AMI_CODE" ],
+  [ "0xBE", "AMI_CODE" ],
+  [ "0xBF", "AMI_CODE" ],
+  [ "0xC2", "OEM_BDS_INIT" ],
+  [ "0xC3", "OEM_BDS_INIT" ],
+  [ "0xC4", "OEM_BDS_INIT" ],
+  [ "0xC5", "OEM_BDS_INIT" ],
+  [ "0xC6", "OEM_BDS_INIT" ],
+  [ "0xC7", "OEM_BDS_INIT" ],
+  [ "0xC8", "OEM_BDS_INIT" ],
+  [ "0xC9", "OEM_BDS_INIT" ],
+  [ "0xCA", "OEM_BDS_INIT" ],
+  [ "0xCB", "OEM_BDS_INIT" ],
+  [ "0xCC", "OEM_BDS_INIT" ],
+  [ "0xCD", "OEM_BDS_INIT" ],
+  [ "0xCE", "OEM_BDS_INIT" ],
+  [ "0xCF", "OEM_BDS_INIT" ],
+  [ "0xD0", "CPU_INIT_ERR" ],
+  [ "0xD3", "ARCH_PROT_ERR" ],
+  [ "0xD6", "NO_CONSOLE_OUT" ],
+  [ "0xD7", "NO_CONSOLE_IN" ],
+  [ "0xD8", "INVALID_PW" ],
+  [ "0xD9", "BOOT_OPT_ERR" ],
+  [ "0xDA", "BOOT_OPT_FAIL" ],
+  [ "0xDB", "FLASH_UPD_FAIL" ],
+  [ "0xDC", "RST_PROT_NA" ],
+  [ "0xDD", "DEX_SELTEST_FAILs" ]
+]
+}
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index cc3a604..b628c7b 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -44,8 +44,8 @@
 sdbusplus::bus::bus dbus(ipmid_get_sd_bus_connection()); // from ipmid/api.h
 static constexpr size_t maxFRUStringLength = 0x3F;
 
-ipmi_ret_t plat_udbg_get_post_desc(uint8_t, uint8_t *, uint8_t, uint8_t *,
-                                   uint8_t *, uint8_t *);
+int plat_udbg_get_post_desc(uint8_t, uint8_t *, uint8_t, uint8_t *, uint8_t *,
+                            uint8_t *);
 ipmi_ret_t plat_udbg_get_frame_data(uint8_t, uint8_t, uint8_t *, uint8_t *,
                                     uint8_t *);
 ipmi_ret_t plat_udbg_control_panel(uint8_t, uint8_t, uint8_t, uint8_t *,
@@ -444,16 +444,13 @@
     uint8_t next = 0;
     uint8_t end = 0;
     uint8_t phase = 0;
-    uint8_t count = 0;
+    uint8_t descLen = 0;
     int ret;
 
     index = req[3];
     phase = req[4];
 
-    phosphor::logging::log<phosphor::logging::level::INFO>(
-        "Get POST Description Event");
-
-    ret = plat_udbg_get_post_desc(index, &next, phase, &end, &count, &res[8]);
+    ret = plat_udbg_get_post_desc(index, &next, phase, &end, &descLen, &res[8]);
     if (ret)
     {
         memcpy(res, req, SIZE_IANA_ID); // IANA ID
@@ -466,8 +463,8 @@
     res[4] = next;
     res[5] = phase;
     res[6] = end;
-    res[7] = count;
-    *data_len = SIZE_IANA_ID + 5 + count;
+    res[7] = descLen;
+    *data_len = SIZE_IANA_ID + 5 + descLen;
 
     return IPMI_CC_OK;
 }
diff --git a/src/usb-dbg.cpp b/src/usb-dbg.cpp
index efa0136..ae200ae 100644
--- a/src/usb-dbg.cpp
+++ b/src/usb-dbg.cpp
@@ -15,16 +15,19 @@
  */
 
 #include <host-ipmid/ipmid-api.h>
+#include <nlohmann/json.hpp>
 #include <stdbool.h>
 #include <stdio.h>
 #include <sys/stat.h>
 
 #include <fstream>
 #include <iostream>
+#include <phosphor-logging/log.hpp>
 
 namespace ipmi
 {
 
+#define JSON_POST_DATA_FILE "/usr/share/ipmi-providers/post_desc.json"
 #define ETH_INTF_NAME "eth0"
 
 #define ESCAPE "\x1B"
@@ -49,19 +52,6 @@
 ipmi_ret_t getNetworkData(uint8_t lan_param, char *data);
 int8_t getFruData(std::string &serial, std::string &name);
 
-typedef struct _post_desc
-{
-    uint8_t code;
-    char desc[32];
-} post_desc_t;
-
-typedef struct _post_phase_desc
-{
-    int phase;
-    post_desc_t *post_tbl;
-    size_t post_tbl_cnt;
-} post_phase_desc_t;
-
 typedef struct _gpio_desc
 {
     uint8_t pin;
@@ -516,19 +506,82 @@
 int plat_udbg_get_post_desc(uint8_t index, uint8_t *next, uint8_t phase,
                             uint8_t *end, uint8_t *length, uint8_t *buffer)
 {
-    int target, pdesc_size;
-    post_phase_desc_t *post_phase;
-    size_t post_phase_desc_cnt, i;
-    post_desc_t *ptr = NULL;
-    post_desc_t *next_phase = NULL;
-    uint8_t pos = plat_get_fru_sel();
+    nlohmann::json postObj;
+    std::string postCode;
 
-    /* Temporary return sample */
-    *next = 0xff;
-    *end = 0x00;
-    memcpy(buffer, "Hello Post", 10);
-    *length = 10;
-    return 0;
+    /* Get post description data stored in json file */
+    std::ifstream file(JSON_POST_DATA_FILE);
+    if (file)
+    {
+        file >> postObj;
+        file.close();
+    }
+    else
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "Post code description file not found",
+            phosphor::logging::entry("POST_CODE_FILE=%s", JSON_POST_DATA_FILE));
+        return -1;
+    }
+
+    std::string phaseStr = "PhaseAny";
+    if (postObj.find(phaseStr) == postObj.end())
+    {
+        phaseStr = "Phase" + std::to_string(phase);
+    }
+
+    if (postObj.find(phaseStr) == postObj.end())
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "Post code phase not available",
+            phosphor::logging::entry("PHASE=%d", phase));
+        return -1;
+    }
+
+    auto phaseObj = postObj[phaseStr];
+    int phaseSize = phaseObj.size();
+
+    for (int i = 0; i < phaseSize; i++)
+    {
+        postCode = phaseObj[i][0];
+        if (index == stoul(postCode, nullptr, 16))
+        {
+            std::string postDesc = phaseObj[i][1];
+            *length = postDesc.size();
+            memcpy(buffer, postDesc.data(), *length);
+            buffer[*length] = '\0';
+
+            if (phaseSize != i + 1)
+            {
+                postCode = phaseObj[i + 1][0];
+                *next = stoul(postCode, nullptr, 16);
+                *end = 0;
+            }
+            else
+            {
+                if (postObj.size() != phase)
+                {
+                    std::string nextPhaseStr =
+                        "Phase" + std::to_string(phase + 1);
+                    postCode = postObj[nextPhaseStr][0][0];
+                    *next = stoul(postCode, nullptr, 16);
+                    *end = 0;
+                }
+                else
+                {
+                    *next = 0xff;
+                    *end = 1;
+                }
+            }
+
+            return 0;
+        }
+    }
+
+    phosphor::logging::log<phosphor::logging::level::ERR>(
+        "Post code description data not available",
+        phosphor::logging::entry("PHASE_CODE=%d_0x%x", phase, index));
+    return -1;
 }
 
 /* Need to implement this */
