1 From 77c038d93769c92ef54cdbb50388564d1b37987b Mon Sep 17 00:00:00 2001
2 From: Greg Ungerer <gerg@kernel.org>
3 Date: Fri, 23 Sep 2016 13:37:34 +1000
4 Subject: [PATCH] ARM: versatile: support configuring versatile machine for no-MMU
6 Allow the arm versatile machine to be configured for no-MMU operation.
8 Older kernels had the ability to build the versatile machine with the MMU
9 disabled (!CONFIG_MMU). Recent changes to convert the versatile machine
10 to device tree lost this ability. (Although older kernels could be built
11 they did not run due to a bug in the IO_ADDRESS() mapping on this machine).
13 The motivation for this is that the versatile machine is well supported
14 in qemu. And this provides an excellent platform for development and
15 testing no-MMU support on ARM in general.
17 This patch adds a versatile platform selection in the upper level arm
18 system type menu - where it appeared in older kernel versions - when
19 configuring for the no-MMU case. There is no visible change to the way
20 versatile is selected for the MMU enabled case.
22 Signed-off-by: Greg Ungerer <gerg@kernel.org>
24 arch/arm/Kconfig | 13 ++++++++++++-
25 arch/arm/include/asm/mach/map.h | 1 +
26 arch/arm/mach-versatile/Kconfig | 2 +-
27 arch/arm/mach-versatile/versatile.c | 4 ++++
28 4 files changed, 18 insertions(+), 2 deletions(-)
30 diff --git a/arch/arm/mach-versatile/versatile.c b/arch/arm/mach-versatile/versatile.c
31 index 02ba68abe533..835b51bc597b 100644
32 --- a/arch/arm/mach-versatile/versatile.c
33 +++ b/arch/arm/mach-versatile/versatile.c
35 #include <asm/mach/map.h>
37 /* macro to get at MMIO space when running virtually */
39 #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
41 +#define IO_ADDRESS(x) (x)
43 #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
46 diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
47 index 2b8970d8e5a2..41844ab6aec5 100644
48 --- a/arch/arm/include/asm/mach/map.h
49 +++ b/arch/arm/include/asm/mach/map.h
50 @@ -60,6 +60,7 @@ extern int ioremap_page(unsigned long virt, unsigned long phys,
52 #define iotable_init(map,num) do { } while (0)
53 #define vm_reserve_area_early(a,s,c) do { } while (0)
54 +#define debug_ll_io_init() do { } while (0)
58 diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
59 index e24a9820e12f..342e1efa583a 100644
60 --- a/arch/arm/Kconfig
61 +++ b/arch/arm/Kconfig
62 @@ -307,12 +307,23 @@ config MMU
63 Select if you want MMU-based virtualised addressing space
64 support by paged memory management. If unsure, say 'Y'.
67 + prompt "ARM system type"
69 + default ARM_SINGLE_ARMV7M
71 config ARM_SINGLE_ARMV7M
73 + bool "ARMv7-M based platforms (Cortex-M0/M3/M4)"
78 +config ARM_SINGLE_ARM926
79 + bool "ARM926 based platforms"
84 config ARCH_MMAP_RND_BITS_MIN
87 diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
88 index b1519b4dc03a..2f1bf95daeb0 100644
89 --- a/arch/arm/mach-versatile/Kconfig
90 +++ b/arch/arm/mach-versatile/Kconfig
92 # SPDX-License-Identifier: GPL-2.0
94 bool "ARM Ltd. Versatile family"
95 - depends on ARCH_MULTI_V5
96 + depends on ARCH_MULTI_V5 || ARM_SINGLE_ARM926
97 depends on CPU_LITTLE_ENDIAN
99 select ARM_TIMER_SP804