diff options
Diffstat (limited to 'arch/arm/mach-zynq')
| -rw-r--r-- | arch/arm/mach-zynq/common.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c index 1db2a5ca9ab8..8c09a8393fb6 100644 --- a/arch/arm/mach-zynq/common.c +++ b/arch/arm/mach-zynq/common.c @@ -25,6 +25,7 @@  #include <linux/of_irq.h>  #include <linux/of_platform.h>  #include <linux/of.h> +#include <linux/memblock.h>  #include <linux/irqchip.h>  #include <linux/irqchip/arm-gic.h> @@ -41,6 +42,18 @@  void __iomem *zynq_scu_base; +/** + * zynq_memory_init - Initialize special memory + * + * We need to stop things allocating the low memory as DMA can't work in + * the 1st 512K of memory. + */ +static void __init zynq_memory_init(void) +{ +	if (!__pa(PAGE_OFFSET)) +		memblock_reserve(__pa(PAGE_OFFSET), __pa(swapper_pg_dir)); +} +  static struct platform_device zynq_cpuidle_device = {  	.name = "cpuidle-zynq",  }; @@ -117,5 +130,6 @@ DT_MACHINE_START(XILINX_EP107, "Xilinx Zynq Platform")  	.init_machine	= zynq_init_machine,  	.init_time	= zynq_timer_init,  	.dt_compat	= zynq_dt_match, +	.reserve	= zynq_memory_init,  	.restart	= zynq_system_reset,  MACHINE_END | 
