/* * We will stuff the memory size into the smbios sku location. */ const char *smbios_mainboard_sku(void) { static char sku[5]; if (sku[0] != 0) return sku; if (!get_spd_offset()) snprintf(sku, sizeof(sku), "2 GB"); else snprintf(sku, sizeof(sku), "4 GB"); return sku; }
AGESA_STATUS check_for_pcengines_spd_offset (UINT32 Func, UINT32 Data, VOID *ConfigPtr) { AGESA_STATUS Status; #ifdef __PRE_RAM__ AGESA_READ_SPD_PARAMS *info = ConfigPtr; struct multi_spd_info *spd_info = (struct multi_spd_info *)info->Buffer; spd_info->offset = get_spd_offset(); spd_info->size = 128; // SPDs for PCEngines/APU are all 128 bytes Status = common_ReadCbfsSpd(Func, Data, ConfigPtr); #else Status = AGESA_UNSUPPORTED; #endif return Status; }
static AGESA_STATUS board_ReadSpd_from_cbfs(UINT32 Func, UINTN Data, VOID *ConfigPtr) { AGESA_STATUS Status = AGESA_UNSUPPORTED; #ifdef __PRE_RAM__ AGESA_READ_SPD_PARAMS *info = ConfigPtr; u8 index = get_spd_offset(); if (info->MemChannelId > 0) return AGESA_UNSUPPORTED; if (info->SocketId != 0) return AGESA_UNSUPPORTED; if (info->DimmId != 0) return AGESA_UNSUPPORTED; /* Read index 0, first SPD_SIZE bytes of spd.bin file. */ if (read_ddr3_spd_from_cbfs((u8*)info->Buffer, index) < 0) die("No SPD data\n"); Status = AGESA_SUCCESS; #endif return Status; }