/* SPDX-License-Identifier: GPL-2.0-or-later */ #include #define HOSTC 0x40 #define SMBUS_IO_BASE 0xefa0 #define HOSTC_I2C_EN (1 << 2) #define I2C_ADDR_EEPROM 0x57 #if ENV_ROMSTAGE #define FSP_UPD_SIGNATURE FSPM_UPD_SIGNATURE #define EEPROM_OFFSET_FSP_SIGNATURE 0 #define EEPROM_OFFSET_FSP_CONFIG 0 #define GET_VALUE(x) {.offset = sizeof(FSP_UPD_HEADER) + sizeof(FSPM_ARCH_UPD) \ + offsetof(FSP_M_CONFIG, x), .size = member_size(FSP_M_CONFIG, x)} #else #define FSP_UPD_SIGNATURE FSPS_UPD_SIGNATURE #define EEPROM_OFFSET_FSP_SIGNATURE 0x0600 #define EEPROM_OFFSET_FSP_CONFIG (EEPROM_OFFSET_FSP_SIGNATURE + sizeof(FSP_UPD_HEADER)) #define GET_VALUE(x) {.offset = offsetof(FSP_S_CONFIG, x), \ .size = member_size(FSP_S_CONFIG, x)} #endif /* ENV_ROMSTAGE */ typedef struct { size_t offset; size_t size; } fsp_params; bool read_write_config(u8 addr, void *blob, size_t read_offset, size_t write_offset, size_t size); int check_signature(u8 addr);