Dear all,
The Acer Aspire F5-573G is a low-cost laptop of the Kabylake-U platform
with 6th gen i7-7500U CPU and Intel IGD 620. Stock it comes with an
Insidesys H2O BIOS on a Macronix 64Mbit flash, which can be programmed
in place with lastest flashrom.
While low-cost in many aspects (including a really cheap display), one
of the things I really like about the laptop is it's spectacular
low power-consumption. It can idle at around 4.2W in a desktop
environment with Wifi enabled and display at indoor brightness and go
down to 2.3W at minimum brightness with Wifi disabled.
I have made initial attempts to run the latest coreboot instead of the
vendor bios, and based my attempts on similar Kabylake platforms.
This is how far I got:
| coreboot-4.14-1637-g51d0be751c-test6 Sat Sep 4 05:41:24 UTC 2021 romstage starting (log level: 8)...
| pm1_sts: 0100 pm1_en: 0000 pm1_cnt: 00001c00
| gpe0_sts[0]: 00000000 gpe0_en[0]: 00000000
| gpe0_sts[1]: 00000000 gpe0_en[1]: 00000000
| gpe0_sts[2]: 00000000 gpe0_en[2]: 00000000
| gpe0_sts[3]: 00000000 gpe0_en[3]: 00000000
| TCO_STS: 0000 0000
| GEN_PMCON: d0040000 0000700a
| GBLRST_CAUSE: 00000000 00000000
| prev_sleep_state 5
| FMAP: area COREBOOT found @ 630200 (1900032 bytes)
| CBFS: Found 'fspm.bin' @0x9adc0 size 0x63000 in mcache @0xfef05080
| FMAP: area RW_MRC_CACHE found @ 620000 (65536 bytes)
| MRC: no data in 'RW_MRC_CACHE'
| bootmode is set to: 0
| SPD @ 0x52
| SPD: module type is DDR4
| SPD: module part number is
| SPD: banks 8, ranks 1, rows 16, columns 10, density 8192 Mb
| SPD: device width 16 bits, bus width 64 bits
| SPD: module size is 4096 MB (per channel)
| FspMemoryInit returned 0x80000007
| FspMemoryInit returned an error!
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Here is romstage.c which I mostly copied from similar platforms and changed
the I2C address of the SPD:
| void mainboard_memory_init_params(FSPM_UPD *mupd)
| {
| const u16 rcomp_resistors[3] = { 121, 81, 100 };
|
| const u16 rcomp_targets[5] = { 100, 40, 20, 20, 26 };
|
| FSP_M_CONFIG *mem_cfg = &mupd->FspmConfig;
|
| struct spd_block blk = {
| .addr_map = { 0x52 }
| };
|
| assert(sizeof(mem_cfg->RcompResistor) == sizeof(rcomp_resistors));
| assert(sizeof(mem_cfg->RcompTarget) == sizeof(rcomp_targets));
|
| get_spd_smbus(&blk);
| dump_spd_info(&blk);
| assert(blk.spd_array[0][0] != 0);
|
| memcpy(mem_cfg->RcompResistor, rcomp_resistors, sizeof(mem_cfg->RcompResistor));
| memcpy(mem_cfg->RcompTarget, rcomp_targets, sizeof(mem_cfg->RcompTarget));
|
| mem_cfg->DqPinsInterleaved = TRUE;
| mem_cfg->MemorySpdDataLen = blk.len;
| mem_cfg->MemorySpdPtr00 = (uintptr_t) blk.spd_array[0];
| }
The DIMM is an A-DATA AM1P24HC4U1-B9RS.
What could be the reason for the 0x80000007 (EFI_ERROR ?) return from
FspMemoryInit()? If any other parameters are missing, how do you go to
extract them from the vendor bios?
Andreas