public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Gunjan Gupta <viraniac@gmail.com>
To: u-boot@lists.denx.de
Cc: Jernej Skrabec <jernej.skrabec@siol.net>,
	Ondrej Jirman <megi@xff.cz>, Gunjan Gupta <viraniac@gmail.com>,
	Andre Przywara <andre.przywara@arm.com>,
	Jagan Teki <jagan@amarulasolutions.com>
Subject: [PATCH 1/1] sunxi: dram: Fix incorrect ram size detection for some H6 boards
Date: Sun,  1 Oct 2023 21:43:32 +0530	[thread overview]
Message-ID: <20231001161336.31140-2-viraniac@gmail.com> (raw)
In-Reply-To: <20231001161336.31140-1-viraniac@gmail.com>

On some H6 boards like Orange Pi 3 LTS, some times U-Boot fails to detect
ram size correctly. Instead of 2GB thats available, it detects 4GB of ram
and then SPL just hangs there making board not to boot further.

On debugging, I found that the rows value were being determined correctly,
but columns were sometimes off by one value. I found that adding some
delay after the mctl_core_init call along with making use of dsb in the
start of the mctl_mem_matches solves the issue.

Signed-off-by: Gunjan Gupta <viraniac@gmail.com>
---

 arch/arm/mach-sunxi/dram_helpers.c   | 1 +
 arch/arm/mach-sunxi/dram_sun50i_h6.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/arch/arm/mach-sunxi/dram_helpers.c b/arch/arm/mach-sunxi/dram_helpers.c
index cdf2750f1c..5758c58e07 100644
--- a/arch/arm/mach-sunxi/dram_helpers.c
+++ b/arch/arm/mach-sunxi/dram_helpers.c
@@ -32,6 +32,7 @@ void mctl_await_completion(u32 *reg, u32 mask, u32 val)
 #ifndef CONFIG_MACH_SUNIV
 bool mctl_mem_matches(u32 offset)
 {
+	dsb();
 	/* Try to write different values to RAM at two addresses */
 	writel(0, CFG_SYS_SDRAM_BASE);
 	writel(0xaa55aa55, (ulong)CFG_SYS_SDRAM_BASE + offset);
diff --git a/arch/arm/mach-sunxi/dram_sun50i_h6.c b/arch/arm/mach-sunxi/dram_sun50i_h6.c
index bff2e42513..a031a845f5 100644
--- a/arch/arm/mach-sunxi/dram_sun50i_h6.c
+++ b/arch/arm/mach-sunxi/dram_sun50i_h6.c
@@ -623,6 +623,8 @@ static void mctl_auto_detect_dram_size(struct dram_para *para)
 	para->cols = 11;
 	mctl_core_init(para);
 
+	udelay(50);
+
 	for (para->cols = 8; para->cols < 11; para->cols++) {
 		/* 8 bits per byte and 16/32 bit width */
 		if (mctl_mem_matches(1 << (para->cols + 1 +
-- 
2.42.0


  reply	other threads:[~2023-10-01 16:17 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-01 16:13 [PATCH 0/1] Fix for U-Boot SPL hang on sunxi H6 due to incorrect ram size detection Gunjan Gupta
2023-10-01 16:13 ` Gunjan Gupta [this message]
2023-10-02 11:26   ` [PATCH 1/1] sunxi: dram: Fix incorrect ram size detection for some H6 boards Andre Przywara
2023-10-02 12:42     ` Gunjan Gupta
2023-10-02 18:59       ` Jernej Škrabec
2023-10-20 23:38         ` Andre Przywara
2023-10-21  5:48           ` Jernej Škrabec
2023-10-21  9:40             ` Gunjan Gupta
2023-10-02 18:50     ` Jernej Škrabec
2023-10-03  9:48       ` Andre Przywara

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=20231001161336.31140-2-viraniac@gmail.com \
    --to=viraniac@gmail.com \
    --cc=andre.przywara@arm.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jernej.skrabec@siol.net \
    --cc=megi@xff.cz \
    --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