corey.osgood at gmail.com
Sat Aug 18 10:03:59 CEST 2007
Joseph Smith wrote:
> I am a little confused about the significance of the row_offset in the
> i82810 raminit.c.
> 1. What do you mean by row? Each row of DRAM technologies (Side) or
> each row of DIMM (Socket)?? Two different things.
> /* Set the row offset, in KBytes (should this be
> * Kbits?). Note that this offset is the start of the
> * next row.
> row_offset = (dimm_size * 4 * 1024);
I'm not entirely sure. I think I asked on the mailing list at one point,
but never really got a definite answer. I honestly never got around to
testing dual sided function at all, I couldn't find any known-good
sticks around here, just one very flaky one.
> 2. If this the start of the next row should it be row_offset +1
Perhaps I'm a bit too tired, but I don't think so. IIRC, if you have
64mb of ram, ie 65536k, the last address is at 65535 because addressing
starts at 0. The next address, at 65536, would be address 0 of the next
row. But I could easily be wrong. And I think that if you screw up the
addressing, you also screw up the mode register set, so gotta get it
> 3. Lastly, is row_offset from function spd_set_dram_size supposed show
> up in sdram_enable?? Wouldn?t we need a:
> return row_offset;
> At the end of spd_set_dram_size??
I don't think so, but again I could be wrong. row_offset is declared in
sdram_enable then passed along to spd_set_dram_size, which should then
be able to modify it. This is one of those "lack of coding experience"
situations, where I simply don't know. I really should have checked it,
but the cn700 docs were dumped in my lap and it was time to get back to
that. I suppose the easiest way to check if this is working correctly or
not would be to set row_offset to some arbitrary number at the end of
spd_set_dram_size, then dump it to the console after exiting, ie in
> For me it just shows as 0?
> Thanks - Joe
Not exactly sure what you mean. Are you dumping it inside
spd_set_dram_size or after?
More information about the coreboot