Joseph Smith wrote:
Quoting Corey Osgood corey.osgood@gmail.com:
So, I tried the dump_spd_registers(&memctrl[0]); dump_smbus_registers(); from debug.c and here is the results:
LinuxBIOS-2.0.0.0Fallback 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