u-boot/arch/powerpc/cpu/mpc8xxx/ddr
Kyle Moffett e820a131f4 fsl_ddr: Don't use full 64-bit divides on 32-bit PowerPC
The current FreeScale MPC-8xxx DDR SPD interpreter is using full 64-bit
integer divide operations to convert between nanoseconds and DDR clock
cycles given arbitrary DDR clock frequencies.

Since all of the inputs to this are 32-bit (nanoseconds, clock cycles,
and DDR frequencies), we can easily restructure the computation to use
the "do_div()" function to perform 64-bit/32-bit divide operations.

On 64-bit this change is basically a no-op, because do_div is
implemented as a literal 64-bit divide operation and the instruction
scheduling works out almost the same.

On 32-bit PowerPC a fully accurate 64/64 divide (__udivdi3 in libgcc) is
over 1.1kB of code and thousands of heavily dependent cycles to compute,
all of which is linked from libgcc.  Another 1.2kB of code comes in for
the function __umoddi3.

It should be noted that nothing else in U-Boot or the Linux kernel seems
to require a full 64-bit divide on my 32-bit PowerPC.

Build-and-boot-tested on the HWW-1U-1A board using DDR2 SPD detection.

Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Acked-by: York Sun <yorksun@freescale.com>
Cc: Andy Fleming <afleming@gmail.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
2011-04-04 09:24:43 -05:00
..
common_timing_params.h powerpc/8xxx: Enable DDR3 RDIMM support 2010-07-26 13:16:10 -05:00
ctrl_regs.c powerpc/8xxx: Replace fsl_ddr_get_mem_data_rate with get_ddr_freq() 2011-04-04 09:24:40 -05:00
ddr.h powerpc/8xxx: Replace fsl_ddr_get_mem_data_rate with get_ddr_freq() 2011-04-04 09:24:40 -05:00
ddr1_dimm_params.c Move arch/ppc to arch/powerpc 2010-04-21 23:42:38 +02:00
ddr2_dimm_params.c Enabled support for Rev 1.3 SPD for DDR2 DIMMs 2010-05-12 04:54:30 -05:00
ddr3_dimm_params.c powerpc/8xxx: Enable DDR3 RDIMM support 2010-07-26 13:16:10 -05:00
lc_common_dimm_params.c powerpc/8xxx: Display DIMM model 2011-04-04 09:24:41 -05:00
main.c powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board 2011-04-04 09:24:41 -05:00
Makefile Switch from archive libraries to partial linking 2010-11-17 21:02:18 +01:00
options.c mpc85xx: Enable unique mode registers and dynamic ODT for DDR3 2011-01-19 22:58:23 -06:00
util.c fsl_ddr: Don't use full 64-bit divides on 32-bit PowerPC 2011-04-04 09:24:43 -05:00