[LinuxBIOS] Read SPD issue

Corey Osgood corey.osgood at gmail.com
Sat Aug 11 22:04:11 CEST 2007

Stefan Reinauer wrote:
> * Joseph Smith <joe at smittys.pointclark.net> [070811 18:52]:
>> Hmm, I have an ICH4 i82801db southbridge and am using Corey's i82801xx  
>> src code.
>> Corey, mabe you could shed some light on this?? Here is my serial  
>> console output, where it says "SPD is ff, ff, ff, ff" I just tried a  
>> bunch of different SPD bytes to see the return values.
> Hm. maybe the spd roms are on a different position then. I think Corey's
> code is known to work. They're usually at 0x50...0x53 but that may be
> different on any other board.

Yeah, the code works for me, and was a hack up of the other 82801s, so
it should work for just about any. Can you do me a favor and check that
the smbus device is located at device 0x1f (ie 31) function 3? That was
one big assumption I made, I checked most of the datasheets but not all
of them, and datasheets do lie. I did throw in a check just as a
failsafe, but that may not have worked either. Also check your factory
bios's smbus IO base, it should be programmed at d31f3 rx20-21, and will
have an extra 1 at the end. If that's not 0x0f00, then try plugging it
in as SMBUS_IO_BASE in i82801xx.h.

The current code also makes no attempt to do give any sort of warning if
an smbus timeout/error occurs. It was something that I wanted to do, but
other things came up. You could probably drop in some debugging info
there, as the functions already do return negative values in case of an
error. The other thought is, run smbus_enable before enabling
serial/console, and also try to force a full smbus dump using the
debug.c that I left in with the i82810 (oops, meant to move that). It
may be that your smbus needs a little time to initialize, if you're
smbus dump starts pulling good values after the first few transactions,
this is the case. It it is, let me know and I can take care of it, and
for the time being just do an smbus dump before attempting to do ram init.

Last thought is, make sure your dimm actually has spd. I've never seen a
dimm that didn't, but that doesn't mean they don't exist, especially
with older sdram, and doesn't that board use so-dimms? lm_sensors
dimms-detect.pl should be able to tell you if there is spd info to be
found, and also the location of the spd. If I get some time, create a
little program to dump the spd info from userspace, but dimms-detect.pl
already does pretty much the same thing, except it translates it into
dimm info (which is quite annoying if that's not what you want).

Good luck!

More information about the coreboot mailing list