summaryrefslogtreecommitdiffstats
path: root/src/include/usr/i2c
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/usr/i2c')
-rw-r--r--src/include/usr/i2c/eeprom_const.H38
-rw-r--r--src/include/usr/i2c/eepromddreasoncodes.H11
-rw-r--r--src/include/usr/i2c/tpmddif.H3
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
*/
OpenPOWER on IntegriCloud