From fce8a0994070e38b297c249eb41756faba74dcc1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Thu, 13 Sep 2012 17:00:34 +0800 Subject: [PATCH] rk2928: common: fix rk2928_get_ddr_size --- arch/arm/mach-rk2928/Makefile | 1 + arch/arm/mach-rk2928/common.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-rk2928/Makefile b/arch/arm/mach-rk2928/Makefile index 9c99e31323ed..341998a80836 100755 --- a/arch/arm/mach-rk2928/Makefile +++ b/arch/arm/mach-rk2928/Makefile @@ -1,4 +1,5 @@ obj-y += common.o +CFLAGS_common.o += -DTEXT_OFFSET=$(TEXT_OFFSET) obj-y += io.o obj-y += reset.o obj-y += timer.o diff --git a/arch/arm/mach-rk2928/common.c b/arch/arm/mach-rk2928/common.c index 8c93626a649a..5968a7557eb5 100755 --- a/arch/arm/mach-rk2928/common.c +++ b/arch/arm/mach-rk2928/common.c @@ -147,7 +147,20 @@ static __init u32 rk2928_get_ddr_size(void) #ifdef CONFIG_MACH_RK2928_FPGA return SZ_64M; #else - return SZ_512M; + u32 size; + u32 v[1], a[1]; + u32 pgtbl = PAGE_OFFSET + TEXT_OFFSET - 0x4000; + u32 flag = PMD_TYPE_SECT | PMD_SECT_XN | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ; + + a[0] = pgtbl + (((u32)RK2928_GRF_BASE >> 20) << 2); + v[0] = readl_relaxed(a[0]); + writel_relaxed(flag | ((RK2928_GRF_PHYS >> 20) << 20), a[0]); + + size = ddr_get_cap(); + + writel_relaxed(v[0], a[0]); + + return size; #endif } -- 2.34.1