]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
ARM: l2x0/pl310: Refactor Kconfig to be more maintainable
authorDave Martin <dave.martin@linaro.org>
Tue, 29 Nov 2011 15:56:19 +0000 (15:56 +0000)
committerDave Martin <dave.martin@linaro.org>
Mon, 19 Dec 2011 13:46:11 +0000 (13:46 +0000)
Making CACHE_L2X0 depend on (huge list of MACH_ and ARCH_ configs)
is bothersome to maintain and likely to lead to merge conflicts.

This patch moves the knowledge of which platforms have a L2x0 or
PL310 cache controller to the individual machines.  To enable this,
a new MIGHT_HAVE_CACHE_L2X0 config option is introduced to allow
machines to indicate that they may have such a cache controller
independently of each other.

Boards/SoCs which cannot reliably operate without the L2 cache
controller support will need to select CACHE_L2X0 directly from
their own Kconfigs instead.  This applies to some TrustZone-enabled
boards where Linux runs in the Normal World, for example.

Signed-off-by: Dave Martin <dave.martin@linaro.org>
Acked-by: Anton Vorontsov <cbouatmailru@gmail.com>
        (for cns3xxx)
Acked-by: Tony Lindgren <tony@atomide.com>
        (for omap)
Acked-by: Shawn Guo <shawn.guo@linaro.org>
        (for imx)
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
        (for exynos)
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
        (for imx)
Acked-by: Olof Johansson <olof@lixom.net>
        (for tegra)

arch/arm/Kconfig
arch/arm/mach-exynos/Kconfig
arch/arm/mach-omap2/Kconfig
arch/arm/mach-realview/Kconfig
arch/arm/mach-vexpress/Kconfig
arch/arm/mm/Kconfig
arch/arm/plat-mxc/Kconfig

index 44789eff983f444c22cd967cbe418f7e50159358..16a4b9e689be6ca02f4a8c59eae57dcdf8482641 100644 (file)
@@ -344,6 +344,7 @@ config ARCH_HIGHBANK
        select CPU_V7
        select GENERIC_CLOCKEVENTS
        select HAVE_ARM_SCU
+       select MIGHT_HAVE_CACHE_L2X0
        select USE_OF
        help
          Support for the Calxeda Highbank SoC based boards.
@@ -361,6 +362,7 @@ config ARCH_CNS3XXX
        select CPU_V6K
        select GENERIC_CLOCKEVENTS
        select ARM_GIC
+       select MIGHT_HAVE_CACHE_L2X0
        select MIGHT_HAVE_PCI
        select PCI_DOMAINS if PCI
        help
@@ -381,6 +383,7 @@ config ARCH_PRIMA2
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
        select GENERIC_IRQ_CHIP
+       select MIGHT_HAVE_CACHE_L2X0
        select USE_OF
        select ZONE_DMA
        help
@@ -633,6 +636,7 @@ config ARCH_TEGRA
        select GENERIC_GPIO
        select HAVE_CLK
        select HAVE_SCHED_CLOCK
+       select MIGHT_HAVE_CACHE_L2X0
        select ARCH_HAS_CPUFREQ
        help
          This enables support for NVIDIA Tegra based systems (Tegra APX,
@@ -703,6 +707,7 @@ config ARCH_SHMOBILE
        select CLKDEV_LOOKUP
        select HAVE_MACH_CLKDEV
        select GENERIC_CLOCKEVENTS
+       select MIGHT_HAVE_CACHE_L2X0
        select NO_IOPORT
        select SPARSE_IRQ
        select MULTI_IRQ_HANDLER
@@ -904,6 +909,7 @@ config ARCH_U8500
        select CLKDEV_LOOKUP
        select ARCH_REQUIRE_GPIOLIB
        select ARCH_HAS_CPUFREQ
+       select MIGHT_HAVE_CACHE_L2X0
        help
          Support for ST-Ericsson's Ux500 architecture
 
@@ -914,6 +920,7 @@ config ARCH_NOMADIK
        select CPU_ARM926T
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
+       select MIGHT_HAVE_CACHE_L2X0
        select ARCH_REQUIRE_GPIOLIB
        help
          Support for the Nomadik platform by ST-Ericsson
@@ -973,6 +980,7 @@ config ARCH_ZYNQ
        select ARM_GIC
        select ARM_AMBA
        select ICST
+       select MIGHT_HAVE_CACHE_L2X0
        select USE_OF
        help
          Support for Xilinx Zynq ARM Cortex A9 Platform
index 724ec0f3560ddf5cb00cff43147e1ec3f98bfe3d..7f2347bd6ccce78ea787fb370a441fff1a55658b 100644 (file)
@@ -17,6 +17,7 @@ choice
 
 config ARCH_EXYNOS4
        bool "SAMSUNG EXYNOS4"
+       select MIGHT_HAVE_CACHE_L2X0
        help
          Samsung EXYNOS4 SoCs based systems
 
index 503414718905862d12e104b7940bfc7dc1524971..c8415784e60c6e9e3e453913416cd0997400e560 100644 (file)
@@ -44,6 +44,7 @@ config ARCH_OMAP4
        select CPU_V7
        select ARM_GIC
        select LOCAL_TIMERS if SMP
+       select MIGHT_HAVE_CACHE_L2X0
        select PL310_ERRATA_588369
        select PL310_ERRATA_727915
        select ARM_ERRATA_720789
index dba6d0c1fc170d22aa869b088323481a1aa18829..3dd620f8dd9b8fca4a43543a63ef900227b8508a 100644 (file)
@@ -12,6 +12,7 @@ config REALVIEW_EB_A9MP
        bool "Support Multicore Cortex-A9 Tile"
        depends on MACH_REALVIEW_EB
        select CPU_V7
+       select MIGHT_HAVE_CACHE_L2X0
        help
          Enable support for the Cortex-A9MPCore tile fitted to the
          Realview(R) Emulation Baseboard platform.
@@ -21,6 +22,7 @@ config REALVIEW_EB_ARM11MP
        depends on MACH_REALVIEW_EB
        select CPU_V6K
        select ARCH_HAS_BARRIERS if SMP
+       select MIGHT_HAVE_CACHE_L2X0
        help
          Enable support for the ARM11MPCore tile fitted to the Realview(R)
          Emulation Baseboard platform.
@@ -39,6 +41,7 @@ config MACH_REALVIEW_PB11MP
        select CPU_V6K
        select ARM_GIC
        select HAVE_PATA_PLATFORM
+       select MIGHT_HAVE_CACHE_L2X0
        select ARCH_HAS_BARRIERS if SMP
        help
          Include support for the ARM(R) RealView(R) Platform Baseboard for
@@ -51,6 +54,7 @@ config MACH_REALVIEW_PB1176
        select CPU_V6
        select ARM_GIC
        select HAVE_TCM
+       select MIGHT_HAVE_CACHE_L2X0
        help
          Include support for the ARM(R) RealView(R) Platform Baseboard for
          ARM1176JZF-S.
@@ -78,6 +82,7 @@ config MACH_REALVIEW_PBX
        bool "Support RealView(R) Platform Baseboard Explore"
        select ARM_GIC
        select HAVE_PATA_PLATFORM
+       select MIGHT_HAVE_CACHE_L2X0
        select ARCH_SPARSEMEM_ENABLE if CPU_V7 && !REALVIEW_HIGH_PHYS_OFFSET
        select ZONE_DMA if SPARSEMEM
        help
index 931148487f0bc7938b26248b7607a9957f01d3cd..a8aefc8a6f240f232824623327cd429aae2ce666 100644 (file)
@@ -8,5 +8,6 @@ config ARCH_VEXPRESS_CA9X4
        select ARM_ERRATA_720789
        select ARM_ERRATA_751472
        select ARM_ERRATA_753970
+       select MIGHT_HAVE_CACHE_L2X0
 
 endmenu
index 67f75a0b66d640c4ffdd44b74fc2ac37e8b0063d..acb1c36adaddd37dbf54b4fbdb40ac35f867b16e 100644 (file)
@@ -816,14 +816,23 @@ config CACHE_FEROCEON_L2_WRITETHROUGH
          Say Y here to use the Feroceon L2 cache in writethrough mode.
          Unless you specifically require this, say N for writeback mode.
 
+config MIGHT_HAVE_CACHE_L2X0
+       bool
+       help
+         This option should be selected by machines which have a L2x0
+         or PL310 cache controller, but where its use is optional.
+
+         The only effect of this option is to make CACHE_L2X0 and
+         related options available to the user for configuration.
+
+         Boards or SoCs which always require the cache controller
+         support to be present should select CACHE_L2X0 directly
+         instead of this option, thus preventing the user from
+         inadvertently configuring a broken kernel.
+
 config CACHE_L2X0
-       bool "Enable the L2x0 outer cache controller"
-       depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \
-                  REALVIEW_EB_A9MP || ARCH_IMX_V6_V7 || MACH_REALVIEW_PBX || \
-                  ARCH_NOMADIK || ARCH_OMAP4 || ARCH_EXYNOS4 || ARCH_TEGRA || \
-                  ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || ARCH_SHMOBILE || \
-                  ARCH_PRIMA2 || ARCH_ZYNQ || ARCH_CNS3XXX || ARCH_HIGHBANK
-       default y
+       bool "Enable the L2x0 outer cache controller" if MIGHT_HAVE_CACHE_L2X0
+       default MIGHT_HAVE_CACHE_L2X0
        select OUTER_CACHE
        select OUTER_CACHE_SYNC
        help
index b3a1f2b3ada3bcb2f699b7a1e86bda0a1e866acb..b30708e28c1de1560fb886e30b35d305fb25738d 100644 (file)
@@ -20,6 +20,7 @@ config ARCH_IMX_V6_V7
        bool "i.MX3, i.MX6"
        select AUTO_ZRELADDR if !ZBOOT_ROM
        select ARM_PATCH_PHYS_VIRT
+       select MIGHT_HAVE_CACHE_L2X0
        help
          This enables support for systems based on the Freescale i.MX3 and i.MX6
          family.