All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] drivers: ddr: util.c: Fix divide by zero issue
@ 2021-08-19  6:09 Priyanka Singh
  2021-08-19  6:09 ` [PATCH 2/4] drivers: ddr: fsl_ddr_gen4.c: " Priyanka Singh
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Priyanka Singh @ 2021-08-19  6:09 UTC (permalink / raw)
  To: u-boot; +Cc: priyanka.jain, poonam.aggrwal, Priyanka Singh

Fix possible divide by zero issue in get_memory_clk_period_ps
by adding a check

Signed-off-by: Priyanka Singh <priyanka.singh@nxp.com>
---
 drivers/ddr/fsl/util.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/ddr/fsl/util.c b/drivers/ddr/fsl/util.c
index ac4f8d2732..43cb01804b 100644
--- a/drivers/ddr/fsl/util.c
+++ b/drivers/ddr/fsl/util.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright 2008-2014 Freescale Semiconductor, Inc.
+ * Copyright 2021 NXP
  */
 
 #include <common.h>
@@ -75,10 +76,13 @@ unsigned int get_memory_clk_period_ps(const unsigned int ctrl_num)
 
 	/* Round to nearest 10ps, being careful about 64-bit multiply/divide */
 	unsigned long long rem, mclk_ps = ULL_2E12;
-
-	/* Now perform the big divide, the result fits in 32-bits */
-	rem = do_div(mclk_ps, data_rate);
-	result = (rem >= (data_rate >> 1)) ? mclk_ps + 1 : mclk_ps;
+	if (data_rate) {
+		/* Now perform the big divide, the result fits in 32-bits */
+		rem = do_div(mclk_ps, data_rate);
+		result = (rem >= (data_rate >> 1)) ? mclk_ps + 1 : mclk_ps;
+	} else {
+		result = 0;
+	}
 
 	return result;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/4] drivers: ddr: fsl_ddr_gen4.c: Fix divide by zero issue
  2021-08-19  6:09 [PATCH 1/4] drivers: ddr: util.c: Fix divide by zero issue Priyanka Singh
@ 2021-08-19  6:09 ` Priyanka Singh
  2021-08-19  6:09 ` [PATCH 3/4] drivers: ddr: main.c: Fix Bad Shift operator issue Priyanka Singh
  2021-08-19  6:09 ` [PATCH 4/4] board: freescale: t104xrdb: Set popts->cpo_sample to 0x54 for DDR3 Priyanka Singh
  2 siblings, 0 replies; 4+ messages in thread
From: Priyanka Singh @ 2021-08-19  6:09 UTC (permalink / raw)
  To: u-boot; +Cc: priyanka.jain, poonam.aggrwal, Priyanka Singh

Fix possible divide by zero issue in fsl_ddr_set_memctl_regs
by adding an if check

Signed-off-by: Priyanka Singh <priyanka.singh@nxp.com>
---
 drivers/ddr/fsl/fsl_ddr_gen4.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/ddr/fsl/fsl_ddr_gen4.c b/drivers/ddr/fsl/fsl_ddr_gen4.c
index e43c680154..89cb4d352e 100644
--- a/drivers/ddr/fsl/fsl_ddr_gen4.c
+++ b/drivers/ddr/fsl/fsl_ddr_gen4.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright 2014-2020 Freescale Semiconductor, Inc.
+ * Copyright 2021 NXP
  */
 
 #include <common.h>
@@ -57,7 +58,8 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
 	struct ccsr_ddr __iomem *ddr;
 	u32 temp32;
 	u32 total_gb_size_per_controller;
-	int timeout;
+	int timeout = 0;
+	int ddr_freq_for_timeout = 0;
 	int mod_bnds = 0;
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_A008511
@@ -511,8 +513,14 @@ step2:
 	 */
 	bus_width = 3 - ((ddr_in32(&ddr->sdram_cfg) & SDRAM_CFG_DBW_MASK)
 			>> SDRAM_CFG_DBW_SHIFT);
-	timeout = ((total_gb_size_per_controller << (6 - bus_width)) * 100 /
-		(get_ddr_freq(ctrl_num) >> 20)) << 2;
+	ddr_freq_for_timeout = (get_ddr_freq(ctrl_num) >> 20) << 2;
+	if (ddr_freq_for_timeout) {
+		timeout = ((total_gb_size_per_controller <<
+				       (6 - bus_width)) * 100 /
+				ddr_freq_for_timeout);
+	} else {
+		debug("Error in getting timeout.\n");
+	}
 	total_gb_size_per_controller >>= 4;	/* shift down to gb size */
 	debug("total %d GB\n", total_gb_size_per_controller);
 	debug("Need to wait up to %d * 10ms\n", timeout);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/4] drivers: ddr: main.c: Fix Bad Shift operator issue
  2021-08-19  6:09 [PATCH 1/4] drivers: ddr: util.c: Fix divide by zero issue Priyanka Singh
  2021-08-19  6:09 ` [PATCH 2/4] drivers: ddr: fsl_ddr_gen4.c: " Priyanka Singh
@ 2021-08-19  6:09 ` Priyanka Singh
  2021-08-19  6:09 ` [PATCH 4/4] board: freescale: t104xrdb: Set popts->cpo_sample to 0x54 for DDR3 Priyanka Singh
  2 siblings, 0 replies; 4+ messages in thread
From: Priyanka Singh @ 2021-08-19  6:09 UTC (permalink / raw)
  To: u-boot; +Cc: priyanka.jain, poonam.aggrwal, Priyanka Singh

Fix Bad Shift operator issue in step_to_string function
by adding an if check

Signed-off-by: Priyanka Singh <priyanka.singh@nxp.com>
---
 drivers/ddr/fsl/main.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index 8e147160b9..f389e5ef95 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright 2008-2014 Freescale Semiconductor, Inc.
+ * Copyright 2021 NXP
  */
 
 /*
@@ -297,9 +298,13 @@ const char * step_to_string(unsigned int step) {
 
 	unsigned int s = __ilog2(step);
 
-	if ((1 << s) != step)
-		return step_string_tbl[7];
-
+	if (s <= 31) {
+		if ((1 << s) != step)
+			return step_string_tbl[7];
+	} else {
+		if ((1 << (s - 32)) != step)
+			return step_string_tbl[7];
+	}
 	if (s >= ARRAY_SIZE(step_string_tbl)) {
 		printf("Error for the step in %s\n", __func__);
 		s = 0;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 4/4] board: freescale: t104xrdb: Set popts->cpo_sample to 0x54 for DDR3
  2021-08-19  6:09 [PATCH 1/4] drivers: ddr: util.c: Fix divide by zero issue Priyanka Singh
  2021-08-19  6:09 ` [PATCH 2/4] drivers: ddr: fsl_ddr_gen4.c: " Priyanka Singh
  2021-08-19  6:09 ` [PATCH 3/4] drivers: ddr: main.c: Fix Bad Shift operator issue Priyanka Singh
@ 2021-08-19  6:09 ` Priyanka Singh
  2 siblings, 0 replies; 4+ messages in thread
From: Priyanka Singh @ 2021-08-19  6:09 UTC (permalink / raw)
  To: u-boot; +Cc: priyanka.jain, poonam.aggrwal, Priyanka Singh

Set popts->cpo_sample to 0x54 in t104xrdb/ddr.c to optimize cpo

Signed-off-by: Priyanka Singh <priyanka.singh@nxp.com>
---
 board/freescale/t104xrdb/ddr.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/board/freescale/t104xrdb/ddr.c b/board/freescale/t104xrdb/ddr.c
index 8351f7ce9d..eedb8c9f6d 100644
--- a/board/freescale/t104xrdb/ddr.c
+++ b/board/freescale/t104xrdb/ddr.c
@@ -83,6 +83,7 @@ found:
 	/* optimize cpo for erratum A-009942 */
 	popts->cpo_sample = 0x59;
 #else
+	popts->cpo_sample = 0x54;
 	popts->half_strength_driver_enable = 0;
 #endif
 	/*
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-19  6:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19  6:09 [PATCH 1/4] drivers: ddr: util.c: Fix divide by zero issue Priyanka Singh
2021-08-19  6:09 ` [PATCH 2/4] drivers: ddr: fsl_ddr_gen4.c: " Priyanka Singh
2021-08-19  6:09 ` [PATCH 3/4] drivers: ddr: main.c: Fix Bad Shift operator issue Priyanka Singh
2021-08-19  6:09 ` [PATCH 4/4] board: freescale: t104xrdb: Set popts->cpo_sample to 0x54 for DDR3 Priyanka Singh

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.