Hi Joseph, if you get the size of the modules from the SPD you can ignore all offset addressing stuff as long as you don't need to write anything to a specific module row. SPD is a nice thing as it tells you everything you need to set up the northbridge memory controller :) if you would want to write to a special module row you could use code like this to calculate the starting address:
1. assume the DRB stores the size of the memory module row in 4MB granularity. 2. calculate starting address: if (previous_DRB == 0) {starting_address = 0;} else {starting_address = (1<<22)<<(previous_DRB - 1);} 4MB ^^^^^ ^^^^^^^^^^^^^^ no. of additional 4MB portions
the last address of the previous memory row would btw. be: last_address_of_prev_row = starting_address - 1;
i didn't take a look at the code for the i82810 yet, so i'm unaware why and how the row_offset is used. Holger