Hi 陈军根,
Please put to cc the mailing list.
I can't find spdAddressLookup in dimmSpd.c(coreboot v4),but I find
Ahh yes it seems to move to generic wrapper code. You will need to modify devicetree.cb where is the table and then it is generated as static.c
ROMSTAGE_CONST struct northbridge_amd_agesa_family15tn_config ROMSTAGE_CONST northbridge_amd_agesa_family15tn_info_6 = { .spdAddrLookup = { { {0xA0, 0xA4}, {0xA2, 0xA6}, }, // socket 0 - Channel 0 & 1 - 8-bit SPD addresses { {0x00, 0x00}, {0x00, 0x00}, }, // socket 1 - Channel 0 & 1 - 8-bit SPD addresses }, }; in build/mainboard/asus/f2a85-m/static.c I changed the spdAddrLookup to { {0xA0, 0x00}, {0xA2, 0x00}, }, // socket 0 - Channel 0 & 1 - 8-bit SPD addresses { {0x00, 0x00}, {0x00, 0x00}, }, // socket 1 - Channel 0 & 1 - 8-bit SPD addresses and { {0xA0, 0x00}, {0x00, 0x00}, }, // socket 0 - Channel 0 & 1 - 8-bit SPD addresses { {0xA2, 0x00}, {0x00, 0x00}, }, // socket 1 - Channel 0 & 1 - 8-bit SPD addressese
but I got the same error messages
"assertion Failed:file
'src/vendorcode/amd/agesa/f15tn/proc/mem/main/mmexcludedimm.c',line 236".
Do you have other options?
Yes, we need to find out what is the right mapping for the SPD, and that SPD can be read.
Yes you will need to do the i2c SPD address mapping procedure as I described in last email:
If you don't like the ad-hoc method, try booting original BIOS with only one DIMM in chanel 0 and do following from Linux:
modprobe i2c-dev modprobe i2c-piix4 i2cdetect -l
This will show i2c bus of PIIX4 aka hudson, if you have a video drivers loaded it will be some non-zero number. I use zero as an example:
i2cdetect 0
This will detect the chips on SPD bus. If you plug your DIMM to channel zero and see address 0x50 is used then the first line has valid first entry. The second entry in first line will be zero for you because you have only 2 dimms.
So repeat the steps and plug it to second slot and see what address you will get. It could be 0x51 or 0x52 as suggested above.
You could also check if you get at least some valid data. You can do that by adding some debug information to readspd() in coreboot/src/northbridge/amd/agesa/family15tn/dimmSpd.c Maybe someone put some multiplexer or you have SPD on secondary controller.
You will need to include #include <console/console.h>
and do printk(BIOS_DEBUG, "...%x ...", ....)
Then you can also enable debug messages for AGESA, which you can do by uncommenting #define IDSOPT_IDS_ENABLED in mainboard directory OptionsIds.h I dont think we have a menu config option for that... we should have... I hope it will work.
we are usually also on IRC channel #coreboot at irc.freenode.net
Btw does your memory need 1.3 1.5 or 1.65 volts? Can you check original BIOS what is the voltage applied there?
Thanks Rudolf
thank you very much! cjg
------------------ Original ------------------ *From: * "Rudolf Marek"r.marek@assembler.cz; *Date: * Tue, Dec 17, 2013 03:57 PM *To: * "陈军根"cjg@bolod.net; *Cc: * "coreboot"coreboot@coreboot.org; *Subject: * Re: [coreboot] coreboot on amd A85 can't work On 13.12.2013 08:57, 陈军根 wrote:
Dear all: I run coreboot in ASUS F2A85-MLE CPU is A10-5800k, kingston ddr3
Hi
Please note that the board is F2A85-M without the "LE". Maybe there is something different. Try using only one dimm in different slots.
The "M" version has 4 DIMMS your seems to use only 2 dimms: You can also try to edit:
spdAddressLookup in dimmSpd.c in the mainboard directory. // socket 0 {
{0x50 << 1, 0x52 << 1}, // channel 0 dimms {0x51 << 1, 0x53 << 1}, // channel 1 dimms
To something else like:
{0x50 << 1, 0x00}, // channel 0 dimms {0x51 << 1, 0x00}, // channel 1 dimms
Or:
{0x50 << 1, 0x00}, // channel 0 dimms {0x52 << 1, 0x00}, // channel 1 dimms
If you don't like the ad-hoc method, try booting original BIOS with only one DIMM in chanel 0 and do following from Linux:
modprobe i2c-dev modprobe i2c-piix4 i2cdetect -l
This will show i2c bus of PIIX4 aka hudson, if you have a video drivers loaded it will be some non-zero number. I use zero as an example:
i2cdetect 0
This will detect the chips on SPD bus. If you plug your DIMM to channel zero and see address 0x50 is used then the first line has valid first entry. The second entry in first line will be zero for you because you have only 2 dimms.
So repeat the steps and plug it to second slot and see what address you will get. It could be 0x51 or 0x52 as suggested above.
Thanks Rudolf
1600(kvr1600d3n9/4g),coreboot halt at "assertion Failed:file 'src/vendorcode/amd/agesa/f15tn/proc/mem/main/mmexcludedimm.c',line 236". I don't know how to do, can anyone help me? thanks very much!