Hi,
The return value 0x80000007 is EFI_DEVICE_ERROR, which is unfortunately for
us, not very specific.

The schematics will be a big help to you, if you can get them. However, you
can probably manage without them.

There are 3 BIOS images in the update binary from Acer. I took the liberty
of assuming the relevant one was the 8 MiB file, as your SPI flash is 64
Mb. I've checked this image, and while its silicon configuration modules
now more closely align with Intel's code (*OpenBoardPkg and *BoardPkg,
MinPlatformPkg and reference code), so the work I've done for an Acer
Skylake laptop doesn't help you, the theory is the same.

The relevant modules for setting FSP-M configuration are
BoardConfigInitPreMem and possibly PlatformInitPreMem. Since the RCOMP
resistors and targets have a known structure (3 and 5 UINT16s, also with a
somewhat predictable pattern), a good way to skip a lot of reverse
engineering is to search a hexdump for known/common values, or eyeball the
.data section. You may want to do this in IDA (costly, proprietary) or
Ghidra (free, open-source), so that you can follow the references the code
makes to the variables. I found some possible RCOMP resistors in
BoardConfigInitPreMem, which brings us to 1, maybe 2, relevant functions.

Depending on the board ID, the function loaded at 0xFFF15F48 will assign
SpdAddressTable, DqByteMap, DqsMapCpu2Dram, RcompResistors, RcompTargets
and others. coreboot boards generally ignore Dqs settings these days
(except for LPDDR3/4, as I understand), so I'll just give you the possible
RCOMP values, as I see them:
- RCOMP targets: { 100, 40, 40, 23, 40 }, or { 100, 40, 20, 20, 26 }.
Apparently, there is also { 60, 26, 20, 20, 26 }, but this looks different
to what I've seen.
- RCOMP resistors: { 200, 81, 162 }, or { 121, 75, 100 }, or { 121, 81, 100
}

Board ID appears to be determined by PCD (essentially, UEFI global
variables), so you should try dumping the PCD database with PcdGet from
https://github.com/jyao1/EdkiiShellTool in a UEFI shell.

By the way, according to the code you also may have an (unpopulated) SPD at
0x50 (0xA0 in the code, this is just because the SMBUS address was shifted
1 bit left into the 8-bit address form. They are equivalent).

You also may need to set CaVrefConfig. "2" should be the correct value for
DDR4. You should probably check that DqPinsInterleaved is correct, it's
easiest if you can get this from the schematics.

Best regards,
Benjamin
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to