summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/esdctl.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2016-03-30 11:58:26 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2016-04-01 14:05:51 +0200
commit1ff0ffbfd9c46aa40b2e0f9bb00b3f367e9fbfe8 (patch)
treefcda08391818b1ce5af3239b8df4e946464467f9 /arch/arm/mach-imx/esdctl.c
parent3d32c620f629b85bcbac27f0e0cade41e39d1383 (diff)
downloadbarebox-1ff0ffbfd9c46aa40b2e0f9bb00b3f367e9fbfe8.tar.gz
barebox-1ff0ffbfd9c46aa40b2e0f9bb00b3f367e9fbfe8.tar.xz
ARM: i.MX6: esdctl: Fix memsize calculation for 4GiB/cs
On i.MX6 a single chipselect can have 4GiB, which overflows a 32bit type, so imx6_mmdc_sdram_size() must return a u64 to support this case. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-imx/esdctl.c')
-rw-r--r--arch/arm/mach-imx/esdctl.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mach-imx/esdctl.c b/arch/arm/mach-imx/esdctl.c
index e633b62993..66ba51cde1 100644
--- a/arch/arm/mach-imx/esdctl.c
+++ b/arch/arm/mach-imx/esdctl.c
@@ -171,11 +171,11 @@ static inline unsigned long imx_v4_sdram_size(void __iomem *esdctlbase, int cs)
* MMDC - found on i.MX6
*/
-static inline unsigned long imx6_mmdc_sdram_size(void __iomem *mmdcbase, int cs)
+static inline u64 imx6_mmdc_sdram_size(void __iomem *mmdcbase, int cs)
{
u32 ctlval = readl(mmdcbase + MDCTL);
u32 mdmisc = readl(mmdcbase + MDMISC);
- unsigned long size;
+ u64 size;
int rows, cols, width = 2, banks = 8;
if (cs == 0 && !(ctlval & MMDCx_MDCTL_SDE0))
@@ -201,7 +201,7 @@ static inline unsigned long imx6_mmdc_sdram_size(void __iomem *mmdcbase, int cs)
if (mdmisc & MMDCx_MDMISC_DDR_4_BANKS)
banks = 4;
- size = (1 << cols) * (1 << rows) * banks * width;
+ size = (u64)(1 << cols) * (1 << rows) * banks * width;
return size;
}