[coreboot] v2: Detection of sdram densities.
joe at settoplinux.org
Fri Sep 5 17:54:49 CEST 2008
On Fri, 5 Sep 2008 10:39:02 -0400, "Corey Osgood" <corey.osgood at gmail.com>
> On Fri, Sep 5, 2008 at 8:09 AM, Joseph Smith <joe at settoplinux.org> wrote:
>> 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?
> Banks, I assume, all this terminology gets me confuseded. I'm pretty
> sure Mats was talking about each side of the slot/ram pcb.
>> 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.
> You mean "only support symmetrical sdrams". IIRC, i810 supports
> asymmetrical dimms, but I can't remember...
>> As far as sdram slots any combination should work as
>> long as it follows the the northbridge criteria. You can look at the
>> raminit.c, it has a pretty clever way to detect dimms, and it works
>> time no matter what the combination. By the way Uwe was the original
>> of the i440bx code. Hope that helps.
Right, symmetrical sdrams, sorry for the slip of toung. And yes to Mat's
question, in the case of a asymmetrical dual-sided DIMM the first side will
always be larger. But that should not matter, if your code is calculating
on a per side/bank basis, I mean it should be able to detect the size of
each side/bank, and if it is dual-sided, and add the two sides/banks
togethor to give you the total size. As far as initailization goes, each
side/bank needs to initalized seperatly... that's where it can get a little
tricky. That's also why it is important to calculate memory on a per
Hope that helps.
More information about the coreboot