[coreboot] v2: Detection of sdram densities.
joe at settoplinux.org
Fri Sep 5 14:09:03 CEST 2008
On Thu, 4 Sep 2008 23:27:50 -0400, "Corey Osgood" <corey.osgood at gmail.com>
> On Wed, Sep 3, 2008 at 1:26 PM, Mats Erik Andersson
> <mats.andersson at gisladisker.se> wrote:
>> Hello again,
>> I have been experimenting with an algorithm to detect
>> and register with the northbridge i440bx the correct
>> amount of sdram present. A C-coded version is appended
>> to this message. Feel free to comment on the method.
>> In the actually working code, I had to split the
>> algorithm into a lower and an upper part, in order
>> not to run out of internal registers under romcc,
>> but the idea remains the same.
>> Since there are also some later stages where I have
>> not understood how the previous author hard coded
>> a single 64MB bank, I presently achieve a running
>> system only when I dynamically detect a distribution
>> identical to what was earlier hard coded.
>> My detection works with any combination of 0MB and
>> 64MB in two rows for DIMM0 and DIMM1.
>> Question: In case an sdram device has rows of mixed
>> sizes, can one depend on the larger density being
>> in row zero, and the smaller content in row one?
> Yes. The spd spec assumes the larger row will be row 0, any stick that
> didn't wouldn't follow the standard. At least, that was my
> understanding of it.
This can get a little confusing, when you are talking about rows, do you
mean banks? Or actuall sdram slots?
As far as it goes with rows/banks, most intel boards only support
asymmetrical sdrams so if the dimm has two sides the second side has to
equal the first side. As far as sdram slots any combination should work as
long as it follows the the northbridge criteria. You can look at the i830
raminit.c, it has a pretty clever way to detect dimms, and it works every
time no matter what the combination. By the way Uwe was the original author
of the i440bx code. Hope that helps.
More information about the coreboot