]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
rockchip: rk3288: sdram: fix DDR address range
authorXu Ziyuan <xzy.xu@rock-chips.com>
Mon, 5 Sep 2016 01:39:58 +0000 (09:39 +0800)
committerSimon Glass <sjg@chromium.org>
Sun, 2 Oct 2016 00:35:01 +0000 (18:35 -0600)
The all current Rockchip SoCs supporting 4GB of ram have problems
accessing the memory region 0xfe000000~0xff000000. Actually, some IP
controller can't address to, so let's limit the available range.

This patch fixes a bug which found in miniarm-rk3288-4GB board. The
U-Boot was relocated to 0xfef72000, and .bss variants was also
relocated, such as do_fat_read_at_block. Once eMMC controller transfer
data to do_fat_read_at_block via DMA, DMAC can't access more than
0xfe000000. So that DMAC didn't work sane.

Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
arch/arm/mach-rockchip/rk3288/sdram_rk3288.c

index cf9ef2e8451aa9f2f6dca33953bf1f2be3a7f5b4..8020e9c6e2fb0a4572fda97002d4e1de8523e3d6 100644 (file)
@@ -755,10 +755,11 @@ size_t sdram_size_mb(struct rk3288_pmu *pmu)
        }
 
        /*
-       * we use the 0x00000000~0xfeffffff space since 0xff000000~0xffffffff
-       * is SoC register space (i.e. reserved)
+       * we use the 0x00000000~0xfdffffff space since 0xff000000~0xffffffff
+       * is SoC register space (i.e. reserved), and 0xfe000000~0xfeffffff is 
+       * inaccessible for some IP controller.
        */
-       size_mb = min(size_mb, 0xff000000 >> 20);
+       size_mb = min(size_mb, 0xfe000000 >> 20);
 
        return size_mb;
 }