Merge branch 'fixes' of git://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Jan 2012 23:34:44 +0000 (15:34 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Jan 2012 23:34:44 +0000 (15:34 -0800)
* '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

18 files changed:
arch/arm/include/asm/gpio.h
arch/arm/include/asm/memblock.h
arch/arm/kernel/head.S
arch/arm/mach-imx/mach-mx31_3ds.c
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/omap-secure.c
arch/arm/mach-omap2/omap4-common.c
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-w90x900/clksel.c
arch/arm/mach-w90x900/cpu.c
arch/arm/mach-w90x900/dev.c
arch/arm/mach-w90x900/mfp.c
arch/arm/mm/init.c
arch/arm/plat-omap/devices.c
arch/arm/plat-s3c24xx/cpu.c
sound/soc/nuc900/nuc900-ac97.c

index 7151753b0989f922c5a0e9d29fce5e057ae2ad5e..c402e9b31f4c61148ee5466b29f9ec176f11b78f 100644 (file)
@@ -2,7 +2,7 @@
 #define _ARCH_ARM_GPIO_H
 
 #if CONFIG_ARCH_NR_GPIO > 0
-#define ARCH_NR_GPIO CONFIG_ARCH_NR_GPIO
+#define ARCH_NR_GPIOS CONFIG_ARCH_NR_GPIO
 #endif
 
 /* not all ARM platforms necessarily support this API ... */
index b8da2e415e4eb21a870cbb52333b5400a50ad163..00ca5f92648ea56616afe8bfbd4a25ff8f0b0e27 100644 (file)
@@ -6,4 +6,6 @@ struct machine_desc;
 
 extern void arm_memblock_init(struct meminfo *, struct machine_desc *);
 
+phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align);
+
 #endif
index 14e277d2ff911ec7690c4223c5acea4b602e3450..6d579114406673fd1b97c09f0cdcbb7263b044da 100644 (file)
@@ -99,6 +99,14 @@ ENTRY(stext)
  THUMB( it     eq )            @ force fixup-able long branch encoding
        beq     __error_p                       @ yes, error 'p'
 
+#ifdef CONFIG_ARM_LPAE
+       mrc     p15, 0, r3, c0, c1, 4           @ read ID_MMFR0
+       and     r3, r3, #0xf                    @ extract VMSA support
+       cmp     r3, #5                          @ long-descriptor translation table format?
+ THUMB( it     lo )                            @ force fixup-able long branch encoding
+       blo     __error_p                       @ only classic page table format
+#endif
+
 #ifndef CONFIG_XIP_KERNEL
        adr     r3, 2f
        ldmia   r3, {r4, r8}
index 89c33258639f89a9b075a2f9bf6ca0bf41b7a0e8..4d1aab154400fb43e4e0de2ea38e49c932d278e0 100644 (file)
@@ -36,6 +36,7 @@
 #include <asm/mach/time.h>
 #include <asm/memory.h>
 #include <asm/mach/map.h>
+#include <asm/memblock.h>
 #include <mach/common.h>
 #include <mach/iomux-mx3.h>
 #include <mach/3ds_debugboard.h>
@@ -754,10 +755,8 @@ static struct sys_timer mx31_3ds_timer = {
 static void __init mx31_3ds_reserve(void)
 {
        /* reserve MX31_3DS_CAMERA_BUF_SIZE bytes for mx3-camera */
-       mx3_camera_base = memblock_alloc(MX31_3DS_CAMERA_BUF_SIZE,
+       mx3_camera_base = arm_memblock_steal(MX31_3DS_CAMERA_BUF_SIZE,
                                         MX31_3DS_CAMERA_BUF_SIZE);
-       memblock_free(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE);
-       memblock_remove(mx3_camera_base, MX31_3DS_CAMERA_BUF_SIZE);
 }
 
 MACHINE_START(MX31_3DS, "Freescale MX31PDK (3DS)")
index b95981dacb2bcef2ff8138b59d32f58d85d3a394..f225262b5c38551cb6ec424e01cb71139f9a551f 100644 (file)
@@ -41,6 +41,7 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
 #include <asm/mach/map.h>
+#include <asm/memblock.h>
 #include <mach/board-mx31moboard.h>
 #include <mach/common.h>
 #include <mach/hardware.h>
@@ -584,10 +585,8 @@ struct sys_timer mx31moboard_timer = {
 static void __init mx31moboard_reserve(void)
 {
        /* reserve 4 MiB for mx3-camera */
-       mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE,
+       mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE,
                        MX3_CAMERA_BUF_SIZE);
-       memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
-       memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
 }
 
 MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
index d7e151669ed347591e1687de4c628156aa56820d..e48854b9d9907a7c76095b5531c3a9f63eb0db23 100644 (file)
@@ -39,6 +39,7 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
 #include <asm/mach/map.h>
+#include <asm/memblock.h>
 #include <mach/common.h>
 #include <mach/hardware.h>
 #include <mach/iomux-mx3.h>
@@ -680,10 +681,8 @@ struct sys_timer pcm037_timer = {
 static void __init pcm037_reserve(void)
 {
        /* reserve 4 MiB for mx3-camera */
-       mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE,
+       mx3_camera_base = arm_memblock_steal(MX3_CAMERA_BUF_SIZE,
                        MX3_CAMERA_BUF_SIZE);
-       memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
-       memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
 }
 
 MACHINE_START(PCM037, "Phytec Phycore pcm037")
index 904bd1dfcd2e26b194f24ebe62eee9a377a05016..a8ba7b96dcd1c3177b11e634e5e8e4608dc7a4d4 100644 (file)
@@ -366,8 +366,8 @@ config OMAP3_SDRC_AC_TIMING
          going on could result in system crashes;
 
 config OMAP4_ERRATA_I688
-       bool "OMAP4 errata: Async Bridge Corruption"
-       depends on ARCH_OMAP4
+       bool "OMAP4 errata: Async Bridge Corruption (BROKEN)"
+       depends on ARCH_OMAP4 && BROKEN
        select ARCH_HAS_BARRIERS
        help
          If a data is stalled inside asynchronous bridge because of back
index 69f3c72d959b61e6cefe7c62462fc30f05a0b15f..d8f8ef40290f4dc4c803e69ce87fe5111baed499 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/memblock.h>
 
 #include <asm/cacheflush.h>
+#include <asm/memblock.h>
 
 #include <mach/omap-secure.h>
 
@@ -57,20 +58,10 @@ u32 omap_secure_dispatcher(u32 idx, u32 flag, u32 nargs, u32 arg1, u32 arg2,
 /* Allocate the memory to save secure ram */
 int __init omap_secure_ram_reserve_memblock(void)
 {
-       phys_addr_t paddr;
        u32 size = OMAP_SECURE_RAM_STORAGE;
 
        size = ALIGN(size, SZ_1M);
-       paddr = memblock_alloc(size, SZ_1M);
-       if (!paddr) {
-               pr_err("%s: failed to reserve %x bytes\n",
-                               __func__, size);
-               return -ENOMEM;
-       }
-       memblock_free(paddr, size);
-       memblock_remove(paddr, size);
-
-       omap_secure_memblock_base = paddr;
+       omap_secure_memblock_base = arm_memblock_steal(size, SZ_1M);
 
        return 0;
 }
index bc16c818c6b72e77ae276976c887b7a85647a9df..40a8fbc07e4b766717b35e8b69f88794c1335df7 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/hardware/gic.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <asm/mach/map.h>
+#include <asm/memblock.h>
 
 #include <plat/irqs.h>
 #include <plat/sram.h>
@@ -61,13 +62,8 @@ static int __init omap_barriers_init(void)
                return -ENODEV;
 
        size = ALIGN(PAGE_SIZE, SZ_1M);
-       paddr = memblock_alloc(size, SZ_1M);
-       if (!paddr) {
-               pr_err("%s: failed to reserve 4 Kbytes\n", __func__);
-               return -ENOMEM;
-       }
-       memblock_free(paddr, size);
-       memblock_remove(paddr, size);
+       paddr = arm_memblock_steal(size, SZ_1M);
+
        dram_io_desc[0].virtual = OMAP4_DRAM_BARRIER_VA;
        dram_io_desc[0].pfn = __phys_to_pfn(paddr);
        dram_io_desc[0].length = size;
index 5bc6b3837b2033cbaccf57b69b91e07ffd0fe76f..ebafe8aa8956e1d9f7e24987e777ce7d87f27369 100644 (file)
@@ -280,7 +280,7 @@ static void __init map_sa1100_gpio_regs( void )
        int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO);
        pmd_t *pmd;
 
-       pmd = pmd_offset(pgd_offset_k(virt), virt);
+       pmd = pmd_offset(pud_offset(pgd_offset_k(virt), virt), virt);
        *pmd = __pmd(phys | prot);
        flush_pmd_entry(pmd);
 }
index 3de4a5211c3b1702ac0aa1fb126c4b69f6e918c4..06d867dce55161df7d0ab34dfd11d0027e64795c 100644 (file)
@@ -48,7 +48,7 @@ static void clock_source_select(const char *dev_id, unsigned int clkval)
                offset = ATAOFFSET;
        else if (strcmp(dev_id, "nuc900-lcd") == 0)
                offset = LCDOFFSET;
-       else if (strcmp(dev_id, "nuc900-audio") == 0)
+       else if (strcmp(dev_id, "nuc900-ac97") == 0)
                offset = AUDOFFSET;
        else
                offset = CPUOFFSET;
index 604e1db266e8402d5f85c018c3870e15794c8bef..9a06619929090c43dd4993bfeeb3878319ac901b 100644 (file)
@@ -79,7 +79,7 @@ static DEFINE_CLK(timer4, 23);
 
 static struct clk_lookup nuc900_clkregs[] = {
        DEF_CLKLOOK(&clk_lcd, "nuc900-lcd", NULL),
-       DEF_CLKLOOK(&clk_audio, "nuc900-audio", NULL),
+       DEF_CLKLOOK(&clk_audio, "nuc900-ac97", NULL),
        DEF_CLKLOOK(&clk_fmi, "nuc900-fmi", NULL),
        DEF_CLKLOOK(&clk_ms, "nuc900-fmi", "MS"),
        DEF_CLKLOOK(&clk_sd, "nuc900-fmi", "SD"),
index 5b0c38abacc107a7eae8bd35ec8f03666f3422e7..78110befb7a9132d6da3353fdec6721b421894ed 100644 (file)
@@ -501,8 +501,8 @@ static struct resource nuc900_ac97_resource[] = {
 
 };
 
-struct platform_device nuc900_device_audio = {
-       .name           = "nuc900-audio",
+struct platform_device nuc900_device_ac97 = {
+       .name           = "nuc900-ac97",
        .id             = -1,
        .num_resources  = ARRAY_SIZE(nuc900_ac97_resource),
        .resource       = nuc900_ac97_resource,
@@ -523,7 +523,7 @@ static struct platform_device *nuc900_public_dev[] __initdata = {
        &nuc900_device_emc,
        &nuc900_device_spi,
        &nuc900_device_wdt,
-       &nuc900_device_audio,
+       &nuc900_device_ac97,
 };
 
 /* Provide adding specific CPU platform devices API */
index 9dd74612bb8707560abd06e6adc250f7ecd54bf2..c58d142b8a467134d193d2252ce52a361e314fcf 100644 (file)
@@ -155,7 +155,7 @@ void mfp_set_groupg(struct device *dev, const char *subname)
        } else if (strcmp(dev_id, "nuc900-i2c1") == 0) {
                mfpen &= ~(GPIOG2TO3);
                mfpen |= ENI2C1;/*enable i2c1*/
-       } else if (strcmp(dev_id, "nuc900-audio") == 0) {
+       } else if (strcmp(dev_id, "nuc900-ac97") == 0) {
                mfpen &= ~(GPIOG22TO23);
                mfpen |= ENAC97;/*enable AC97*/
        } else if (strcmp(dev_id, "nuc900-mmc-port1") == 0) {
index e34ea8adc1f928fe8ebeadc677aba06fbd8b4f47..6ec1226fc62d2fc58caa6c795614455c0f7e8ed7 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/memblock.h>
 
 #include <asm/mach-types.h>
+#include <asm/memblock.h>
 #include <asm/prom.h>
 #include <asm/sections.h>
 #include <asm/setup.h>
@@ -307,6 +308,21 @@ static void arm_memory_present(void)
 }
 #endif
 
+static bool arm_memblock_steal_permitted = true;
+
+phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align)
+{
+       phys_addr_t phys;
+
+       BUG_ON(!arm_memblock_steal_permitted);
+
+       phys = memblock_alloc(size, align);
+       memblock_free(phys, size);
+       memblock_remove(phys, size);
+
+       return phys;
+}
+
 void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc)
 {
        int i;
@@ -349,6 +365,7 @@ void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc)
        if (mdesc->reserve)
                mdesc->reserve();
 
+       arm_memblock_steal_permitted = false;
        memblock_allow_resize();
        memblock_dump_all();
 }
index 19719329a47b0fb96a4b75e42f8103f505c00c84..60278f47c0bdd71953cc5c1483a68a7a02a0b50f 100644 (file)
@@ -20,6 +20,7 @@
 #include <mach/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/map.h>
+#include <asm/memblock.h>
 
 #include <plat/tc.h>
 #include <plat/board.h>
@@ -164,14 +165,12 @@ void __init omap_dsp_reserve_sdram_memblock(void)
        if (!size)
                return;
 
-       paddr = memblock_alloc(size, SZ_1M);
+       paddr = arm_memblock_steal(size, SZ_1M);
        if (!paddr) {
                pr_err("%s: failed to reserve %x bytes\n",
                                __func__, size);
                return;
        }
-       memblock_free(paddr, size);
-       memblock_remove(paddr, size);
 
        omap_dsp_phys_mempool_base = paddr;
 }
index 1121df13e15f52de91d7d30ee41399950e60ee72..21f1fda8b661ee7021782921b98b6cb637547284 100644 (file)
@@ -38,8 +38,6 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 
-#include <mach/system-reset.h>
-
 #include <mach/regs-gpio.h>
 #include <plat/regs-serial.h>
 
index 45d11ddaeea9110a66182eaaa18047c8465ff90b..946020a647db2e1d5eec71f82fb9a3c936ced546 100644 (file)
@@ -366,7 +366,7 @@ static int __devinit nuc900_ac97_drvprobe(struct platform_device *pdev)
                goto out3;
 
        /* enbale ac97 multifunction pin */
-       mfp_set_groupg(nuc900_audio->dev, "nuc900-audio");
+       mfp_set_groupg(nuc900_audio->dev, NULL);
 
        return 0;