arm: mx6: ddr: fix cs0_end calculation
authorNikita Kiryanov <nikita@compulab.co.il>
Wed, 20 Aug 2014 12:08:58 +0000 (15:08 +0300)
committerStefano Babic <sbabic@denx.de>
Tue, 9 Sep 2014 13:35:00 +0000 (15:35 +0200)
Current way of calculation CS0_END field for MMDCx_MDASP register
is problematic because in most cases the user is forced to define
cs_density in an unnatural way: as value - 2, instead of value.

This breaks the abstraction provided by struct mx6_ddr_sysinfo
because the user is forced to be aware of the way the calculation
is performed.

Refactor the calculation.

Cc: Stefano Babic <sbabic@denx.de>
Cc: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
arch/arm/cpu/armv7/mx6/ddr.c

index d22f232238d8078cf6a24dc16f6939b0f526bb73..7b5c1e4dd7f1feced87b49a8c1ae9a749fd4bea2 100644 (file)
@@ -309,9 +309,7 @@ void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
        twtr = ROUND(MAX(4 * clkper, 7500) / clkper, 1) - 1;
        trcd = trp;
        trtp = twtr;
-       cs0_end = (4 * sysinfo->cs_density <= 120) ?
-                  4 * sysinfo->cs_density + 7 :
-                  127;
+       cs0_end = 4 * sysinfo->cs_density - 1;
 
        debug("density:%d Gb (%d Gb per chip)\n",
              sysinfo->cs_density, ddr3_cfg->density);