diff options
Diffstat (limited to 'src/include/usr/i2c')
-rw-r--r-- | src/include/usr/i2c/eeprom_const.H | 38 | ||||
-rw-r--r-- | src/include/usr/i2c/eepromddreasoncodes.H | 11 | ||||
-rw-r--r-- | src/include/usr/i2c/tpmddif.H | 3 |
3 files changed, 46 insertions, 6 deletions
diff --git a/src/include/usr/i2c/eeprom_const.H b/src/include/usr/i2c/eeprom_const.H index e9e157757..275388450 100644 --- a/src/include/usr/i2c/eeprom_const.H +++ b/src/include/usr/i2c/eeprom_const.H @@ -108,7 +108,7 @@ enum EECACHE_VERSION * * uniqueRecord is useful if you want to quickly compare the "unique" * bits of a header entry which includes the target_huid, port, engine, -* devAddr, mux_huid, and mux_select. +* devAddr, mux_huid, and mux_select, and size * */ union eepromRecordHeader @@ -124,7 +124,10 @@ union eepromRecordHeader uint32_t cache_copy_size; // Size of data saved in cache (in KB) uint32_t internal_offset; // offset from start of EECACHE section where cached // data exists - uint8_t cached_copy_valid; // if == 0 , cached data is invalid + uint8_t cached_copy_valid : 1, // This bit is set when we think the contents of the + // cache is valid. + unused : 7; + } PACKED completeRecord; struct uniqueRecord @@ -167,9 +170,9 @@ struct eecacheSectionHeader */ struct eeprom_addr_t { - uint64_t port; - uint64_t engine; - uint64_t devAddr; + uint8_t port; + uint8_t engine; + uint8_t devAddr; int64_t eepromRole; uint64_t offset; eeprom_addr_size_t addrSize; @@ -235,5 +238,30 @@ struct EepromInfo_t } }; +/** + * @brief Define a set of information that describes the + different virtual addresses associated with a given + cache entry along with a byte telling us if there has been + an update detected on the eeprom this boot + */ +struct EeepromEntryMetaData_t +{ + uint64_t header_entry_address; + uint64_t cache_entry_address; + uint8_t mark_target_changed; // This byte is set after we detect a target has changed. + // Either removed, replaced, or added we don't care. But + // we need to use this bits so future targets associated + // with this eeprom can know they need to notify HWAS that + // they have been changed. This bit should get cleared after + // all eeproms have been cached. + + EeepromEntryMetaData_t() + : header_entry_address(0), + cache_entry_address(0), + mark_target_changed(0) + { + } +}; + } #endif
\ No newline at end of file diff --git a/src/include/usr/i2c/eepromddreasoncodes.H b/src/include/usr/i2c/eepromddreasoncodes.H index a2c7b1c83..41de06dfa 100644 --- a/src/include/usr/i2c/eepromddreasoncodes.H +++ b/src/include/usr/i2c/eepromddreasoncodes.H @@ -57,6 +57,9 @@ enum eepromModuleId EEPROM_CACHE_EEPROM = 0x07, EEPROM_CLEAR_EECACHE = 0x08, EEPROM_CACHE_PERFORM_OP = 0x09, + EEPROM_INVALIDATE_CACHE = 0x0A, + EEPROM_RESOLVE_SOURCE = 0x0B, + EEPROM_CACHE_INIT_RT = 0x0C, }; /** @@ -87,6 +90,14 @@ enum eepromReasonCode EEPROM_NEW_DEVICE_DETECTED = EEPROM_COMP_ID | 0x0E, // While looking up a part, found that current EEPROM size does not // match what we have seen in previous IPLs indicating a new part has // been installed on the system. + EEPROM_CACHE_NOT_FOUND_IN_MAP = EEPROM_COMP_ID | 0x0F, // An entry we thought would be in the global map that keeps track of + // what eeproms have been cached was not found + EEPROM_CACHE_NOT_FOUND_IN_PNOR = EEPROM_COMP_ID | 0x10, // An entry we thought would be in the the EECACHE section of PNOR seems + // to be missing + EEPROM_CACHE_NO_VPD_IN_RSV_MEM = EEPROM_COMP_ID | 0x11, // When looking up the VPD section in reserved memory no entry was found. + EEPROM_DUPLICATE_CACHE_ENTRY = EEPROM_COMP_ID | 0x12 // While parsing eecache found in reserved memory we found at least two + // cache entries that had identical "unique" identifiers + // (see structs defined in eeprom_const.H) }; enum UserDetailsTypes diff --git a/src/include/usr/i2c/tpmddif.H b/src/include/usr/i2c/tpmddif.H index 0f57e4797..2a0c964c5 100644 --- a/src/include/usr/i2c/tpmddif.H +++ b/src/include/usr/i2c/tpmddif.H @@ -65,7 +65,8 @@ enum tpm_locality_t /** * @brief TPM Models that are supported * - * @note Must stay in sync with TPM_MODEL in attribute_types_hb.xml + * @note Must stay in sync with TPM_MODEL in attribute_types_hb.xml and + * the attribute usage in processMrw.pl. * @note Not using Attribute Enums since FSP does not currently support * overriding enum values */ |