18 #define S3_DATA_MTRR_SIZE 0x1000
19 #define S3_DATA_NONVOLATILE_SIZE 0x1000
21 #if CONFIG(HAVE_ACPI_RESUME) && \
22 (S3_DATA_MTRR_SIZE + S3_DATA_NONVOLATILE_SIZE) > CONFIG_S3_DATA_SIZE
23 #error "Please increase the value of S3_DATA_SIZE"
29 u32 s3_data = CONFIG_S3_DATA_POS;
55 if (len == 0 || len == (
u32)-1ULL)
58 dataBlock->NvStorageSize = len;
59 dataBlock->NvStorage = (
void *) (pos +
sizeof(
u32));
76 dataBlock->VolatileStorage = heap;
108 u32 MTRRStorageSize = 0;
113 if (
size && dataBlock->NvStorageSize)
114 spi_SaveS3info(pos,
size, dataBlock->NvStorage,
115 dataBlock->NvStorageSize);
118 "Error: Cannot store memory training results in SPI.\n"
119 "Error: S3 resume will not be possible.\n"
126 memcpy(heap, dataBlock->VolatileStorage, dataBlock->VolatileStorageSize);
134 if (
size && MTRRStorageSize)
135 spi_SaveS3info(pos,
size, MTRRStorage, MTRRStorageSize);
149 return (
void *)(pos +
sizeof(UINT32));
unsigned int AGESA_STATUS
#define HIGH_MEMORY_SCRATCH
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dstpp, int c, size_t len)
void * cbmem_add(u32 id, u64 size)
void * cbmem_find(u32 id)
#define CBMEM_ID_RESUME_SCRATCH
#define printk(level,...)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_EMERG
BIOS_EMERG - Emergency / Fatal.
#define S3_DATA_MTRR_SIZE
@ S3DataTypeNonVolatile
NonVolatile Data Type.
@ S3DataTypeMTRR
MTRR storage.
AGESA_STATUS OemS3LateRestore(AMD_S3_PARAMS *dataBlock)
const void * OemS3Saved_MTRR_Storage(void)
AGESA_STATUS OemInitResume(AMD_S3_PARAMS *dataBlock)
#define S3_DATA_NONVOLATILE_SIZE
static void get_s3nv_data(S3_DATA_TYPE S3DataType, uintptr_t *pos, uintptr_t *len)
void backup_mtrr(void *mtrr_store, u32 *mtrr_store_size)
void __weak spi_init(void)
int spi_flash_probe(unsigned int bus, unsigned int cs, struct spi_flash *flash)
int spi_flash_volatile_group_begin(const struct spi_flash *flash)
int spi_flash_write(const struct spi_flash *flash, u32 offset, size_t len, const void *buf)
int spi_flash_volatile_group_end(const struct spi_flash *flash)
int spi_flash_erase(const struct spi_flash *flash, u32 offset, size_t len)
AGESA_STATUS OemS3Save(AMD_S3_PARAMS *dataBlock)