[PATCH 1/5] sunxi: h616: Panic if DRAM size is not detected
Jernej Skrabec
jernej.skrabec at gmail.com
Fri Apr 11 18:14:35 CEST 2025
If colum or row size is not detected, panic instead of continuing. It
won't work anyway and it's better to inform user directly what's wrong
instead of failing later down the road for random reason.
Signed-off-by: Jernej Skrabec <jernej.skrabec at gmail.com>
---
arch/arm/mach-sunxi/dram_sun50i_h616.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-sunxi/dram_sun50i_h616.c b/arch/arm/mach-sunxi/dram_sun50i_h616.c
index cd9d321a0185..d1768a7e7d3a 100644
--- a/arch/arm/mach-sunxi/dram_sun50i_h616.c
+++ b/arch/arm/mach-sunxi/dram_sun50i_h616.c
@@ -1396,7 +1396,7 @@ static bool mctl_check_pattern(ulong offset)
static void mctl_auto_detect_dram_size(const struct dram_para *para,
struct dram_config *config)
{
- unsigned int shift, cols, rows;
+ unsigned int shift, cols, rows, found;
u32 buffer[16];
/* max. config for columns, but not rows */
@@ -1416,10 +1416,15 @@ static void mctl_auto_detect_dram_size(const struct dram_para *para,
shift = config->bus_full_width + 1;
/* detect column address bits */
+ found = 0;
for (cols = 8; cols < 11; cols++) {
- if (mctl_check_pattern(1ULL << (cols + shift)))
+ if (mctl_check_pattern(1ULL << (cols + shift))) {
+ found = 1;
break;
+ }
}
+ if (!found)
+ panic("DRAM init failed: Can't detect number of columns!");
debug("detected %u columns\n", cols);
/* restore data */
@@ -1437,10 +1442,15 @@ static void mctl_auto_detect_dram_size(const struct dram_para *para,
/* detect row address bits */
shift = config->bus_full_width + 4 + config->cols;
+ found = 0;
for (rows = 13; rows < 17; rows++) {
- if (mctl_check_pattern(1ULL << (rows + shift)))
+ if (mctl_check_pattern(1ULL << (rows + shift))) {
+ found = 1;
break;
+ }
}
+ if (!found)
+ panic("DRAM init failed: Can't detect number of rows!");
debug("detected %u rows\n", rows);
/* restore data again */
--
2.49.0
More information about the U-Boot
mailing list