[U-Boot-Users] 83xx SPD_EEPROM DDR2 Issues
Russell McGuire
rmcguire at videopresence.com
Wed Jun 4 02:46:50 CEST 2008
All,
Correct, I did some math and they almost work out for DDR1 values
However into DDR2 clocks speeds it gets increasingly bad.
Going through the SPD tables I have found, it looks like there is not a
mathematical way to convert those values, as they are in nanoseconds but
only some are actually linear. Some values like 0x3D for spd->clk_cycle
can't be converted using a formula, easy enough to put into a case
statement. 0x3D is intended to be 3.75ns and 0x30 is 3.00ns. So 0x0D would
be 0.75ns? Doesn't work in my book. However 0x25 is a nice easy clear 2.5ns.
Whomever put Hex values to represent decimal numbers probably chose a poor
idea. I am just hoping that most RAM isn't putting 'exact' values in SPD
tables, but rather an industry standard value that is going to work with the
intended SODIMM / DIMM, our code should be using lookup tables if so, not
math formulas.
I have already written a flat case statement with correct values. Easy to
see now why it was breaking, as the CAS latencies were all hosed over for
the faster memory.
-Russ
-----Original Message-----
From: Bruce_Leonard at selinc.com [mailto:Bruce_Leonard at selinc.com]
Sent: Tuesday, June 03, 2008 5:34 PM
To: rmcguire at videopresence.com
Cc: 'David Hawkins'; 'Steve Hensley'; u-boot-users at lists.sourceforge.net
Subject: RE: [U-Boot-Users] 83xx SPD_EEPROM DDR2 Issues
"Russell McGuire" <rmcguire at videopresence.com> wrote on 06/03/2008
04:15:55 PM:
>
> I haven't gone through the rest yet, but most likely if we want to keep
SPD
> working for DDR2, we'll have to add the DDR2 definitions SPD into the
code,
> as it looks like the DDR2 port is only partially complete.
>
> -Russ
>
Russ,
That's pretty much jives with my recollection. One other thing that leaps
to mind was the calculation for max_bus_clk. I hand cranked through that
with a high clock rate as input and due to rounding errors got a bogus
value. I don't remember the details right off the top of my head but it
seems to me that the net result was I started with a bus clock that should
have landed max_data_rate in one of those if-if-else-if cases, but it
didn't. So I think that whole function (and especially the max_bus_clk
calculation) needs to be gone through. Good luck. I'd help but I have my
own issues with MTD :(.
Bruce
More information about the U-Boot
mailing list