[coreboot] coreboot on amd A85 can't work

Rudolf Marek r.marek at assembler.cz
Mon Dec 23 10:35:14 CET 2013


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 at assembler.cz>;
> *Date: * Tue, Dec 17, 2013 03:57 PM
> *To: * "陈军根"<cjg at bolod.net>;
> *Cc: * "coreboot"<coreboot at 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!
>  >
>  >



More information about the coreboot mailing list