diff options
Diffstat (limited to 'src/include/usr/vpd')
-rw-r--r-- | src/include/usr/vpd/spdenums.H | 21 | ||||
-rw-r--r-- | src/include/usr/vpd/vpd_if.H | 17 | ||||
-rw-r--r-- | src/include/usr/vpd/vpdreasoncodes.H | 13 |
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, }; |