summaryrefslogtreecommitdiff
path: root/src/soc/amd/common/block/include/amdblocks
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/amd/common/block/include/amdblocks')
-rw-r--r--src/soc/amd/common/block/include/amdblocks/psp_efs.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/soc/amd/common/block/include/amdblocks/psp_efs.h b/src/soc/amd/common/block/include/amdblocks/psp_efs.h
new file mode 100644
index 0000000000..7afd295df3
--- /dev/null
+++ b/src/soc/amd/common/block/include/amdblocks/psp_efs.h
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+
+#ifndef AMD_COMMON_PSP_EFS_H
+#define AMD_COMMON_PSP_EFS_H
+
+#include <types.h>
+
+#define EFS_OFFSET (0xffffff - (0x80000 << CONFIG_AMD_FWM_POSITION_INDEX) + 0x20000 + 1)
+#define EFS_ADDRESS (0xff000000 + EFS_OFFSET)
+
+#define EMBEDDED_FW_SIGNATURE 0x55aa55aa
+
+#if CONFIG(SOC_AMD_STONEYRIDGE)
+ #define SPI_MODE_FIELD spi_readmode_f15_mod_60_6f
+ #define SPI_SPEED_FIELD fast_speed_new_f15_mod_60_6f
+#elif CONFIG(SOC_AMD_PICASSO)
+ #define SPI_MODE_FIELD spi_readmode_f17_mod_00_2f
+ #define SPI_SPEED_FIELD spi_fastspeed_f17_mod_00_2f
+#elif CONFIG(SOC_AMD_CEZANNE)
+ #define SPI_MODE_FIELD spi_readmode_f17_mod_30_3f
+ #define SPI_SPEED_FIELD spi_fastspeed_f17_mod_30_3f
+#else
+ #error <Error: Unknown Processor>
+#endif
+
+
+struct second_gen_efs { /* todo: expand for Server products */
+ int gen:1; /* Client products only use bit 0 */
+ int reserved:31;
+} __attribute__((packed));
+
+/* Copied from coreboot/util/amdfwtool.h */
+typedef struct _embedded_firmware {
+ uint32_t signature; /* 0x55aa55aa */
+ uint32_t imc_entry;
+ uint32_t gec_entry;
+ uint32_t xhci_entry;
+ uint32_t psp_entry;
+ uint32_t comboable;
+ uint32_t bios0_entry;
+ uint32_t bios1_entry;
+ uint32_t bios2_entry;
+ struct second_gen_efs efs_gen;
+ uint32_t bios3_entry;
+ uint32_t reserved_2Ch;
+ uint32_t promontory_fw_ptr;
+ uint32_t lp_promontory_fw_ptr;
+ uint32_t reserved_38h;
+ uint32_t reserved_3Ch;
+ uint8_t spi_readmode_f15_mod_60_6f;
+ uint8_t fast_speed_new_f15_mod_60_6f;
+ uint8_t reserved_42h;
+ uint8_t spi_readmode_f17_mod_00_2f;
+ uint8_t spi_fastspeed_f17_mod_00_2f;
+ uint8_t qpr_dummy_cycle_f17_mod_00_2f;
+ uint8_t reserved_46h;
+ uint8_t spi_readmode_f17_mod_30_3f;
+ uint8_t spi_fastspeed_f17_mod_30_3f;
+ uint8_t micron_detect_f17_mod_30_3f;
+ uint8_t reserved_4Ah;
+ uint8_t reserved_4Bh;
+ uint32_t reserved_4Ch;
+} __attribute__((packed, aligned(16))) embedded_firmware;
+
+bool efs_is_valid(void);
+bool read_efs_spi_settings(uint8_t *mode, uint8_t *speed);
+
+#endif /* AMD_COMMON_PSP_EFS_H */