Skip to contentSkip to conversation

arm-soc fixes for 3.16 review

PATCH New Arnd Bergmann 7 participants 25 messages Jun 13, 2014 – Jun 18, 2014

Subsystems (23)
lore
Share & tools
lore

Arnd Bergmann

author maintainer
#0 lore raw

cover arm-soc fixes for 3.16 review

Hi Everyone,

here are the fixes I've picked up so far as the last pull request for the merge window. I'm sure there will be a lot more in the future, but let us know if I missed something or if any of the patches (in particular mine, some of which I have not posted before) are not ok.

Arnd Bergmann (6):
ARM: mvebu: fix randconfig builds for pmsu driver
ARM: omap2: fix am43xx dependency on l2x0 cache
ARM: keystone requires ARM_PATCH_PHYS_VIRT bus/arm-cci: add dependency on OF && CPU_V7
remoteproc: da8xx: don't select CMA on no-MMU
ARM: samsung: make SAMSUNG_DMADEV optional

Dan Carpenter (1):
misc: vexpress: fix error handling vexpress_syscfg_regmap_init()

Jason Cooper (1):
ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size

Linus Walleij (1):
ARM: integrator: fix section mismatch problem

Olof Johansson (1):
ARM: exynos: move sysram info to exynos.c

Rob Herring (2):
ARM: exynos: cleanup kconfig option display
ARM: use menuconfig for sub-arch menus

Sachin Kamat (1):
ARM: EXYNOS: Fix compilation warning

Stephen Boyd (1):
ARM: Remove ARCH_HAS_CPUFREQ config option

 arch/arm/Kconfig                                 | 20 +--------------
 arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts |  2 +-
 arch/arm/configs/omap2plus_defconfig             |  1 +
 arch/arm/mach-bcm/Kconfig                        |  7 +++---
 arch/arm/mach-berlin/Kconfig                     |  6 +----
 arch/arm/mach-cns3xxx/Kconfig                    |  7 +++---
 arch/arm/mach-davinci/Kconfig                    |  1 -
 arch/arm/mach-exynos/Kconfig                     |  7 +-----
 arch/arm/mach-exynos/common.h                    |  1 +
 arch/arm/mach-exynos/exynos.c                    | 31 +++++++++++++++++++++++-
 arch/arm/mach-exynos/platsmp.c                   | 26 ++------------------
 arch/arm/mach-highbank/Kconfig                   |  1 -
 arch/arm/mach-imx/Kconfig                        | 10 +++-----
 arch/arm/mach-integrator/Kconfig                 |  2 +-
 arch/arm/mach-integrator/impd1.c                 | 12 ++++++++-
 arch/arm/mach-keystone/Kconfig                   |  1 +
 arch/arm/mach-moxart/Kconfig                     |  2 +-
 arch/arm/mach-mvebu/Kconfig                      |  8 ++----
 arch/arm/mach-mvebu/pmsu.c                       |  9 ++++++-
 arch/arm/mach-nomadik/Kconfig                    |  4 +--
 arch/arm/mach-omap2/Kconfig                      | 11 +++++----
 arch/arm/mach-omap2/common.h                     |  7 ++++++
 arch/arm/mach-prima2/Kconfig                     |  6 ++---
 arch/arm/mach-qcom/Kconfig                       |  6 +----
 arch/arm/mach-s3c24xx/Kconfig                    |  2 +-
 arch/arm/mach-s3c64xx/Kconfig                    |  4 +--
 arch/arm/mach-s5p64x0/Kconfig                    |  6 +++--
 arch/arm/mach-s5pc100/Kconfig                    |  3 ++-
 arch/arm/mach-s5pv210/Kconfig                    |  3 ++-
 arch/arm/mach-shmobile/Kconfig                   |  6 ++---
 arch/arm/mach-spear/Kconfig                      |  1 -
 arch/arm/mach-tegra/Kconfig                      |  8 +++---
 arch/arm/mach-u300/Kconfig                       |  6 +----
 arch/arm/mach-ux500/Kconfig                      |  7 +-----
 arch/arm/mach-vexpress/Kconfig                   |  8 +++---
 arch/arm/mach-vt8500/Kconfig                     |  1 -
 arch/arm/mach-zynq/Kconfig                       |  1 -
 arch/arm/plat-samsung/Kconfig                    | 28 ++++++---------------
 drivers/bus/Kconfig                              |  2 +-
 drivers/misc/vexpress-syscfg.c                   | 12 ++++++---
 drivers/remoteproc/Kconfig                       |  2 +-
 41 files changed, 127 insertions(+), 161 deletions(-)
Signature · 30 lines
1.8.3.2

Cc: andrew at lunn.ch
Cc: arnd at arndb.de
Cc: ben-linux at fluff.org
Cc: dan.carpenter at oracle.com
Cc: daniel.lezcano at linaro.org
Cc: gregory.clement at free-electrons.com
Cc: jason at lakedaemon.net
Cc: khilman at linaro.org
Cc: kgene.kim at samsung.com
Cc: linus.walleij at linaro.org
Cc: lorenzo.pieralisi at arm.com
Cc: ohad at wizery.com
Cc: olof at lixom.net
Cc: pawel.moll at arm.com
Cc: robh at kernel.org
Cc: rtivy at ti.com
Cc: linux at arm.linux.org.uk
Cc: sachin.kamat at linaro.org
Cc: santosh.shilimkar at ti.com
Cc: sebastian.hesselbarth at gmail.com
Cc: shawn.guo at linaro.org
Cc: sboyd at codeaurora.org
Cc: t.figa at samsung.com
Cc: tony at atomide.com
Cc: tushar.behera at linaro.org
Cc: viresh.kumar at linaro.org
Cc:  linux-omap at vger.kernel.org
Cc:  linux-samsung-soc at vger.kernel.org
author maintainer
#1 lore raw

PATCH 1/14 ARM: mvebu: fix randconfig builds for pmsu driver

local_flush_tlb_all() is not available for NOMMU NOSMP builds. The isb() assembly instruction is not available when building a combined ARMv6/v7 kernel, unlike the isb() inline that falls back to the ARMv6 opcode.
If CPUIDLE support is disabled globally, we must not call arm_cpu_suspend. If it is enabled, we should ensure that it is available.

Cc Jason Cooper <[email protected]>
Cc Andrew Lunn <[email protected]>
Cc Gregory Clement <[email protected]>
Cc Sebastian Hesselbarth <[email protected]>
---
 arch/arm/mach-mvebu/Kconfig | 1 +
 arch/arm/mach-mvebu/pmsu.c  | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)
arch/arm/mach-mvebu/Kconfig +1 -0
index 6090b9e..bcfe094 100644
@@ -18,6 +18,7 @@ menu "Marvell EBU SoC variants"
 config MACH_MVEBU_V7
 	bool
 	select ARMADA_370_XP_TIMER
+	select ARM_CPU_SUSPEND if CPU_IDLE
 	select CACHE_L2X0
 
 config MACH_ARMADA_370
arch/arm/mach-mvebu/pmsu.c +8 -1
index 53a55c8..14351bf 100644
@@ -26,6 +26,7 @@
 #include <linux/platform_device.h>
 #include <linux/smp.h>
 #include <linux/resource.h>
+#include <asm/barrier.h>
 #include <asm/cacheflush.h>
 #include <asm/cp15.h>
 #include <asm/smp_plat.h>
@@ -200,7 +201,9 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
 	/* If we are here, wfi failed. As processors run out of
 	 * coherency for some time, tlbs might be stale, so flush them
 	 */
+#ifdef CONFIG_MMU
 	local_flush_tlb_all();
+#endif
 
 	ll_enable_coherency();
 
@@ -210,9 +213,10 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
 	"tst	%0, #(1 << 2) \n\t"
 	"orreq	%0, %0, #(1 << 2) \n\t"
 	"mcreq	p15, 0, %0, c1, c0, 0 \n\t"
-	"isb	"
 	: : "r" (0));
 
+	isb();
+
 	pr_warn("Failed to suspend the system\n");
 
 	return 0;
@@ -220,6 +224,9 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
 
 static int armada_370_xp_cpu_suspend(unsigned long deepidle)
 {
+	if (!IS_ENABLED(CONFIG_CPU_IDLE))
+		return -ENODEV;
+
 	return cpu_suspend(deepidle, do_armada_370_xp_cpu_suspend);
 }
 
Signature · 1 line
1.8.3.2
#2 lore raw

PATCH 1/14 ARM: mvebu: fix randconfig builds for pmsu driver

Dear Arnd Bergmann,

arch/arm/mach-mvebu/pmsu.c static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle) · line 206

Quoted 7 lines · Arnd Bergmann
arch/arm/mach-mvebu/pmsu.c +2 -0
@@ -200,7 +201,9 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
 	/* If we are here, wfi failed. As processors run out of
 	 * coherency for some time, tlbs might be stale, so flush them
 	 */
+#ifdef CONFIG_MMU
 	local_flush_tlb_all();
+#endif

So noMMU builds are supported in a single image with MMU builds? Instead of having to #ifdef all around the place, wouldn't it be better for the noMMU headers to provide an empty definition for this function?

arch/arm/mach-mvebu/pmsu.c static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle) · line 231

Quoted 7 lines
arch/arm/mach-mvebu/pmsu.c +3 -0
 static int armada_370_xp_cpu_suspend(unsigned long deepidle)
 {
+	if (!IS_ENABLED(CONFIG_CPU_IDLE))
+		return -ENODEV;
+
 	return cpu_suspend(deepidle, do_armada_370_xp_cpu_suspend);
 }

This unfortunately isn't really correct, and the patch I sent in "[PATCH] ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms" on June, 11th already fixes the cpu_suspend()/cpu_resume() problem.

The issue with your solution is that it assumes this function is only used for cpuidle. That is indeed the case in v3.16, but will be wrong as soon as we add CPU hotplug support, which I have posted on May, 30th in "[PATCH 0/5] CPU hotplug for Marvell Armada XP", and which I hope to see included in v3.17.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
author maintainer
#3 lore raw

PATCH 1/14 ARM: mvebu: fix randconfig builds for pmsu driver

Quoted 4 lines · On Tuesday 17 June 2014 16:00:11 Thomas Petazzoni wrote:

Dear Arnd Bergmann,

On Fri, 13 Jun 2014 18:01:03 +0200, Arnd Bergmann wrote:

Quoted 9 lines

arch/arm/mach-mvebu/pmsu.c static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle) · line 206

Quoted 7 lines
arch/arm/mach-mvebu/pmsu.c +2 -0
@@ -200,7 +201,9 @@ static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle)
      /* If we are here, wfi failed. As processors run out of
       * coherency for some time, tlbs might be stale, so flush them
       */
+#ifdef CONFIG_MMU
      local_flush_tlb_all();
+#endif

So noMMU builds are supported in a single image with MMU builds?

It's not supported yet, but I have a patch to do that, which I used for testing this code. I try to have the platform code ready before submitting the main patch.

Quoted 2 lines

Instead of having to #ifdef all around the place, wouldn't it be better for the noMMU headers to provide an empty definition for this function?

Yes, good point, it should probably be part of the main patch then.

Quoted 8 lines

arch/arm/mach-mvebu/pmsu.c static noinline int do_armada_370_xp_cpu_suspend(unsigned long deepidle) · line 231

Quoted 7 lines
arch/arm/mach-mvebu/pmsu.c +3 -0
 static int armada_370_xp_cpu_suspend(unsigned long deepidle)
 {
+     if (!IS_ENABLED(CONFIG_CPU_IDLE))
+             return -ENODEV;
+
      return cpu_suspend(deepidle, do_armada_370_xp_cpu_suspend);
 }
Quoted 4 lines

This unfortunately isn't really correct, and the patch I sent in "[PATCH] ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms" on June, 11th already fixes the cpu_suspend()/cpu_resume() problem.

ok.

Quoted 5 lines

The issue with your solution is that it assumes this function is only used for cpuidle. That is indeed the case in v3.16, but will be wrong as soon as we add CPU hotplug support, which I have posted on May, 30th in "[PATCH 0/5] CPU hotplug for Marvell Armada XP", and which I hope to see included in v3.17.

Right. I'll drop this patch from the submission then. You came just in time, as I had originally planned to send it out this morning.

I'll also follow up with a separate patch to address the isb() issue.

Arnd

#4 lore raw

PATCH 1/14 ARM: mvebu: fix randconfig builds for pmsu driver

Dear Arnd Bergmann,

Quoted 5 lines · Arnd Bergmann
Quoted 1 line

So noMMU builds are supported in a single image with MMU builds?

It's not supported yet, but I have a patch to do that, which I used for testing this code. I try to have the platform code ready before submitting the main patch.

Ok.

Quoted 13 lines
Quoted 4 lines

This unfortunately isn't really correct, and the patch I sent in "[PATCH] ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms" on June, 11th already fixes the cpu_suspend()/cpu_resume() problem.

ok.

Quoted 5 lines

The issue with your solution is that it assumes this function is only used for cpuidle. That is indeed the case in v3.16, but will be wrong as soon as we add CPU hotplug support, which I have posted on May, 30th in "[PATCH 0/5] CPU hotplug for Marvell Armada XP", and which I hope to see included in v3.17.

Quoted 4 lines

Right. I'll drop this patch from the submission then. You came just in time, as I had originally planned to send it out this morning.

I'll also follow up with a separate patch to address the isb() issue.

Ok, thanks a lot!

So, should my patch adding the "select ARM_CPU_SUSPEND" be taken by Jason and then pushed to you, or will you apply it directly?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
author maintainer
#5 lore raw

PATCH 1/14 ARM: mvebu: fix randconfig builds for pmsu driver

Quoted 17 lines · On Tuesday 17 June 2014 17:17:00 Thomas Petazzoni wrote:
Quoted 17 lines
Quoted 5 lines

This unfortunately isn't really correct, and the patch I sent in "[PATCH] ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms" on June, 11th already fixes the cpu_suspend()/cpu_resume() problem.

ok.

Quoted 5 lines

The issue with your solution is that it assumes this function is only used for cpuidle. That is indeed the case in v3.16, but will be wrong as soon as we add CPU hotplug support, which I have posted on May, 30th in "[PATCH 0/5] CPU hotplug for Marvell Armada XP", and which I hope to see included in v3.17.

Right. I'll drop this patch from the submission then. You came just in time, as I had originally planned to send it out this morning.

Quoted 6 lines
Quoted 1 line

I'll also follow up with a separate patch to address the isb() issue.

Ok, thanks a lot!

So, should my patch adding the "select ARM_CPU_SUSPEND" be taken by Jason and then pushed to you, or will you apply it directly?

I'll wait for Jason to pick it up. It was clearly a mistake for me to include my own patch directly and without an explicit Ack, I'll go back to the normal way of doing things ;-)

ARnd

author maintainer
#6 lore raw

PATCH 2/14 ARM: omap2: fix am43xx dependency on l2x0 cache

In reply to Arnd Bergmann

Commit d941f86fad41b ("ARM: l2c: AM43x: add L2 cache support") enabled the L2 cache support for the am43xx SoC, but caused a build regression when the driver for that cache controller is disabled:

arch/arm/mach-omap2/built-in.o: In function `am43xx_init_early':
:(.init.text+0xb20): undefined reference to `omap_l2_cache_init'

This did not happen for OMAP4, which has the same call, but enables the l2x0 driver unconditionally. We could do the same thing for am43xx, but it seems better to allow turning it off and make the code work in either case.

This adds an inline wrapper for omap_l2_cache_init for the disabled case, and removes the 'select' from OMAP4 so it becomes a user visible option.

Cc linux-omap at vger.kernel.org
Cc Tony Lindgren <[email protected]>
---
 arch/arm/configs/omap2plus_defconfig | 1 +
 arch/arm/mach-omap2/Kconfig          | 1 -
 arch/arm/mach-omap2/common.h         | 7 +++++++
 3 files changed, 8 insertions(+), 1 deletion(-)
arch/arm/configs/omap2plus_defconfig +1 -0
index 59066cf..536a137 100644
@@ -32,6 +32,7 @@ CONFIG_SOC_OMAP5=y
 CONFIG_SOC_AM33XX=y
 CONFIG_SOC_AM43XX=y
 CONFIG_SOC_DRA7XX=y
+CONFIG_CACHE_L2X0=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_ARM_ERRATA_411920=y
 CONFIG_SMP=y
arch/arm/mach-omap2/Kconfig +0 -1
index 0ba4826..2085b3d 100644
@@ -28,7 +28,6 @@ config ARCH_OMAP4
 	select ARM_CPU_SUSPEND if PM
 	select ARM_ERRATA_720789
 	select ARM_GIC
-	select CACHE_L2X0
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
 	select OMAP_INTERCONNECT
arch/arm/mach-omap2/common.h +7 -0
index ff02973..a373d50 100644
@@ -91,7 +91,14 @@ extern void omap3_sync32k_timer_init(void);
 extern void omap3_secure_sync32k_timer_init(void);
 extern void omap3_gptimer_timer_init(void);
 extern void omap4_local_timer_init(void);
+#ifdef CONFIG_CACHE_L2X0
 int omap_l2_cache_init(void);
+#else
+static inline int omap_l2_cache_init(void)
+{
+	return 0;
+}
+#endif
 extern void omap5_realtime_timer_init(void);
 
 void omap2420_init_early(void);
Signature · 1 line
1.8.3.2
maintainer
#7 lore raw

PATCH 2/14 ARM: omap2: fix am43xx dependency on l2x0 cache

Quoted 12 lines · Arnd Bergmann

Commit d941f86fad41b ("ARM: l2c: AM43x: add L2 cache support") enabled the L2 cache support for the am43xx SoC, but caused a build regression when the driver for that cache controller is disabled:

arch/arm/mach-omap2/built-in.o: In function `am43xx_init_early':
:(.init.text+0xb20): undefined reference to `omap_l2_cache_init'

This did not happen for OMAP4, which has the same call, but enables the l2x0 driver unconditionally. We could do the same thing for am43xx, but it seems better to allow turning it off and make the code work in either case.

Quoted 6 lines

This adds an inline wrapper for omap_l2_cache_init for the disabled case, and removes the 'select' from OMAP4 so it becomes a user visible option.

Cc linux-omap at vger.kernel.org
author maintainer
#8 lore raw

PATCH 3/14 ARM: keystone requires ARM_PATCH_PHYS_VIRT

In reply to Arnd Bergmann

The dynamic relocation that the keystone platform performs only works if we can pick the phys offset at boot time. It's possible that there is another solution for this, but this is the easiest workaround. Kernels with ARM_PATCH_PHYS_VIRT are not portable across platforms, and I see no reason why anyone would run a kernel without ARM_PATCH_PHYS_VIRT on keystone.

Cc Santosh Shilimkar <[email protected]>
---
 arch/arm/mach-keystone/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/mach-keystone/Kconfig +1 -0
index f50bc93..98a156a 100644
@@ -1,6 +1,7 @@
 config ARCH_KEYSTONE
 	bool "Texas Instruments Keystone Devices"
 	depends on ARCH_MULTI_V7
+	depends on ARM_PATCH_PHYS_VIRT
 	select ARM_GIC
 	select HAVE_ARM_ARCH_TIMER
 	select CLKSRC_MMIO
Signature · 1 line
1.8.3.2
#9 lore raw

PATCH 3/14 ARM: keystone requires ARM_PATCH_PHYS_VIRT

Quoted 11 lines · Arnd Bergmann

The dynamic relocation that the keystone platform performs only works if we can pick the phys offset at boot time. It's possible that there is another solution for this, but this is the easiest workaround. Kernels with ARM_PATCH_PHYS_VIRT are not portable across platforms, and I see no reason why anyone would run a kernel without ARM_PATCH_PHYS_VIRT on keystone.

Cc Santosh Shilimkar <[email protected]>

---

Agree.

#10 lore raw

PATCH 3/14 ARM: keystone requires ARM_PATCH_PHYS_VIRT

In reply to Arnd Bergmann
Quoted 19 lines · Arnd Bergmann

The dynamic relocation that the keystone platform performs only works if we can pick the phys offset at boot time. It's possible that there is another solution for this, but this is the easiest workaround. Kernels with ARM_PATCH_PHYS_VIRT are not portable across platforms, and I see no reason why anyone would run a kernel without ARM_PATCH_PHYS_VIRT on keystone.

Cc Santosh Shilimkar <[email protected]>
---
 arch/arm/mach-keystone/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/mach-keystone/Kconfig +0 -0
index f50bc93..98a156a 100644

arch/arm/mach-keystone/Kconfig line 4

Quoted 4 lines
arch/arm/mach-keystone/Kconfig +1 -0
@@ -1,6 +1,7 @@
 config ARCH_KEYSTONE
        bool "Texas Instruments Keystone Devices"
        depends on ARCH_MULTI_V7
+       depends on ARM_PATCH_PHYS_VIRT

Why is this needed when multi-platform already selects this?

Rob

author maintainer
#11 lore raw

PATCH 3/14 ARM: keystone requires ARM_PATCH_PHYS_VIRT

Quoted 15 lines · On Wednesday 18 June 2014 09:39:57 Rob Herring wrote:
Quoted 14 lines · Arnd Bergmann

The dynamic relocation that the keystone platform performs only works if we can pick the phys offset at boot time. It's possible that there is another solution for this, but this is the easiest workaround. Kernels with ARM_PATCH_PHYS_VIRT are not portable across platforms, and I see no reason why anyone would run a kernel without ARM_PATCH_PHYS_VIRT on keystone.

Cc Santosh Shilimkar <[email protected]>
---
 arch/arm/mach-keystone/Kconfig | 1 +
 1 file changed, 1 insertion(+)
Quoted 12 lines

arch/arm/mach-keystone/Kconfig line 4

Quoted 9 lines
arch/arm/mach-keystone/Kconfig +1 -0
index f50bc93..98a156a 100644
@@ -1,6 +1,7 @@
 config ARCH_KEYSTONE
        bool "Texas Instruments Keystone Devices"
        depends on ARCH_MULTI_V7
+       depends on ARM_PATCH_PHYS_VIRT

Why is this needed when multi-platform already selects this?

I have a patch to make ARM_PATCH_PHYS_VIRT optional for multi-platform, which I plan to post at some point in the next weeks. This will let us enable NOMMU builds and other things in platforms that are converted to multiplatform (at the obvious expense of losing generality for that particular build). Most other platforms can work with or without ARM_PATCH_PHYS_VIRT, but keystone lost that ability.

Arnd

#12 lore raw

PATCH 3/14 ARM: keystone requires ARM_PATCH_PHYS_VIRT

In reply to Arnd Bergmann
Quoted 4 lines · Arnd Bergmann

The dynamic relocation that the keystone platform performs only works if we can pick the phys offset at boot time. It's possible that there is another solution for this, but this is the easiest workaround. Kernels with ARM_PATCH_PHYS_VIRT

s/with/without/

Quoted 25 lines

are not portable across platforms, and I see no reason why anyone would run a kernel without ARM_PATCH_PHYS_VIRT on keystone.

Cc Santosh Shilimkar <[email protected]>
---
 arch/arm/mach-keystone/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/mach-keystone/Kconfig +1 -0
index f50bc93..98a156a 100644
@@ -1,6 +1,7 @@
 config ARCH_KEYSTONE
 	bool "Texas Instruments Keystone Devices"
 	depends on ARCH_MULTI_V7
+	depends on ARM_PATCH_PHYS_VIRT
 	select ARM_GIC
 	select HAVE_ARM_ARCH_TIMER
 	select CLKSRC_MMIO
Signature · 1 line
1.8.3.2
author maintainer
#13 lore raw

PATCH 4/14 bus/arm-cci: add dependency on OF && CPU_V7

In reply to Arnd Bergmann

The arm-cci code uses device tree helpers for initialization that don't work on kernels built without CONFIG_OF. Further, it contains an inline assembly in cci_enable_port_for_self() that uses ARMv7 instructions and fails to build when targetting other ARM instruction set versions.

This works around both issues by limiting the scope of the Kconfig symbol to platforms that can actually build this driver cleanly.

---
 drivers/bus/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/bus/Kconfig +1 -1
index a118ec1..1f37d98 100644
@@ -45,7 +45,7 @@ config OMAP_INTERCONNECT
 
 config ARM_CCI
 	bool "ARM CCI driver support"
-	depends on ARM
+	depends on ARM && OF && CPU_V7
 	help
 	  Driver supporting the CCI cache coherent interconnect for ARM
 	  platforms.
Signature · 1 line
1.8.3.2
author maintainer
#14 lore raw

PATCH 5/14 remoteproc: da8xx: don't select CMA on no-MMU

In reply to Arnd Bergmann

We can only use CMA on systems that have an MMU, because of the requirement to use memory migration. NOMMU systems are rather constrained to start with, but it seems reasonable to assume that DMA allocations can still succeed in the constrained case for remoteproc on NOMMU, so this patch changes the da8xx implementation to not rely on CMA when the MMU is disabled.

Cc Ohad Ben-Cohen <[email protected]>
Cc Robert Tivy <[email protected]>
---
 drivers/remoteproc/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/remoteproc/Kconfig +1 -1
index ce1743d..5e343ba 100644
@@ -44,7 +44,7 @@ config STE_MODEM_RPROC
 config DA8XX_REMOTEPROC
 	tristate "DA8xx/OMAP-L13x remoteproc support"
 	depends on ARCH_DAVINCI_DA8XX
-	select CMA
+	select CMA if MMU
 	select REMOTEPROC
 	select RPMSG
 	help
Signature · 1 line
1.8.3.2
author maintainer
#15 lore raw

PATCH 6/14 ARM: samsung: make SAMSUNG_DMADEV optional

In reply to Arnd Bergmann

The only remaining driver using the samsung dmadev code is the broken samsung-ac97 sound driver. However, as found by Russell's autobuilder, the elaborate dependency chains around it cause problems with circular dependencies.

This is an attempt to simplify those dependencies by making the SAMSUNG_DMADEV option user-selectable. I also try to keep the default settings for all related options unchanged, so we don't introduce any regressions against earlier testing on linux-next.

In particular, all s3c64xx and s5p* platforms keep selecting the pl330 and pl08x drivers they require, but the select statement is now moved towards the main platform option, and it remains optional by unselecting CONFIG_DMADEVICES.

---
 arch/arm/mach-s3c24xx/Kconfig |  2 +-
 arch/arm/mach-s3c64xx/Kconfig |  4 ++--
 arch/arm/mach-s5p64x0/Kconfig |  6 ++++--
 arch/arm/mach-s5pc100/Kconfig |  3 ++-
 arch/arm/mach-s5pv210/Kconfig |  3 ++-
 arch/arm/plat-samsung/Kconfig | 11 +++++------
 6 files changed, 16 insertions(+), 13 deletions(-)
arch/arm/mach-s3c24xx/Kconfig +1 -1
index 04284de..ad5316a 100644
@@ -117,7 +117,7 @@ config S3C24XX_SETUP_TS
 	  Compile in platform device definition for Samsung TouchScreen.
 
 config S3C24XX_DMA
-	bool "S3C2410 DMA support"
+	bool "S3C2410 DMA support (deprecated)"
 	select S3C_DMA
 	help
 	  S3C2410 DMA support. This is needed for drivers like sound which
arch/arm/mach-s3c64xx/Kconfig +2 -2
index 3136d86..26ca242 100644
@@ -18,9 +18,9 @@ config CPU_S3C6410
 	  Enable S3C6410 CPU support
 
 config S3C64XX_PL080
-	bool "S3C64XX DMA using generic PL08x driver"
+	def_bool DMADEVICES
+	select ARM_AMBA
 	select AMBA_PL08X
-	select SAMSUNG_DMADEV
 
 config S3C64XX_SETUP_SDHCI
 	bool
arch/arm/mach-s5p64x0/Kconfig +4 -2
index bb2111b..26003e2 100644
@@ -9,16 +9,18 @@ if ARCH_S5P64X0
 
 config CPU_S5P6440
 	bool
+	select ARM_AMBA
+	select PL330_DMA if DMADEVICES
 	select S5P_SLEEP if PM
-	select SAMSUNG_DMADEV
 	select SAMSUNG_WAKEMASK if PM
 	help
 	  Enable S5P6440 CPU support
 
 config CPU_S5P6450
 	bool
+	select ARM_AMBA
+	select PL330_DMA if DMADEVICES
 	select S5P_SLEEP if PM
-	select SAMSUNG_DMADEV
 	select SAMSUNG_WAKEMASK if PM
 	help
 	  Enable S5P6450 CPU support
arch/arm/mach-s5pc100/Kconfig +2 -1
index 15170be..c5e3a96 100644
@@ -9,8 +9,9 @@ if ARCH_S5PC100
 
 config CPU_S5PC100
 	bool
+	select ARM_AMBA
+	select PL330_DMA if DMADEVICES
 	select S5P_EXT_INT
-	select SAMSUNG_DMADEV
 	help
 	  Enable S5PC100 CPU support
 
arch/arm/mach-s5pv210/Kconfig +2 -1
index 8c3abe5..f60f286 100644
@@ -11,10 +11,11 @@ if ARCH_S5PV210
 
 config CPU_S5PV210
 	bool
+	select ARM_AMBA
+	select PL330_DMA if DMADEVICES
 	select S5P_EXT_INT
 	select S5P_PM if PM
 	select S5P_SLEEP if PM
-	select SAMSUNG_DMADEV
 	help
 	  Enable S5PV210 CPU support
 
arch/arm/plat-samsung/Kconfig +5 -6
index 243dfcb..91911e4 100644
@@ -407,17 +407,16 @@ config SAMSUNG_PM_GPIO
 	  Include legacy GPIO power management code for platforms not using
 	  pinctrl-samsung driver.
 
-endif
-
 config SAMSUNG_DMADEV
-	bool
-	select ARM_AMBA
+	bool "Use legacy Samsung DMA abstraction"
+	depends on CPU_S5PV210 || CPU_S5PC100 || ARCH_S5P64X0 || ARCH_S3C64XX
 	select DMADEVICES
-	select PL330_DMA if (ARCH_EXYNOS5 || ARCH_EXYNOS4 || CPU_S5PV210 || CPU_S5PC100 || \
-					CPU_S5P6450 || CPU_S5P6440)
+	default y
 	help
 	  Use DMA device engine for PL330 DMAC.
 
+endif
+
 config S5P_DEV_MFC
 	bool
 	help
Signature · 1 line
1.8.3.2
author maintainer
#16 lore raw

PATCH 7/14 ARM: mvebu: DT: fix OpenBlocks AX3-4 RAM size

In reply to Arnd Bergmann

From: Jason Cooper <[email protected]>

The OpenBlocks AX3-4 has a non-DT bootloader. It also comes with 1GB of soldered on RAM, and a DIMM slot for expansion.

Unfortunately, atags_to_fdt() doesn't work in big-endian mode, so we see the following failure when attempting to boot a big-endian kernel:

686 slab pages
17 pages shared
0 pages swap cached
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name

  Kernel panic - not syncing: Out of memory and no killable processes...

  CPU: 1 PID: 351 Comm: kworker/u4:0 Not tainted 3.15.0-rc8-next-20140603 #1
  [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
  [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
  [<c0802500>] (dump_stack) from [<c0800068>] (panic+0x90/0x21c)
  [<c0800068>] (panic) from [<c02b5704>] (out_of_memory+0x320/0x340)
  [<c02b5704>] (out_of_memory) from [<c02b93a0>] (__alloc_pages_nodemask+0x874/0x930)
  [<c02b93a0>] (__alloc_pages_nodemask) from [<c02d446c>] (handle_mm_fault+0x744/0x96c)
  [<c02d446c>] (handle_mm_fault) from [<c02cf250>] (__get_user_pages+0xd0/0x4c0)
  [<c02cf250>] (__get_user_pages) from [<c02f3598>] (get_arg_page+0x54/0xbc)
  [<c02f3598>] (get_arg_page) from [<c02f3878>] (copy_strings+0x278/0x29c)
  [<c02f3878>] (copy_strings) from [<c02f38bc>] (copy_strings_kernel+0x20/0x28)
  [<c02f38bc>] (copy_strings_kernel) from [<c02f4f1c>] (do_execve+0x3a8/0x4c8)
  [<c02f4f1c>] (do_execve) from [<c025ac10>] (____call_usermodehelper+0x15c/0x194)
  [<c025ac10>] (____call_usermodehelper) from [<c020e9b8>] (ret_from_fork+0x14/0x3c)
  CPU0: stopping
  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc8-next-20140603 #1
  [<c0215a54>] (unwind_backtrace) from [<c021160c>] (show_stack+0x10/0x14)
  [<c021160c>] (show_stack) from [<c0802500>] (dump_stack+0x78/0x94)
  [<c0802500>] (dump_stack) from [<c021429c>] (handle_IPI+0x138/0x174)
  [<c021429c>] (handle_IPI) from [<c02087f0>] (armada_370_xp_handle_irq+0xb0/0xcc)
  [<c02087f0>] (armada_370_xp_handle_irq) from [<c0212100>] (__irq_svc+0x40/0x50)
  Exception stack(0xc0b6bf68 to 0xc0b6bfb0)
  bf60:                   e9fad598 00000000 00f509a3 00000000 c0b6a000 c0b724c4
  bf80: c0b72458 c0b6a000 00000000 00000000 c0b66da0 c0b6a000 00000000 c0b6bfb0
  bfa0: c027bb94 c027bb24 60000313 ffffffff
  [<c0212100>] (__irq_svc) from [<c027bb24>] (cpu_startup_entry+0x54/0x214)
  [<c027bb24>] (cpu_startup_entry) from [<c0ac5b30>] (start_kernel+0x318/0x37c)
  [<c0ac5b30>] (start_kernel) from [<00208078>] (0x208078)
  ---[ end Kernel panic - not syncing: Out of memory and no killable processes...

A similar failure will also occur if ARM_ATAG_DTB_COMPAT isn't selected.

Fix this by setting a sane default (1 GB) in the dts file.

---
 arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts +1 -1
index e5c6a04..4e5a59e 100644
@@ -25,7 +25,7 @@
 
 	memory {
 		device_type = "memory";
-		reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */
+		reg = <0 0x00000000 0 0x40000000>; /* 1 GB soldered on */
 	};
 
 	soc {
Signature · 1 line
1.8.3.2
author maintainer
#17 lore raw

PATCH 8/14 ARM: integrator: fix section mismatch problem

In reply to Arnd Bergmann

From: Linus Walleij <[email protected]>

This addresses a section mismatch problem in the IM-PD1 driver in the Integrator/AP.

The IM-PD1 contains a VIC interrupt controller and therefore the driver calls vic_init_cascaded() which is marked __init as irqchips are simply not hot-pluggable and specifically the VIC is assumed to initiate only on boot.

However the module driver model of the Integrator LM bus assumes that logic tile drivers can be probed at runtime. This is not really the case for IM-PD1: these tiles are detected at boot and they cannot be plugged into a running system. Before this patch it is of course possible to modprobe them later.

By first forcing the IM-PD1 to bool we make sure this driver gets compiled into the kernel, and we know it will be probed only at boot time when the tiles are detected, so we can tag its probe function __init_refok as we know it won't be called after boot now, and the section mismatch problem goes away.

As a side effect, sysfs binding from userspace becomes impossible, so we tag the driver to suppress the bind/unbind sysfs attributes.

---
 arch/arm/mach-integrator/Kconfig |  2 +-
 arch/arm/mach-integrator/impd1.c | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)
arch/arm/mach-integrator/Kconfig +1 -1
index ba43321..64f8e25 100644
@@ -28,7 +28,7 @@ config ARCH_CINTEGRATOR
 	bool
 
 config INTEGRATOR_IMPD1
-	tristate "Include support for Integrator/IM-PD1"
+	bool "Include support for Integrator/IM-PD1"
 	depends on ARCH_INTEGRATOR_AP
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_VIC
arch/arm/mach-integrator/impd1.c +11 -1
index 0e870ea..3ce8807 100644
@@ -308,7 +308,12 @@ static struct impd1_device impd1_devs[] = {
  */
 #define IMPD1_VALID_IRQS 0x00000bffU
 
-static int __init impd1_probe(struct lm_device *dev)
+/*
+ * As this module is bool, it is OK to have this as __init_refok() - no
+ * probe calls will be done after the initial system bootup, as devices
+ * are discovered as part of the machine startup.
+ */
+static int __init_refok impd1_probe(struct lm_device *dev)
 {
 	struct impd1_module *impd1;
 	int irq_base;
@@ -397,6 +402,11 @@ static void impd1_remove(struct lm_device *dev)
 static struct lm_driver impd1_driver = {
 	.drv = {
 		.name	= "impd1",
+		/*
+		 * As we're dropping the probe() function, suppress driver
+		 * binding from sysfs.
+		 */
+		.suppress_bind_attrs = true,
 	},
 	.probe		= impd1_probe,
 	.remove		= impd1_remove,
Signature · 1 line
1.8.3.2
author maintainer
#18 lore raw

PATCH 9/14 ARM: Remove ARCH_HAS_CPUFREQ config option

In reply to Arnd Bergmann

From: Stephen Boyd <[email protected]>

This config exists entirely to hide the cpufreq menu from the kernel configuration unless a platform has selected it. Nothing is actually built if this config is 'Y' and it just leads to more patches that add a select under a platform Kconfig so that some other CPUfreq option can be chosen. Let's remove the option so that we can always enable CPUfreq drivers on ARM platforms.

---
 arch/arm/Kconfig               | 17 -----------------
 arch/arm/mach-davinci/Kconfig  |  1 -
 arch/arm/mach-exynos/Kconfig   |  1 -
 arch/arm/mach-highbank/Kconfig |  1 -
 arch/arm/mach-imx/Kconfig      |  3 ---
 arch/arm/mach-mvebu/Kconfig    |  1 -
 arch/arm/mach-omap2/Kconfig    |  1 -
 arch/arm/mach-shmobile/Kconfig |  2 --
 arch/arm/mach-spear/Kconfig    |  1 -
 arch/arm/mach-tegra/Kconfig    |  1 -
 arch/arm/mach-ux500/Kconfig    |  1 -
 arch/arm/mach-vexpress/Kconfig |  1 -
 arch/arm/mach-vt8500/Kconfig   |  1 -
 arch/arm/mach-zynq/Kconfig     |  1 -
 14 files changed, 33 deletions(-)
arch/arm/Kconfig +0 -17
index 87b63fd..9b8f528 100644
@@ -175,13 +175,6 @@ config ARCH_HAS_ILOG2_U32
 config ARCH_HAS_ILOG2_U64
 	bool
 
-config ARCH_HAS_CPUFREQ
-	bool
-	help
-	  Internal node to signify that the ARCH has CPUFREQ support
-	  and that the relevant menu configurations are displayed for
-	  it.
-
 config ARCH_HAS_BANDGAP
 	bool
 
@@ -318,7 +311,6 @@ config ARCH_MULTIPLATFORM
 
 config ARCH_INTEGRATOR
 	bool "ARM Ltd. Integrator family"
-	select ARCH_HAS_CPUFREQ
 	select ARM_AMBA
 	select ARM_PATCH_PHYS_VIRT
 	select AUTO_ZRELADDR
@@ -538,7 +530,6 @@ config ARCH_DOVE
 
 config ARCH_KIRKWOOD
 	bool "Marvell Kirkwood"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select CPU_FEROCEON
 	select GENERIC_CLOCKEVENTS
@@ -637,7 +628,6 @@ config ARCH_LPC32XX
 config ARCH_PXA
 	bool "PXA2xx/PXA3xx-based"
 	depends on MMU
-	select ARCH_HAS_CPUFREQ
 	select ARCH_MTD_XIP
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_CPU_SUSPEND if PM
@@ -707,7 +697,6 @@ config ARCH_RPC
 
 config ARCH_SA1100
 	bool "SA1100-based"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_MTD_XIP
 	select ARCH_REQUIRE_GPIOLIB
 	select ARCH_SPARSEMEM_ENABLE
@@ -725,7 +714,6 @@ config ARCH_SA1100
 
 config ARCH_S3C24XX
 	bool "Samsung S3C24XX SoCs"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select ATAGS
 	select CLKDEV_LOOKUP
@@ -746,7 +734,6 @@ config ARCH_S3C24XX
 
 config ARCH_S3C64XX
 	bool "Samsung S3C64XX"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_AMBA
 	select ARM_VIC
@@ -809,7 +796,6 @@ config ARCH_S5PC100
 
 config ARCH_S5PV210
 	bool "Samsung S5PV210/S5PC110"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	select ARCH_SPARSEMEM_ENABLE
 	select ATAGS
@@ -845,7 +831,6 @@ config ARCH_DAVINCI
 config ARCH_OMAP1
 	bool "TI OMAP1"
 	depends on MMU
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	select ARCH_OMAP
 	select ARCH_REQUIRE_GPIOLIB
@@ -2109,9 +2094,7 @@ endmenu
 
 menu "CPU Power Management"
 
-if ARCH_HAS_CPUFREQ
 source "drivers/cpufreq/Kconfig"
-endif
 
 source "drivers/cpuidle/Kconfig"
 
arch/arm/mach-davinci/Kconfig +0 -1
index db18ef8..584e8d4 100644
@@ -39,7 +39,6 @@ config ARCH_DAVINCI_DA830
 config ARCH_DAVINCI_DA850
 	bool "DA850/OMAP-L138/AM18x based system"
 	select ARCH_DAVINCI_DA8XX
-	select ARCH_HAS_CPUFREQ
 	select CP_INTC
 
 config ARCH_DAVINCI_DA8XX
arch/arm/mach-exynos/Kconfig +0 -1
index d58995c9..845031b 100644
@@ -10,7 +10,6 @@
 config ARCH_EXYNOS
 	bool "Samsung EXYNOS" if ARCH_MULTI_V7
 	select ARCH_HAS_BANDGAP
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_AMBA
arch/arm/mach-highbank/Kconfig +0 -1
index 830b76e..a5960e2 100644
@@ -1,7 +1,6 @@
 config ARCH_HIGHBANK
 	bool "Calxeda ECX-1000/2000 (Highbank/Midway)" if ARCH_MULTI_V7
 	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	select ARCH_HAS_OPP
 	select ARCH_SUPPORTS_BIG_ENDIAN
arch/arm/mach-imx/Kconfig +0 -3
index 8d42eab..b232340 100644
@@ -1,6 +1,5 @@
 config ARCH_MXC
 	bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_CPU_SUSPEND if PM
@@ -99,7 +98,6 @@ config SOC_IMX25
 
 config SOC_IMX27
 	bool
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select CPU_ARM926T
 	select IMX_HAVE_IOMUX_V1
@@ -124,7 +122,6 @@ config SOC_IMX35
 
 config SOC_IMX5
 	bool
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select ARCH_MXC_IOMUX_V3
 	select MXC_TZIC
arch/arm/mach-mvebu/Kconfig +0 -1
index bcfe094..74e1ff2 100644
@@ -85,7 +85,6 @@ config MACH_DOVE
 
 config MACH_KIRKWOOD
 	bool "Marvell Kirkwood boards" if ARCH_MULTI_V5
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select CPU_FEROCEON
 	select KIRKWOOD_CLK
arch/arm/mach-omap2/Kconfig +0 -1
index 2085b3d..0006012 100644
@@ -79,7 +79,6 @@ config SOC_DRA7XX
 config ARCH_OMAP2PLUS
 	bool
 	select ARCH_HAS_BANDGAP
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_HOLES_MEMORYMODEL
 	select ARCH_OMAP
 	select ARCH_REQUIRE_GPIOLIB
arch/arm/mach-shmobile/Kconfig +0 -2
index dbd954e..270e5ca 100644
@@ -85,7 +85,6 @@ config ARCH_R8A73A4
 	select CPU_V7
 	select SH_CLK_CPG
 	select RENESAS_IRQC
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select SYS_SUPPORTS_SH_CMT
 	select SYS_SUPPORTS_SH_TMU
@@ -264,7 +263,6 @@ config MACH_KOELSCH
 config MACH_KZM9G
 	bool "KZM-A9-GT board"
 	depends on ARCH_SH73A0
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select ARCH_REQUIRE_GPIOLIB
 	select REGULATOR_FIXED_VOLTAGE if REGULATOR
arch/arm/mach-spear/Kconfig +0 -1
index 0786249..90df202 100644
@@ -14,7 +14,6 @@ if PLAT_SPEAR
 config ARCH_SPEAR13XX
 	bool "ST SPEAr13xx"
 	depends on ARCH_MULTI_V7 || PLAT_SPEAR_SINGLE
-	select ARCH_HAS_CPUFREQ
 	select ARM_GIC
 	select GPIO_SPEAR_SPICS
 	select HAVE_ARM_SCU if SMP
arch/arm/mach-tegra/Kconfig +0 -1
index e16999e..8981ed4 100644
@@ -1,6 +1,5 @@
 config ARCH_TEGRA
 	bool "NVIDIA Tegra" if ARCH_MULTI_V7
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS
 	select ARM_GIC
arch/arm/mach-ux500/Kconfig +0 -1
index b41a42d..9b93144 100644
@@ -3,7 +3,6 @@ config ARCH_U8500
 	depends on MMU
 	select AB8500_CORE
 	select ABX500_CORE
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_AMBA
 	select ARM_ERRATA_754322
arch/arm/mach-vexpress/Kconfig +0 -1
index 90249cf..2e2e8bb 100644
@@ -65,7 +65,6 @@ config ARCH_VEXPRESS_DCSCB
 
 config ARCH_VEXPRESS_SPC
 	bool "Versatile Express Serial Power Controller (SPC)"
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select PM_OPP
 	help
arch/arm/mach-vt8500/Kconfig +0 -1
index 08f56a4..aaaa24f 100644
@@ -1,6 +1,5 @@
 config ARCH_VT8500
 	bool
-	select ARCH_HAS_CPUFREQ
 	select ARCH_REQUIRE_GPIOLIB
 	select CLKDEV_LOOKUP
 	select VT8500_TIMER
arch/arm/mach-zynq/Kconfig +0 -1
index 573e0db..0c164f8 100644
@@ -1,6 +1,5 @@
 config ARCH_ZYNQ
 	bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7
-	select ARCH_HAS_CPUFREQ
 	select ARCH_HAS_OPP
 	select ARCH_SUPPORTS_BIG_ENDIAN
 	select ARM_AMBA
Signature · 1 line
1.8.3.2
author maintainer
#19 lore raw

PATCH 10/14 misc: vexpress: fix error handling vexpress_syscfg_regmap_init()

In reply to Arnd Bergmann

From: Dan Carpenter <[email protected]>

This function should be returning an ERR_PTR() on failure instead of NULL. Also there is a use after free bug if regmap_init() fails because we free "func" and then dereference doing the return.

---
 drivers/misc/vexpress-syscfg.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
drivers/misc/vexpress-syscfg.c +8 -4
index 73068e5..3250fc1 100644
@@ -199,7 +199,7 @@ static struct regmap *vexpress_syscfg_regmap_init(struct device *dev,
 	func = kzalloc(sizeof(*func) + sizeof(*func->template) * num,
 			GFP_KERNEL);
 	if (!func)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	func->syscfg = syscfg;
 	func->num_templates = num;
@@ -231,10 +231,14 @@ static struct regmap *vexpress_syscfg_regmap_init(struct device *dev,
 	func->regmap = regmap_init(dev, NULL, func,
 			&vexpress_syscfg_regmap_config);
 
-	if (IS_ERR(func->regmap))
+	if (IS_ERR(func->regmap)) {
+		void *err = func->regmap;
+
 		kfree(func);
-	else
-		list_add(&func->list, &syscfg->funcs);
+		return err;
+	}
+
+	list_add(&func->list, &syscfg->funcs);
 
 	return func->regmap;
 }
Signature · 1 line
1.8.3.2
author maintainer
#20 lore raw

PATCH 11/14 ARM: exynos: cleanup kconfig option display

In reply to Arnd Bergmann

From: Rob Herring <[email protected]>

The addition of Exynos to multi-platform configs creates a mess of config options with options appearing before the Exynos config option. This is due to arch/arm/plat-samsung/Kconfig being included out of order with the other Samsung platform kconfig files. Reorder the kconfig files and move all the options into a sub-menu. Some of the options are dead, so remove those as well.

Cc Ben Dooks <[email protected]>
Cc Kukjin Kim <[email protected]>
Cc linux-samsung-soc at vger.kernel.org
---
 arch/arm/Kconfig              |  3 +--
 arch/arm/plat-samsung/Kconfig | 17 +++--------------
 2 files changed, 4 insertions(+), 16 deletions(-)
arch/arm/Kconfig +1 -2
index 9b8f528..245058b 100644
@@ -994,8 +994,6 @@ source "arch/arm/mach-rockchip/Kconfig"
 
 source "arch/arm/mach-sa1100/Kconfig"
 
-source "arch/arm/plat-samsung/Kconfig"
-
 source "arch/arm/mach-socfpga/Kconfig"
 
 source "arch/arm/mach-spear/Kconfig"
@@ -1013,6 +1011,7 @@ source "arch/arm/mach-s5pc100/Kconfig"
 source "arch/arm/mach-s5pv210/Kconfig"
 
 source "arch/arm/mach-exynos/Kconfig"
+source "arch/arm/plat-samsung/Kconfig"
 
 source "arch/arm/mach-shmobile/Kconfig"
 
arch/arm/plat-samsung/Kconfig +3 -14
index 91911e4..301b892 100644
@@ -35,27 +35,15 @@ config SAMSUNG_PM
 	  Base platform power management code for samsung code
 
 if PLAT_SAMSUNG
+menu "Samsung Common options"
 
 # boot configurations
 
 comment "Boot options"
 
-config S3C_BOOT_ERROR_RESET
-	bool "S3C Reboot on decompression error"
-	help
-	  Say y here to use the watchdog to reset the system if the
-	  kernel decompressor detects an error during decompression.
-
-config S3C_BOOT_UART_FORCE_FIFO
-       bool "Force UART FIFO on during boot process"
-       default y
-       help
-         Say Y here to force the UART FIFOs on during the kernel
-	 uncompressor
-
-
 config S3C_LOWLEVEL_UART_PORT
 	int "S3C UART to use for low-level messages"
+	depends on ARCH_S3C64XX
 	default 0
 	help
 	  Choice of which UART port to use for the low-level messages,
@@ -502,4 +490,5 @@ config DEBUG_S3C_UART
 	default "2" if DEBUG_S3C_UART2
 	default "3" if DEBUG_S3C_UART3
 
+endmenu
 endif
Signature · 1 line
1.8.3.2
author maintainer
#21 lore raw

PATCH 12/14 ARM: use menuconfig for sub-arch menus

In reply to Arnd Bergmann

From: Rob Herring <[email protected]>

The System Type menu is getting quite long with platforms and is inconsistent in handling of sub-arch specific options. Tidy up the menu by making platform options a menuconfig entry containing any platform specific config items.

---
 arch/arm/mach-bcm/Kconfig      | 7 +++----
 arch/arm/mach-berlin/Kconfig   | 6 +-----
 arch/arm/mach-cns3xxx/Kconfig  | 7 +++----
 arch/arm/mach-exynos/Kconfig   | 6 +-----
 arch/arm/mach-imx/Kconfig      | 7 +++----
 arch/arm/mach-moxart/Kconfig   | 2 +-
 arch/arm/mach-mvebu/Kconfig    | 6 +-----
 arch/arm/mach-nomadik/Kconfig  | 4 +---
 arch/arm/mach-omap2/Kconfig    | 9 ++++++---
 arch/arm/mach-prima2/Kconfig   | 6 ++----
 arch/arm/mach-qcom/Kconfig     | 6 +-----
 arch/arm/mach-shmobile/Kconfig | 4 ++--
 arch/arm/mach-tegra/Kconfig    | 7 +++----
 arch/arm/mach-u300/Kconfig     | 6 +-----
 arch/arm/mach-ux500/Kconfig    | 6 +-----
 arch/arm/mach-vexpress/Kconfig | 7 +++----
 16 files changed, 33 insertions(+), 63 deletions(-)
arch/arm/mach-bcm/Kconfig +3 -4
index 9bc6db1..41c8391 100644
@@ -1,10 +1,9 @@
-config ARCH_BCM
+menuconfig ARCH_BCM
 	bool "Broadcom SoC Support" if ARCH_MULTI_V6_V7
 	help
 	  This enables support for Broadcom ARM based SoC chips
 
-menu "Broadcom SoC Selection"
-	depends on ARCH_BCM
+if ARCH_BCM
 
 config ARCH_BCM_MOBILE
 	bool "Broadcom Mobile SoC Support" if ARCH_MULTI_V7
@@ -88,4 +87,4 @@ config ARCH_BCM_5301X
 	  different SoC or with the older BCM47XX and BCM53XX based
 	  network SoC using a MIPS CPU, they are supported by arch/mips/bcm47xx
 
-endmenu
+endif
arch/arm/mach-berlin/Kconfig +1 -5
index 101e0f3..2631cfc 100644
@@ -1,4 +1,4 @@
-config ARCH_BERLIN
+menuconfig ARCH_BERLIN
 	bool "Marvell Berlin SoCs" if ARCH_MULTI_V7
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_GIC
@@ -9,8 +9,6 @@ config ARCH_BERLIN
 
 if ARCH_BERLIN
 
-menu "Marvell Berlin SoC variants"
-
 config MACH_BERLIN_BG2
 	bool "Marvell Armada 1500 (BG2)"
 	select CACHE_L2X0
@@ -30,6 +28,4 @@ config MACH_BERLIN_BG2Q
 	select HAVE_ARM_TWD if SMP
 	select PINCTRL_BERLIN_BG2Q
 
-endmenu
-
 endif
arch/arm/mach-cns3xxx/Kconfig +3 -4
index 66838f4..3c22a19 100644
@@ -1,12 +1,11 @@
-config ARCH_CNS3XXX
+menuconfig ARCH_CNS3XXX
 	bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6
 	select ARM_GIC
 	select PCI_DOMAINS if PCI
 	help
 	  Support for Cavium Networks CNS3XXX platform.
 
-menu "CNS3XXX platform type"
-	depends on ARCH_CNS3XXX
+if ARCH_CNS3XXX
 
 config MACH_CNS3420VB
 	bool "Support for CNS3420 Validation Board"
@@ -17,4 +16,4 @@ config MACH_CNS3420VB
 	  This is a platform with an on-board ARM11 MPCore and has support
 	  for USB, USB-OTG, MMC/SD/SDIO, SATA, PCI-E, etc.
 
-endmenu
+endif
arch/arm/mach-exynos/Kconfig +1 -5
index 845031b..8f9b66c 100644
@@ -7,7 +7,7 @@
 
 # Configuration options for the EXYNOS4
 
-config ARCH_EXYNOS
+menuconfig ARCH_EXYNOS
 	bool "Samsung EXYNOS" if ARCH_MULTI_V7
 	select ARCH_HAS_BANDGAP
 	select ARCH_HAS_HOLES_MEMORYMODEL
@@ -29,8 +29,6 @@ config ARCH_EXYNOS
 
 if ARCH_EXYNOS
 
-menu "SAMSUNG EXYNOS SoCs Support"
-
 config ARCH_EXYNOS3
 	bool "SAMSUNG EXYNOS3"
 	select ARM_CPU_SUSPEND if PM
@@ -117,8 +115,6 @@ config SOC_EXYNOS5800
 	default y
 	depends on SOC_EXYNOS5420
 
-endmenu
-
 config EXYNOS5420_MCPM
 	bool "Exynos5420 Multi-Cluster PM support"
 	depends on MCPM && SOC_EXYNOS5420
arch/arm/mach-imx/Kconfig +3 -4
index b232340..28fa2fa 100644
@@ -1,4 +1,4 @@
-config ARCH_MXC
+menuconfig ARCH_MXC
 	bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7
 	select ARCH_HAS_OPP
 	select ARCH_REQUIRE_GPIOLIB
@@ -12,8 +12,7 @@ config ARCH_MXC
 	help
 	  Support for Freescale MXC/iMX-based family of processors
 
-menu "Freescale i.MX support"
-	depends on ARCH_MXC
+if ARCH_MXC
 
 config MXC_TZIC
 	bool
@@ -783,4 +782,4 @@ endif
 
 source "arch/arm/mach-imx/devices/Kconfig"
 
-endmenu
+endif
arch/arm/mach-moxart/Kconfig +1 -1
index 82a4ba8..f49328c 100644
@@ -1,4 +1,4 @@
-config ARCH_MOXART
+menuconfig ARCH_MOXART
 	bool "MOXA ART SoC" if ARCH_MULTI_V4
 	select CPU_FA526
 	select ARM_DMA_MEM_BUFFERABLE
arch/arm/mach-mvebu/Kconfig +1 -5
index 74e1ff2..3f304a5 100644
@@ -1,4 +1,4 @@
-config ARCH_MVEBU
+menuconfig ARCH_MVEBU
 	bool "Marvell Engineering Business Unit (MVEBU) SoCs" if (ARCH_MULTI_V7 || ARCH_MULTI_V5)
 	select ARCH_SUPPORTS_BIG_ENDIAN
 	select CLKSRC_MMIO
@@ -13,8 +13,6 @@ config ARCH_MVEBU
 
 if ARCH_MVEBU
 
-menu "Marvell EBU SoC variants"
-
 config MACH_MVEBU_V7
 	bool
 	select ARMADA_370_XP_TIMER
@@ -97,6 +95,4 @@ config MACH_KIRKWOOD
 	  Say 'Y' here if you want your kernel to support boards based
 	  on the Marvell Kirkwood device tree.
 
-endmenu
-
 endif
arch/arm/mach-nomadik/Kconfig +1 -3
index 486d301..3c61096 100644
@@ -1,4 +1,4 @@
-config ARCH_NOMADIK
+menuconfig ARCH_NOMADIK
 	bool "ST-Ericsson Nomadik"
 	depends on ARCH_MULTI_V5
 	select ARCH_REQUIRE_GPIOLIB
@@ -15,7 +15,6 @@ config ARCH_NOMADIK
 	  Support for the Nomadik platform by ST-Ericsson
 
 if ARCH_NOMADIK
-menu "Nomadik boards"
 
 config MACH_NOMADIK_8815NHK
 	bool "ST 8815 Nomadik Hardware Kit (evaluation board)"
@@ -24,7 +23,6 @@ config MACH_NOMADIK_8815NHK
 	select I2C_ALGOBIT
 	select I2C_NOMADIK
 
-endmenu
 endif
 
 config NOMADIK_8815
arch/arm/mach-omap2/Kconfig +6 -3
index 0006012..4e81860 100644
@@ -1,5 +1,7 @@
-config ARCH_OMAP
-	bool
+menuconfig ARCH_OMAP
+	bool "TI OMAP/AM/DRA Based" if (ARCH_MULTI_V6 || ARCH_MULTI_V7)
+
+if ARCH_OMAP
 
 config ARCH_OMAP2
 	bool "TI OMAP2"
@@ -80,7 +82,6 @@ config ARCH_OMAP2PLUS
 	bool
 	select ARCH_HAS_BANDGAP
 	select ARCH_HAS_HOLES_MEMORYMODEL
-	select ARCH_OMAP
 	select ARCH_REQUIRE_GPIOLIB
 	select CLKSRC_MMIO
 	select GENERIC_IRQ_CHIP
@@ -341,3 +342,5 @@ config OMAP4_ERRATA_I688
 endmenu
 
 endif
+
+endif
arch/arm/mach-prima2/Kconfig +2 -4
index e4e505f..042f693 100644
@@ -1,4 +1,4 @@
-config ARCH_SIRF
+menuconfig ARCH_SIRF
 	bool "CSR SiRF" if ARCH_MULTI_V7
 	select ARCH_HAS_RESET_CONTROLLER
 	select ARCH_REQUIRE_GPIOLIB
@@ -11,7 +11,7 @@ config ARCH_SIRF
 
 if ARCH_SIRF
 
-menu "CSR SiRF atlas6/primaII/Marco/Polo Specific Features"
+comment "CSR SiRF atlas6/primaII/Marco/Polo Specific Features"
 
 config ARCH_ATLAS6
 	bool "CSR SiRFSoC ATLAS6 ARM Cortex A9 Platform"
@@ -37,8 +37,6 @@ config ARCH_MARCO
 	help
           Support for CSR SiRFSoC ARM Cortex A9 Platform
 
-endmenu
-
 config SIRF_IRQ
 	bool
 
arch/arm/mach-qcom/Kconfig +1 -5
index fd2b99d..ee5697b 100644
@@ -1,4 +1,4 @@
-config ARCH_QCOM
+menuconfig ARCH_QCOM
 	bool "Qualcomm Support" if ARCH_MULTI_V7
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_GIC
@@ -11,8 +11,6 @@ config ARCH_QCOM
 
 if ARCH_QCOM
 
-menu "Qualcomm SoC Selection"
-
 config ARCH_MSM8X60
 	bool "Enable support for MSM8X60"
 	select CLKSRC_QCOM
@@ -25,8 +23,6 @@ config ARCH_MSM8974
 	bool "Enable support for MSM8974"
 	select HAVE_ARM_ARCH_TIMER
 
-endmenu
-
 config QCOM_SCM
 	bool
 
arch/arm/mach-shmobile/Kconfig +2 -2
index 270e5ca..7980730 100644
@@ -1,7 +1,7 @@
 config ARCH_SHMOBILE
 	bool
 
-config ARCH_SHMOBILE_MULTI
+menuconfig ARCH_SHMOBILE_MULTI
 	bool "Renesas ARM SoCs" if ARCH_MULTI_V7
 	depends on MMU
 	select ARCH_SHMOBILE
@@ -15,7 +15,7 @@ config ARCH_SHMOBILE_MULTI
 
 if ARCH_SHMOBILE_MULTI
 
-comment "Renesas ARM SoCs System Type"
+#comment "Renesas ARM SoCs System Type"
 
 config ARCH_EMEV2
 	bool "Emma Mobile EV2"
arch/arm/mach-tegra/Kconfig +3 -4
index 8981ed4..0953996 100644
@@ -1,4 +1,4 @@
-config ARCH_TEGRA
+menuconfig ARCH_TEGRA
 	bool "NVIDIA Tegra" if ARCH_MULTI_V7
 	select ARCH_REQUIRE_GPIOLIB
 	select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS
@@ -15,8 +15,7 @@ config ARCH_TEGRA
 	help
 	  This enables support for NVIDIA Tegra based systems.
 
-menu "NVIDIA Tegra options"
-	depends on ARCH_TEGRA
+if ARCH_TEGRA
 
 config ARCH_TEGRA_2x_SOC
 	bool "Enable support for Tegra20 family"
@@ -68,4 +67,4 @@ config TEGRA_AHB
 	  which controls AHB bus master arbitration and some
 	  performance parameters(priority, prefech size).
 
-endmenu
+endif
arch/arm/mach-u300/Kconfig +1 -5
index e3a96d7..bc51a71 100644
@@ -1,4 +1,4 @@
-config ARCH_U300
+menuconfig ARCH_U300
 	bool "ST-Ericsson U300 Series" if ARCH_MULTI_V5
 	depends on MMU
 	select ARCH_REQUIRE_GPIOLIB
@@ -16,8 +16,6 @@ config ARCH_U300
 
 if ARCH_U300
 
-menu "ST-Ericsson AB U300/U335 Platform"
-
 config MACH_U300
 	depends on ARCH_U300
 	bool "U300"
@@ -43,6 +41,4 @@ config MACH_U300_SPIDUMMY
 		you don't need it. Selecting this will activate the
 		SPI framework and ARM PL022 support.
 
-endmenu
-
 endif
arch/arm/mach-ux500/Kconfig +1 -5
index 9b93144..5be7c45 100644
@@ -1,4 +1,4 @@
-config ARCH_U8500
+menuconfig ARCH_U8500
 	bool "ST-Ericsson U8500 Series" if ARCH_MULTI_V7
 	depends on MMU
 	select AB8500_CORE
@@ -33,8 +33,6 @@ config UX500_SOC_DB8500
 	select REGULATOR
 	select REGULATOR_DB8500_PRCMU
 
-menu "Ux500 target platform (boards)"
-
 config MACH_MOP500
 	bool "U8500 Development platform, MOP500 versions"
 	select I2C
@@ -67,8 +65,6 @@ config UX500_AUTO_PLATFORM
 	  a working kernel. If everything else is disabled, this
 	  automatically enables MACH_MOP500.
 
-endmenu
-
 config UX500_DEBUG_UART
 	int "Ux500 UART to use for low-level debug"
 	default 2
arch/arm/mach-vexpress/Kconfig +3 -4
index 2e2e8bb..99c1f15 100644
@@ -1,4 +1,4 @@
-config ARCH_VEXPRESS
+menuconfig ARCH_VEXPRESS
 	bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7
 	select ARCH_REQUIRE_GPIOLIB
 	select ARCH_SUPPORTS_BIG_ENDIAN
@@ -37,8 +37,7 @@ config ARCH_VEXPRESS
 	  platforms. The traditional (ATAGs) boot method is not usable on
 	  these boards with this option.
 
-menu "Versatile Express platform type"
-	depends on ARCH_VEXPRESS
+if ARCH_VEXPRESS
 
 config ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA
 	bool "Enable A5 and A9 only errata work-arounds"
@@ -82,4 +81,4 @@ config ARCH_VEXPRESS_TC2_PM
 	  Support for CPU and cluster power management on Versatile Express
 	  with a TC2 (A15x2 A7x3) big.LITTLE core tile.
 
-endmenu
+endif
Signature · 1 line
1.8.3.2
author maintainer
#22 lore raw

PATCH 13/14 ARM: exynos: move sysram info to exynos.c

In reply to Arnd Bergmann

From: Olof Johansson <[email protected]>

This solves a problem with building with CONFIG_SMP=n due to missing sysram_base_addr (or sysram_ns_base_addr) variables.

The new setup method is more awkward than I'd like for it to be, but it can't be done in init_early() since ioremap is not yet available, but it needs to happen before SMP.

---
 arch/arm/mach-exynos/common.h  |  1 +
 arch/arm/mach-exynos/exynos.c  | 29 +++++++++++++++++++++++++++++
 arch/arm/mach-exynos/platsmp.c | 26 ++------------------------
 3 files changed, 32 insertions(+), 24 deletions(-)
arch/arm/mach-exynos/common.h +1 -0
index 16617bd..1ee9176 100644
@@ -118,6 +118,7 @@ extern void __iomem *sysram_ns_base_addr;
 extern void __iomem *sysram_base_addr;
 void exynos_init_io(void);
 void exynos_restart(enum reboot_mode mode, const char *cmd);
+void exynos_sysram_init(void);
 void exynos_cpuidle_init(void);
 void exynos_cpufreq_init(void);
 void exynos_init_late(void);
arch/arm/mach-exynos/exynos.c +29 -0
index 90aab4d..fb1eadd 100644
@@ -184,6 +184,28 @@ void __init exynos_cpufreq_init(void)
 	platform_device_register_simple("exynos-cpufreq", -1, NULL, 0);
 }
 
+void __iomem *sysram_base_addr;
+void __iomem *sysram_ns_base_addr;
+
+void __init exynos_sysram_init(void)
+{
+	struct device_node *node;
+
+	for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram") {
+		if (!of_device_is_available(node))
+			continue;
+		sysram_base_addr = of_iomap(node, 0);
+		break;
+	}
+
+	for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram-ns") {
+		if (!of_device_is_available(node))
+			continue;
+		sysram_ns_base_addr = of_iomap(node, 0);
+		break;
+	}
+}
+
 void __init exynos_init_late(void)
 {
 	if (of_machine_is_compatible("samsung,exynos5440"))
@@ -271,6 +293,13 @@ static void __init exynos_dt_machine_init(void)
 		}
 	}
 
+	/*
+	 * This is called from smp_prepare_cpus if we've built for SMP, but
+	 * we still need to set it up for PM and firmware ops if not.
+	 */
+	if (!IS_ENABLED(SMP))
+		exynos_sysram_init();
+
 	exynos_cpuidle_init();
 	exynos_cpufreq_init();
 
arch/arm/mach-exynos/platsmp.c +2 -24
index ec02422..1c8d31e 100644
@@ -32,28 +32,6 @@
 
 extern void exynos4_secondary_startup(void);
 
-void __iomem *sysram_base_addr;
-void __iomem *sysram_ns_base_addr;
-
-static void __init exynos_smp_prepare_sysram(void)
-{
-	struct device_node *node;
-
-	for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram") {
-		if (!of_device_is_available(node))
-			continue;
-		sysram_base_addr = of_iomap(node, 0);
-		break;
-	}
-
-	for_each_compatible_node(node, NULL, "samsung,exynos4210-sysram-ns") {
-		if (!of_device_is_available(node))
-			continue;
-		sysram_ns_base_addr = of_iomap(node, 0);
-		break;
-	}
-}
-
 static inline void __iomem *cpu_boot_reg_base(void)
 {
 	if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_1_1)
@@ -234,11 +212,11 @@ static void __init exynos_smp_prepare_cpus(unsigned int max_cpus)
 {
 	int i;
 
+	exynos_sysram_init();
+
 	if (read_cpuid_part_number() == ARM_CPU_PART_CORTEX_A9)
 		scu_enable(scu_base_addr());
 
-	exynos_smp_prepare_sysram();
-
 	/*
 	 * Write the address of secondary startup into the
 	 * system-wide flags register. The boot monitor waits
Signature · 1 line
1.8.3.2
author maintainer
#23 lore raw

PATCH 14/14 ARM: EXYNOS: Fix compilation warning

In reply to Arnd Bergmann

From: Sachin Kamat <[email protected]>

of_get_flat_dt_prop return type is now const.
Fixes the following compilation warning introduced by commit 9d0c4dfedd96 ("of/fdt: update of_get_flat_dt_prop in prep for libfdt")

arch/arm/mach-exynos/exynos.c:259:6: warning:
assignment discards ?const? qualifier from pointer target type [enabled by default]

---
 arch/arm/mach-exynos/exynos.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-exynos/exynos.c +1 -1
index fb1eadd..f38cf7c 100644
@@ -220,7 +220,7 @@ static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
 					int depth, void *data)
 {
 	struct map_desc iodesc;
-	__be32 *reg;
+	const __be32 *reg;
 	int len;
 
 	if (!of_flat_dt_is_compatible(node, "samsung,exynos4210-chipid") &&
Signature · 1 line
1.8.3.2
#24 lore raw

cover arm-soc fixes for 3.16 review

In reply to Arnd Bergmann
Quoted 3 lines · Arnd Bergmann

here are the fixes I've picked up so far as the last pull request for the merge window. I'm sure there will be a lot more in the future, but let us know if I missed something

Please see my pull request that I replied to today. It has two dts fixes for NAND ECC handling.

thx,

Jason.