summaryrefslogtreecommitdiffstats
path: root/src/include/usr/vpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/usr/vpd')
-rw-r--r--src/include/usr/vpd/spdenums.H21
-rw-r--r--src/include/usr/vpd/vpd_if.H17
-rw-r--r--src/include/usr/vpd/vpdreasoncodes.H13
3 files changed, 44 insertions, 7 deletions
diff --git a/src/include/usr/vpd/spdenums.H b/src/include/usr/vpd/spdenums.H
index a6577ed12..f1dc7aa29 100644
--- a/src/include/usr/vpd/spdenums.H
+++ b/src/include/usr/vpd/spdenums.H
@@ -46,6 +46,19 @@ enum
};
/**
+* @brief Enumerations for common SPD values
+*/
+enum
+{
+ MEM_DDR3 = 0xB,
+ MEM_DDR4 = 0xC,
+ DDR3_SPD_SIZE = 256,
+ DDR4_SPD_SIZE = 512,
+ DDIMM_DDR4_SPD_SIZE = 640,
+ MEM_DDIMM = 0xA
+};
+
+/**
* @brief Enumerations for fields that can be accessed in the SPD
*/
enum
@@ -343,9 +356,15 @@ enum
LRMM_CRC = SPD_FIRST_MOD_SPEC | 0xb4,
SPD_LAST_MOD_SPEC = SPD_FIRST_MOD_SPEC | 0xb5,
+ // Latest DDR SPD specifcations have standard SPD
+ // in the front followed by extendable function
+ // descriptors (EFDs). ENTIRE_SPD will grab everything
+ // ENTIRE_SPD_WITHOUT_EFD will skip getting the EFD info
+ ENTIRE_SPD_WITHOUT_EFD = 0xFFFD,
+ //read entire SPD contents
+ ENTIRE_SPD = 0xFFFE,
// This keyword should be last in the list
// Invalid Keyword
- ENTIRE_SPD = 0xFFFE, //read entire SPD
INVALID_SPD_KEYWORD = 0xFFFF,
};
diff --git a/src/include/usr/vpd/vpd_if.H b/src/include/usr/vpd/vpd_if.H
index 4e63a0965..b649b46ab 100644
--- a/src/include/usr/vpd/vpd_if.H
+++ b/src/include/usr/vpd/vpd_if.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* Contributors Listed Below - COPYRIGHT 2013,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -108,6 +108,21 @@ namespace VPD
errlHndl_t ensureCacheIsInSync ( TARGETING::Target * i_target );
/**
+ * @brief This function checks if the eeprom cache for the target is in
+ * sync with hardware and returns the result in o_isInSync.
+ *
+ * @param[in] i_target Target device
+ * @param[in] i_eepromType Eeprom content type of target device
+ * @param[out] o_isInSync true if part and serial numbers in cache match
+ * hardware. Otherwise, false.
+ * @return errlHndl_t - NULL if successful, otherwise a pointer to the
+ * error log.
+ */
+ errlHndl_t ensureEepromCacheIsInSync(TARGETING::Target * i_target,
+ TARGETING::EEPROM_CONTENT_TYPE i_eepromType,
+ bool & o_isInSync);
+
+ /**
* @brief This function invalidates the VPD data in the PNOR cache.
* @param[in] i_target - Target device
* @return errlHndl_t - NULL if successful, otherwise a pointer to the
diff --git a/src/include/usr/vpd/vpdreasoncodes.H b/src/include/usr/vpd/vpdreasoncodes.H
index 8a201c422..9307af7b7 100644
--- a/src/include/usr/vpd/vpdreasoncodes.H
+++ b/src/include/usr/vpd/vpdreasoncodes.H
@@ -99,7 +99,10 @@ enum vpdModuleId
// OCMB SPD
VPD_OCMB_GET_SPD = 0x90,
+ VPD_OCMB_SPD_PERFORM_OP = 0x91,
+ VPD_READ_FROM_EEPROM_SOURCE = 0x92,
+ VPD_GET_MEMTYPE = 0x93,
};
@@ -124,10 +127,10 @@ enum vpdReasonCode
VPD_MEMTYPE_NOT_SUPPORTED = VPD_COMP_ID | 0x0A,
VPD_KEYWORD_NOT_WRITABLE = VPD_COMP_ID | 0x0B,
VPD_NOT_SUPPORTED = VPD_COMP_ID | 0x0C,
- VPD_MOD_SPECIFIC_MISMATCH_UMM = VPD_COMP_ID | 0x0D,
- VPD_MOD_SPECIFIC_MISMATCH_RMM = VPD_COMP_ID | 0x0E,
- VPD_MOD_SPECIFIC_MISMATCH_CMM = VPD_COMP_ID | 0x0F,
- VPD_MOD_SPECIFIC_MISMATCH_LRMM = VPD_COMP_ID | 0x10,
+ VPD_MOD_SPECIFIC_MISMATCH_UMM = VPD_COMP_ID | 0x0D, // Deprecated
+ VPD_MOD_SPECIFIC_MISMATCH_RMM = VPD_COMP_ID | 0x0E, // Deprecated
+ VPD_MOD_SPECIFIC_MISMATCH_CMM = VPD_COMP_ID | 0x0F, // Deprecated
+ VPD_MOD_SPECIFIC_MISMATCH_LRMM = VPD_COMP_ID | 0x10, // Deprecated
VPD_MOD_SPECIFIC_UNSUPPORTED = VPD_COMP_ID | 0x11,
VPD_SIZE_MISMATCH = VPD_COMP_ID | 0x12,
VPD_INVALID_WRITE_METHOD = VPD_COMP_ID | 0x13,
@@ -157,7 +160,7 @@ enum vpdReasonCode
VPD_BAD_REC_NUM = VPD_COMP_ID | 0x3e,
VPD_INVALID_MASTER_I2C_PATH = VPD_COMP_ID | 0x3f,
VPD_NULL_I2C_MASTER = VPD_COMP_ID | 0x40,
- VPD_MOD_SPECIFIC_MISMATCH_DDIMM = VPD_COMP_ID | 0x41,
+ VPD_INVALID_EEPROM_CONTENT_TYPE = VPD_COMP_ID | 0x41,
};
OpenPOWER on IntegriCloud