public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 04/14] sunxi: dram: Code cleanup and comments for the CKE delay handling
Date: Fri, 25 Jul 2014 04:41:46 +0300	[thread overview]
Message-ID: <20140725044146.6e103645@i7> (raw)
In-Reply-To: <1405968710.27009.67.camel@dagon.hellion.org.uk>

On Mon, 21 Jul 2014 19:51:50 +0100
Ian Campbell <ijc@hellion.org.uk> wrote:

> On Fri, 2014-07-18 at 19:22 +0300, Siarhei Siamashka wrote:
> > Before driving the CKE pin (Clock Enable) high, the DDR3 spec requires
> > to wait for additional 500 us after the RESET pin is de-asserted.
> > 
> > The DRAM controller takes care of this delay by itself, using a
> > configurable counter in the SDR_IDCR register. This works in the same
> > way on sun4i/sun5i/sun7i hardware (even the default register value
> > 0x00c80064 is identical). Except that the counter is ticking a bit
> > slower on sun7i (3 DRAM clock cycles instead of 2), resulting in
> > longer actual delays for the same settings.
> > 
> > This patch keeps the old code and only removes the CONFIG_SUN7I ifdef.
> > But maybe we should drop all of this and just add 'udelay(500)' after
> > the DDR3 reset without bothering to play with these undocumented
> > registers.
> 
> I'm happy to go with whichever you think is better.

If the total DRAM initialization time in u-boot is not really critical
(all the delays are only fractions of millisecond), then I would
probably go with the "cargo cult" approach and actually apply the
delays in both places ('udelay(500)' after the DDR3 reset and keep
the maximum delay in the SDR_IDCR register too).

I just feel uneasy about using only the SDR_IDCR approach, because it
implies the 524MHz DRAM clock speed limit for sun4i/sun5i hardware if
we don't want to violate the DDR3 requirements. And we would prefer to
have at least the 528MHz clock speed option (the Allwinner A13 manual
says that 533MHz is the DRAM clock limit for it).

The changes in the SDR_IDCR delay counter on sun7i hardware (which
permit longer delays) are very interesting. It might be a hint that
the DRAM controller in sun7i had been originally intended to support
higher clock speeds than its predecessors. However the Allwinner A20
manual only advertises the 400MHz DRAM clock. It might be that the
Allwinner engineers could not figure out how to configure the DRAM
parameters to reach really high clock speeds and decided to be modest
about this. However that's just a speculation on my side.

Anyway, if anybody has a logic analyzer (the hardware companies like
Olimex and CubieTech?), then checking and confirming the timings
between the signals on the CKE and RESET pins during the DRAM
initialization would be very interesting to confirm that everything
is alright.

> > Another interesting observation is that the u-boot-sunxi code (derived
> > from the Allwinner boot0) did not configure the SDR_IDCR register
> > for sun4i/sun5i, but performed the DDR3 reset very early. Possibly
> > resulting in a sufficient time gap between the DDR3 reset and the DDR3
> > initialization steps.
> > 
> > Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> 
> Acked-by: Ian Campbell <ijc@hellion.org.uk>

Thanks.

-- 
Best regards,
Siarhei Siamashka

  reply	other threads:[~2014-07-25  1:41 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-18 16:22 [U-Boot] [PATCH 00/14] sunxi: Allwinner A10/A13/A20 DRAM controller fixes Siarhei Siamashka
2014-07-18 16:22 ` [U-Boot] [PATCH 01/14] sunxi: dram: Remove useless 'dramc_scan_dll_para()' function Siarhei Siamashka
2014-07-21 18:42   ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 02/14] sunxi: dram: Remove broken super-standby remnants Siarhei Siamashka
2014-07-21 18:45   ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 03/14] sunxi: dram: Respect the DDR3 reset timing requirements Siarhei Siamashka
2014-07-21 18:46   ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 04/14] sunxi: dram: Code cleanup and comments for the CKE delay handling Siarhei Siamashka
2014-07-21 18:51   ` Ian Campbell
2014-07-25  1:41     ` Siarhei Siamashka [this message]
2014-07-25  7:27       ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 05/14] sunxi: dram: Code cleanup for the impedance calibration Siarhei Siamashka
2014-07-21 19:20   ` Ian Campbell
2014-07-25  3:44     ` [U-Boot] [linux-sunxi] " Siarhei Siamashka
2014-07-25  7:30       ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 06/14] sunxi: dram: Configurable MBUS clock speed (use PLL5 or PLL6) Siarhei Siamashka
2014-07-21 19:31   ` Ian Campbell
2014-07-25  4:00     ` Siarhei Siamashka
2014-07-25  7:31       ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 07/14] sunxi: dram: Use divisor P=1 for PLL5 Siarhei Siamashka
2014-07-21 19:35   ` Ian Campbell
2014-07-18 16:22 ` [U-Boot] [PATCH 08/14] sunxi: dram: Improve DQS gate data training error handling Siarhei Siamashka
2014-07-21 19:36   ` Ian Campbell
2014-07-18 16:23 ` [U-Boot] [PATCH 09/14] sunxi: dram: Add a helper function 'mctl_get_number_of_lanes' Siarhei Siamashka
2014-07-21 19:41   ` Ian Campbell
2014-07-25  4:26     ` Siarhei Siamashka
2014-07-25  7:33       ` Ian Campbell
2014-07-18 16:23 ` [U-Boot] [PATCH 10/14] sunxi: dram: Configurable DQS gating window mode and delay Siarhei Siamashka
2014-07-18 16:23 ` [U-Boot] [PATCH 11/14] sunxi: dram: Support sun4i (Allwinner A10) and sun5i (Allwinner A13) Siarhei Siamashka
2014-07-21 19:49   ` Ian Campbell
2014-07-18 16:23 ` [U-Boot] [PATCH 12/14] sunxi: dram: Drop DDR2 support and assume only single rank DDR3 memory Siarhei Siamashka
2014-07-21 19:51   ` Ian Campbell
2014-07-25  4:36     ` Siarhei Siamashka
2014-07-18 16:23 ` [U-Boot] [PATCH 13/14] sunxi: dram: Derive write recovery delay from DRAM clock speed Siarhei Siamashka
2014-07-21 19:52   ` Ian Campbell
2014-07-18 16:23 ` [U-Boot] [PATCH 14/14] sunxi: dram: Autodetect DDR3 bus width and density Siarhei Siamashka
2014-07-21 19:54   ` Ian Campbell
2014-07-19 10:59 ` [U-Boot] [PATCH 00/14] sunxi: Allwinner A10/A13/A20 DRAM controller fixes Hans de Goede
2014-07-21 19:58   ` Ian Campbell

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=20140725044146.6e103645@i7 \
    --to=siarhei.siamashka@gmail.com \
    --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