[LinuxBIOS] Read SPD issue

Joseph Smith joe at smittys.pointclark.net
Sun Aug 12 16:49:19 CEST 2007

Quoting Corey Osgood <corey.osgood at gmail.com>:

> Joseph Smith wrote:
>> Quoting Corey Osgood <corey.osgood at gmail.com>:
>>>> So, I tried the
>>>>     dump_spd_registers(&memctrl[0]);
>>>>     dump_smbus_registers();
>>>> from debug.c and here is the results:
>>>> -----------------
>>>> LinuxBIOS- Sat Aug 11 21:37:10 EDT 2007 starting...
>>>> dimm: 00.0: 50
>>>> 00: bad device
>>>> dimm: 01.0: 51
>>>> 00: bad device
>>>> smbus: 69
>>>> ----------------
>>>> HELP???
>>>> Thanks - Joe
>>> In the attached debug.c is probe_spd_rom(). If your device has spd, it
>>> should be able to find it. You can use the whole file and #include it
>>> into the southbridge or mainboard or even northbridge code, or just copy
>>> and paste it into somewhere else. Call it whereever you called
>>> dump_spd_registers from. Note that it's not magic (yet), it won't
>>> actually use found spd locations, you'll have to do that manually. Also,
>>> what make/model is your dimm and board (I know you've told me, but my
>>> memory is terrible)? The datasheets may have more info, if they're
>>> available.
>>> -Corey
>> So I tried the probe_spd_rom() and it comes back with "bad device".
> That's because I messed up and forgot to remove the break, so after
> checking the first location, it left the function. It should have (quite
> literally) filled your screen with bad device messages, with one message
> saying it found an spd rom. In hindsight, it was pretty damn stupid of
> me to leave that message there. Try the attached version, it should be
> fixed and is even simpler now.
>> Which I expected because this line in the function
>> status = smbus_read_byte(i, 0);
>> is my whole problem:( The smbus_read_byte function is what is not
>> working in raminit.c so why would it work when called from auto.c?? No
>> matter what byte I try to read it just comes back with a 0xFF ??
>> Here is a recap of the hardware:
>> RCA RM4100 Embedded Set-top-box
>> Low Voltage Intel® Celeron® processor (Micro-FC-BGA) 733MHz
>> 128MB PC133 SDRAM on board (Embedded) (In Socket2)
>> Intel i82830 (i830M4) Northbridge (Developing)
>> Intel i82801DB Southbridge (Using i82801xx)
>> SMSC lpc47m192 SuperIO (Using smscsuperio)
>> This is making me crazy, I'm so confused?
>> Thanks - Joe
> Essentially what seems to be going on here is the smbus is looking for
> data, but it can't find the spd rom. The "bad device" error is trying to
> say bad spd device, or at least that's the hope. Better parsing of the
> error code (-1 vs -2, etc) could tell us more, but that's the next step
> (mainly cuz I'm almost asleep right now). This is exploring stepan's
> theory that the device isn't located at the standard 0x50, etc, by
> checking the first byte (byte 0) at every address (denoted by i),
> through the first 256, and throwing up a message if it finds anything.
> Note that just because there's a device found it's not necessarily the
> spd rom, but there's a decent chance of it. The other possible problem
> is that, since your ram is embedded, there isn't any spd rom at all...
> -Corey

Ok, so I tried this and it just returns a "SPD located at 0x69" is  
this correct?
It is much different than the standard 0x50, etc. Is this because it  
is embedded?? Thanks for all help.

Thanks - Joe

More information about the coreboot mailing list