summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/isteps/istep_reasoncodes.H2
-rw-r--r--src/include/usr/isteps/ucd/updateUcdFlash.H24
-rw-r--r--src/include/usr/ucd/ucd_reasoncodes.H8
-rw-r--r--src/include/usr/util/utillidmgr.H1
4 files changed, 34 insertions, 1 deletions
diff --git a/src/include/usr/isteps/istep_reasoncodes.H b/src/include/usr/isteps/istep_reasoncodes.H
index 09b12abdc..7aa3abc5e 100644
--- a/src/include/usr/isteps/istep_reasoncodes.H
+++ b/src/include/usr/isteps/istep_reasoncodes.H
@@ -66,6 +66,7 @@ namespace ISTEP
MOD_APPLY_HCODE_GEN_CPU_REGS = 0x23,
MOD_GET_LANEMASK_FROM_HX_KEYWORD = 0x24,
MOD_MSS_SCRUB = 0x25,
+ MOD_CALL_UPDATE_UCD_FLASH = 0x26,
};
/**
@@ -138,6 +139,7 @@ namespace ISTEP
RC_INVALID_HX_KEYWORD_DATA = ISTEP_COMP_ID | 0x4C,
RC_PNOR_IPMI_NOT_ENABLED = ISTEP_COMP_ID | 0x4D,
RC_SLAVE_CORE_WAKEUP_ERROR = ISTEP_COMP_ID | 0x4E,
+ RC_UCD_IMG_NOT_IN_CONTAINER = ISTEP_COMP_ID | 0x4F,
};
};
diff --git a/src/include/usr/isteps/ucd/updateUcdFlash.H b/src/include/usr/isteps/ucd/updateUcdFlash.H
index a1487e78d..2cc7e8e84 100644
--- a/src/include/usr/isteps/ucd/updateUcdFlash.H
+++ b/src/include/usr/isteps/ucd/updateUcdFlash.H
@@ -27,6 +27,7 @@
#define __UPDATE_UCD_FLASH_H
#include <targeting/common/target.H>
+#include <util/utilmem.H>
#include <errl/errlentry.H>
namespace POWER_SEQUENCER
@@ -39,6 +40,29 @@ namespace UCD // UCD series
{
/**
+ * @brief Applies UCD data flash image updates (if needed) to the requested
+ * UCDs
+ *
+ * @param[in] i_powerSequencers Fixed vector of PowerSequencer targets to
+ * update flash image on
+ * @param[in] i_image Reference to UtilMem buffer holding the UCD flash image
+ * contents (including header, TOC entries, and flash images). Note: the
+ * implementation will not alter the buffer content, and will seek back
+ * to the beginning before handing control back.
+ *
+ * @return errlHndl_t Error log handle
+ * @retval nullptr Successfully took action against all requested UCDs. It's
+ * possible an individual UCD update failed, in which case the error is
+ * committed.
+ * @retval !nullptr Failed to take action against one or more requested UCDs.
+ * Typically this is due to a firmware problem. Handle points to valid
+ * error log
+ */
+errlHndl_t updateAllUcdFlashImages(
+ const TARGETING::TargetHandleList& i_powerSequencers,
+ UtilMem& i_image);
+
+/**
* @brief Updates a UCD target's flash image
*
* @param[in] i_pUcd UCD's target; must not be nullptr
diff --git a/src/include/usr/ucd/ucd_reasoncodes.H b/src/include/usr/ucd/ucd_reasoncodes.H
index bfa18397f..4e7cc9841 100644
--- a/src/include/usr/ucd/ucd_reasoncodes.H
+++ b/src/include/usr/ucd/ucd_reasoncodes.H
@@ -32,13 +32,19 @@ namespace UCD_RC
enum UcdModuleId
{
- MOD_UCD_INIT = 0x01,
+ MOD_UCD_INIT = 0x01,
+ MOD_UPDATE_ALL_UCD_FLASH_IMAGES = 0x02,
};
enum UcdReasonCode
{
RC_DEVICE_READ_UNEXPECTED_SIZE_DEVICE_ID = UCD_COMP_ID | 0x01,
RC_DEVICE_READ_UNEXPECTED_SIZE_MFR_REVISION = UCD_COMP_ID | 0x02,
+ UCD_INVALID_EYECATCHER = UCD_COMP_ID | 0x03,
+ UCD_INVALID_MAJOR_VER = UCD_COMP_ID | 0x04,
+ UCD_TOC_ENTRY_TOO_SMALL = UCD_COMP_ID | 0x05,
+ UCD_UNSUPPORTED_DEVICE_ID = UCD_COMP_ID | 0x06,
+ UCD_EOF = UCD_COMP_ID | 0x07,
};
}; // namespace UCD
diff --git a/src/include/usr/util/utillidmgr.H b/src/include/usr/util/utillidmgr.H
index 64e77cfd3..e78eba133 100644
--- a/src/include/usr/util/utillidmgr.H
+++ b/src/include/usr/util/utillidmgr.H
@@ -63,6 +63,7 @@ enum LidId
TARGETING_BINARY_LIDID = 0x81e00630,
NVDIMM_16GB_LIDID = 0x81e00640,
NVDIMM_32GB_LIDID = 0x81e00641,
+ UCD_LIDID = 0x81e00650,
INVALID_LIDID = 0xFFFFFFFF
};
OpenPOWER on IntegriCloud