Merge ../linus
[linux-drm-fsl-dcu.git] / arch / avr32 / boards / atstk1000 / setup.c
1 /*
2  * ATSTK1000 board-specific setup code.
3  *
4  * Copyright (C) 2005-2006 Atmel Corporation
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 #include <linux/bootmem.h>
11 #include <linux/init.h>
12 #include <linux/types.h>
13 #include <linux/linkage.h>
14
15 #include <asm/setup.h>
16
17 #include <asm/arch/board.h>
18
19 /* Initialized by bootloader-specific startup code. */
20 struct tag *bootloader_tags __initdata;
21
22 struct lcdc_platform_data __initdata atstk1000_fb0_data;
23
24 void __init board_setup_fbmem(unsigned long fbmem_start,
25                               unsigned long fbmem_size)
26 {
27         if (!fbmem_size)
28                 return;
29
30         if (!fbmem_start) {
31                 void *fbmem;
32
33                 fbmem = alloc_bootmem_low_pages(fbmem_size);
34                 fbmem_start = __pa(fbmem);
35         } else {
36                 pg_data_t *pgdat;
37
38                 for_each_online_pgdat(pgdat) {
39                         if (fbmem_start >= pgdat->bdata->node_boot_start
40                             && fbmem_start <= pgdat->bdata->node_low_pfn)
41                                 reserve_bootmem_node(pgdat, fbmem_start,
42                                                      fbmem_size);
43                 }
44         }
45
46         printk("%luKiB framebuffer memory at address 0x%08lx\n",
47                fbmem_size >> 10, fbmem_start);
48         atstk1000_fb0_data.fbmem_start = fbmem_start;
49         atstk1000_fb0_data.fbmem_size = fbmem_size;
50 }