public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Andre Schwarz <andre.schwarz@matrix-vision.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC] mpc83xx: add config options to spd_sdram
Date: Wed, 06 Apr 2011 10:42:18 +0200	[thread overview]
Message-ID: <4D9C276A.20605@matrix-vision.de> (raw)
In-Reply-To: <1302040993.26277.9.camel@oslab-l1>

York,
>>> I have made some mods to spd_sdram.c for various reason:
>>>
>>> 1.
>>> use SPD setup also for soldered RAM.
>>> This allows DDR mounting options without U-Boot change because SPD data
>>> is written during in-circuit/boundary-scan testing.
>> not sure I understand this - board with soldered RAM can't physically
>> get the SPD data from RAM, yet SPD data were somehow acquired and
>> written into some ROM, so spd_sdram() is still needed to parse&
>> program the controller without requiring a new u-boot binary?
>>
>> this isn't included in the below diff, right?
> Actually I have code for this already, pending for more broader testing.
> I use raw timing data from datasheet of DDR chips. We have an internal
> discussion to recommend using EEPROM to mimic SPD structure.
sorry - I don't understand this.
Why do you want to create something new if there's a standard
like SPD layout ? It is working perfectly fine and the data can be
obtained from the manufacturer without further modifications.

>>> 2.
>>> read SPD data also from extended adressing EEPROMS used for e.g. HRCW
>>> storage.
>>> Due to HRCW being being located at offset 0 we need an SPD data offset.
>> and this is the SPD_EEPROM_OFFSET stuff below?  hmm..
>>
>> so both 1&  2 are coagulated in my mind - ideally, this would be
>> implemented with the new ddr code in
>> arch/powerpc/cpu/mpc8xxx/ddr/main.c - see fsl_ddr_compute(), which has
>> a GET_SPD step that would need to be either skipped (i.e, start_step =
>> COMPUTE_DIMM_PARMS), or changed to be able to be overridden, or,
>> ideally, all DIMM computations would be precomputed and stored in ROM
>> and a direct start_step to e.g., STEP_ASSIGN_ADDRESSES were made.
> I don't 100% agree with the idea to put SPD-like data in HRCW.
The SPD data has nothing to do with HRCW - it's just stored in the same 
PROM.
>   How can you be sure the data matches DDR?
Because the SPD data gets programmed during production.
We can use any SPD table *exactly* matching the soldered parts.
> It would be equivalent to using fixed raw timing data, wouldn't it?
no - it isn't.
I want the *same* U-Boot binary running on *different* memory 
configurations, i.e.
*no* fixed timing at all.

>>> 3.
>>> for optimized signal integrity and power consumption we need more
>>> influence on
>>> the on-die termination. Although the assumed default values are working they
>>> are far from ideal.
>> board specific things like this are perfectly acceptable, of course.
>>
>> however, it should not be being done by glittering old-83xx/spd_sdram
>> with an extra #ifdef for every new parameter that is needed, especially
>> when this is all fixed in the new ddr code.  So, in preparation for
>> 83xx to eventually migrate to the new ddr code, I'd like this to be
>> done in such a way so as to start to conform to the new code by at least
>> defining ODT, etc. parameters in a board-specific
>> ddr.c:fsl_ddr_board_options().  See board/freescale/{p1022ds,*}/ddr.c
>> for example.
> The ODT table is implemented in options.c and it can be override by
> board functions. Look for the last function in options.c and  ddr.c
> under the board folder.

To me it is a fundamental design error to rely on environment data to set
up the hardware correctly. Especially something that critical as memory
configuration.

Do you expect U-Boot to work with a corrupted environment, i.e. hwconfig
value unavailable ?

Of course this might never happen on a reference design board - but 
that's not real life.

>>> 4.
>>> CPO values depend on internal bond wire length which has significantly
>>> high variance on MPC837x, i.e. this value also should be board specific.
>> again, to be defined as popts->cpo_override in the board-specific
>> ddr.c:fsl_ddr_board_options().
> I recommend to use auto calibration. If for some reason, you want to
> override, it belongs to board specific file, same as the above.
>
no - auto calibration is far from ideal regarding emc and power consumption.


Regards,
Andr?

MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner

  reply	other threads:[~2011-04-06  8:42 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05  9:49 [U-Boot] [RFC] mpc83xx: add config options to spd_sdram Andre Schwarz
2011-04-05 21:52 ` Kim Phillips
2011-04-05 22:03   ` York Sun
2011-04-06  8:42     ` Andre Schwarz [this message]
2011-04-06 16:30       ` York Sun
2011-04-06  8:18   ` Andre Schwarz
2011-04-06 16:37     ` York Sun
2011-04-06 18:42       ` Schwarz, Andre
2011-04-07 20:42         ` Schwarz, Andre
2011-04-07 20:56           ` York Sun
2011-04-08  7:41             ` Andre Schwarz
2011-04-08 15:31               ` York Sun
2011-04-08 16:29                 ` Andre Schwarz
2011-04-08 16:36                   ` York Sun
2011-04-08 16:43                     ` Andre Schwarz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D9C276A.20605@matrix-vision.de \
    --to=andre.schwarz@matrix-vision.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox