Joseph Smith wrote:
Corey, I am a little confused about the significance of the row_offset in the i82810 raminit.c.
- 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.
- If this the start of the next row should it be row_offset +1
Kilobyte??
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 right ;)
- 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 sdram_enable.
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?
-Corey