Quoting Corey Osgood corey.osgood@gmail.com:
Stefan Reinauer wrote:
- Joseph Smith joe@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.
Yep datasheet says SMBus Controller - Bus 0:Device 31:Function 3
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.
How would I call debug.c and from what file?
I noticed in auto.c there is a dump_spd_registers(&memctrl[0]); commented out. Could I try this to dump the SPD data??
Thanks - Joe