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 <[email protected]>
---
 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

Reply via email to