summaryrefslogtreecommitdiffstats
path: root/src/soc/intel/common/block/include/intelblocks/cse.h
diff options
context:
space:
mode:
authorDinesh Gehlot <digehlot@google.com>2023-03-24 06:39:33 +0000
committerFelix Held <felix-coreboot@felixheld.de>2023-04-13 17:40:17 +0000
commitf963febd29540c4799d15786b778daf3207741c0 (patch)
tree12d32b2acb74b87525be0d83a6dd19f13382d393 /src/soc/intel/common/block/include/intelblocks/cse.h
parent5ae99f8aa91322b8e83d3391af8be23af36494a2 (diff)
downloadcoreboot-f963febd29540c4799d15786b778daf3207741c0.tar.gz
coreboot-f963febd29540c4799d15786b778daf3207741c0.tar.bz2
coreboot-f963febd29540c4799d15786b778daf3207741c0.zip
soc/intel/cmd/block: Implement an API to get firmware partition details
This patch retrieves details of a specified firmware partition table. The information retrieved includes the current firmware version and other information about the firmware partition. The patch communicates with the ME using the HECI command to acquire this information. BUG=b:273661726 Test=Verified the changes for ISH partition on nissa board. Signed-off-by: Dinesh Gehlot <digehlot@google.com> Change-Id: I0582010bbb836bd4734f843a8c74dee49d203fd8 Reviewed-on: https://review.coreboot.org/c/coreboot/+/74005 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Diffstat (limited to 'src/soc/intel/common/block/include/intelblocks/cse.h')
-rw-r--r--src/soc/intel/common/block/include/intelblocks/cse.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/include/intelblocks/cse.h b/src/soc/intel/common/block/include/intelblocks/cse.h
index b39ae7f8fa84..6b708cab1ef3 100644
--- a/src/soc/intel/common/block/include/intelblocks/cse.h
+++ b/src/soc/intel/common/block/include/intelblocks/cse.h
@@ -49,6 +49,7 @@
#define MKHI_BUP_COMMON_GET_BOOT_PARTITION_INFO 0x1c
#define MKHI_BUP_COMMON_SET_BOOT_PARTITION_INFO 0x1d
#define MKHI_BUP_COMMON_DATA_CLEAR 0x20
+#define GEN_GET_IMAGE_FW_VERSION 0x1c
/* Get boot performance command id */
#define MKHI_BUP_COMMON_GET_BOOT_PERF_DATA 0x8
@@ -85,6 +86,12 @@ enum {
PCI_ME_HFSTS6 = 0x6C,
};
+/* CSE partition list */
+enum fpt_partition_id {
+ FPT_PARTITION_NAME_UNDEFINED = 0x0,
+ FPT_PARTITION_NAME_ISHC = 0x43485349,
+};
+
/* MKHI Message Header */
struct mkhi_hdr {
uint8_t group_id;
@@ -118,6 +125,25 @@ struct me_fw_ver_resp {
struct me_version fitc;
} __packed;
+/* Module data from manifest */
+struct flash_partition_data {
+ enum fpt_partition_id partition_id;
+ uint8_t reserved1[8];
+ struct fw_version version;
+ uint32_t vendor_id;
+ uint32_t tcb_svn;
+ uint32_t arb_svn;
+ uint32_t vcn;
+ uint32_t reserved2[13];
+};
+
+/* Response header for partition information request */
+struct fw_version_resp {
+ struct mkhi_hdr hdr;
+ uint32_t module_count;
+ struct flash_partition_data manifest_data;
+};
+
/* CSE RX and TX error status */
enum cse_tx_rx_status {
/*
@@ -502,4 +528,10 @@ void cse_enable_ptt(bool state);
*/
enum cb_err cse_get_fw_feature_state(uint32_t *feature_state);
+/*
+ * The function sends a HECI command to get the partition information of the shared ID.
+ * The retrieved partition is stored in the memory pointed to by the resp pointer.
+ * The function returns 0 on success and < 0 on failure.
+ */
+enum cb_err cse_get_fpt_partition_info(enum fpt_partition_id id, struct fw_version_resp *resp);
#endif // SOC_INTEL_COMMON_CSE_H