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