From: 黄涛 Date: Thu, 13 Sep 2012 09:00:34 +0000 (+0800) Subject: rk2928: common: fix rk2928_get_ddr_size X-Git-Tag: firefly_0821_release~8631^2~13 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fce8a0994070e38b297c249eb41756faba74dcc1;p=firefly-linux-kernel-4.4.55.git rk2928: common: fix rk2928_get_ddr_size --- 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 }