diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-16 18:34:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-16 18:34:44 -0500 |
commit | 5b3fcfed35735af507be36a4c3f3bbeb9bc7bbf6 (patch) | |
tree | f956ebeec64d7c4249a8886585dc8416e51d72a3 /arch/arm | |
parent | a12587b00388d1694933252e97abca237bc3a6b8 (diff) | |
parent | a61c2332f8e1939cd4984b63cab641b2366eb428 (diff) |
Merge branch 'fixes' of git://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-arm
* 'fixes' of git://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-arm:
ARM: sa11x0: assabet: fix build warning
ARM: Add arm_memblock_steal() to allocate memory away from the kernel
ARM: 7275/1: LPAE: Check the CPU support for the long descriptor format
ARM: 7274/1: NUC900: Rename nuc900-audio platform device to nuc900-ac97
ARM: 7272/1: S3C24XX: Fix build error for missing <mach/system-reset.h>
ARM: 7271/1: Fix typo in conversion of ARCH_NR_GPIOS to Kconfig
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/include/asm/gpio.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/memblock.h | 2 | ||||
-rw-r--r-- | arch/arm/kernel/head.S | 8 | ||||
-rw-r--r-- | arch/arm/mach-imx/mach-mx31_3ds.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-imx/mach-mx31moboard.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-imx/mach-pcm037.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-omap2/Kconfig | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap-secure.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap4-common.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/assabet.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/clksel.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/cpu.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/dev.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-w90x900/mfp.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/init.c | 17 | ||||
-rw-r--r-- | arch/arm/plat-omap/devices.c | 5 | ||||
-rw-r--r-- | arch/arm/plat-s3c24xx/cpu.c | 2 |
17 files changed, 50 insertions, 42 deletions
diff --git a/arch/arm/include/asm/gpio.h b/arch/arm/include/asm/gpio.h index 7151753b0989..c402e9b31f4c 100644 --- a/arch/arm/include/asm/gpio.h +++ b/arch/arm/include/asm/gpio.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define _ARCH_ARM_GPIO_H | 2 | #define _ARCH_ARM_GPIO_H |
3 | 3 | ||
4 | #if CONFIG_ARCH_NR_GPIO > 0 | 4 | #if CONFIG_ARCH_NR_GPIO > 0 |
5 | #define ARCH_NR_GPIO CONFIG_ARCH_NR_GPIO | 5 | #define ARCH_NR_GPIOS CONFIG_ARCH_NR_GPIO |
6 | #endif | 6 | #endif |
7 | 7 | ||
8 | /* not all ARM platforms necessarily support this API ... */ | 8 | /* not all ARM platforms necessarily support this API ... */ |
diff --git a/arch/arm/include/asm/memblock.h b/arch/arm/include/asm/memblock.h index b8da2e415e4e..00ca5f92648e 100644 --- a/arch/arm/include/asm/memblock.h +++ b/arch/arm/include/asm/memblock.h | |||
@@ -6,4 +6,6 @@ struct machine_desc; | |||
6 | 6 | ||
7 | extern void arm_memblock_init(struct meminfo *, struct machine_desc *); | 7 | extern void arm_memblock_init(struct meminfo *, struct machine_desc *); |
8 | 8 | ||
9 | phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align); | ||
10 | |||
9 | #endif | 11 | #endif |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 14e277d2ff91..6d5791144066 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -99,6 +99,14 @@ ENTRY(stext) | |||
99 | THUMB( it eq ) @ force fixup-able long branch encoding | 99 | THUMB( it eq ) @ force fixup-able long branch encoding |
100 | beq __error_p @ yes, error 'p' | 100 | beq __error_p @ yes, error 'p' |
101 | 101 | ||
102 | #ifdef CONFIG_ARM_LPAE | ||
103 | mrc p15, 0, r3, c0, c1, 4 @ read ID_MMFR0 | ||
104 | and r3, r3, #0xf @ extract VMSA support | ||
105 | cmp r3, #5 @ long-descriptor translation table format? | ||
106 | THUMB( it lo ) @ force fixup-able long branch encoding | ||
107 | blo __error_p @ only classic page table format | ||
108 | #endif | ||
109 | |||
102 | #ifndef CONFIG_XIP_KERNEL | 110 | #ifndef CONFIG_XIP_KERNEL |
103 | adr r3, 2f | 111 | adr r3, 2f |
104 | ldmia r3, {r4, r8} | 112 | ldmia r3, {r4, r8} |
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c index 89c33258639f..4d1aab154400 100644 --- a/arch/arm/mach-imx/mach-mx31_3ds.c +++ b/arch/arm/mach-imx/mach-mx31_3ds.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
37 | #include <asm/memory.h> | 37 | #include <asm/memory.h> |
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
39 | #include <asm/memblock.h> | ||
39 | #include <mach/common.h> | 40 | #include <mach/common.h> |
40 | #include <mach/iomux-mx3.h> | 41 | #include <mach/iomux-mx3.h> |
41 | #include <mach/3ds_debugboard.h> | 42 | #include <mach/3ds_debugboard.h> |
@@ -754,10 +755,8 @@ static struct sys_timer mx31_3ds_timer = { | |||
754 | static void __init mx31_3ds_reserve(void) | 755 | static void __init mx31_3ds_reserve(void) |
755 | { | 756 | { |
756 | /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ | 757 | /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */ |
757 | mx3_camera_base = memblock_alloc(MX31_3DS_CAMERA_BUF_SIZE, | 758 | mx3_camera_base = arm_memblock_steal(MX31_3DS_CAMERA_BUF_SIZE, |
758 | MX31_3DS_CAMERA_BUF_SIZE); | 759 | MX31_3DS_CAMERA_BUF_SIZE); |
759 | memblock_free(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE); | ||
760 | memblock_remove(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE); | ||
761 | } | 760 | } |
762 | 761 | ||
763 | MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") | 762 | MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)") |
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c index b95981dacb2b..f225262b5c38 100644 --- a/arch/arm/mach-imx/mach-mx31moboard.c +++ b/arch/arm/mach-imx/mach-mx31moboard.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
42 | #include <asm/mach/time.h> | 42 | #include <asm/mach/time.h> |
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | #include <asm/memblock.h> | ||
44 | #include <mach/board-mx31moboard.h> | 45 | #include <mach/board-mx31moboard.h> |
45 | #include <mach/common.h> | 46 | #include <mach/common.h> |
46 | #include <mach/hardware.h> | 47 | #include <mach/hardware.h> |
@@ -584,10 +585,8 @@ struct sys_timer mx31moboard_timer = { | |||
584 | static void __init mx31moboard_reserve(void) | 585 | static void __init mx31moboard_reserve(void) |
585 | { | 586 | { |
586 | /* reserve 4 MiB for mx3-camera */ | 587 | /* reserve 4 MiB for mx3-camera */ |
587 | mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE, | 588 | mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE, |
588 | MX3_CAMERA_BUF_SIZE); | 589 | MX3_CAMERA_BUF_SIZE); |
589 | memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | ||
590 | memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | ||
591 | } | 590 | } |
592 | 591 | ||
593 | MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard") | 592 | MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard") |
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c index d7e151669ed3..e48854b9d990 100644 --- a/arch/arm/mach-imx/mach-pcm037.c +++ b/arch/arm/mach-imx/mach-pcm037.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
41 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
42 | #include <asm/memblock.h> | ||
42 | #include <mach/common.h> | 43 | #include <mach/common.h> |
43 | #include <mach/hardware.h> | 44 | #include <mach/hardware.h> |
44 | #include <mach/iomux-mx3.h> | 45 | #include <mach/iomux-mx3.h> |
@@ -680,10 +681,8 @@ struct sys_timer pcm037_timer = { | |||
680 | static void __init pcm037_reserve(void) | 681 | static void __init pcm037_reserve(void) |
681 | { | 682 | { |
682 | /* reserve 4 MiB for mx3-camera */ | 683 | /* reserve 4 MiB for mx3-camera */ |
683 | mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE, | 684 | mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE, |
684 | MX3_CAMERA_BUF_SIZE); | 685 | MX3_CAMERA_BUF_SIZE); |
685 | memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | ||
686 | memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE); | ||
687 | } | 686 | } |
688 | 687 | ||
689 | MACHINE_START(PCM037, "Phytec Phycore pcm037") | 688 | MACHINE_START(PCM037, "Phytec Phycore pcm037") |
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 904bd1dfcd2e..a8ba7b96dcd1 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -366,8 +366,8 @@ config OMAP3_SDRC_AC_TIMING | |||
366 | going on could result in system crashes; | 366 | going on could result in system crashes; |
367 | 367 | ||
368 | config OMAP4_ERRATA_I688 | 368 | config OMAP4_ERRATA_I688 |
369 | bool "OMAP4 errata: Async Bridge Corruption" | 369 | bool "OMAP4 errata: Async Bridge Corruption (BROKEN)" |
370 | depends on ARCH_OMAP4 | 370 | depends on ARCH_OMAP4 && BROKEN |
371 | select ARCH_HAS_BARRIERS | 371 | select ARCH_HAS_BARRIERS |
372 | help | 372 | help |
373 | If a data is stalled inside asynchronous bridge because of back | 373 | If a data is stalled inside asynchronous bridge because of back |
diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c index 69f3c72d959b..d8f8ef40290f 100644 --- a/arch/arm/mach-omap2/omap-secure.c +++ b/arch/arm/mach-omap2/omap-secure.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/memblock.h> | 16 | #include <linux/memblock.h> |
17 | 17 | ||
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/memblock.h> | ||
19 | 20 | ||
20 | #include <mach/omap-secure.h> | 21 | #include <mach/omap-secure.h> |
21 | 22 | ||
@@ -57,20 +58,10 @@ u32 omap_secure_dispatcher(u32 idx, u32 flag, u32 nargs, u32 arg1, u32 arg2, | |||
57 | /* Allocate the memory to save secure ram */ | 58 | /* Allocate the memory to save secure ram */ |
58 | int __init omap_secure_ram_reserve_memblock(void) | 59 | int __init omap_secure_ram_reserve_memblock(void) |
59 | { | 60 | { |
60 | phys_addr_t paddr; | ||
61 | u32 size = OMAP_SECURE_RAM_STORAGE; | 61 | u32 size = OMAP_SECURE_RAM_STORAGE; |
62 | 62 | ||
63 | size = ALIGN(size, SZ_1M); | 63 | size = ALIGN(size, SZ_1M); |
64 | paddr = memblock_alloc(size, SZ_1M); | 64 | omap_secure_memblock_base = arm_memblock_steal(size, SZ_1M); |
65 | if (!paddr) { | ||
66 | pr_err("%s: failed to reserve %x bytes\n", | ||
67 | __func__, size); | ||
68 | return -ENOMEM; | ||
69 | } | ||
70 | memblock_free(paddr, size); | ||
71 | memblock_remove(paddr, size); | ||
72 | |||
73 | omap_secure_memblock_base = paddr; | ||
74 | 65 | ||
75 | return 0; | 66 | return 0; |
76 | } | 67 | } |
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index bc16c818c6b7..40a8fbc07e4b 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/hardware/gic.h> | 20 | #include <asm/hardware/gic.h> |
21 | #include <asm/hardware/cache-l2x0.h> | 21 | #include <asm/hardware/cache-l2x0.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <asm/memblock.h> | ||
23 | 24 | ||
24 | #include <plat/irqs.h> | 25 | #include <plat/irqs.h> |
25 | #include <plat/sram.h> | 26 | #include <plat/sram.h> |
@@ -61,13 +62,8 @@ static int __init omap_barriers_init(void) | |||
61 | return -ENODEV; | 62 | return -ENODEV; |
62 | 63 | ||
63 | size = ALIGN(PAGE_SIZE, SZ_1M); | 64 | size = ALIGN(PAGE_SIZE, SZ_1M); |
64 | paddr = memblock_alloc(size, SZ_1M); | 65 | paddr = arm_memblock_steal(size, SZ_1M); |
65 | if (!paddr) { | 66 | |
66 | pr_err("%s: failed to reserve 4 Kbytes\n", __func__); | ||
67 | return -ENOMEM; | ||
68 | } | ||
69 | memblock_free(paddr, size); | ||
70 | memblock_remove(paddr, size); | ||
71 | dram_io_desc[0].virtual = OMAP4_DRAM_BARRIER_VA; | 67 | dram_io_desc[0].virtual = OMAP4_DRAM_BARRIER_VA; |
72 | dram_io_desc[0].pfn = __phys_to_pfn(paddr); | 68 | dram_io_desc[0].pfn = __phys_to_pfn(paddr); |
73 | dram_io_desc[0].length = size; | 69 | dram_io_desc[0].length = size; |
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index 5bc6b3837b20..ebafe8aa8956 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c | |||
@@ -280,7 +280,7 @@ static void __init map_sa1100_gpio_regs( void ) | |||
280 | int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO); | 280 | int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO); |
281 | pmd_t *pmd; | 281 | pmd_t *pmd; |
282 | 282 | ||
283 | pmd = pmd_offset(pgd_offset_k(virt), virt); | 283 | pmd = pmd_offset(pud_offset(pgd_offset_k(virt), virt), virt); |
284 | *pmd = __pmd(phys | prot); | 284 | *pmd = __pmd(phys | prot); |
285 | flush_pmd_entry(pmd); | 285 | flush_pmd_entry(pmd); |
286 | } | 286 | } |
diff --git a/arch/arm/mach-w90x900/clksel.c b/arch/arm/mach-w90x900/clksel.c index 3de4a5211c3b..06d867dce551 100644 --- a/arch/arm/mach-w90x900/clksel.c +++ b/arch/arm/mach-w90x900/clksel.c | |||
@@ -48,7 +48,7 @@ static void clock_source_select(const char *dev_id, unsigned int clkval) | |||
48 | offset = ATAOFFSET; | 48 | offset = ATAOFFSET; |
49 | else if (strcmp(dev_id, "nuc900-lcd") == 0) | 49 | else if (strcmp(dev_id, "nuc900-lcd") == 0) |
50 | offset = LCDOFFSET; | 50 | offset = LCDOFFSET; |
51 | else if (strcmp(dev_id, "nuc900-audio") == 0) | 51 | else if (strcmp(dev_id, "nuc900-ac97") == 0) |
52 | offset = AUDOFFSET; | 52 | offset = AUDOFFSET; |
53 | else | 53 | else |
54 | offset = CPUOFFSET; | 54 | offset = CPUOFFSET; |
diff --git a/arch/arm/mach-w90x900/cpu.c b/arch/arm/mach-w90x900/cpu.c index 604e1db266e8..9a0661992909 100644 --- a/arch/arm/mach-w90x900/cpu.c +++ b/arch/arm/mach-w90x900/cpu.c | |||
@@ -79,7 +79,7 @@ static DEFINE_CLK(timer4, 23); | |||
79 | 79 | ||
80 | static struct clk_lookup nuc900_clkregs[] = { | 80 | static struct clk_lookup nuc900_clkregs[] = { |
81 | DEF_CLKLOOK(&clk_lcd, "nuc900-lcd", NULL), | 81 | DEF_CLKLOOK(&clk_lcd, "nuc900-lcd", NULL), |
82 | DEF_CLKLOOK(&clk_audio, "nuc900-audio", NULL), | 82 | DEF_CLKLOOK(&clk_audio, "nuc900-ac97", NULL), |
83 | DEF_CLKLOOK(&clk_fmi, "nuc900-fmi", NULL), | 83 | DEF_CLKLOOK(&clk_fmi, "nuc900-fmi", NULL), |
84 | DEF_CLKLOOK(&clk_ms, "nuc900-fmi", "MS"), | 84 | DEF_CLKLOOK(&clk_ms, "nuc900-fmi", "MS"), |
85 | DEF_CLKLOOK(&clk_sd, "nuc900-fmi", "SD"), | 85 | DEF_CLKLOOK(&clk_sd, "nuc900-fmi", "SD"), |
diff --git a/arch/arm/mach-w90x900/dev.c b/arch/arm/mach-w90x900/dev.c index 5b0c38abacc1..78110befb7a9 100644 --- a/arch/arm/mach-w90x900/dev.c +++ b/arch/arm/mach-w90x900/dev.c | |||
@@ -501,8 +501,8 @@ static struct resource nuc900_ac97_resource[] = { | |||
501 | 501 | ||
502 | }; | 502 | }; |
503 | 503 | ||
504 | struct platform_device nuc900_device_audio = { | 504 | struct platform_device nuc900_device_ac97 = { |
505 | .name = "nuc900-audio", | 505 | .name = "nuc900-ac97", |
506 | .id = -1, | 506 | .id = -1, |
507 | .num_resources = ARRAY_SIZE(nuc900_ac97_resource), | 507 | .num_resources = ARRAY_SIZE(nuc900_ac97_resource), |
508 | .resource = nuc900_ac97_resource, | 508 | .resource = nuc900_ac97_resource, |
@@ -523,7 +523,7 @@ static struct platform_device *nuc900_public_dev[] __initdata = { | |||
523 | &nuc900_device_emc, | 523 | &nuc900_device_emc, |
524 | &nuc900_device_spi, | 524 | &nuc900_device_spi, |
525 | &nuc900_device_wdt, | 525 | &nuc900_device_wdt, |
526 | &nuc900_device_audio, | 526 | &nuc900_device_ac97, |
527 | }; | 527 | }; |
528 | 528 | ||
529 | /* Provide adding specific CPU platform devices API */ | 529 | /* Provide adding specific CPU platform devices API */ |
diff --git a/arch/arm/mach-w90x900/mfp.c b/arch/arm/mach-w90x900/mfp.c index 9dd74612bb87..c58d142b8a46 100644 --- a/arch/arm/mach-w90x900/mfp.c +++ b/arch/arm/mach-w90x900/mfp.c | |||
@@ -155,7 +155,7 @@ void mfp_set_groupg(struct device *dev, const char *subname) | |||
155 | } else if (strcmp(dev_id, "nuc900-i2c1") == 0) { | 155 | } else if (strcmp(dev_id, "nuc900-i2c1") == 0) { |
156 | mfpen &= ~(GPIOG2TO3); | 156 | mfpen &= ~(GPIOG2TO3); |
157 | mfpen |= ENI2C1;/*enable i2c1*/ | 157 | mfpen |= ENI2C1;/*enable i2c1*/ |
158 | } else if (strcmp(dev_id, "nuc900-audio") == 0) { | 158 | } else if (strcmp(dev_id, "nuc900-ac97") == 0) { |
159 | mfpen &= ~(GPIOG22TO23); | 159 | mfpen &= ~(GPIOG22TO23); |
160 | mfpen |= ENAC97;/*enable AC97*/ | 160 | mfpen |= ENAC97;/*enable AC97*/ |
161 | } else if (strcmp(dev_id, "nuc900-mmc-port1") == 0) { | 161 | } else if (strcmp(dev_id, "nuc900-mmc-port1") == 0) { |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index e34ea8adc1f9..6ec1226fc62d 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/memblock.h> | 22 | #include <linux/memblock.h> |
23 | 23 | ||
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/memblock.h> | ||
25 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
26 | #include <asm/sections.h> | 27 | #include <asm/sections.h> |
27 | #include <asm/setup.h> | 28 | #include <asm/setup.h> |
@@ -307,6 +308,21 @@ static void arm_memory_present(void) | |||
307 | } | 308 | } |
308 | #endif | 309 | #endif |
309 | 310 | ||
311 | static bool arm_memblock_steal_permitted = true; | ||
312 | |||
313 | phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align) | ||
314 | { | ||
315 | phys_addr_t phys; | ||
316 | |||
317 | BUG_ON(!arm_memblock_steal_permitted); | ||
318 | |||
319 | phys = memblock_alloc(size, align); | ||
320 | memblock_free(phys, size); | ||
321 | memblock_remove(phys, size); | ||
322 | |||
323 | return phys; | ||
324 | } | ||
325 | |||
310 | void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc) | 326 | void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc) |
311 | { | 327 | { |
312 | int i; | 328 | int i; |
@@ -349,6 +365,7 @@ void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc) | |||
349 | if (mdesc->reserve) | 365 | if (mdesc->reserve) |
350 | mdesc->reserve(); | 366 | mdesc->reserve(); |
351 | 367 | ||
368 | arm_memblock_steal_permitted = false; | ||
352 | memblock_allow_resize(); | 369 | memblock_allow_resize(); |
353 | memblock_dump_all(); | 370 | memblock_dump_all(); |
354 | } | 371 | } |
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index 19719329a47b..60278f47c0bd 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <mach/hardware.h> | 20 | #include <mach/hardware.h> |
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | #include <asm/memblock.h> | ||
23 | 24 | ||
24 | #include <plat/tc.h> | 25 | #include <plat/tc.h> |
25 | #include <plat/board.h> | 26 | #include <plat/board.h> |
@@ -164,14 +165,12 @@ void __init omap_dsp_reserve_sdram_memblock(void) | |||
164 | if (!size) | 165 | if (!size) |
165 | return; | 166 | return; |
166 | 167 | ||
167 | paddr = memblock_alloc(size, SZ_1M); | 168 | paddr = arm_memblock_steal(size, SZ_1M); |
168 | if (!paddr) { | 169 | if (!paddr) { |
169 | pr_err("%s: failed to reserve %x bytes\n", | 170 | pr_err("%s: failed to reserve %x bytes\n", |
170 | __func__, size); | 171 | __func__, size); |
171 | return; | 172 | return; |
172 | } | 173 | } |
173 | memblock_free(paddr, size); | ||
174 | memblock_remove(paddr, size); | ||
175 | 174 | ||
176 | omap_dsp_phys_mempool_base = paddr; | 175 | omap_dsp_phys_mempool_base = paddr; |
177 | } | 176 | } |
diff --git a/arch/arm/plat-s3c24xx/cpu.c b/arch/arm/plat-s3c24xx/cpu.c index 1121df13e15f..21f1fda8b661 100644 --- a/arch/arm/plat-s3c24xx/cpu.c +++ b/arch/arm/plat-s3c24xx/cpu.c | |||
@@ -38,8 +38,6 @@ | |||
38 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
39 | #include <asm/mach/map.h> | 39 | #include <asm/mach/map.h> |
40 | 40 | ||
41 | #include <mach/system-reset.h> | ||
42 | |||
43 | #include <mach/regs-gpio.h> | 41 | #include <mach/regs-gpio.h> |
44 | #include <plat/regs-serial.h> | 42 | #include <plat/regs-serial.h> |
45 | 43 | ||