[PATCH 12/15] ddr: altera: n5x: rename is_ddr_init_skipped() and quieten reset log

Chen Huei Lok chen.huei.lok at altera.com
Wed Jul 8 03:12:25 CEST 2026


Rename is_ddr_init_skipped() to is_ddr_init() and invert its return value
so the helper reads naturally at the call site (true means DDR must be
initialised). The decision is otherwise unchanged: init is required on
POR, skipped on a warm reset, and skipped on a cold reset only when the
retention bit is set.

Switch the reset-type reporting from printf() to debug() so the reset
cause is not printed on every boot, and add the NCONFIG, JTAG_CONFIG and
RSU_RECONFIG cases. Define reset_type_debug_print() above its first caller
so the new call site does not trigger an implicit-declaration warning.

Signed-off-by: Chen Huei Lok <chen.huei.lok at altera.com>
---
 drivers/ddr/altera/sdram_n5x.c | 56 +++++++++++++---------------------
 1 file changed, 22 insertions(+), 34 deletions(-)

diff --git a/drivers/ddr/altera/sdram_n5x.c b/drivers/ddr/altera/sdram_n5x.c
index 6fed9b79257..d7f00b6d2f5 100644
--- a/drivers/ddr/altera/sdram_n5x.c
+++ b/drivers/ddr/altera/sdram_n5x.c
@@ -469,17 +469,17 @@ static enum reset_type get_reset_type(u32 reg)
 		ALT_SYSMGR_SCRATCH_REG_0_DDR_RESET_TYPE_SHIFT;
 }
 
-void reset_type_print(enum reset_type reset_t)
+void reset_type_debug_print(u32 boot_scratch_cold0_reg)
 {
-	switch (reset_t) {
+	switch (get_reset_type(boot_scratch_cold0_reg)) {
 	case POR_RESET:
-		printf("%s: POR is triggered\n", __func__);
+		debug("%s: POR is triggered\n", __func__);
 		break;
 	case WARM_RESET:
-		printf("%s: Warm reset is triggered\n", __func__);
+		debug("%s: Warm reset is triggered\n", __func__);
 		break;
 	case COLD_RESET:
-		printf("%s: Cold reset is triggered\n", __func__);
+		debug("%s: Cold reset is triggered\n", __func__);
 		break;
 	case NCONFIG:
 		printf("%s: NCONFIG is triggered\n", __func__);
@@ -491,34 +491,39 @@ void reset_type_print(enum reset_type reset_t)
 		printf("%s: RSU_RECONFIG is triggered\n", __func__);
 		break;
 	default:
-		printf("%s: Invalid reset type\n", __func__);
+		debug("%s: Invalid reset type\n", __func__);
 	}
 }
 
-bool is_ddr_init_skipped(u32 reg, bool is_ddr_hang_be4_rst)
+bool is_ddr_init(bool is_ddr_hang_be4_rst)
 {
-	enum reset_type reset_t = get_reset_type(reg);
+	u32 reg = readl(socfpga_get_sysmgr_addr() +
+			SYSMGR_SOC64_BOOT_SCRATCH_COLD0);
 
-	reset_type_print(reset_t);
+	reset_type_debug_print(reg);
 
 	if (!is_ddr_dbe_triggered() && !is_ddr_hang_be4_rst) {
-		if (reset_t == WARM_RESET) {
-			debug("%s: DDR init is skipped\n", __func__);
+		if (get_reset_type(reg) == POR_RESET) {
+			debug("%s: DDR init is required\n", __func__);
 			return true;
 		}
 
-		if (reset_t == COLD_RESET) {
+		if (get_reset_type(reg) == WARM_RESET) {
+			debug("%s: DDR init is skipped\n", __func__);
+			return false;
+		}
+
+		if (get_reset_type(reg) == COLD_RESET) {
 			if (is_ddr_retention_enabled(reg)) {
-				debug("%s: DDR retention bit is set\n",
-				      __func__);
+				debug("%s: DDR retention bit is set\n", __func__);
 				debug("%s: DDR init is skipped\n", __func__);
-				return true;
+				return false;
 			}
 		}
 	}
 
 	debug("%s: DDR init is required\n", __func__);
-	return false;
+	return true;
 }
 
 bool is_ddr_calibration_skipped(u32 reg, bool is_ddr_hang_be4_rst)
@@ -2806,23 +2811,6 @@ static int ddr_post_config(struct ddr_handoff *handoff, bool *need_calibrate)
 	return ret;
 }
 
-void reset_type_debug_print(u32 boot_scratch_cold0_reg)
-{
-	switch (get_reset_type(boot_scratch_cold0_reg)) {
-	case POR_RESET:
-		debug("%s: POR is triggered\n", __func__);
-		break;
-	case WARM_RESET:
-		debug("%s: Warm reset is triggered\n", __func__);
-		break;
-	case COLD_RESET:
-		debug("%s: Cold reset is triggered\n", __func__);
-		break;
-	default:
-		debug("%s: Invalid reset type\n", __func__);
-	}
-}
-
 int sdram_mmr_init_full(struct udevice *dev)
 {
 	u32 user_backup[2], user_backup_2nd[2];
@@ -2855,7 +2843,7 @@ int sdram_mmr_init_full(struct udevice *dev)
 	 */
 	writel(SOC64_CRAM_PHY_BACKUP_SKIP_MAGIC, SOC64_OCRAM_PHY_BACKUP_BASE);
 
-	if (!is_ddr_init_skipped(reg, is_ddr_hang_be4_rst)) {
+	if (is_ddr_init(is_ddr_hang_be4_rst)) {
 		printf("SDRAM init in progress ...\n");
 		ddr_init_inprogress(true);
 
-- 
2.43.7



More information about the U-Boot mailing list