From 6d7a33301a05472bc788415c1d1575041e478931 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 10 Aug 2015 22:50:11 +0200 Subject: ddr: altera: Replace float multiplication with integer one This gem is really really rare, there was an actual float used in the Altera DDR init code, which pulled in floating point ops from the libgcc, just wow. Since we don't support floating point operations the same way Linux does not support them, replace this with an integer multiplication and division combo. This removes some 2kiB of size from the SPL as the floating point ops are no longer pulled in from libgcc. This was detected by enabling CONFIG_USE_PRIVATE_LIBGCC=y , which does not contain the floating point bits. Signed-off-by: Marek Vasut --- drivers/ddr/altera/sequencer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/ddr/altera/sequencer.c') diff --git a/drivers/ddr/altera/sequencer.c b/drivers/ddr/altera/sequencer.c index 2bd01092eed..f3621cf5de4 100644 --- a/drivers/ddr/altera/sequencer.c +++ b/drivers/ddr/altera/sequencer.c @@ -3247,7 +3247,7 @@ static void mem_skip_calibrate(void) * (1.25 * iocfg->dll_chain_length - 2) */ scc_mgr_set_dqdqs_output_phase(i, - 1.25 * iocfg->dll_chain_length - 2); + ((125 * iocfg->dll_chain_length) / 100) - 2); } writel(0xff, &sdr_scc_mgr->dqs_ena); writel(0xff, &sdr_scc_mgr->dqs_io_ena); -- cgit v1.2.3 From 35e47b7132fa515e32189077ec7b80090562c709 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 10 Aug 2015 23:01:43 +0200 Subject: ddr: altera: Repair uninited variable Fix the following problem: drivers/ddr/altera/sequencer.c: In function 'sdram_calibration_full': drivers/ddr/altera/sequencer.c:1943:25: warning: 'found_failing_read' may be used uninitialized in this function [-Wmaybe-uninitialized] if (found_passing_read && found_failing_read) ^ drivers/ddr/altera/sequencer.c:1803:26: note: 'found_failing_read' was declared here u32 found_passing_read, found_failing_read, initial_failing_dtap; ^ Signed-off-by: Marek Vasut --- drivers/ddr/altera/sequencer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/ddr/altera/sequencer.c') diff --git a/drivers/ddr/altera/sequencer.c b/drivers/ddr/altera/sequencer.c index f3621cf5de4..79c265faa21 100644 --- a/drivers/ddr/altera/sequencer.c +++ b/drivers/ddr/altera/sequencer.c @@ -1800,7 +1800,7 @@ static int rw_mgr_mem_calibrate_vfifo_find_dqs_en_phase(const u32 grp) u32 d, p, i; u32 dtaps_per_ptap; u32 work_bgn, work_end; - u32 found_passing_read, found_failing_read, initial_failing_dtap; + u32 found_passing_read, found_failing_read = 0, initial_failing_dtap; int ret; debug("%s:%d %u\n", __func__, __LINE__, grp); -- cgit v1.2.3