rk29: memory.h: fix for 1G memory, limit DMA zone only 512MB
author黄涛 <huangtao@rock-chips.com>
Sat, 2 Jul 2011 10:23:18 +0000 (18:23 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sat, 2 Jul 2011 10:25:09 +0000 (18:25 +0800)
arch/arm/mach-rk29/include/mach/memory.h

index d9f2d2c03c5235878c462f5adc7aeb55e43e30d6..da68f41527c7e675a238cfa62920ce55c2bf0e88 100644 (file)
 #ifndef __ASM_ARCH_RK29_MEMORY_H
 #define __ASM_ARCH_RK29_MEMORY_H
 
+#include <asm/page.h>
+#include <asm/sizes.h>
+
 /* physical offset of RAM */
 #define PHYS_OFFSET            UL(0x60000000)
 
 #define CONSISTENT_DMA_SIZE    SZ_8M
 
+#if !defined(__ASSEMBLY__) && defined(CONFIG_ZONE_DMA)
+
+static inline void
+__arch_adjust_zones(int node, unsigned long *zone_size, unsigned long *zhole_size)
+{
+       unsigned long dma_size = SZ_512M >> PAGE_SHIFT;
+
+       if (node || (zone_size[0] <= dma_size))
+               return;
+
+       zone_size[1] = zone_size[0] - dma_size;
+       zone_size[0] = dma_size;
+       zhole_size[1] = zhole_size[0];
+       zhole_size[0] = 0;
+}
+
+#define arch_adjust_zones(node, zone_size, zhole_size) \
+       __arch_adjust_zones(node, zone_size, zhole_size)
+
+#endif /* CONFIG_ZONE_DMA */
+
 /*
  * SRAM memory whereabouts
  */