Skip to contentSkip to conversation

Initial multi-platform support

PATCH New Rob Herring 6 participants 28 messages Aug 29, 2012 – Sep 5, 2012

Subsystems (27)
lore
Share & tools
lore
#0 lore raw

cover Initial multi-platform support

From: Rob Herring <[email protected]>

This series enables initial multi-platform support for highbank, mvebu, socfpga, picoxcell, and vexpress.

There's a couple of issues which I'm aware of:

- DEBUG_LL does not work (even for 1 platform).
- make dtbs does not work. It needs to be changes such that the build will iterate over mach-dirs instead of using MACHINE

This series is dependent on gpio.h clean-up and is available here:

git://sources.calxeda.com/kernel/linux.git multi-plat

Rob

Arnd Bergmann (1):
ARM: vexpress: remove dependency on mach/* headers

Rob Herring (5):
ARM: move ARCH config definitions into mach dirs
ARM: introduce Kconfig.mach
ARM: picoxcell: header fixes for multi-platform
ARM: initial multiplatform support
ARM: update defconfigs

 arch/arm/Kconfig                                   |  923 +-------------------
 arch/arm/Kconfig.mach                              |  585 +++++++++++++
 arch/arm/Makefile                                  |  155 ++--
 arch/arm/boot/compressed/misc.c                    |    6 +
 arch/arm/configs/acs5k_defconfig                   |    2 +-
 arch/arm/configs/acs5k_tiny_defconfig              |    2 +-
 arch/arm/configs/afeb9260_defconfig                |    2 +-
 arch/arm/configs/ag5evm_defconfig                  |    2 +-
 arch/arm/configs/am200epdkit_defconfig             |    2 +-
 arch/arm/configs/ap4evb_defconfig                  |    2 +-
 arch/arm/configs/armadillo800eva_defconfig         |    2 +-
 arch/arm/configs/assabet_defconfig                 |    2 +-
 arch/arm/configs/at91_dt_defconfig                 |    2 +-
 arch/arm/configs/at91rm9200_defconfig              |    2 +-
 arch/arm/configs/at91sam9260_defconfig             |    2 +-
 arch/arm/configs/at91sam9261_defconfig             |    2 +-
 arch/arm/configs/at91sam9263_defconfig             |    2 +-
 arch/arm/configs/at91sam9g20_defconfig             |    2 +-
 arch/arm/configs/at91sam9g45_defconfig             |    2 +-
 arch/arm/configs/at91sam9rl_defconfig              |    2 +-
 arch/arm/configs/at91x40_defconfig                 |    2 +-
 arch/arm/configs/badge4_defconfig                  |    2 +-
 arch/arm/configs/bcmring_defconfig                 |    2 +-
 arch/arm/configs/bonito_defconfig                  |    2 +-
 arch/arm/configs/cam60_defconfig                   |    2 +-
 arch/arm/configs/cerfcube_defconfig                |    2 +-
 arch/arm/configs/cm_x2xx_defconfig                 |    2 +-
 arch/arm/configs/cm_x300_defconfig                 |    2 +-
 arch/arm/configs/cns3420vb_defconfig               |    2 +-
 arch/arm/configs/colibri_pxa270_defconfig          |    2 +-
 arch/arm/configs/colibri_pxa300_defconfig          |    2 +-
 arch/arm/configs/collie_defconfig                  |    2 +-
 arch/arm/configs/corgi_defconfig                   |    2 +-
 arch/arm/configs/cpu9260_defconfig                 |    2 +-
 arch/arm/configs/cpu9g20_defconfig                 |    2 +-
 arch/arm/configs/da8xx_omapl_defconfig             |    2 +-
 arch/arm/configs/davinci_all_defconfig             |    2 +-
 arch/arm/configs/dove_defconfig                    |    2 +-
 arch/arm/configs/ebsa110_defconfig                 |    2 +-
 arch/arm/configs/edb7211_defconfig                 |    2 +-
 arch/arm/configs/em_x270_defconfig                 |    2 +-
 arch/arm/configs/ep93xx_defconfig                  |    2 +-
 arch/arm/configs/eseries_pxa_defconfig             |    2 +-
 arch/arm/configs/exynos4_defconfig                 |    2 +-
 arch/arm/configs/exynos_defconfig                  |    4 +-
 arch/arm/configs/ezx_defconfig                     |    2 +-
 arch/arm/configs/footbridge_defconfig              |    2 +-
 arch/arm/configs/fortunet_defconfig                |    2 +-
 arch/arm/configs/g3evm_defconfig                   |    2 +-
 arch/arm/configs/g4evm_defconfig                   |    2 +-
 arch/arm/configs/h3600_defconfig                   |    2 +-
 arch/arm/configs/h5000_defconfig                   |    2 +-
 arch/arm/configs/h7201_defconfig                   |    2 +-
 arch/arm/configs/h7202_defconfig                   |    2 +-
 arch/arm/configs/hackkit_defconfig                 |    2 +-
 arch/arm/configs/imote2_defconfig                  |    2 +-
 arch/arm/configs/imx_v4_v5_defconfig               |    2 +-
 arch/arm/configs/imx_v6_v7_defconfig               |    2 +-
 arch/arm/configs/integrator_defconfig              |    2 +-
 arch/arm/configs/iop13xx_defconfig                 |    2 +-
 arch/arm/configs/iop32x_defconfig                  |    2 +-
 arch/arm/configs/iop33x_defconfig                  |    2 +-
 arch/arm/configs/ixp4xx_defconfig                  |    2 +-
 arch/arm/configs/jornada720_defconfig              |    2 +-
 arch/arm/configs/kirkwood_defconfig                |    2 +-
 arch/arm/configs/kota2_defconfig                   |    2 +-
 arch/arm/configs/ks8695_defconfig                  |    2 +-
 arch/arm/configs/kzm9d_defconfig                   |    2 +-
 arch/arm/configs/kzm9g_defconfig                   |    2 +-
 arch/arm/configs/lart_defconfig                    |    2 +-
 arch/arm/configs/lpc32xx_defconfig                 |    2 +-
 arch/arm/configs/lpd270_defconfig                  |    2 +-
 arch/arm/configs/lubbock_defconfig                 |    2 +-
 arch/arm/configs/mackerel_defconfig                |    2 +-
 arch/arm/configs/magician_defconfig                |    2 +-
 arch/arm/configs/mainstone_defconfig               |    2 +-
 arch/arm/configs/marzen_defconfig                  |    2 +-
 arch/arm/configs/mini2440_defconfig                |    2 +-
 arch/arm/configs/mmp2_defconfig                    |    2 +-
 arch/arm/configs/msm_defconfig                     |    2 +-
 arch/arm/configs/mv78xx0_defconfig                 |    2 +-
 arch/arm/configs/mvebu_defconfig                   |    2 +-
 arch/arm/configs/mxs_defconfig                     |    2 +-
 arch/arm/configs/neponset_defconfig                |    2 +-
 arch/arm/configs/netwinder_defconfig               |    2 +-
 arch/arm/configs/netx_defconfig                    |    2 +-
 arch/arm/configs/nhk8815_defconfig                 |    2 +-
 arch/arm/configs/nuc910_defconfig                  |    2 +-
 arch/arm/configs/nuc950_defconfig                  |    2 +-
 arch/arm/configs/nuc960_defconfig                  |    2 +-
 arch/arm/configs/omap1_defconfig                   |    2 +-
 arch/arm/configs/omap2plus_defconfig               |    2 +-
 arch/arm/configs/orion5x_defconfig                 |    2 +-
 arch/arm/configs/palmz72_defconfig                 |    2 +-
 arch/arm/configs/pcm027_defconfig                  |    2 +-
 arch/arm/configs/pleb_defconfig                    |    2 +-
 arch/arm/configs/pnx4008_defconfig                 |    2 +-
 arch/arm/configs/prima2_defconfig                  |    2 +-
 arch/arm/configs/pxa168_defconfig                  |    2 +-
 arch/arm/configs/pxa255-idp_defconfig              |    2 +-
 arch/arm/configs/pxa3xx_defconfig                  |    2 +-
 arch/arm/configs/pxa910_defconfig                  |    2 +-
 arch/arm/configs/qil-a9260_defconfig               |    2 +-
 arch/arm/configs/raumfeld_defconfig                |    2 +-
 arch/arm/configs/realview-smp_defconfig            |    2 +-
 arch/arm/configs/realview_defconfig                |    2 +-
 arch/arm/configs/rpc_defconfig                     |    2 +-
 arch/arm/configs/s3c2410_defconfig                 |    2 +-
 arch/arm/configs/s3c6400_defconfig                 |    2 +-
 arch/arm/configs/s5p64x0_defconfig                 |    2 +-
 arch/arm/configs/s5pc100_defconfig                 |    2 +-
 arch/arm/configs/s5pv210_defconfig                 |    2 +-
 arch/arm/configs/sam9_l9260_defconfig              |    2 +-
 arch/arm/configs/shannon_defconfig                 |    2 +-
 arch/arm/configs/shark_defconfig                   |    2 +-
 arch/arm/configs/simpad_defconfig                  |    2 +-
 arch/arm/configs/socfpga_defconfig                 |    2 +-
 arch/arm/configs/spear13xx_defconfig               |    2 +-
 arch/arm/configs/spear6xx_defconfig                |    2 +-
 arch/arm/configs/spitz_defconfig                   |    2 +-
 arch/arm/configs/stamp9g20_defconfig               |    2 +-
 arch/arm/configs/tct_hammer_defconfig              |    2 +-
 arch/arm/configs/tegra_defconfig                   |    2 +-
 arch/arm/configs/trizeps4_defconfig                |    2 +-
 arch/arm/configs/u300_defconfig                    |    2 +-
 arch/arm/configs/u8500_defconfig                   |    2 +-
 arch/arm/configs/usb-a9260_defconfig               |    2 +-
 arch/arm/configs/vexpress_defconfig                |    2 +-
 arch/arm/configs/viper_defconfig                   |    2 +-
 arch/arm/configs/xcep_defconfig                    |    2 +-
 arch/arm/configs/zeus_defconfig                    |    2 +-
 arch/arm/include/asm/timex.h                       |    4 +
 arch/arm/mach-at91/Kconfig                         |    8 +
 arch/arm/mach-bcmring/Kconfig                      |    9 +
 arch/arm/mach-clps711x/Kconfig                     |    6 +
 arch/arm/mach-cns3xxx/Kconfig                      |    9 +
 arch/arm/mach-davinci/Kconfig                      |   12 +
 arch/arm/mach-dove/Kconfig                         |    9 +
 arch/arm/mach-ebsa110/Kconfig                      |    9 +
 arch/arm/mach-ep93xx/Kconfig                       |   11 +
 arch/arm/mach-exynos/Kconfig                       |   16 +
 arch/arm/mach-footbridge/Kconfig                   |    9 +
 arch/arm/mach-gemini/Kconfig                       |    6 +
 arch/arm/mach-h720x/Kconfig                        |    6 +
 arch/arm/mach-highbank/Kconfig                     |   15 +
 arch/arm/mach-integrator/Kconfig                   |   16 +
 arch/arm/mach-iop13xx/Kconfig                      |   11 +
 arch/arm/mach-iop32x/Kconfig                       |   10 +
 arch/arm/mach-iop33x/Kconfig                       |   10 +
 arch/arm/mach-ixp4xx/Kconfig                       |   11 +
 arch/arm/mach-kirkwood/Kconfig                     |    9 +
 arch/arm/mach-ks8695/Kconfig                       |    7 +
 arch/arm/mach-lpc32xx/Kconfig                      |   12 +
 arch/arm/mach-mmp/Kconfig                          |   12 +
 arch/arm/mach-msm/Kconfig                          |    7 +
 arch/arm/mach-mv78xx0/Kconfig                      |    9 +
 arch/arm/mach-mvebu/Kconfig                        |   10 +
 arch/arm/mach-mvebu/Makefile                       |    2 +
 arch/arm/mach-mxs/Kconfig                          |   11 +
 arch/arm/mach-netx/Kconfig                         |    7 +
 arch/arm/mach-nomadik/Kconfig                      |   11 +
 arch/arm/mach-orion5x/Kconfig                      |    9 +
 arch/arm/mach-picoxcell/Kconfig                    |   14 +
 arch/arm/mach-picoxcell/common.c                   |    6 +-
 arch/arm/mach-picoxcell/include/mach/map.h         |   25 -
 .../mach-picoxcell/include/mach/picoxcell_soc.h    |   25 -
 arch/arm/mach-picoxcell/picoxcell_soc.h            |   25 +
 arch/arm/mach-pnx4008/Kconfig                      |    5 +
 arch/arm/mach-pxa/Kconfig                          |   16 +
 arch/arm/mach-realview/Kconfig                     |   15 +
 arch/arm/mach-rpc/Kconfig                          |   13 +
 arch/arm/mach-s3c24xx/Kconfig                      |   13 +
 arch/arm/mach-s3c64xx/Kconfig                      |   26 +
 arch/arm/mach-s5p64x0/Kconfig                      |   13 +
 arch/arm/mach-s5pc100/Kconfig                      |   12 +
 arch/arm/mach-s5pv210/Kconfig                      |   17 +
 arch/arm/mach-sa1100/Kconfig                       |   17 +
 arch/arm/mach-shark/Kconfig                        |   11 +
 arch/arm/mach-shmobile/Kconfig                     |   14 +
 arch/arm/mach-socfpga/Kconfig                      |   16 +
 arch/arm/mach-tegra/Kconfig                        |   13 +
 arch/arm/mach-u300/Kconfig                         |   14 +
 arch/arm/mach-ux500/Kconfig                        |   11 +
 arch/arm/mach-versatile/Kconfig                    |   16 +
 arch/arm/mach-vexpress/Kconfig                     |   16 +
 arch/arm/mach-vexpress/Makefile                    |    2 +
 arch/arm/mach-vexpress/ct-ca9x4.c                  |    1 +
 arch/arm/mach-vexpress/include/mach/irqs.h         |    2 +
 arch/arm/mach-vt8500/Kconfig                       |    8 +
 arch/arm/mach-w90x900/Kconfig                      |    8 +
 arch/arm/mach-zynq/Kconfig                         |   10 +
 arch/arm/plat-mxc/Kconfig                          |   11 +
 arch/arm/plat-omap/Kconfig                         |    9 +
 arch/arm/plat-spear/Kconfig                        |    9 +
 arch/arm/plat-versatile/Makefile                   |    2 +
 195 files changed, 1455 insertions(+), 1178 deletions(-)
 create mode 100644 arch/arm/Kconfig.mach
 create mode 100644 arch/arm/mach-ebsa110/Kconfig
 create mode 100644 arch/arm/mach-highbank/Kconfig
 create mode 100644 arch/arm/mach-lpc32xx/Kconfig
 create mode 100644 arch/arm/mach-picoxcell/Kconfig
 delete mode 100644 arch/arm/mach-picoxcell/include/mach/map.h
 delete mode 100644 arch/arm/mach-picoxcell/include/mach/picoxcell_soc.h
 create mode 100644 arch/arm/mach-picoxcell/picoxcell_soc.h
 create mode 100644 arch/arm/mach-pnx4008/Kconfig
 create mode 100644 arch/arm/mach-rpc/Kconfig
 create mode 100644 arch/arm/mach-shark/Kconfig
 create mode 100644 arch/arm/mach-socfpga/Kconfig
 create mode 100644 arch/arm/mach-zynq/Kconfig
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

From: Rob Herring <[email protected]>

In preparation for mulit-platform support, convert all platforms' ARCH_ definition to a hidden option and create a new choice option.

---
 arch/arm/Kconfig                 |  650 ++++++++------------------------------
 arch/arm/mach-at91/Kconfig       |    8 +
 arch/arm/mach-bcmring/Kconfig    |    9 +
 arch/arm/mach-clps711x/Kconfig   |    6 +
 arch/arm/mach-cns3xxx/Kconfig    |    9 +
 arch/arm/mach-davinci/Kconfig    |   12 +
 arch/arm/mach-dove/Kconfig       |    9 +
 arch/arm/mach-ebsa110/Kconfig    |    9 +
 arch/arm/mach-ep93xx/Kconfig     |   11 +
 arch/arm/mach-exynos/Kconfig     |   16 +
 arch/arm/mach-footbridge/Kconfig |    9 +
 arch/arm/mach-gemini/Kconfig     |    6 +
 arch/arm/mach-h720x/Kconfig      |    6 +
 arch/arm/mach-highbank/Kconfig   |   15 +
 arch/arm/mach-integrator/Kconfig |   16 +
 arch/arm/mach-iop13xx/Kconfig    |   11 +
 arch/arm/mach-iop32x/Kconfig     |   10 +
 arch/arm/mach-iop33x/Kconfig     |   10 +
 arch/arm/mach-ixp4xx/Kconfig     |   11 +
 arch/arm/mach-kirkwood/Kconfig   |    9 +
 arch/arm/mach-ks8695/Kconfig     |    7 +
 arch/arm/mach-lpc32xx/Kconfig    |   12 +
 arch/arm/mach-mmp/Kconfig        |   12 +
 arch/arm/mach-msm/Kconfig        |    7 +
 arch/arm/mach-mv78xx0/Kconfig    |    9 +
 arch/arm/mach-mvebu/Kconfig      |   10 +
 arch/arm/mach-mxs/Kconfig        |   11 +
 arch/arm/mach-netx/Kconfig       |    7 +
 arch/arm/mach-nomadik/Kconfig    |   11 +
 arch/arm/mach-orion5x/Kconfig    |    9 +
 arch/arm/mach-picoxcell/Kconfig  |   14 +
 arch/arm/mach-pnx4008/Kconfig    |    5 +
 arch/arm/mach-pxa/Kconfig        |   16 +
 arch/arm/mach-realview/Kconfig   |   15 +
 arch/arm/mach-rpc/Kconfig        |   13 +
 arch/arm/mach-s3c24xx/Kconfig    |   13 +
 arch/arm/mach-s3c64xx/Kconfig    |   26 ++
 arch/arm/mach-s5p64x0/Kconfig    |   13 +
 arch/arm/mach-s5pc100/Kconfig    |   12 +
 arch/arm/mach-s5pv210/Kconfig    |   17 +
 arch/arm/mach-sa1100/Kconfig     |   17 +
 arch/arm/mach-shark/Kconfig      |   11 +
 arch/arm/mach-shmobile/Kconfig   |   14 +
 arch/arm/mach-socfpga/Kconfig    |   16 +
 arch/arm/mach-tegra/Kconfig      |   13 +
 arch/arm/mach-u300/Kconfig       |   14 +
 arch/arm/mach-ux500/Kconfig      |   11 +
 arch/arm/mach-versatile/Kconfig  |   16 +
 arch/arm/mach-vexpress/Kconfig   |   16 +
 arch/arm/mach-vt8500/Kconfig     |    8 +
 arch/arm/mach-w90x900/Kconfig    |    8 +
 arch/arm/mach-zynq/Kconfig       |   10 +
 arch/arm/plat-mxc/Kconfig        |   11 +
 arch/arm/plat-omap/Kconfig       |    9 +
 arch/arm/plat-spear/Kconfig      |    9 +
 55 files changed, 742 insertions(+), 522 deletions(-)
 create mode 100644 arch/arm/mach-ebsa110/Kconfig
 create mode 100644 arch/arm/mach-highbank/Kconfig
 create mode 100644 arch/arm/mach-lpc32xx/Kconfig
 create mode 100644 arch/arm/mach-picoxcell/Kconfig
 create mode 100644 arch/arm/mach-pnx4008/Kconfig
 create mode 100644 arch/arm/mach-rpc/Kconfig
 create mode 100644 arch/arm/mach-shark/Kconfig
 create mode 100644 arch/arm/mach-socfpga/Kconfig
 create mode 100644 arch/arm/mach-zynq/Kconfig
arch/arm/Kconfig +128 -522
index 3557f12..3ad82c6 100644
@@ -256,424 +256,213 @@ choice
 	prompt "ARM system type"
 	default ARCH_VERSATILE
 
-config ARCH_SOCFPGA
+config ARCH_SOCFPGA_CHOICE
 	bool "Altera SOCFPGA family"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_GIC
-	select CACHE_L2X0
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select CPU_V7
-	select DW_APB_TIMER
-	select DW_APB_TIMER_OF
-	select GENERIC_CLOCKEVENTS
-	select GPIO_PL061 if GPIOLIB
-	select HAVE_ARM_SCU
-	select SPARSE_IRQ
-	select USE_OF
+	select ARCH_SOCFPGA
 	help
 	  This enables support for Altera SOCFPGA Cyclone V platform
 
-config ARCH_INTEGRATOR
+config ARCH_INTEGRATOR_CHOICE
 	bool "ARM Ltd. Integrator family"
-	select ARM_AMBA
-	select ARCH_HAS_CPUFREQ
-	select COMMON_CLK
-	select CLK_VERSATILE
-	select HAVE_TCM
-	select ICST
-	select GENERIC_CLOCKEVENTS
-	select PLAT_VERSATILE
-	select PLAT_VERSATILE_FPGA_IRQ
-	select NEED_MACH_IO_H
-	select NEED_MACH_MEMORY_H
-	select SPARSE_IRQ
-	select MULTI_IRQ_HANDLER
+	select ARCH_INTEGRATOR
 	help
 	  Support for ARM's Integrator platform.
 
-config ARCH_REALVIEW
+config ARCH_REALVIEW_CHOICE
 	bool "ARM Ltd. RealView family"
-	select ARM_AMBA
-	select CLKDEV_LOOKUP
-	select HAVE_MACH_CLKDEV
-	select ICST
-	select GENERIC_CLOCKEVENTS
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select PLAT_VERSATILE
-	select PLAT_VERSATILE_CLOCK
-	select PLAT_VERSATILE_CLCD
-	select ARM_TIMER_SP804
-	select GPIO_PL061 if GPIOLIB
-	select NEED_MACH_MEMORY_H
+	select ARCH_REALVIEW
 	help
 	  This enables support for ARM Ltd RealView boards.
 
-config ARCH_VERSATILE
+config ARCH_VERSATILE_CHOICE
 	bool "ARM Ltd. Versatile family"
-	select ARM_AMBA
-	select ARM_VIC
-	select CLKDEV_LOOKUP
-	select HAVE_MACH_CLKDEV
-	select ICST
-	select GENERIC_CLOCKEVENTS
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select NEED_MACH_IO_H if PCI
-	select PLAT_VERSATILE
-	select PLAT_VERSATILE_CLOCK
-	select PLAT_VERSATILE_CLCD
-	select PLAT_VERSATILE_FPGA_IRQ
-	select ARM_TIMER_SP804
+	select ARCH_VERSATILE
 	help
 	  This enables support for ARM Ltd Versatile board.
 
-config ARCH_VEXPRESS
+config ARCH_VEXPRESS_CHOICE
 	bool "ARM Ltd. Versatile Express family"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_TIMER_SP804
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select GENERIC_CLOCKEVENTS
-	select HAVE_CLK
-	select HAVE_PATA_PLATFORM
-	select ICST
-	select NO_IOPORT
-	select PLAT_VERSATILE
-	select PLAT_VERSATILE_CLCD
-	select REGULATOR_FIXED_VOLTAGE if REGULATOR
+	select ARCH_VEXPRESS
 	help
 	  This enables support for the ARM Ltd Versatile Express boards.
 
-config ARCH_AT91
+config ARCH_AT91_CHOICE
 	bool "Atmel AT91"
-	select ARCH_REQUIRE_GPIOLIB
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select IRQ_DOMAIN
-	select NEED_MACH_IO_H if PCCARD
+	select ARCH_AT91
 	help
 	  This enables support for systems based on Atmel
 	  AT91RM9200 and AT91SAM9* processors.
 
-config ARCH_BCMRING
+config ARCH_BCMRING_CHOICE
 	bool "Broadcom BCMRING"
 	depends on MMU
-	select CPU_V6
-	select ARM_AMBA
-	select ARM_TIMER_SP804
-	select CLKDEV_LOOKUP
-	select GENERIC_CLOCKEVENTS
-	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARCH_BCMRING
 	help
 	  Support for Broadcom's BCMRing platform.
 
-config ARCH_HIGHBANK
+config ARCH_HIGHBANK_CHOICE
 	bool "Calxeda Highbank-based"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_GIC
-	select ARM_TIMER_SP804
-	select CACHE_L2X0
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select CPU_V7
-	select GENERIC_CLOCKEVENTS
-	select HAVE_ARM_SCU
-	select HAVE_SMP
-	select SPARSE_IRQ
-	select USE_OF
+	select ARCH_HIGHBANK
 	help
 	  Support for the Calxeda Highbank SoC based boards.
 
-config ARCH_CLPS711X
+config ARCH_CLPS711X_CHOICE
 	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
-	select CPU_ARM720T
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_MEMORY_H
+	select ARCH_CLPS711X
 	help
 	  Support for Cirrus Logic 711x/721x/731x based boards.
 
-config ARCH_CNS3XXX
+config ARCH_CNS3XXX_CHOICE
 	bool "Cavium Networks CNS3XXX family"
-	select CPU_V6K
-	select GENERIC_CLOCKEVENTS
-	select ARM_GIC
-	select MIGHT_HAVE_CACHE_L2X0
-	select MIGHT_HAVE_PCI
-	select PCI_DOMAINS if PCI
+	select ARCH_CNS3XXX
 	help
 	  Support for Cavium Networks CNS3XXX platform.
 
-config ARCH_GEMINI
+config ARCH_GEMINI_CHOICE
 	bool "Cortina Systems Gemini"
-	select CPU_FA526
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_GEMINI
 	help
 	  Support for the Cortina Systems Gemini family SoCs
 
-config ARCH_PRIMA2
+config ARCH_PRIMA2_CHOICE
 	bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
-	select CPU_V7
-	select NO_IOPORT
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select CLKDEV_LOOKUP
-	select GENERIC_IRQ_CHIP
-	select MIGHT_HAVE_CACHE_L2X0
-	select PINCTRL
-	select PINCTRL_SIRF
-	select USE_OF
-	select ZONE_DMA
+	select ARCH_PRIMA2
 	help
           Support for CSR SiRFSoC ARM Cortex A9 Platform
 
-config ARCH_EBSA110
+config ARCH_EBSA110_CHOICE
 	bool "EBSA-110"
-	select CPU_SA110
-	select ISA
-	select NO_IOPORT
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_IO_H
-	select NEED_MACH_MEMORY_H
+	select ARCH_EBSA110
 	help
 	  This is an evaluation board for the StrongARM processor available
 	  from Digital. It has limited hardware on-board, including an
 	  Ethernet interface, two PCMCIA sockets, two serial ports and a
 	  parallel port.
 
-config ARCH_EP93XX
+config ARCH_EP93XX_CHOICE
 	bool "EP93xx-based"
-	select CPU_ARM920T
-	select ARM_AMBA
-	select ARM_VIC
-	select CLKDEV_LOOKUP
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_HAS_HOLES_MEMORYMODEL
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_MEMORY_H
+	select ARCH_EP93XX
 	help
 	  This enables support for the Cirrus EP93xx series of CPUs.
 
-config ARCH_FOOTBRIDGE
+config ARCH_FOOTBRIDGE_CHOICE
 	bool "FootBridge"
-	select CPU_SA110
-	select FOOTBRIDGE
-	select GENERIC_CLOCKEVENTS
-	select HAVE_IDE
-	select NEED_MACH_IO_H
-	select NEED_MACH_MEMORY_H
+	select ARCH_FOOTBRIDGE
 	help
 	  Support for systems based on the DC21285 companion chip
 	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
 
-config ARCH_MXC
+config ARCH_MXC_CHOICE
 	bool "Freescale MXC/iMX-based"
-	select GENERIC_CLOCKEVENTS
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select GENERIC_IRQ_CHIP
-	select MULTI_IRQ_HANDLER
-	select SPARSE_IRQ
-	select USE_OF
+	select ARCH_MXC
 	help
 	  Support for Freescale MXC/iMX-based family of processors
 
-config ARCH_MXS
+config ARCH_MXS_CHOICE
 	bool "Freescale MXS-based"
-	select GENERIC_CLOCKEVENTS
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select COMMON_CLK
-	select HAVE_CLK_PREPARE
-	select PINCTRL
-	select USE_OF
+	select ARCH_MXS
 	help
 	  Support for Freescale MXS-based family of processors
 
-config ARCH_NETX
+config ARCH_NETX_CHOICE
 	bool "Hilscher NetX based"
-	select CLKSRC_MMIO
-	select CPU_ARM926T
-	select ARM_VIC
-	select GENERIC_CLOCKEVENTS
+	select ARCH_NETX
 	help
 	  This enables support for systems based on the Hilscher NetX Soc
 
-config ARCH_H720X
+config ARCH_H720X_CHOICE
 	bool "Hynix HMS720x-based"
-	select CPU_ARM720T
-	select ISA_DMA_API
-	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_H720X
 	help
 	  This enables support for systems based on the Hynix HMS720x
 
-config ARCH_IOP13XX
+config ARCH_IOP13XX_CHOICE
 	bool "IOP13xx-based"
 	depends on MMU
-	select CPU_XSC3
-	select PLAT_IOP
-	select PCI
-	select ARCH_SUPPORTS_MSI
-	select VMSPLIT_1G
-	select NEED_MACH_IO_H
-	select NEED_MACH_MEMORY_H
-	select NEED_RET_TO_USER
+	select ARCH_IOP13XX
 	help
 	  Support for Intel's IOP13XX (XScale) family of processors.
 
-config ARCH_IOP32X
+config ARCH_IOP32X_CHOICE
 	bool "IOP32x-based"
 	depends on MMU
-	select CPU_XSCALE
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_IO_H
-	select NEED_RET_TO_USER
-	select PLAT_IOP
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_IOP32X
 	help
 	  Support for Intel's 80219 and IOP32X (XScale) family of
 	  processors.
 
-config ARCH_IOP33X
+config ARCH_IOP33X_CHOICE
 	bool "IOP33x-based"
 	depends on MMU
-	select CPU_XSCALE
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_IO_H
-	select NEED_RET_TO_USER
-	select PLAT_IOP
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_IOP33X
 	help
 	  Support for Intel's IOP33X (XScale) family of processors.
 
-config ARCH_IXP4XX
+config ARCH_IXP4XX_CHOICE
 	bool "IXP4xx-based"
 	depends on MMU
-	select ARCH_HAS_DMA_SET_COHERENT_MASK
-	select CLKSRC_MMIO
-	select CPU_XSCALE
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select MIGHT_HAVE_PCI
-	select NEED_MACH_IO_H
-	select DMABOUNCE if PCI
+	select ARCH_IXP4XX
 	help
 	  Support for Intel's IXP4XX (XScale) family of processors.
 
-config ARCH_MVEBU
+config ARCH_MVEBU_CHOICE
 	bool "Marvell SOCs with Device Tree support"
-	select GENERIC_CLOCKEVENTS
-	select MULTI_IRQ_HANDLER
-	select SPARSE_IRQ
-	select CLKSRC_MMIO
-	select GENERIC_IRQ_CHIP
-	select IRQ_DOMAIN
-	select COMMON_CLK
+	select ARCH_MVEBU
 	help
 	  Support for the Marvell SoC Family with device tree support
 
-config ARCH_DOVE
+config ARCH_DOVE_CHOICE
 	bool "Marvell Dove"
-	select CPU_V7
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select NEED_MACH_IO_H
-	select PLAT_ORION
+	select ARCH_DOVE
 	help
 	  Support for the Marvell Dove SoC 88AP510
 
-config ARCH_KIRKWOOD
+config ARCH_KIRKWOOD_CHOICE
 	bool "Marvell Kirkwood"
-	select CPU_FEROCEON
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select NEED_MACH_IO_H
-	select PLAT_ORION
+	select ARCH_KIRKWOOD
 	help
 	  Support for the following Marvell Kirkwood series SoCs:
 	  88F6180, 88F6192 and 88F6281.
 
-config ARCH_LPC32XX
+config ARCH_LPC32XX_CHOICE
 	bool "NXP LPC32XX"
-	select CLKSRC_MMIO
-	select CPU_ARM926T
-	select ARCH_REQUIRE_GPIOLIB
-	select HAVE_IDE
-	select ARM_AMBA
-	select USB_ARCH_HAS_OHCI
-	select CLKDEV_LOOKUP
-	select GENERIC_CLOCKEVENTS
-	select USE_OF
-	select HAVE_PWM
+	select ARCH_LPC32XX
 	help
 	  Support for the NXP LPC32XX family of processors
 
-config ARCH_MV78XX0
+config ARCH_MV78XX0_CHOICE
 	bool "Marvell MV78xx0"
-	select CPU_FEROCEON
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select NEED_MACH_IO_H
-	select PLAT_ORION
+	select ARCH_MV78XX0
 	help
 	  Support for the following Marvell MV78xx0 series SoCs:
 	  MV781x0, MV782x0.
 
-config ARCH_ORION5X
+config ARCH_ORION5X_CHOICE
 	bool "Marvell Orion"
 	depends on MMU
-	select CPU_FEROCEON
-	select PCI
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select NEED_MACH_IO_H
-	select PLAT_ORION
+	select ARCH_ORION5X
 	help
 	  Support for the following Marvell Orion 5x series SoCs:
 	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
 	  Orion-2 (5281), Orion-1-90 (6183).
 
-config ARCH_MMP
+config ARCH_MMP_CHOICE
 	bool "Marvell PXA168/910/MMP2"
 	depends on MMU
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
-	select GENERIC_CLOCKEVENTS
-	select GPIO_PXA
-	select IRQ_DOMAIN
-	select PLAT_PXA
-	select SPARSE_IRQ
-	select GENERIC_ALLOCATOR
+	select ARCH_MMP
 	help
 	  Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
 
-config ARCH_KS8695
+config ARCH_KS8695_CHOICE
 	bool "Micrel/Kendin KS8695"
-	select CPU_ARM922T
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_MEMORY_H
+	select ARCH_KS8695
 	help
 	  Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
 	  System-on-Chip devices.
 
-config ARCH_W90X900
+config ARCH_W90X900_CHOICE
 	bool "Nuvoton W90X900 CPU"
-	select CPU_ARM926T
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select GENERIC_CLOCKEVENTS
+	select ARCH_W90X900
 	help
 	  Support for Nuvoton (Winbond logic dept.) ARM9 processor,
 	  At present, the w90x900 has been renamed nuc900, regarding
@@ -683,74 +472,37 @@ config ARCH_W90X900
 	  <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/
 		ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller>
 
-config ARCH_TEGRA
+config ARCH_TEGRA_CHOICE
 	bool "NVIDIA Tegra"
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select GENERIC_CLOCKEVENTS
-	select GENERIC_GPIO
-	select HAVE_CLK
-	select HAVE_SMP
-	select MIGHT_HAVE_CACHE_L2X0
-	select NEED_MACH_IO_H if PCI
-	select ARCH_HAS_CPUFREQ
-	select USE_OF
+	select ARCH_TEGRA
 	help
 	  This enables support for NVIDIA Tegra based systems (Tegra APX,
 	  Tegra 6xx and Tegra 2 series).
 
-config ARCH_PICOXCELL
+config ARCH_PICOXCELL_CHOICE
 	bool "Picochip picoXcell"
-	select ARCH_REQUIRE_GPIOLIB
-	select ARM_PATCH_PHYS_VIRT
-	select ARM_VIC
-	select CPU_V6K
-	select DW_APB_TIMER
-	select DW_APB_TIMER_OF
-	select GENERIC_CLOCKEVENTS
-	select GENERIC_GPIO
-	select HAVE_TCM
-	select NO_IOPORT
-	select SPARSE_IRQ
-	select USE_OF
+	select ARCH_PICOXCELL
 	help
 	  This enables support for systems based on the Picochip picoXcell
 	  family of Femtocell devices.  The picoxcell support requires device tree
 	  for all boards.
 
-config ARCH_PNX4008
+config ARCH_PNX4008_CHOICE
 	bool "Philips Nexperia PNX4008 Mobile"
-	select CPU_ARM926T
-	select CLKDEV_LOOKUP
-	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_PNX4008
 	help
 	  This enables support for Philips PNX4008 mobile platform.
 
-config ARCH_PXA
+config ARCH_PXA_CHOICE
 	bool "PXA2xx/PXA3xx-based"
 	depends on MMU
-	select ARCH_MTD_XIP
-	select ARCH_HAS_CPUFREQ
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select ARCH_REQUIRE_GPIOLIB
-	select GENERIC_CLOCKEVENTS
-	select GPIO_PXA
-	select PLAT_PXA
-	select SPARSE_IRQ
-	select AUTO_ZRELADDR
-	select MULTI_IRQ_HANDLER
-	select ARM_CPU_SUSPEND if PM
-	select HAVE_IDE
+	select ARCH_PXA
 	help
 	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
 
-config ARCH_MSM
+config ARCH_MSM_CHOICE
 	bool "Qualcomm MSM"
-	select HAVE_CLK
-	select GENERIC_CLOCKEVENTS
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
+	select ARCH_MSM
 	help
 	  Support for Qualcomm MSM/QSD based systems.  This runs on the
 	  apps processor of the MSM/QSD and depends on a shared memory
@@ -758,283 +510,121 @@ config ARCH_MSM
 	  stack and controls some vital subsystems
 	  (clock and power control, etc).
 
-config ARCH_SHMOBILE
+config ARCH_SHMOBILE_CHOICE
 	bool "Renesas SH-Mobile / R-Mobile"
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select HAVE_MACH_CLKDEV
-	select HAVE_SMP
-	select GENERIC_CLOCKEVENTS
-	select MIGHT_HAVE_CACHE_L2X0
-	select NO_IOPORT
-	select SPARSE_IRQ
-	select MULTI_IRQ_HANDLER
-	select PM_GENERIC_DOMAINS if PM
-	select NEED_MACH_MEMORY_H
+	select ARCH_SHMOBILE
 	help
 	  Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
 
-config ARCH_RPC
+config ARCH_RPC_CHOICE
 	bool "RiscPC"
-	select ARCH_ACORN
-	select FIQ
-	select ARCH_MAY_HAVE_PC_FDC
-	select HAVE_PATA_PLATFORM
-	select ISA_DMA_API
-	select NO_IOPORT
-	select ARCH_SPARSEMEM_ENABLE
-	select ARCH_USES_GETTIMEOFFSET
-	select HAVE_IDE
-	select NEED_MACH_IO_H
-	select NEED_MACH_MEMORY_H
+	select ARCH_RPC
 	help
 	  On the Acorn Risc-PC, Linux can support the internal IDE disk and
 	  CD-ROM interface, serial and parallel port, and the floppy drive.
 
-config ARCH_SA1100
+config ARCH_SA1100_CHOICE
 	bool "SA1100-based"
-	select CLKSRC_MMIO
-	select CPU_SA1100
-	select ISA
-	select ARCH_SPARSEMEM_ENABLE
-	select ARCH_MTD_XIP
-	select ARCH_HAS_CPUFREQ
-	select CPU_FREQ
-	select GENERIC_CLOCKEVENTS
-	select CLKDEV_LOOKUP
-	select ARCH_REQUIRE_GPIOLIB
-	select HAVE_IDE
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_MEMORY_H
-	select SPARSE_IRQ
+	select ARCH_SA1100
 	help
 	  Support for StrongARM 11x0 based boards.
 
-config ARCH_S3C24XX
+config ARCH_S3C24XX_CHOICE
 	bool "Samsung S3C24XX SoCs"
-	select GENERIC_GPIO
-	select ARCH_HAS_CPUFREQ
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select ARCH_USES_GETTIMEOFFSET
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C_RTC if RTC_CLASS
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_IO_H
+	select ARCH_S3C24XX
 	help
 	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
 	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
 	  (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
 	  Samsung SMDK2410 development board (and derivatives).
 
-config ARCH_S3C64XX
+config ARCH_S3C64XX_CHOICE
 	bool "Samsung S3C64XX"
-	select PLAT_SAMSUNG
-	select CPU_V6
-	select ARM_VIC
-	select HAVE_CLK
-	select HAVE_TCM
-	select CLKDEV_LOOKUP
-	select NO_IOPORT
-	select ARCH_USES_GETTIMEOFFSET
-	select ARCH_HAS_CPUFREQ
-	select ARCH_REQUIRE_GPIOLIB
-	select SAMSUNG_CLKSRC
-	select SAMSUNG_IRQ_VIC_TIMER
-	select S3C_GPIO_TRACK
-	select S3C_DEV_NAND
-	select USB_ARCH_HAS_OHCI
-	select SAMSUNG_GPIOLIB_4BIT
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select NEED_MACH_GPIO_H
+	select ARCH_S3C64XX
 	help
 	  Samsung S3C64XX series based systems
 
-config ARCH_S5P64X0
+config ARCH_S5P64X0_CHOICE
 	bool "Samsung S5P6440 S5P6450"
-	select CPU_V6
-	select GENERIC_GPIO
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select GENERIC_CLOCKEVENTS
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C_RTC if RTC_CLASS
-	select NEED_MACH_GPIO_H
+	select ARCH_S5P64X0
 	help
 	  Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
 	  SMDK6450.
 
-config ARCH_S5PC100
+config ARCH_S5PC100_CHOICE
 	bool "Samsung S5PC100"
-	select GENERIC_GPIO
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select CPU_V7
-	select ARCH_USES_GETTIMEOFFSET
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C_RTC if RTC_CLASS
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select NEED_MACH_GPIO_H
+	select ARCH_S5PC100
 	help
 	  Samsung S5PC100 series based systems
 
-config ARCH_S5PV210
+config ARCH_S5PV210_CHOICE
 	bool "Samsung S5PV210/S5PC110"
-	select CPU_V7
-	select ARCH_SPARSEMEM_ENABLE
-	select ARCH_HAS_HOLES_MEMORYMODEL
-	select GENERIC_GPIO
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select CLKSRC_MMIO
-	select ARCH_HAS_CPUFREQ
-	select GENERIC_CLOCKEVENTS
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C_RTC if RTC_CLASS
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_MEMORY_H
+	select ARCH_S5PV210
 	help
 	  Samsung S5PV210/S5PC110 series based systems
 
-config ARCH_EXYNOS
+config ARCH_EXYNOS_CHOICE
 	bool "SAMSUNG EXYNOS"
-	select CPU_V7
-	select ARCH_SPARSEMEM_ENABLE
-	select ARCH_HAS_HOLES_MEMORYMODEL
-	select GENERIC_GPIO
-	select HAVE_CLK
-	select CLKDEV_LOOKUP
-	select ARCH_HAS_CPUFREQ
-	select GENERIC_CLOCKEVENTS
-	select HAVE_S3C_RTC if RTC_CLASS
-	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
-	select NEED_MACH_GPIO_H
-	select NEED_MACH_MEMORY_H
+	select ARCH_EXYNOS
 	help
 	  Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
 
-config ARCH_SHARK
+config ARCH_SHARK_CHOICE
 	bool "Shark"
-	select CPU_SA110
-	select ISA
-	select ISA_DMA
-	select ZONE_DMA
-	select PCI
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_MEMORY_H
-	select NEED_MACH_IO_H
+	select ARCH_SHARK
 	help
 	  Support for the StrongARM based Digital DNARD machine, also known
 	  as "Shark" (<http://www.shark-linux.de/shark.html>).
 
-config ARCH_U300
+config ARCH_U300_CHOICE
 	bool "ST-Ericsson U300 Series"
 	depends on MMU
-	select CLKSRC_MMIO
-	select CPU_ARM926T
-	select HAVE_TCM
-	select ARM_AMBA
-	select ARM_PATCH_PHYS_VIRT
-	select ARM_VIC
-	select GENERIC_CLOCKEVENTS
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select GENERIC_GPIO
-	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_U300
 	help
 	  Support for ST-Ericsson U300 series mobile platforms.
 
-config ARCH_U8500
+config ARCH_U8500_CHOICE
 	bool "ST-Ericsson U8500 Series"
 	depends on MMU
-	select CPU_V7
-	select ARM_AMBA
-	select GENERIC_CLOCKEVENTS
-	select CLKDEV_LOOKUP
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_HAS_CPUFREQ
-	select HAVE_SMP
-	select MIGHT_HAVE_CACHE_L2X0
+	select ARCH_U8500
 	help
 	  Support for ST-Ericsson's Ux500 architecture
 
-config ARCH_NOMADIK
+config ARCH_NOMADIK_CHOICE
 	bool "STMicroelectronics Nomadik"
-	select ARM_AMBA
-	select ARM_VIC
-	select CPU_ARM926T
-	select COMMON_CLK
-	select GENERIC_CLOCKEVENTS
-	select PINCTRL
-	select MIGHT_HAVE_CACHE_L2X0
-	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_NOMADIK
 	help
 	  Support for the Nomadik platform by ST-Ericsson
 
-config ARCH_DAVINCI
+config ARCH_DAVINCI_CHOICE
 	bool "TI DaVinci"
-	select GENERIC_CLOCKEVENTS
-	select ARCH_REQUIRE_GPIOLIB
-	select ZONE_DMA
-	select HAVE_IDE
-	select CLKDEV_LOOKUP
-	select GENERIC_ALLOCATOR
-	select GENERIC_IRQ_CHIP
-	select ARCH_HAS_HOLES_MEMORYMODEL
+	select ARCH_DAVINCI
 	select NEED_MACH_GPIO_H
 	help
 	  Support for TI's DaVinci platform.
 
-config ARCH_OMAP
+config ARCH_OMAP_CHOICE
 	bool "TI OMAP"
 	depends on MMU
-	select HAVE_CLK
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_HAS_CPUFREQ
-	select CLKSRC_MMIO
-	select GENERIC_CLOCKEVENTS
-	select ARCH_HAS_HOLES_MEMORYMODEL
+	select ARCH_OMAP
 	help
 	  Support for TI's OMAP platform (OMAP1/2/3/4).
 
-config PLAT_SPEAR
+config PLAT_SPEAR_CHOICE
 	bool "ST SPEAr"
-	select ARM_AMBA
-	select ARCH_REQUIRE_GPIOLIB
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select CLKSRC_MMIO
-	select GENERIC_CLOCKEVENTS
-	select HAVE_CLK
+	select PLAT_SPEAR
 	help
 	  Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).
 
-config ARCH_VT8500
+config ARCH_VT8500_CHOICE
 	bool "VIA/WonderMedia 85xx"
-	select CPU_ARM926T
-	select GENERIC_GPIO
-	select ARCH_HAS_CPUFREQ
-	select GENERIC_CLOCKEVENTS
-	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_VT8500
 	help
 	  Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
 
-config ARCH_ZYNQ
+config ARCH_ZYNQ_CHOICE
 	bool "Xilinx Zynq ARM Cortex A9 Platform"
-	select CPU_V7
-	select GENERIC_CLOCKEVENTS
-	select CLKDEV_LOOKUP
-	select ARM_GIC
-	select ARM_AMBA
-	select ICST
-	select MIGHT_HAVE_CACHE_L2X0
-	select USE_OF
+	select ARCH_ZYNQ
 	help
 	  Support for Xilinx Zynq ARM Cortex A9 Platform
 endchoice
@@ -1058,6 +648,8 @@ source "arch/arm/mach-davinci/Kconfig"
 
 source "arch/arm/mach-dove/Kconfig"
 
+source "arch/arm/mach-ebsa110/Kconfig"
+
 source "arch/arm/mach-ep93xx/Kconfig"
 
 source "arch/arm/mach-footbridge/Kconfig"
@@ -1066,6 +658,8 @@ source "arch/arm/mach-gemini/Kconfig"
 
 source "arch/arm/mach-h720x/Kconfig"
 
+source "arch/arm/mach-highbank/Kconfig"
+
 source "arch/arm/mach-integrator/Kconfig"
 
 source "arch/arm/mach-iop32x/Kconfig"
@@ -1080,6 +674,8 @@ source "arch/arm/mach-kirkwood/Kconfig"
 
 source "arch/arm/mach-ks8695/Kconfig"
 
+source "arch/arm/mach-lpc32xx/Kconfig"
+
 source "arch/arm/mach-msm/Kconfig"
 
 source "arch/arm/mach-mv78xx0/Kconfig"
@@ -1101,6 +697,10 @@ source "arch/arm/mach-omap2/Kconfig"
 
 source "arch/arm/mach-orion5x/Kconfig"
 
+source "arch/arm/mach-picoxcell/Kconfig"
+
+source "arch/arm/mach-pnx4008/Kconfig"
+
 source "arch/arm/mach-pxa/Kconfig"
 source "arch/arm/plat-pxa/Kconfig"
 
@@ -1108,11 +708,17 @@ source "arch/arm/mach-mmp/Kconfig"
 
 source "arch/arm/mach-realview/Kconfig"
 
+source "arch/arm/mach-rpc/Kconfig"
+
 source "arch/arm/mach-sa1100/Kconfig"
 
 source "arch/arm/plat-samsung/Kconfig"
 source "arch/arm/plat-s3c24xx/Kconfig"
 
+source "arch/arm/mach-shark/Kconfig"
+
+source "arch/arm/mach-socfpga/Kconfig"
+
 source "arch/arm/plat-spear/Kconfig"
 
 source "arch/arm/mach-s3c24xx/Kconfig"
@@ -1121,9 +727,7 @@ source "arch/arm/mach-s3c2412/Kconfig"
 source "arch/arm/mach-s3c2440/Kconfig"
 endif
 
-if ARCH_S3C64XX
 source "arch/arm/mach-s3c64xx/Kconfig"
-endif
 
 source "arch/arm/mach-s5p64x0/Kconfig"
 
@@ -1150,6 +754,8 @@ source "arch/arm/mach-vt8500/Kconfig"
 
 source "arch/arm/mach-w90x900/Kconfig"
 
+source "arch/arm/mach-zynq/Kconfig"
+
 # Definitions to make life easier
 config ARCH_ACORN
 	bool
arch/arm/mach-at91/Kconfig +8 -0
index c8050b1..835886a 100644
@@ -1,3 +1,11 @@
+config ARCH_AT91
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select HAVE_CLK
+	select IRQ_DOMAIN
+	select NEED_MACH_IO_H if PCCARD
+
 if ARCH_AT91
 
 config HAVE_AT91_DATAFLASH_CARD
arch/arm/mach-bcmring/Kconfig +9 -0
index 9170d16..7a8c869 100644
@@ -1,3 +1,12 @@
+config ARCH_BCMRING
+	bool
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_TIMER_SP804
+	select CLKDEV_LOOKUP
+	select CPU_V6
+	select GENERIC_CLOCKEVENTS
+
 choice
 	prompt "Processor selection in BCMRING family of devices"
 	depends on ARCH_BCMRING
arch/arm/mach-clps711x/Kconfig +6 -0
index ea036d6..2d3dba9 100644
@@ -1,3 +1,9 @@
+config ARCH_CLPS711X
+	bool
+	select ARCH_USES_GETTIMEOFFSET
+	select CPU_ARM720T
+	select NEED_MACH_MEMORY_H
+
 if ARCH_CLPS711X
 
 menu "CLPS711X/EP721X/EP731X Implementations"
arch/arm/mach-cns3xxx/Kconfig +9 -0
index 29b13f2..0dab723 100644
@@ -1,3 +1,12 @@
+config ARCH_CNS3XXX
+	bool
+	select CPU_V6K
+	select GENERIC_CLOCKEVENTS
+	select ARM_GIC
+	select MIGHT_HAVE_CACHE_L2X0
+	select MIGHT_HAVE_PCI
+	select PCI_DOMAINS if PCI
+
 menu "CNS3XXX platform type"
 	depends on ARCH_CNS3XXX
 
arch/arm/mach-davinci/Kconfig +12 -0
index ab99c3c..3e0102b 100644
@@ -1,3 +1,15 @@
+config ARCH_DAVINCI
+	bool
+	select ARCH_HAS_HOLES_MEMORYMODEL
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select GENERIC_ALLOCATOR
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_IRQ_CHIP
+	select HAVE_IDE
+	select NEED_MACH_GPIO_H
+	select ZONE_DMA
+
 if ARCH_DAVINCI
 
 config AINTC
arch/arm/mach-dove/Kconfig +9 -0
index dd937c5..34b7bdb 100644
@@ -1,3 +1,12 @@
+config ARCH_DOVE
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select NEED_MACH_IO_H
+	select PCI
+	select PLAT_ORION
+
 if ARCH_DOVE
 
 menu "Marvell Dove Implementations"
arch/arm/mach-ebsa110/Kconfig new file +9 -0
new file mode 100644
index 0000000..3ca0f58
@@ -0,0 +1,9 @@
+config ARCH_EBSA110
+	bool
+	select CPU_SA110
+	select ISA
+	select NO_IOPORT
+	select ARCH_USES_GETTIMEOFFSET
+	select NEED_MACH_IO_H
+	select NEED_MACH_MEMORY_H
+
arch/arm/mach-ep93xx/Kconfig +11 -0
index fe3c1fa..4cf770c 100644
@@ -1,3 +1,14 @@
+config ARCH_EP93XX
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_HAS_HOLES_MEMORYMODEL
+	select ARCH_USES_GETTIMEOFFSET
+	select ARM_AMBA
+	select ARM_VIC
+	select CLKDEV_LOOKUP
+	select CPU_ARM920T
+	select NEED_MACH_MEMORY_H
+
 if ARCH_EP93XX
 
 menu "Cirrus EP93xx Implementation Options"
arch/arm/mach-exynos/Kconfig +16 -0
index b5b4c8c..4e78a4a 100644
@@ -7,6 +7,22 @@
 
 # Configuration options for the EXYNOS4
 
+config ARCH_EXYNOS
+	bool
+	select ARCH_SPARSEMEM_ENABLE
+	select ARCH_HAS_CPUFREQ
+	select ARCH_HAS_HOLES_MEMORYMODEL
+	select CLKDEV_LOOKUP
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select HAVE_S3C_RTC if RTC_CLASS
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_MEMORY_H
+
 if ARCH_EXYNOS
 
 menu "SAMSUNG EXYNOS SoCs Support"
arch/arm/mach-footbridge/Kconfig +9 -0
index f643ef8..6690953 100644
@@ -1,3 +1,12 @@
+config ARCH_FOOTBRIDGE
+	bool
+	select CPU_SA110
+	select FOOTBRIDGE
+	select GENERIC_CLOCKEVENTS
+	select HAVE_IDE
+	select NEED_MACH_IO_H
+	select NEED_MACH_MEMORY_H
+
 if ARCH_FOOTBRIDGE
 
 menu "Footbridge Implementations"
arch/arm/mach-gemini/Kconfig +6 -0
index 6f066ee..54d4cee 100644
@@ -1,3 +1,9 @@
+config ARCH_GEMINI
+	bool
+	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FA526
+
 if ARCH_GEMINI
 
 menu "Cortina Systems Gemini Implementations"
arch/arm/mach-h720x/Kconfig +6 -0
index abf356c..566a4ed 100644
@@ -1,3 +1,9 @@
+config ARCH_H720X
+	bool
+	select CPU_ARM720T
+	select ISA_DMA_API
+	select ARCH_USES_GETTIMEOFFSET
+
 if ARCH_H720X
 
 menu "h720x Implementations"
arch/arm/mach-highbank/Kconfig new file +15 -0
new file mode 100644
index 0000000..d4f1b23
@@ -0,0 +1,15 @@
+config ARCH_HIGHBANK
+	bool
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_GIC
+	select ARM_TIMER_SP804
+	select CACHE_L2X0
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select HAVE_ARM_SCU
+	select HAVE_SMP
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-integrator/Kconfig +16 -0
index 350e266..88afd42 100644
@@ -1,3 +1,19 @@
+config ARCH_INTEGRATOR
+	bool
+	select ARM_AMBA
+	select ARCH_HAS_CPUFREQ
+	select COMMON_CLK
+	select CLK_VERSATILE
+	select HAVE_TCM
+	select ICST
+	select GENERIC_CLOCKEVENTS
+	select PLAT_VERSATILE
+	select PLAT_VERSATILE_FPGA_IRQ
+	select NEED_MACH_IO_H
+	select NEED_MACH_MEMORY_H
+	select SPARSE_IRQ
+	select MULTI_IRQ_HANDLER
+
 if ARCH_INTEGRATOR
 
 menu "Integrator Options"
arch/arm/mach-iop13xx/Kconfig +11 -0
index 40c2d68..d004752 100644
@@ -1,3 +1,14 @@
+config ARCH_IOP13XX
+	bool
+	select CPU_XSC3
+	select PLAT_IOP
+	select PCI
+	select ARCH_SUPPORTS_MSI
+	select VMSPLIT_1G
+	select NEED_MACH_IO_H
+	select NEED_MACH_MEMORY_H
+	select NEED_RET_TO_USER
+
 if ARCH_IOP13XX
 
 menu "IOP13XX Implementation Options"
arch/arm/mach-iop32x/Kconfig +10 -0
index 5e8c6f7..f438f73 100644
@@ -1,3 +1,13 @@
+config ARCH_IOP32X
+	bool
+	select CPU_XSCALE
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_IO_H
+	select NEED_RET_TO_USER
+	select PLAT_IOP
+	select PCI
+	select ARCH_REQUIRE_GPIOLIB
+
 if ARCH_IOP32X
 
 menu "IOP32x Implementation Options"
arch/arm/mach-iop33x/Kconfig +10 -0
index 9aa016b..20b3dbe 100644
@@ -1,3 +1,13 @@
+config ARCH_IOP33X
+	bool
+	select CPU_XSCALE
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_IO_H
+	select NEED_RET_TO_USER
+	select PLAT_IOP
+	select PCI
+	select ARCH_REQUIRE_GPIOLIB
+
 if ARCH_IOP33X
 
 menu "IOP33x Implementation Options"
arch/arm/mach-ixp4xx/Kconfig +11 -0
index fd5e7b6..48f9978 100644
@@ -1,3 +1,14 @@
+config ARCH_IXP4XX
+	bool
+	select ARCH_HAS_DMA_SET_COHERENT_MASK
+	select CLKSRC_MMIO
+	select CPU_XSCALE
+	select ARCH_REQUIRE_GPIOLIB
+	select GENERIC_CLOCKEVENTS
+	select MIGHT_HAVE_PCI
+	select NEED_MACH_IO_H
+	select DMABOUNCE if PCI
+
 if ARCH_IXP4XX
 
 config ARCH_SUPPORTS_BIG_ENDIAN
arch/arm/mach-kirkwood/Kconfig +9 -0
index ca5c15a..2fedc99 100644
@@ -1,3 +1,12 @@
+config ARCH_KIRKWOOD
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FEROCEON
+	select GENERIC_CLOCKEVENTS
+	select NEED_MACH_IO_H
+	select PCI
+	select PLAT_ORION
+
 if ARCH_KIRKWOOD
 
 menu "Marvell Kirkwood Implementations"
arch/arm/mach-ks8695/Kconfig +7 -0
index f5c39a8..f73a02f 100644
@@ -1,3 +1,10 @@
+config ARCH_KS8695
+	bool
+	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_ARM922T
+	select NEED_MACH_MEMORY_H
+
 if ARCH_KS8695
 
 menu "Kendin/Micrel KS8695 Implementations"
arch/arm/mach-lpc32xx/Kconfig new file +12 -0
new file mode 100644
index 0000000..7975c48
@@ -0,0 +1,12 @@
+config ARCH_LPC32XX
+	bool
+	select CLKSRC_MMIO
+	select CPU_ARM926T
+	select ARCH_REQUIRE_GPIOLIB
+	select HAVE_IDE
+	select ARM_AMBA
+	select USB_ARCH_HAS_OHCI
+	select CLKDEV_LOOKUP
+	select GENERIC_CLOCKEVENTS
+	select USE_OF
+	select HAVE_PWM
arch/arm/mach-mmp/Kconfig +12 -0
index 7fddd01..2c586fd 100644
@@ -1,3 +1,15 @@
+config ARCH_MMP
+	bool
+	depends on MMU
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select GENERIC_CLOCKEVENTS
+	select GPIO_PXA
+	select IRQ_DOMAIN
+	select PLAT_PXA
+	select SPARSE_IRQ
+	select GENERIC_ALLOCATOR
+
 if ARCH_MMP
 
 menu "Marvell PXA168/910/MMP2 Implmentations"
arch/arm/mach-msm/Kconfig +7 -0
index 1cd40ad..8b6994e 100644
@@ -1,3 +1,10 @@
+config ARCH_MSM
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select GENERIC_CLOCKEVENTS
+	select HAVE_CLK
+
 if ARCH_MSM
 
 choice
arch/arm/mach-mv78xx0/Kconfig +9 -0
index f2d309d..6c09349 100644
@@ -1,3 +1,12 @@
+config ARCH_MV78XX0
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FEROCEON
+	select GENERIC_CLOCKEVENTS
+	select NEED_MACH_IO_H
+	select PCI
+	select PLAT_ORION
+
 if ARCH_MV78XX0
 
 menu "Marvell MV78xx0 Implementations"
arch/arm/mach-mvebu/Kconfig +10 -0
index caa2c5e..1ed7d15 100644
@@ -1,3 +1,13 @@
+config ARCH_MVEBU
+	bool
+	select CLKSRC_MMIO
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_IRQ_CHIP
+	select IRQ_DOMAIN
+	select MULTI_IRQ_HANDLER
+	select SPARSE_IRQ
+
 if ARCH_MVEBU
 
 menu "Marvell SOC with device tree"
arch/arm/mach-mxs/Kconfig +11 -0
index 9a8bbda..cea9703 100644
@@ -1,3 +1,14 @@
+config ARCH_MXS
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select HAVE_CLK_PREPARE
+	select PINCTRL
+	select USE_OF
+
 if ARCH_MXS
 
 source "arch/arm/mach-mxs/devices/Kconfig"
arch/arm/mach-netx/Kconfig +7 -0
index 3d90ef1..29b1d56 100644
@@ -1,3 +1,10 @@
+config ARCH_NETX
+	bool
+	select ARM_VIC
+	select CLKSRC_MMIO
+	select CPU_ARM926T
+	select GENERIC_CLOCKEVENTS
+
 menu "NetX Implementations"
 	depends on ARCH_NETX
 
arch/arm/mach-nomadik/Kconfig +11 -0
index 365879b..af0821d 100644
@@ -1,3 +1,14 @@
+config ARCH_NOMADIK
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select ARM_AMBA
+	select ARM_VIC
+	select COMMON_CLK
+	select CPU_ARM926T
+	select GENERIC_CLOCKEVENTS
+	select MIGHT_HAVE_CACHE_L2X0
+	select PINCTRL
+
 if ARCH_NOMADIK
 
 menu "Nomadik boards"
arch/arm/mach-orion5x/Kconfig +9 -0
index 0673f0c..c8470c7 100644
@@ -1,3 +1,12 @@
+config ARCH_ORION5X
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select CPU_FEROCEON
+	select GENERIC_CLOCKEVENTS
+	select NEED_MACH_IO_H
+	select PCI
+	select PLAT_ORION
+
 if ARCH_ORION5X
 
 menu "Orion Implementations"
arch/arm/mach-picoxcell/Kconfig new file +14 -0
new file mode 100644
index 0000000..b0fd5a1
@@ -0,0 +1,14 @@
+config ARCH_PICOXCELL
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select ARM_PATCH_PHYS_VIRT
+	select ARM_VIC
+	select CPU_V6K
+	select DW_APB_TIMER
+	select DW_APB_TIMER_OF
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_GPIO
+	select HAVE_TCM
+	select NO_IOPORT
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-pnx4008/Kconfig new file +5 -0
new file mode 100644
index 0000000..b654cff
@@ -0,0 +1,5 @@
+config ARCH_PNX4008
+	bool
+	select CPU_ARM926T
+	select CLKDEV_LOOKUP
+	select ARCH_USES_GETTIMEOFFSET
arch/arm/mach-pxa/Kconfig +16 -0
index fe2d1f8..1c89e24 100644
@@ -1,3 +1,19 @@
+config ARCH_PXA
+	bool
+	select ARCH_HAS_CPUFREQ
+	select ARCH_MTD_XIP
+	select ARCH_REQUIRE_GPIOLIB
+	select ARM_CPU_SUSPEND if PM
+	select AUTO_ZRELADDR
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select GENERIC_CLOCKEVENTS
+	select GPIO_PXA
+	select HAVE_IDE
+	select MULTI_IRQ_HANDLER
+	select PLAT_PXA
+	select SPARSE_IRQ
+
 if ARCH_PXA
 
 menu "Intel PXA2xx/PXA3xx Implementations"
arch/arm/mach-realview/Kconfig +15 -0
index c593be4..2018527 100644
@@ -1,3 +1,18 @@
+config ARCH_REALVIEW
+	bool
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_TIMER_SP804
+	select CLKDEV_LOOKUP
+	select GENERIC_CLOCKEVENTS
+	select GPIO_PL061 if GPIOLIB
+	select HAVE_MACH_CLKDEV
+	select ICST
+	select NEED_MACH_MEMORY_H
+	select PLAT_VERSATILE
+	select PLAT_VERSATILE_CLOCK
+	select PLAT_VERSATILE_CLCD
+
 menu "RealView platform type"
 	depends on ARCH_REALVIEW
 
arch/arm/mach-rpc/Kconfig new file +13 -0
new file mode 100644
index 0000000..478d213
@@ -0,0 +1,13 @@
+config ARCH_RPC
+	bool
+	select ARCH_ACORN
+	select FIQ
+	select ARCH_MAY_HAVE_PC_FDC
+	select HAVE_PATA_PLATFORM
+	select ISA_DMA_API
+	select NO_IOPORT
+	select ARCH_SPARSEMEM_ENABLE
+	select ARCH_USES_GETTIMEOFFSET
+	select HAVE_IDE
+	select NEED_MACH_IO_H
+	select NEED_MACH_MEMORY_H
arch/arm/mach-s3c24xx/Kconfig +13 -0
index d56b0f7..21dd369 100644
@@ -7,6 +7,19 @@
 #
 # Licensed under GPLv2
 
+config ARCH_S3C24XX
+	bool
+	select ARCH_HAS_CPUFREQ
+	select ARCH_USES_GETTIMEOFFSET
+	select CLKDEV_LOOKUP
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C_RTC if RTC_CLASS
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_IO_H
+
 if ARCH_S3C24XX
 
 menu "SAMSUNG S3C24XX SoCs Support"
arch/arm/mach-s3c64xx/Kconfig +26 -0
index 06ca1cd..4a0cdbb 100644
@@ -3,6 +3,30 @@
 #
 # Licensed under GPLv2
 
+config ARCH_S3C64XX
+	bool
+	select PLAT_SAMSUNG
+	select CPU_V6
+	select ARM_VIC
+	select HAVE_CLK
+	select HAVE_TCM
+	select CLKDEV_LOOKUP
+	select NO_IOPORT
+	select ARCH_USES_GETTIMEOFFSET
+	select ARCH_HAS_CPUFREQ
+	select ARCH_REQUIRE_GPIOLIB
+	select SAMSUNG_CLKSRC
+	select SAMSUNG_IRQ_VIC_TIMER
+	select S3C_GPIO_TRACK
+	select S3C_DEV_NAND
+	select USB_ARCH_HAS_OHCI
+	select SAMSUNG_GPIOLIB_4BIT
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select NEED_MACH_GPIO_H
+
+if ARCH_S3C64XX
+
 # temporary until we can eliminate all drivers using it.
 config PLAT_S3C64XX
 	bool
@@ -307,3 +331,5 @@ config MACH_WLF_CRAGG_6410
 	select LEDS_GPIO_REGISTER
 	help
 	  Machine support for the Wolfson Cragganmore S3C6410 variant.
+
+endif
arch/arm/mach-s5p64x0/Kconfig +13 -0
index c87f610..8215c54 100644
@@ -5,6 +5,19 @@
 #
 # Licensed under GPLv2
 
+config ARCH_S5P64X0
+	bool
+	select CPU_V6
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select GENERIC_CLOCKEVENTS
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C_RTC if RTC_CLASS
+	select NEED_MACH_GPIO_H
+
 if ARCH_S5P64X0
 
 config CPU_S5P6440
arch/arm/mach-s5pc100/Kconfig +12 -0
index 75a26ea..8114a81 100644
@@ -5,6 +5,18 @@
 
 # Configuration options for the S5PC100 CPU
 
+config ARCH_S5PC100
+	bool
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select CLKDEV_LOOKUP
+	select CPU_V7
+	select ARCH_USES_GETTIMEOFFSET
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C_RTC if RTC_CLASS
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select NEED_MACH_GPIO_H
+
 if ARCH_S5PC100
 
 config CPU_S5PC100
arch/arm/mach-s5pv210/Kconfig +17 -0
index 77185c3..5633743 100644
@@ -7,6 +7,23 @@
 
 # Configuration options for the S5PV210/S5PC110
 
+config ARCH_S5PV210
+	bool
+	select CPU_V7
+	select ARCH_SPARSEMEM_ENABLE
+	select ARCH_HAS_HOLES_MEMORYMODEL
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select ARCH_HAS_CPUFREQ
+	select GENERIC_CLOCKEVENTS
+	select HAVE_S3C2410_I2C if I2C
+	select HAVE_S3C_RTC if RTC_CLASS
+	select HAVE_S3C2410_WATCHDOG if WATCHDOG
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_MEMORY_H
+
 if ARCH_S5PV210
 
 config CPU_S5PV210
arch/arm/mach-sa1100/Kconfig +17 -0
index 42625e4..37c31a3 100644
@@ -1,3 +1,20 @@
+config ARCH_SA1100
+	bool
+	select CLKSRC_MMIO
+	select CPU_SA1100
+	select ISA
+	select ARCH_SPARSEMEM_ENABLE
+	select ARCH_MTD_XIP
+	select ARCH_HAS_CPUFREQ
+	select CPU_FREQ
+	select GENERIC_CLOCKEVENTS
+	select CLKDEV_LOOKUP
+	select ARCH_REQUIRE_GPIOLIB
+	select HAVE_IDE
+	select NEED_MACH_GPIO_H
+	select NEED_MACH_MEMORY_H
+	select SPARSE_IRQ
+
 if ARCH_SA1100
 
 menu "SA11x0 Implementations"
arch/arm/mach-shark/Kconfig new file +11 -0
new file mode 100644
index 0000000..93d03db
@@ -0,0 +1,11 @@
+config ARCH_SHARK
+	bool
+	select CPU_SA110
+	select ISA
+	select ISA_DMA
+	select ZONE_DMA
+	select PCI
+	select ARCH_USES_GETTIMEOFFSET
+	select NEED_MACH_MEMORY_H
+	select NEED_MACH_IO_H
+
arch/arm/mach-shmobile/Kconfig +14 -0
index 4cacc2d..ee807ad 100644
@@ -1,3 +1,17 @@
+config ARCH_SHMOBILE
+	bool
+	select HAVE_CLK
+	select CLKDEV_LOOKUP
+	select HAVE_MACH_CLKDEV
+	select HAVE_SMP
+	select GENERIC_CLOCKEVENTS
+	select MIGHT_HAVE_CACHE_L2X0
+	select NO_IOPORT
+	select SPARSE_IRQ
+	select MULTI_IRQ_HANDLER
+	select PM_GENERIC_DOMAINS if PM
+	select NEED_MACH_MEMORY_H
+
 if ARCH_SHMOBILE
 
 comment "SH-Mobile System Type"
arch/arm/mach-socfpga/Kconfig new file +16 -0
new file mode 100644
index 0000000..51b04ba
@@ -0,0 +1,16 @@
+config ARCH_SOCFPGA
+	bool
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_GIC
+	select CACHE_L2X0
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select CPU_V7
+	select DW_APB_TIMER
+	select DW_APB_TIMER_OF
+	select GENERIC_CLOCKEVENTS
+	select GPIO_PL061 if GPIOLIB
+	select HAVE_ARM_SCU
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-tegra/Kconfig +13 -0
index 9077aaa..d6ee9f5 100644
@@ -1,3 +1,16 @@
+config ARCH_TEGRA
+	bool
+	select ARCH_HAS_CPUFREQ
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_GPIO
+	select HAVE_CLK
+	select HAVE_SMP
+	select MIGHT_HAVE_CACHE_L2X0
+	select NEED_MACH_IO_H if PCI
+	select USE_OF
+
 if ARCH_TEGRA
 
 comment "NVIDIA Tegra options"
arch/arm/mach-u300/Kconfig +14 -0
index 54d8f34..bd442a0 100644
@@ -1,3 +1,17 @@
+config ARCH_U300
+	bool
+	select CLKSRC_MMIO
+	select CPU_ARM926T
+	select HAVE_TCM
+	select ARM_AMBA
+	select ARM_PATCH_PHYS_VIRT
+	select ARM_VIC
+	select GENERIC_CLOCKEVENTS
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select GENERIC_GPIO
+	select ARCH_REQUIRE_GPIOLIB
+
 if ARCH_U300
 
 menu "ST-Ericsson AB U300/U330/U335/U365 Platform"
arch/arm/mach-ux500/Kconfig +11 -0
index c013bbf..6b40959 100644
@@ -1,3 +1,14 @@
+config ARCH_U8500
+	bool
+	select CPU_V7
+	select ARM_AMBA
+	select GENERIC_CLOCKEVENTS
+	select CLKDEV_LOOKUP
+	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_HAS_CPUFREQ
+	select HAVE_SMP
+	select MIGHT_HAVE_CACHE_L2X0
+
 if ARCH_U8500
 
 config UX500_SOC_COMMON
arch/arm/mach-versatile/Kconfig +16 -0
index c1f38f6..cd63ea6 100644
@@ -1,3 +1,19 @@
+config ARCH_VERSATILE
+	bool
+	select ARM_AMBA
+	select ARM_VIC
+	select CLKDEV_LOOKUP
+	select HAVE_MACH_CLKDEV
+	select ICST
+	select GENERIC_CLOCKEVENTS
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select NEED_MACH_IO_H if PCI
+	select PLAT_VERSATILE
+	select PLAT_VERSATILE_CLOCK
+	select PLAT_VERSATILE_CLCD
+	select PLAT_VERSATILE_FPGA_IRQ
+	select ARM_TIMER_SP804
+
 menu "Versatile platform type"
 	depends on ARCH_VERSATILE
 
arch/arm/mach-vexpress/Kconfig +16 -0
index fc3730f..8ce13a7 100644
@@ -1,3 +1,19 @@
+config ARCH_VEXPRESS
+	bool
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_TIMER_SP804
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select HAVE_CLK
+	select HAVE_PATA_PLATFORM
+	select ICST
+	select NO_IOPORT
+	select PLAT_VERSATILE
+	select PLAT_VERSATILE_CLCD
+	select REGULATOR_FIXED_VOLTAGE if REGULATOR
+
 menu "Versatile Express platform type"
 	depends on ARCH_VEXPRESS
 
arch/arm/mach-vt8500/Kconfig +8 -0
index 2c20a34..fa22d24 100644
@@ -1,3 +1,11 @@
+config ARCH_VT8500
+	bool
+	select CPU_ARM926T
+	select GENERIC_GPIO
+	select ARCH_HAS_CPUFREQ
+	select GENERIC_CLOCKEVENTS
+	select ARCH_REQUIRE_GPIOLIB
+
 if ARCH_VT8500
 
 config VTWM_VERSION_VT8500
arch/arm/mach-w90x900/Kconfig +8 -0
index 69bab32..ab4b2fc 100644
@@ -1,3 +1,11 @@
+config ARCH_W90X900
+	bool
+	select CPU_ARM926T
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select GENERIC_CLOCKEVENTS
+
 if ARCH_W90X900
 
 config CPU_W90P910
arch/arm/mach-zynq/Kconfig new file +10 -0
new file mode 100644
index 0000000..1560167
@@ -0,0 +1,10 @@
+config ARCH_ZYNQ
+	bool
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select CLKDEV_LOOKUP
+	select ARM_GIC
+	select ARM_AMBA
+	select ICST
+	select MIGHT_HAVE_CACHE_L2X0
+	select USE_OF
arch/arm/plat-mxc/Kconfig +11 -0
index baf9064..84af663 100644
@@ -1,3 +1,14 @@
+config ARCH_MXC
+	bool
+	select GENERIC_CLOCKEVENTS
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select CLKSRC_MMIO
+	select GENERIC_IRQ_CHIP
+	select MULTI_IRQ_HANDLER
+	select SPARSE_IRQ
+	select USE_OF
+
 if ARCH_MXC
 
 source "arch/arm/plat-mxc/devices/Kconfig"
arch/arm/plat-omap/Kconfig +9 -0
index dd36eba..8b86fca 100644
@@ -1,3 +1,12 @@
+config ARCH_OMAP
+	bool
+	select HAVE_CLK
+	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_HAS_CPUFREQ
+	select CLKSRC_MMIO
+	select GENERIC_CLOCKEVENTS
+	select ARCH_HAS_HOLES_MEMORYMODEL
+
 if ARCH_OMAP
 
 menu "TI OMAP Common Features"
arch/arm/plat-spear/Kconfig +9 -0
index 4404f82..50088bb 100644
@@ -1,6 +1,15 @@
 #
 # SPEAr Platform configuration file
 #
+config PLAT_SPEAR
+	bool
+	select ARM_AMBA
+	select ARCH_REQUIRE_GPIOLIB
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select CLKSRC_MMIO
+	select GENERIC_CLOCKEVENTS
+	select HAVE_CLK
 
 if PLAT_SPEAR
 
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 7 lines · Rob Herring

In preparation for mulit-platform support, convert all platforms' ARCH_ definition to a hidden option and create a new choice option.

---
 arch/arm/Kconfig                 |  650 ++++++++------------------------------

<snip>

Quoted 1 line

arch/arm/mach-ep93xx/Kconfig | 11 +

<snip>

Quoted 2 lines
arch/arm/Kconfig +0 -0

<snip>

Quoted 14 lines
arch/arm/Kconfig +2 -9
-config ARCH_EP93XX
+config ARCH_EP93XX_CHOICE
 	bool "EP93xx-based"
-	select CPU_ARM920T
-	select ARM_AMBA
-	select ARM_VIC
-	select CLKDEV_LOOKUP
-	select ARCH_REQUIRE_GPIOLIB
-	select ARCH_HAS_HOLES_MEMORYMODEL
-	select ARCH_USES_GETTIMEOFFSET
-	select NEED_MACH_MEMORY_H
+	select ARCH_EP93XX
 	help
 	  This enables support for the Cirrus EP93xx series of CPUs.

<snip>

Quoted 9 lines
arch/arm/mach-ep93xx/Kconfig +4 -0
index fe3c1fa..4cf770c 100644
@@ -1,3 +1,14 @@
+config ARCH_EP93XX
+	bool
+	select ARCH_REQUIRE_GPIOLIB
+	select ARCH_HAS_HOLES_MEMORYMODEL

arch/arm/mach-ep93xx/Kconfig line 14

Quoted 10 lines
arch/arm/mach-ep93xx/Kconfig +7 -0
+	select ARCH_USES_GETTIMEOFFSET
+	select ARM_AMBA
+	select ARM_VIC
+	select CLKDEV_LOOKUP
+	select CPU_ARM920T
+	select NEED_MACH_MEMORY_H
+
 if ARCH_EP93XX
 
 menu "Cirrus EP93xx Implementation Options"

Curious... Why did you rearrange the select's? There "almost" alphabetic now, but not quite...

But, FWIW, for the EP93xx part:

Thanks

#3 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

In reply to Rob Herring
Quoted 4 lines · Rob Herring

From: Rob Herring <[email protected]>

In preparation for mulit-platform support, convert all platforms' ARCH_ definition to a hidden option and create a new choice option.

This is churn and annoyance. It's definitely annoyance for the autobuilder because it's going to have to have symbols changed in the seed configs. It's annoyance for people because they're going to have to manually reselect their SoC types in every build they do.

I think also that Kconfig will end up on 'make oldconfig' selecting one of the platforms, deselecting all the dependencies on that platform, which then means you'll have thousands of Kconfig options to answer.

I've been there with x86 configs, and spent something like an hour piecing together a configuration for my laptop, answering one question every couple of seconds. That is not a nice experience to inflict on people.

#4 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 11 lines · Russell King - ARM Linux
Quoted 4 lines · Rob Herring

From: Rob Herring <[email protected]>

In preparation for mulit-platform support, convert all platforms' ARCH_ definition to a hidden option and create a new choice option.

This is churn and annoyance. It's definitely annoyance for the autobuilder because it's going to have to have symbols changed in the seed configs. It's annoyance for people because they're going to have to manually reselect their SoC types in every build they do.

Quoted 8 lines

I think also that Kconfig will end up on 'make oldconfig' selecting one of the platforms, deselecting all the dependencies on that platform, which then means you'll have thousands of Kconfig options to answer.

I've been there with x86 configs, and spent something like an hour piecing together a configuration for my laptop, answering one question every couple of seconds. That is not a nice experience to inflict on people.

Then what do you suggest? I can think of a few alternatives.

Leave the current name and make the hidden option a new name like ARCH_xx_OPTIONS. This would require renaming ARCH_xxx for each platform all over the tree. I don't care to sign up for that task...

Move platforms one by one out of the choice as they are converted. I can't think of a reason for a platform to be in both places except we would have to figure out something for getting DEBUG_LL to work.

Rob

#5 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 5 lines · Rob Herring

Then what do you suggest? I can think of a few alternatives.

Leave the current name and make the hidden option a new name like ARCH_xx_OPTIONS. This would require renaming ARCH_xxx for each platform all over the tree. I don't care to sign up for that task...

Well, requiring everyone to spend hours redoing their configuration also isn't practical either.

Quoted 3 lines

Move platforms one by one out of the choice as they are converted. I can't think of a reason for a platform to be in both places except we would have to figure out something for getting DEBUG_LL to work.

No you don't. We've already decided how we're going to deal with DEBUG_LL, and we are _not_ going to make that multi-platform. You select one of the output options, and that is it. We've already been moving in that direction, albiet slowly. Again, anyone who wants to be part of a multiplatform kernel better use the provided choice or they will get no DEBUG_LL facility - simples.

That also means we can start to think about moving the mach/debug-macros.S header elsewhere, remembering that this facility is shared between the decompressor for debugging and the kernel.

Remember that DEBUG_LL is the low-level *debug* facility. It is not the early console, even if it ended up being used as such (which is not something I really care for.) Read the previous discussions on this subject if you disagree, but I'm not changing my position over DEBUG_LL because that will just require me to re-invent the facility yet again (which is what DEBUG_LL is there to stop.) It was _never_ intended to be an early console facility.

#6 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 14 lines · Russell King - ARM Linux
Quoted 5 lines · Rob Herring

Then what do you suggest? I can think of a few alternatives.

Leave the current name and make the hidden option a new name like ARCH_xx_OPTIONS. This would require renaming ARCH_xxx for each platform all over the tree. I don't care to sign up for that task...

Well, requiring everyone to spend hours redoing their configuration also isn't practical either.

Quoted 3 lines

Move platforms one by one out of the choice as they are converted. I can't think of a reason for a platform to be in both places except we would have to figure out something for getting DEBUG_LL to work.

Quoted 6 lines

No you don't. We've already decided how we're going to deal with DEBUG_LL, and we are _not_ going to make that multi-platform. You select one of the output options, and that is it. We've already been moving in that direction, albiet slowly. Again, anyone who wants to be part of a multiplatform kernel better use the provided choice or they will get no DEBUG_LL facility - simples.

Right. The problem is with current patches (and Arnd's version) you cannot select even 1 DEBUG_LL choice as mach/debug-macro.S is not in the include path any more when multi-plat is enabled. If we move platforms out of the choice, then we need some way to enable DEBUG_LL.

Quoted 4 lines

That also means we can start to think about moving the mach/debug-macros.S header elsewhere, remembering that this facility is shared between the decompressor for debugging and the kernel.

I was thinking we could convert the phys and virt addresses to config values and then the DEBUG_LL choices could just be "Use PL01x uart" and "Use 8250 uart". This would cut down the number of debug-macro.S files and choices.

Using a fixed virtual address for all platforms might also help simplify DEBUG_LL.

But I'd like to find a more simple solution to get past enabling multi-platform and deal with a more complex change later.

Rob

Quoted 8 lines

Remember that DEBUG_LL is the low-level *debug* facility. It is not the early console, even if it ended up being used as such (which is not something I really care for.) Read the previous discussions on this subject if you disagree, but I'm not changing my position over DEBUG_LL because that will just require me to re-invent the facility yet again (which is what DEBUG_LL is there to stop.) It was _never_ intended to be an early console facility.

#7 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 5 lines · Rob Herring
Quoted 3 lines · Russell King - ARM Linux

That also means we can start to think about moving the mach/debug-macros.S header elsewhere, remembering that this facility is shared between the decompressor for debugging and the kernel.

Quoted 7 lines

I was thinking we could convert the phys and virt addresses to config values and then the DEBUG_LL choices could just be "Use PL01x uart" and "Use 8250 uart". This would cut down the number of debug-macro.S files and choices.

Using a fixed virtual address for all platforms might also help simplify DEBUG_LL.

No it won't, that comment says you totally don't understand the feature you're playing with to me.

It's not only about virtual addresses, it's about physical addresses too, and we can't dictate that all hardware exposes a UART at any particular physical address.

Remember that the code provided by DEBUG_LL is used in the early kernel bring up to set up the phys:virt mapping for the UART, it's also used by the early kernel code to access the UART at the physical address, and by the decompressor to also access the UART at the physical address.

So playing around with fixing it at a specific virtual address is total poppycock, and is completely worthless.

I think what we need is arch/arm/include/debug, move the platform specific debug-macros headers into there, named using platform specific file names. Then we have the config system define a string-based config:

config DEBUG_LL_INCLUDE

	string
	default "<debug/icedcc.S>" if DEBUG_ICEDCC
	default "<debug/msm.S>" if DEBUG_MSM_UART1 || DEBUG_MSM_UART2 || DEBUG_MSM_UART3

... etc ...
default "mach/debug-macros.S"

And then we can have the various assembly codes do:

#include CONFIG_DEBUG_LL_INCLUDE

Not only does this give a migration path, but it also gives folk a reason to move to the 'new way' if they want to be part of a multi-platform kernel - and it's a trivial thing to do. Just move the include file, add an entry to the DEBUG_LL_INCLUDE entry and the "Kernel low-level debugging port" choice statement, and job done for both non-multi-platform and multi-platform kernels.

What's even nicer about this approach is it doesn't require everyone to change simultaneously - it can be done progressively as required.

#8 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 23 lines · Russell King - ARM Linux

I think what we need is arch/arm/include/debug, move the platform specific debug-macros headers into there, named using platform specific file names. Then we have the config system define a string-based config:

config DEBUG_LL_INCLUDE

	string
	default "<debug/icedcc.S>" if DEBUG_ICEDCC
	default "<debug/msm.S>" if DEBUG_MSM_UART1 || DEBUG_MSM_UART2 || DEBUG_MSM_UART3

... etc ...
default "mach/debug-macros.S"

And then we can have the various assembly codes do:

#include CONFIG_DEBUG_LL_INCLUDE

Not only does this give a migration path, but it also gives folk a reason to move to the 'new way' if they want to be part of a multi-platform kernel - and it's a trivial thing to do. Just move the include file, add an entry to the DEBUG_LL_INCLUDE entry and the "Kernel low-level debugging port" choice statement, and job done for both non-multi-platform and multi-platform kernels.

Quoted 2 lines

What's even nicer about this approach is it doesn't require everyone to change simultaneously - it can be done progressively as required.

This means that:

1) DEBUG_LL console is specified statically (it's a debug option so you are supposed to be already building the kernel, right?)

2) It's not portable across incompatible SoCs so it must really stay disabled on production multi-platform kernels.

Regards,
Domenico

#9 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 24 lines · Domenico Andreoli
Quoted 23 lines · Russell King - ARM Linux

I think what we need is arch/arm/include/debug, move the platform specific debug-macros headers into there, named using platform specific file names. Then we have the config system define a string-based config:

config DEBUG_LL_INCLUDE

	string
	default "<debug/icedcc.S>" if DEBUG_ICEDCC
	default "<debug/msm.S>" if DEBUG_MSM_UART1 || DEBUG_MSM_UART2 || DEBUG_MSM_UART3

... etc ...
default "mach/debug-macros.S"

And then we can have the various assembly codes do:

#include CONFIG_DEBUG_LL_INCLUDE

Not only does this give a migration path, but it also gives folk a reason to move to the 'new way' if they want to be part of a multi-platform kernel - and it's a trivial thing to do. Just move the include file, add an entry to the DEBUG_LL_INCLUDE entry and the "Kernel low-level debugging port" choice statement, and job done for both non-multi-platform and multi-platform kernels.

Quoted 4 lines
Quoted 2 lines

What's even nicer about this approach is it doesn't require everyone to change simultaneously - it can be done progressively as required.

This means that:

I'm not about to re-open the debate again. Please go back and read the previous discussions during the last year about this where eventually agreement on this way forward was reached. Thanks.

#10 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 25 lines · Russell King - ARM Linux
Quoted 24 lines · Domenico Andreoli
Quoted 23 lines · Russell King - ARM Linux

I think what we need is arch/arm/include/debug, move the platform specific debug-macros headers into there, named using platform specific file names. Then we have the config system define a string-based config:

config DEBUG_LL_INCLUDE

	string
	default "<debug/icedcc.S>" if DEBUG_ICEDCC
	default "<debug/msm.S>" if DEBUG_MSM_UART1 || DEBUG_MSM_UART2 || DEBUG_MSM_UART3

... etc ...
default "mach/debug-macros.S"

And then we can have the various assembly codes do:

#include CONFIG_DEBUG_LL_INCLUDE

Not only does this give a migration path, but it also gives folk a reason to move to the 'new way' if they want to be part of a multi-platform kernel - and it's a trivial thing to do. Just move the include file, add an entry to the DEBUG_LL_INCLUDE entry and the "Kernel low-level debugging port" choice statement, and job done for both non-multi-platform and multi-platform kernels.

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

What's even nicer about this approach is it doesn't require everyone to change simultaneously - it can be done progressively as required.

This means that:

I'm not about to re-open the debate again. Please go back and read the previous discussions during the last year about this where eventually agreement on this way forward was reached. Thanks.

I don't want to reopen anything, it's only that I've clearly missed the discussion (*) as also my patches in the area may show (**). So I really wanted to understand if, for once, I've understood the thing correctly.

cheers,
Domenico

(*) I would have appreciated if you had pointed it to me in the only comment you made on those patches but that's ok, it has been fun anyway

(**) http://lists.infradead.org/pipermail/linux-arm-kernel/2012-July/109457.html

#11 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

In reply to Russell King - ARM Linux
Quoted 11 lines · Russell King - ARM Linux
Quoted 10 lines · Rob Herring
Quoted 3 lines · Russell King - ARM Linux

That also means we can start to think about moving the mach/debug-macros.S header elsewhere, remembering that this facility is shared between the decompressor for debugging and the kernel.

I was thinking we could convert the phys and virt addresses to config values and then the DEBUG_LL choices could just be "Use PL01x uart" and "Use 8250 uart". This would cut down the number of debug-macro.S files and choices.

Quoted 5 lines
Quoted 2 lines

Using a fixed virtual address for all platforms might also help simplify DEBUG_LL.

No it won't, that comment says you totally don't understand the feature you're playing with to me.

Or you don't understand what I meant.

Quoted 3 lines

It's not only about virtual addresses, it's about physical addresses too, and we can't dictate that all hardware exposes a UART at any particular physical address.

We have 3 things to track for each platform: the type of uart, the uart's phys address, and the virtual address we map it to. Obviously, we can't get rid of the first 2, but we can align the virtual address to the same 1MB section for DEBUG_LL on all platforms. Then we only have 2 differences to deal with. If we make the physical address a config value, then we could unify all the addruart implementations (except perhaps for the crazy stuff omap does). So something like this:

		.macro	addruart,rp,rv,tmp
		mov	\rv, #0xfe000000
		orr	\rv, \rv, #0x00d00000
		ldr	\rp, =CONFIG_DEBUG_LL_UART_ADDR
		lsl	\tmp, \rp, #12
		lsr	\tmp, \tmp, #12
		orr	\rv, \rv, \tmp
		.endm

Of course we'd have to shift around static mappings to free up whatever address we use. I don't know if 0xfed00000 would be the best choice, but that is just below were I put the PCI i/o mapping.

Rob

#12 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 7 lines · Rob Herring
Quoted 3 lines · Russell King - ARM Linux

It's not only about virtual addresses, it's about physical addresses too, and we can't dictate that all hardware exposes a UART at any particular physical address.

We have 3 things to track for each platform: the type of uart, the uart's phys address, and the virtual address we map it to.

Right, thanks for explaining it more properly the second time around.

However, you actually have four things to track:
1. The physical address
2. The virtual address
3. The inter-register offset
4. The type of the UART

maintainer
#13 lore raw

PATCH 1/6 ARM: move ARCH config definitions into mach dirs

Quoted 9 lines · Russell King - ARM Linux
Quoted 7 lines · Rob Herring
Quoted 3 lines · Russell King - ARM Linux

It's not only about virtual addresses, it's about physical addresses too, and we can't dictate that all hardware exposes a UART at any particular physical address.

We have 3 things to track for each platform: the type of uart, the uart's phys address, and the virtual address we map it to.

Quoted 7 lines

Right, thanks for explaining it more properly the second time around.

However, you actually have four things to track:
1. The physical address
2. The virtual address
3. The inter-register offset
4. The type of the UART

And these can be machine specific, not platform specific. Some omaps have an external uart only where the address and register shift are different from the internal ports.

Regards,

Tony

#14 lore raw

PATCH 2/6 ARM: introduce Kconfig.mach

In reply to Rob Herring

From: Rob Herring <[email protected]>

Move all the mach related config options into separate Kconfig.mach file.

---
 arch/arm/Kconfig      |  529 +------------------------------------------------
 arch/arm/Kconfig.mach |  528 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 529 insertions(+), 528 deletions(-)
 create mode 100644 arch/arm/Kconfig.mach
arch/arm/Kconfig +1 -528
index 3ad82c6..fa34df2 100644
@@ -248,534 +248,7 @@ config MMU
 	  Select if you want MMU-based virtualised addressing space
 	  support by paged memory management. If unsure, say 'Y'.
 
-#
-# The "ARM system type" choice list is ordered alphabetically by option
-# text.  Please add new entries in the option alphabetic order.
-#
-choice
-	prompt "ARM system type"
-	default ARCH_VERSATILE
-
-config ARCH_SOCFPGA_CHOICE
-	bool "Altera SOCFPGA family"
-	select ARCH_SOCFPGA
-	help
-	  This enables support for Altera SOCFPGA Cyclone V platform
-
-config ARCH_INTEGRATOR_CHOICE
-	bool "ARM Ltd. Integrator family"
-	select ARCH_INTEGRATOR
-	help
-	  Support for ARM's Integrator platform.
-
-config ARCH_REALVIEW_CHOICE
-	bool "ARM Ltd. RealView family"
-	select ARCH_REALVIEW
-	help
-	  This enables support for ARM Ltd RealView boards.
-
-config ARCH_VERSATILE_CHOICE
-	bool "ARM Ltd. Versatile family"
-	select ARCH_VERSATILE
-	help
-	  This enables support for ARM Ltd Versatile board.
-
-config ARCH_VEXPRESS_CHOICE
-	bool "ARM Ltd. Versatile Express family"
-	select ARCH_VEXPRESS
-	help
-	  This enables support for the ARM Ltd Versatile Express boards.
-
-config ARCH_AT91_CHOICE
-	bool "Atmel AT91"
-	select ARCH_AT91
-	help
-	  This enables support for systems based on Atmel
-	  AT91RM9200 and AT91SAM9* processors.
-
-config ARCH_BCMRING_CHOICE
-	bool "Broadcom BCMRING"
-	depends on MMU
-	select ARCH_BCMRING
-	help
-	  Support for Broadcom's BCMRing platform.
-
-config ARCH_HIGHBANK_CHOICE
-	bool "Calxeda Highbank-based"
-	select ARCH_HIGHBANK
-	help
-	  Support for the Calxeda Highbank SoC based boards.
-
-config ARCH_CLPS711X_CHOICE
-	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
-	select ARCH_CLPS711X
-	help
-	  Support for Cirrus Logic 711x/721x/731x based boards.
-
-config ARCH_CNS3XXX_CHOICE
-	bool "Cavium Networks CNS3XXX family"
-	select ARCH_CNS3XXX
-	help
-	  Support for Cavium Networks CNS3XXX platform.
-
-config ARCH_GEMINI_CHOICE
-	bool "Cortina Systems Gemini"
-	select ARCH_GEMINI
-	help
-	  Support for the Cortina Systems Gemini family SoCs
-
-config ARCH_PRIMA2_CHOICE
-	bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
-	select ARCH_PRIMA2
-	help
-          Support for CSR SiRFSoC ARM Cortex A9 Platform
-
-config ARCH_EBSA110_CHOICE
-	bool "EBSA-110"
-	select ARCH_EBSA110
-	help
-	  This is an evaluation board for the StrongARM processor available
-	  from Digital. It has limited hardware on-board, including an
-	  Ethernet interface, two PCMCIA sockets, two serial ports and a
-	  parallel port.
-
-config ARCH_EP93XX_CHOICE
-	bool "EP93xx-based"
-	select ARCH_EP93XX
-	help
-	  This enables support for the Cirrus EP93xx series of CPUs.
-
-config ARCH_FOOTBRIDGE_CHOICE
-	bool "FootBridge"
-	select ARCH_FOOTBRIDGE
-	help
-	  Support for systems based on the DC21285 companion chip
-	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
-
-config ARCH_MXC_CHOICE
-	bool "Freescale MXC/iMX-based"
-	select ARCH_MXC
-	help
-	  Support for Freescale MXC/iMX-based family of processors
-
-config ARCH_MXS_CHOICE
-	bool "Freescale MXS-based"
-	select ARCH_MXS
-	help
-	  Support for Freescale MXS-based family of processors
-
-config ARCH_NETX_CHOICE
-	bool "Hilscher NetX based"
-	select ARCH_NETX
-	help
-	  This enables support for systems based on the Hilscher NetX Soc
-
-config ARCH_H720X_CHOICE
-	bool "Hynix HMS720x-based"
-	select ARCH_H720X
-	help
-	  This enables support for systems based on the Hynix HMS720x
-
-config ARCH_IOP13XX_CHOICE
-	bool "IOP13xx-based"
-	depends on MMU
-	select ARCH_IOP13XX
-	help
-	  Support for Intel's IOP13XX (XScale) family of processors.
-
-config ARCH_IOP32X_CHOICE
-	bool "IOP32x-based"
-	depends on MMU
-	select ARCH_IOP32X
-	help
-	  Support for Intel's 80219 and IOP32X (XScale) family of
-	  processors.
-
-config ARCH_IOP33X_CHOICE
-	bool "IOP33x-based"
-	depends on MMU
-	select ARCH_IOP33X
-	help
-	  Support for Intel's IOP33X (XScale) family of processors.
-
-config ARCH_IXP4XX_CHOICE
-	bool "IXP4xx-based"
-	depends on MMU
-	select ARCH_IXP4XX
-	help
-	  Support for Intel's IXP4XX (XScale) family of processors.
-
-config ARCH_MVEBU_CHOICE
-	bool "Marvell SOCs with Device Tree support"
-	select ARCH_MVEBU
-	help
-	  Support for the Marvell SoC Family with device tree support
-
-config ARCH_DOVE_CHOICE
-	bool "Marvell Dove"
-	select ARCH_DOVE
-	help
-	  Support for the Marvell Dove SoC 88AP510
-
-config ARCH_KIRKWOOD_CHOICE
-	bool "Marvell Kirkwood"
-	select ARCH_KIRKWOOD
-	help
-	  Support for the following Marvell Kirkwood series SoCs:
-	  88F6180, 88F6192 and 88F6281.
-
-config ARCH_LPC32XX_CHOICE
-	bool "NXP LPC32XX"
-	select ARCH_LPC32XX
-	help
-	  Support for the NXP LPC32XX family of processors
-
-config ARCH_MV78XX0_CHOICE
-	bool "Marvell MV78xx0"
-	select ARCH_MV78XX0
-	help
-	  Support for the following Marvell MV78xx0 series SoCs:
-	  MV781x0, MV782x0.
-
-config ARCH_ORION5X_CHOICE
-	bool "Marvell Orion"
-	depends on MMU
-	select ARCH_ORION5X
-	help
-	  Support for the following Marvell Orion 5x series SoCs:
-	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
-	  Orion-2 (5281), Orion-1-90 (6183).
-
-config ARCH_MMP_CHOICE
-	bool "Marvell PXA168/910/MMP2"
-	depends on MMU
-	select ARCH_MMP
-	help
-	  Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
-
-config ARCH_KS8695_CHOICE
-	bool "Micrel/Kendin KS8695"
-	select ARCH_KS8695
-	help
-	  Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
-	  System-on-Chip devices.
-
-config ARCH_W90X900_CHOICE
-	bool "Nuvoton W90X900 CPU"
-	select ARCH_W90X900
-	help
-	  Support for Nuvoton (Winbond logic dept.) ARM9 processor,
-	  At present, the w90x900 has been renamed nuc900, regarding
-	  the ARM series product line, you can login the following
-	  link address to know more.
-
-	  <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/
-		ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller>
-
-config ARCH_TEGRA_CHOICE
-	bool "NVIDIA Tegra"
-	select ARCH_TEGRA
-	help
-	  This enables support for NVIDIA Tegra based systems (Tegra APX,
-	  Tegra 6xx and Tegra 2 series).
-
-config ARCH_PICOXCELL_CHOICE
-	bool "Picochip picoXcell"
-	select ARCH_PICOXCELL
-	help
-	  This enables support for systems based on the Picochip picoXcell
-	  family of Femtocell devices.  The picoxcell support requires device tree
-	  for all boards.
-
-config ARCH_PNX4008_CHOICE
-	bool "Philips Nexperia PNX4008 Mobile"
-	select ARCH_PNX4008
-	help
-	  This enables support for Philips PNX4008 mobile platform.
-
-config ARCH_PXA_CHOICE
-	bool "PXA2xx/PXA3xx-based"
-	depends on MMU
-	select ARCH_PXA
-	help
-	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
-
-config ARCH_MSM_CHOICE
-	bool "Qualcomm MSM"
-	select ARCH_MSM
-	help
-	  Support for Qualcomm MSM/QSD based systems.  This runs on the
-	  apps processor of the MSM/QSD and depends on a shared memory
-	  interface to the modem processor which runs the baseband
-	  stack and controls some vital subsystems
-	  (clock and power control, etc).
-
-config ARCH_SHMOBILE_CHOICE
-	bool "Renesas SH-Mobile / R-Mobile"
-	select ARCH_SHMOBILE
-	help
-	  Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
-
-config ARCH_RPC_CHOICE
-	bool "RiscPC"
-	select ARCH_RPC
-	help
-	  On the Acorn Risc-PC, Linux can support the internal IDE disk and
-	  CD-ROM interface, serial and parallel port, and the floppy drive.
-
-config ARCH_SA1100_CHOICE
-	bool "SA1100-based"
-	select ARCH_SA1100
-	help
-	  Support for StrongARM 11x0 based boards.
-
-config ARCH_S3C24XX_CHOICE
-	bool "Samsung S3C24XX SoCs"
-	select ARCH_S3C24XX
-	help
-	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
-	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
-	  (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
-	  Samsung SMDK2410 development board (and derivatives).
-
-config ARCH_S3C64XX_CHOICE
-	bool "Samsung S3C64XX"
-	select ARCH_S3C64XX
-	help
-	  Samsung S3C64XX series based systems
-
-config ARCH_S5P64X0_CHOICE
-	bool "Samsung S5P6440 S5P6450"
-	select ARCH_S5P64X0
-	help
-	  Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
-	  SMDK6450.
-
-config ARCH_S5PC100_CHOICE
-	bool "Samsung S5PC100"
-	select ARCH_S5PC100
-	help
-	  Samsung S5PC100 series based systems
-
-config ARCH_S5PV210_CHOICE
-	bool "Samsung S5PV210/S5PC110"
-	select ARCH_S5PV210
-	help
-	  Samsung S5PV210/S5PC110 series based systems
-
-config ARCH_EXYNOS_CHOICE
-	bool "SAMSUNG EXYNOS"
-	select ARCH_EXYNOS
-	help
-	  Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
-
-config ARCH_SHARK_CHOICE
-	bool "Shark"
-	select ARCH_SHARK
-	help
-	  Support for the StrongARM based Digital DNARD machine, also known
-	  as "Shark" (<http://www.shark-linux.de/shark.html>).
-
-config ARCH_U300_CHOICE
-	bool "ST-Ericsson U300 Series"
-	depends on MMU
-	select ARCH_U300
-	help
-	  Support for ST-Ericsson U300 series mobile platforms.
-
-config ARCH_U8500_CHOICE
-	bool "ST-Ericsson U8500 Series"
-	depends on MMU
-	select ARCH_U8500
-	help
-	  Support for ST-Ericsson's Ux500 architecture
-
-config ARCH_NOMADIK_CHOICE
-	bool "STMicroelectronics Nomadik"
-	select ARCH_NOMADIK
-	help
-	  Support for the Nomadik platform by ST-Ericsson
-
-config ARCH_DAVINCI_CHOICE
-	bool "TI DaVinci"
-	select ARCH_DAVINCI
-	select NEED_MACH_GPIO_H
-	help
-	  Support for TI's DaVinci platform.
-
-config ARCH_OMAP_CHOICE
-	bool "TI OMAP"
-	depends on MMU
-	select ARCH_OMAP
-	help
-	  Support for TI's OMAP platform (OMAP1/2/3/4).
-
-config PLAT_SPEAR_CHOICE
-	bool "ST SPEAr"
-	select PLAT_SPEAR
-	help
-	  Support for ST's SPEAr platform (SPEAr3xx, SPEAr6xx and SPEAr13xx).
-
-config ARCH_VT8500_CHOICE
-	bool "VIA/WonderMedia 85xx"
-	select ARCH_VT8500
-	help
-	  Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
-
-config ARCH_ZYNQ_CHOICE
-	bool "Xilinx Zynq ARM Cortex A9 Platform"
-	select ARCH_ZYNQ
-	help
-	  Support for Xilinx Zynq ARM Cortex A9 Platform
-endchoice
-
-#
-# This is sorted alphabetically by mach-* pathname.  However, plat-*
-# Kconfigs may be included either alphabetically (according to the
-# plat- suffix) or along side the corresponding mach-* source.
-#
-source "arch/arm/mach-mvebu/Kconfig"
-
-source "arch/arm/mach-at91/Kconfig"
-
-source "arch/arm/mach-bcmring/Kconfig"
-
-source "arch/arm/mach-clps711x/Kconfig"
-
-source "arch/arm/mach-cns3xxx/Kconfig"
-
-source "arch/arm/mach-davinci/Kconfig"
-
-source "arch/arm/mach-dove/Kconfig"
-
-source "arch/arm/mach-ebsa110/Kconfig"
-
-source "arch/arm/mach-ep93xx/Kconfig"
-
-source "arch/arm/mach-footbridge/Kconfig"
-
-source "arch/arm/mach-gemini/Kconfig"
-
-source "arch/arm/mach-h720x/Kconfig"
-
-source "arch/arm/mach-highbank/Kconfig"
-
-source "arch/arm/mach-integrator/Kconfig"
-
-source "arch/arm/mach-iop32x/Kconfig"
-
-source "arch/arm/mach-iop33x/Kconfig"
-
-source "arch/arm/mach-iop13xx/Kconfig"
-
-source "arch/arm/mach-ixp4xx/Kconfig"
-
-source "arch/arm/mach-kirkwood/Kconfig"
-
-source "arch/arm/mach-ks8695/Kconfig"
-
-source "arch/arm/mach-lpc32xx/Kconfig"
-
-source "arch/arm/mach-msm/Kconfig"
-
-source "arch/arm/mach-mv78xx0/Kconfig"
-
-source "arch/arm/plat-mxc/Kconfig"
-
-source "arch/arm/mach-mxs/Kconfig"
-
-source "arch/arm/mach-netx/Kconfig"
-
-source "arch/arm/mach-nomadik/Kconfig"
-source "arch/arm/plat-nomadik/Kconfig"
-
-source "arch/arm/plat-omap/Kconfig"
-
-source "arch/arm/mach-omap1/Kconfig"
-
-source "arch/arm/mach-omap2/Kconfig"
-
-source "arch/arm/mach-orion5x/Kconfig"
-
-source "arch/arm/mach-picoxcell/Kconfig"
-
-source "arch/arm/mach-pnx4008/Kconfig"
-
-source "arch/arm/mach-pxa/Kconfig"
-source "arch/arm/plat-pxa/Kconfig"
-
-source "arch/arm/mach-mmp/Kconfig"
-
-source "arch/arm/mach-realview/Kconfig"
-
-source "arch/arm/mach-rpc/Kconfig"
-
-source "arch/arm/mach-sa1100/Kconfig"
-
-source "arch/arm/plat-samsung/Kconfig"
-source "arch/arm/plat-s3c24xx/Kconfig"
-
-source "arch/arm/mach-shark/Kconfig"
-
-source "arch/arm/mach-socfpga/Kconfig"
-
-source "arch/arm/plat-spear/Kconfig"
-
-source "arch/arm/mach-s3c24xx/Kconfig"
-if ARCH_S3C24XX
-source "arch/arm/mach-s3c2412/Kconfig"
-source "arch/arm/mach-s3c2440/Kconfig"
-endif
-
-source "arch/arm/mach-s3c64xx/Kconfig"
-
-source "arch/arm/mach-s5p64x0/Kconfig"
-
-source "arch/arm/mach-s5pc100/Kconfig"
-
-source "arch/arm/mach-s5pv210/Kconfig"
-
-source "arch/arm/mach-exynos/Kconfig"
-
-source "arch/arm/mach-shmobile/Kconfig"
-
-source "arch/arm/mach-tegra/Kconfig"
-
-source "arch/arm/mach-u300/Kconfig"
-
-source "arch/arm/mach-ux500/Kconfig"
-
-source "arch/arm/mach-versatile/Kconfig"
-
-source "arch/arm/mach-vexpress/Kconfig"
-source "arch/arm/plat-versatile/Kconfig"
-
-source "arch/arm/mach-vt8500/Kconfig"
-
-source "arch/arm/mach-w90x900/Kconfig"
-
-source "arch/arm/mach-zynq/Kconfig"
-
-# Definitions to make life easier
-config ARCH_ACORN
-	bool
-
-config PLAT_IOP
-	bool
-	select GENERIC_CLOCKEVENTS
-
-config PLAT_ORION
-	bool
-	select CLKSRC_MMIO
-	select GENERIC_IRQ_CHIP
-	select IRQ_DOMAIN
-	select COMMON_CLK
-
-config PLAT_PXA
-	bool
-
-config PLAT_VERSATILE
-	bool
+source "arch/arm/Kconfig.mach"
 
 config ARM_TIMER_SP804
 	bool
arch/arm/Kconfig.mach new file +528 -0

528 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#15 lore raw

PATCH 2/6 ARM: introduce Kconfig.mach

Quoted 9 lines · Rob Herring

Move all the mach related config options into separate Kconfig.mach file.

---
 arch/arm/Kconfig      |  529 +------------------------------------------------
 arch/arm/Kconfig.mach |  528 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 529 insertions(+), 528 deletions(-)
 create mode 100644 arch/arm/Kconfig.mach

FWIW as far as ep93xx goes..

Thanks

#16 lore raw

PATCH 3/6 ARM: picoxcell: header fixes for multi-platform

In reply to Rob Herring

From: Rob Herring <[email protected]>

---
 arch/arm/mach-picoxcell/common.c                   |    6 ++---
 arch/arm/mach-picoxcell/include/mach/map.h         |   25 --------------------
 .../mach-picoxcell/include/mach/picoxcell_soc.h    |   25 --------------------
 arch/arm/mach-picoxcell/picoxcell_soc.h            |   25 ++++++++++++++++++++
 4 files changed, 28 insertions(+), 53 deletions(-)
 delete mode 100644 arch/arm/mach-picoxcell/include/mach/map.h
 delete mode 100644 arch/arm/mach-picoxcell/include/mach/picoxcell_soc.h
 create mode 100644 arch/arm/mach-picoxcell/picoxcell_soc.h
arch/arm/mach-picoxcell/common.c +3 -3
index 8f9a0b4..a8b70b5 100644
@@ -20,11 +20,11 @@
 #include <asm/hardware/vic.h>
 #include <asm/mach/map.h>
 
-#include <mach/map.h>
-#include <mach/picoxcell_soc.h>
-
+#include "picoxcell_soc.h"
 #include "common.h"
 
+#define PHYS_TO_IO(x)		(((x) & 0x00ffffff) | 0xfe000000)
+
 #define WDT_CTRL_REG_EN_MASK	(1 << 0)
 #define WDT_CTRL_REG_OFFS	(0x00)
 #define WDT_TIMEOUT_REG_OFFS	(0x04)
arch/arm/mach-picoxcell/include/mach/map.h deleted +0 -25
deleted file mode 100644
index c06afad..0000000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2011 Picochip Ltd., Jamie Iles
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-#ifndef __PICOXCELL_MAP_H__
-#define __PICOXCELL_MAP_H__
-
-#define PHYS_TO_IO(x)		(((x) & 0x00ffffff) | 0xfe000000)
-
-#ifdef __ASSEMBLY__
-#define IO_ADDRESS(x)		PHYS_TO_IO((x))
-#else
-#define IO_ADDRESS(x)		(void __iomem __force *)(PHYS_TO_IO((x)))
-#endif
-
-#endif /* __PICOXCELL_MAP_H__ */
arch/arm/mach-picoxcell/include/mach/picoxcell_soc.h deleted +0 -25
deleted file mode 100644
index 5566fc8..0000000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2011 Picochip Ltd., Jamie Iles
- *
- * This file contains the hardware definitions of the picoXcell SoC devices.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-#ifndef __PICOXCELL_SOC_H__
-#define __PICOXCELL_SOC_H__
-
-#define PICOXCELL_UART1_BASE		0x80230000
-#define PICOXCELL_PERIPH_BASE		0x80000000
-#define PICOXCELL_PERIPH_LENGTH		SZ_4M
-#define PICOXCELL_VIC0_BASE		0x80060000
-#define PICOXCELL_VIC1_BASE		0x80064000
-
-#endif /* __PICOXCELL_SOC_H__ */
arch/arm/mach-picoxcell/picoxcell_soc.h new file +25 -0
new file mode 100644
index 0000000..5566fc8
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2011 Picochip Ltd., Jamie Iles
+ *
+ * This file contains the hardware definitions of the picoXcell SoC devices.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+#ifndef __PICOXCELL_SOC_H__
+#define __PICOXCELL_SOC_H__
+
+#define PICOXCELL_UART1_BASE		0x80230000
+#define PICOXCELL_PERIPH_BASE		0x80000000
+#define PICOXCELL_PERIPH_LENGTH		SZ_4M
+#define PICOXCELL_VIC0_BASE		0x80060000
+#define PICOXCELL_VIC1_BASE		0x80064000
+
+#endif /* __PICOXCELL_SOC_H__ */
Signature · 1 line
1.7.9.5
#17 lore raw

PATCH 4/6 ARM: vexpress: remove dependency on mach/* headers

In reply to Rob Herring

From: Arnd Bergmann <[email protected]>

---
 arch/arm/mach-vexpress/ct-ca9x4.c          |    1 +
 arch/arm/mach-vexpress/include/mach/irqs.h |    2 ++
 2 files changed, 3 insertions(+)
arch/arm/mach-vexpress/ct-ca9x4.c +1 -0
index 61c4924..0e770e8 100644
@@ -27,6 +27,7 @@
 #include "core.h"
 
 #include <mach/motherboard.h>
+#include <mach/irqs.h>
 
 #include <plat/clcd.h>
 
arch/arm/mach-vexpress/include/mach/irqs.h +2 -0
index 4b10ee7..f8f7f78 100644
@@ -1,4 +1,6 @@
 #define IRQ_LOCALTIMER		29
 #define IRQ_LOCALWDOG		30
 
+#ifndef CONFIG_SPARSE_IRQ
 #define NR_IRQS	256
+#endif
Signature · 1 line
1.7.9.5
#18 lore raw

PATCH 5/6 ARM: initial multiplatform support

In reply to Rob Herring

From: Rob Herring <[email protected]>

This lets us build a multiplatform kernel for experimental purposes. However, it will not be useful for any real work, because it relies on a number of useful things to be disabled for now:

* SMP support must be turned off because of conflicting symbols. Marc Zyngier has proposed a solution by adding a new SOC operations structure to hold indirect function pointers for these, but that work is currently stalled

* We turn on SPARSE_IRQ unconditionally, which is not supported on most platforms. Each of them is currently in a different state, but most are being worked on.

* A common clock framework is in place since v3.4 but not yet being used. Work on this is on its way.

* DEBUG_LL for early debugging is currently disabled.

* THUMB2_KERNEL does not work with allyesconfig because the kernel gets too big

[Rob Herring]: Rebased to not be dependent on the mass mach header rename. As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank, picoxcell, mvebu, socfpga, and vexpress are converted.

---
 arch/arm/Kconfig.mach            |   57 ++++++++++++++
 arch/arm/Makefile                |  155 ++++++++++++++++++++------------------
 arch/arm/boot/compressed/misc.c  |    6 ++
 arch/arm/include/asm/timex.h     |    4 +
 arch/arm/mach-highbank/Kconfig   |    2 +-
 arch/arm/mach-mvebu/Kconfig      |    2 +-
 arch/arm/mach-mvebu/Makefile     |    2 +
 arch/arm/mach-picoxcell/Kconfig  |    2 +-
 arch/arm/mach-socfpga/Kconfig    |    2 +-
 arch/arm/mach-vexpress/Kconfig   |    2 +-
 arch/arm/mach-vexpress/Makefile  |    2 +
 arch/arm/plat-versatile/Makefile |    2 +
 12 files changed, 158 insertions(+), 80 deletions(-)
arch/arm/Kconfig.mach +57 -0
index 60f0386..7a21abb 100644
@@ -4,6 +4,7 @@
 #
 choice
 	prompt "ARM system type"
+	depends on !ARCH_MULTIPLATFORM
 	default ARCH_VERSATILE
 
 config ARCH_SOCFPGA_CHOICE
@@ -378,6 +379,62 @@ config ARCH_ZYNQ_CHOICE
 	  Support for Xilinx Zynq ARM Cortex A9 Platform
 endchoice
 
+menuconfig ARCH_MULTIPLATFORM
+	bool "Multiple platform selection"
+	select USE_OF
+	select COMMON_CLK
+	select SPARSE_IRQ
+	select MULTI_IRQ_HANDLER
+	select AUTO_ZRELADDR
+	depends on MMU
+
+if ARCH_MULTIPLATFORM
+
+comment "CPU Core family selection"
+
+config ARCH_MULTI_V4
+	bool "ARMv4 based platforms (FA526, StrongARM)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V4T
+	bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V5
+	bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V4_V5
+	bool
+
+config ARCH_MULTI_V6
+	bool "ARMv6 based platforms (ARM11, Scorpion, ...)"
+	select CPU_V6
+	select ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V7
+	bool "ARMv7 based platforms (Cortex-A, PJ4, Krait)"
+	select CPU_V7
+	select ARCH_VEXPRESS
+	default y
+	select ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V6_V7
+	bool
+
+config ARCH_MULTI_CPU_AUTO
+	def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7)
+	select ARCH_MULTI_V5
+
+endif
+
+if ARCH_MULTIPLATFORM
+comment "SoC family selection"
+endif
+
 #
 # This is sorted alphabetically by mach-* pathname.  However, plat-*
 # Kconfigs may be included either alphabetically (according to the
arch/arm/Makefile +80 -75

179 lines not on this page · raw message

arch/arm/boot/compressed/misc.c +6 -0
index 8e2a8fc..df89983 100644
@@ -25,7 +25,13 @@ unsigned int __machine_arch_type;
 static void putstr(const char *ptr);
 extern void error(char *x);
 
+#ifdef CONFIG_ARCH_MULTIPLATFORM
+static inline void putc(int c) {}
+static inline void flush(void) {}
+static inline void arch_decomp_setup(void) {}
+#else
 #include <mach/uncompress.h>
+#endif
 
 #ifdef CONFIG_DEBUG_ICEDCC
 
arch/arm/include/asm/timex.h +4 -0
index ce11944..963342a 100644
@@ -13,7 +13,11 @@
 #define _ASMARM_TIMEX_H
 
 #include <asm/arch_timer.h>
+#ifdef CONFIG_ARCH_MULTIPLATFORM
+#define CLOCK_TICK_RATE 1000000
+#else
 #include <mach/timex.h>
+#endif
 
 typedef unsigned long cycles_t;
 
arch/arm/mach-highbank/Kconfig +1 -1
index d4f1b23..0e1d0a4 100644
@@ -1,5 +1,5 @@
 config ARCH_HIGHBANK
-	bool
+	bool "Calxeda ECX-1000 (Highbank)" if ARCH_MULTI_V7
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select ARM_AMBA
 	select ARM_GIC
arch/arm/mach-mvebu/Kconfig +1 -1
index 1ed7d15..7b27035 100644
@@ -1,5 +1,5 @@
 config ARCH_MVEBU
-	bool
+	bool "Marvell SOCs with Device Tree support" if ARCH_MULTI_V7
 	select CLKSRC_MMIO
 	select COMMON_CLK
 	select GENERIC_CLOCKEVENTS
arch/arm/mach-mvebu/Makefile +2 -0
index e61d2b8..6ea8998 100644
@@ -1,2 +1,4 @@
+ccflags-$(ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include
+
 obj-y += system-controller.o
 obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o
arch/arm/mach-picoxcell/Kconfig +1 -1
index b0fd5a1..868796f 100644
@@ -1,5 +1,5 @@
 config ARCH_PICOXCELL
-	bool
+	bool "Picochip PicoXcell" if ARCH_MULTI_V6
 	select ARCH_REQUIRE_GPIOLIB
 	select ARM_PATCH_PHYS_VIRT
 	select ARM_VIC
arch/arm/mach-socfpga/Kconfig +1 -1
index 51b04ba..803a328 100644
@@ -1,5 +1,5 @@
 config ARCH_SOCFPGA
-	bool
+	bool "Altera SOCFPGA family" if ARCH_MULTI_V7
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select ARM_AMBA
 	select ARM_GIC
arch/arm/mach-vexpress/Kconfig +1 -1
index 8ce13a7..498ea15 100644
@@ -1,5 +1,5 @@
 config ARCH_VEXPRESS
-	bool
+	bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select ARM_AMBA
 	select ARM_TIMER_SP804
arch/arm/mach-vexpress/Makefile +2 -0
index 90551b9..42703e8 100644
@@ -1,6 +1,8 @@
 #
 # Makefile for the linux kernel.
 #
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
+	-I$(srctree)/arch/arm/plat-versatile/include
 
 obj-y					:= v2m.o
 obj-$(CONFIG_ARCH_VEXPRESS_CA9X4)	+= ct-ca9x4.o
arch/arm/plat-versatile/Makefile +2 -0
index 272769a8..74cfd94 100644
@@ -1,3 +1,5 @@
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include
+
 obj-$(CONFIG_PLAT_VERSATILE_CLOCK) += clock.o
 obj-$(CONFIG_PLAT_VERSATILE_CLCD) += clcd.o
 obj-$(CONFIG_PLAT_VERSATILE_FPGA_IRQ) += fpga-irq.o
Signature · 1 line
1.7.9.5
#19 lore raw

PATCH 6/6 ARM: update defconfigs

In reply to Rob Herring

From: Rob Herring <[email protected]>

Converted with this script:

sed -i -e 's/\(CONFIG_ARCH_.*\)=/\1_CHOICE=/' -- arch/arm/configs/*

and then fixup all the duplicates.

---
 arch/arm/configs/acs5k_defconfig           |    2 +-
 arch/arm/configs/acs5k_tiny_defconfig      |    2 +-
 arch/arm/configs/afeb9260_defconfig        |    2 +-
 arch/arm/configs/ag5evm_defconfig          |    2 +-
 arch/arm/configs/am200epdkit_defconfig     |    2 +-
 arch/arm/configs/ap4evb_defconfig          |    2 +-
 arch/arm/configs/armadillo800eva_defconfig |    2 +-
 arch/arm/configs/assabet_defconfig         |    2 +-
 arch/arm/configs/at91_dt_defconfig         |    2 +-
 arch/arm/configs/at91rm9200_defconfig      |    2 +-
 arch/arm/configs/at91sam9260_defconfig     |    2 +-
 arch/arm/configs/at91sam9261_defconfig     |    2 +-
 arch/arm/configs/at91sam9263_defconfig     |    2 +-
 arch/arm/configs/at91sam9g20_defconfig     |    2 +-
 arch/arm/configs/at91sam9g45_defconfig     |    2 +-
 arch/arm/configs/at91sam9rl_defconfig      |    2 +-
 arch/arm/configs/at91x40_defconfig         |    2 +-
 arch/arm/configs/badge4_defconfig          |    2 +-
 arch/arm/configs/bcmring_defconfig         |    2 +-
 arch/arm/configs/bonito_defconfig          |    2 +-
 arch/arm/configs/cam60_defconfig           |    2 +-
 arch/arm/configs/cerfcube_defconfig        |    2 +-
 arch/arm/configs/cm_x2xx_defconfig         |    2 +-
 arch/arm/configs/cm_x300_defconfig         |    2 +-
 arch/arm/configs/cns3420vb_defconfig       |    2 +-
 arch/arm/configs/colibri_pxa270_defconfig  |    2 +-
 arch/arm/configs/colibri_pxa300_defconfig  |    2 +-
 arch/arm/configs/collie_defconfig          |    2 +-
 arch/arm/configs/corgi_defconfig           |    2 +-
 arch/arm/configs/cpu9260_defconfig         |    2 +-
 arch/arm/configs/cpu9g20_defconfig         |    2 +-
 arch/arm/configs/da8xx_omapl_defconfig     |    2 +-
 arch/arm/configs/davinci_all_defconfig     |    2 +-
 arch/arm/configs/dove_defconfig            |    2 +-
 arch/arm/configs/ebsa110_defconfig         |    2 +-
 arch/arm/configs/edb7211_defconfig         |    2 +-
 arch/arm/configs/em_x270_defconfig         |    2 +-
 arch/arm/configs/ep93xx_defconfig          |    2 +-
 arch/arm/configs/eseries_pxa_defconfig     |    2 +-
 arch/arm/configs/exynos4_defconfig         |    2 +-
 arch/arm/configs/exynos_defconfig          |    4 ++--
 arch/arm/configs/ezx_defconfig             |    2 +-
 arch/arm/configs/footbridge_defconfig      |    2 +-
 arch/arm/configs/fortunet_defconfig        |    2 +-
 arch/arm/configs/g3evm_defconfig           |    2 +-
 arch/arm/configs/g4evm_defconfig           |    2 +-
 arch/arm/configs/h3600_defconfig           |    2 +-
 arch/arm/configs/h5000_defconfig           |    2 +-
 arch/arm/configs/h7201_defconfig           |    2 +-
 arch/arm/configs/h7202_defconfig           |    2 +-
 arch/arm/configs/hackkit_defconfig         |    2 +-
 arch/arm/configs/imote2_defconfig          |    2 +-
 arch/arm/configs/imx_v4_v5_defconfig       |    2 +-
 arch/arm/configs/imx_v6_v7_defconfig       |    2 +-
 arch/arm/configs/integrator_defconfig      |    2 +-
 arch/arm/configs/iop13xx_defconfig         |    2 +-
 arch/arm/configs/iop32x_defconfig          |    2 +-
 arch/arm/configs/iop33x_defconfig          |    2 +-
 arch/arm/configs/ixp4xx_defconfig          |    2 +-
 arch/arm/configs/jornada720_defconfig      |    2 +-
 arch/arm/configs/kirkwood_defconfig        |    2 +-
 arch/arm/configs/kota2_defconfig           |    2 +-
 arch/arm/configs/ks8695_defconfig          |    2 +-
 arch/arm/configs/kzm9d_defconfig           |    2 +-
 arch/arm/configs/kzm9g_defconfig           |    2 +-
 arch/arm/configs/lart_defconfig            |    2 +-
 arch/arm/configs/lpc32xx_defconfig         |    2 +-
 arch/arm/configs/lpd270_defconfig          |    2 +-
 arch/arm/configs/lubbock_defconfig         |    2 +-
 arch/arm/configs/mackerel_defconfig        |    2 +-
 arch/arm/configs/magician_defconfig        |    2 +-
 arch/arm/configs/mainstone_defconfig       |    2 +-
 arch/arm/configs/marzen_defconfig          |    2 +-
 arch/arm/configs/mini2440_defconfig        |    2 +-
 arch/arm/configs/mmp2_defconfig            |    2 +-
 arch/arm/configs/msm_defconfig             |    2 +-
 arch/arm/configs/mv78xx0_defconfig         |    2 +-
 arch/arm/configs/mvebu_defconfig           |    2 +-
 arch/arm/configs/mxs_defconfig             |    2 +-
 arch/arm/configs/neponset_defconfig        |    2 +-
 arch/arm/configs/netwinder_defconfig       |    2 +-
 arch/arm/configs/netx_defconfig            |    2 +-
 arch/arm/configs/nhk8815_defconfig         |    2 +-
 arch/arm/configs/nuc910_defconfig          |    2 +-
 arch/arm/configs/nuc950_defconfig          |    2 +-
 arch/arm/configs/nuc960_defconfig          |    2 +-
 arch/arm/configs/omap1_defconfig           |    2 +-
 arch/arm/configs/omap2plus_defconfig       |    2 +-
 arch/arm/configs/orion5x_defconfig         |    2 +-
 arch/arm/configs/palmz72_defconfig         |    2 +-
 arch/arm/configs/pcm027_defconfig          |    2 +-
 arch/arm/configs/pleb_defconfig            |    2 +-
 arch/arm/configs/pnx4008_defconfig         |    2 +-
 arch/arm/configs/prima2_defconfig          |    2 +-
 arch/arm/configs/pxa168_defconfig          |    2 +-
 arch/arm/configs/pxa255-idp_defconfig      |    2 +-
 arch/arm/configs/pxa3xx_defconfig          |    2 +-
 arch/arm/configs/pxa910_defconfig          |    2 +-
 arch/arm/configs/qil-a9260_defconfig       |    2 +-
 arch/arm/configs/raumfeld_defconfig        |    2 +-
 arch/arm/configs/realview-smp_defconfig    |    2 +-
 arch/arm/configs/realview_defconfig        |    2 +-
 arch/arm/configs/rpc_defconfig             |    2 +-
 arch/arm/configs/s3c2410_defconfig         |    2 +-
 arch/arm/configs/s3c6400_defconfig         |    2 +-
 arch/arm/configs/s5p64x0_defconfig         |    2 +-
 arch/arm/configs/s5pc100_defconfig         |    2 +-
 arch/arm/configs/s5pv210_defconfig         |    2 +-
 arch/arm/configs/sam9_l9260_defconfig      |    2 +-
 arch/arm/configs/shannon_defconfig         |    2 +-
 arch/arm/configs/shark_defconfig           |    2 +-
 arch/arm/configs/simpad_defconfig          |    2 +-
 arch/arm/configs/socfpga_defconfig         |    2 +-
 arch/arm/configs/spear13xx_defconfig       |    2 +-
 arch/arm/configs/spear6xx_defconfig        |    2 +-
 arch/arm/configs/spitz_defconfig           |    2 +-
 arch/arm/configs/stamp9g20_defconfig       |    2 +-
 arch/arm/configs/tct_hammer_defconfig      |    2 +-
 arch/arm/configs/tegra_defconfig           |    2 +-
 arch/arm/configs/trizeps4_defconfig        |    2 +-
 arch/arm/configs/u300_defconfig            |    2 +-
 arch/arm/configs/u8500_defconfig           |    2 +-
 arch/arm/configs/usb-a9260_defconfig       |    2 +-
 arch/arm/configs/vexpress_defconfig        |    2 +-
 arch/arm/configs/viper_defconfig           |    2 +-
 arch/arm/configs/xcep_defconfig            |    2 +-
 arch/arm/configs/zeus_defconfig            |    2 +-
 127 files changed, 128 insertions(+), 128 deletions(-)
arch/arm/configs/acs5k_defconfig +1 -1
index 92b0f90..7543bef 100644
@@ -11,7 +11,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_KS8695=y
+CONFIG_ARCH_KS8695_CHOICE=y
 CONFIG_MACH_KS8695=y
 CONFIG_MACH_DSM320=y
 CONFIG_MACH_ACS5K=y
arch/arm/configs/acs5k_tiny_defconfig +1 -1
index 2a27a14..89de2f2 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_KS8695=y
+CONFIG_ARCH_KS8695_CHOICE=y
 CONFIG_MACH_ACS5K=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_AEABI=y
arch/arm/configs/afeb9260_defconfig +1 -1
index 2afdf67..0f0389c 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_AFEB9260=y
 CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
arch/arm/configs/ag5evm_defconfig +1 -1
index 212ead3..afe2f08 100644
@@ -15,7 +15,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_SH73A0=y
 CONFIG_MACH_AG5EVM=y
 CONFIG_MEMORY_SIZE=0x10000000
arch/arm/configs/am200epdkit_defconfig +1 -1
index f0dea52..7069340 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_GUMSTIX=y
 CONFIG_PCCARD=y
 CONFIG_PREEMPT=y
arch/arm/configs/ap4evb_defconfig +1 -1
index 2eef85e..8b82ed3 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_SH7372=y
 CONFIG_MACH_AP4EVB=y
 CONFIG_AEABI=y
arch/arm/configs/armadillo800eva_defconfig +1 -1
index 7d87184..46072fd 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_R8A7740=y
 CONFIG_MACH_ARMADILLO800EVA=y
 # CONFIG_SH_TIMER_TMU is not set
arch/arm/configs/assabet_defconfig +1 -1
index 558ecd8..b2deaf9 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_ASSABET=y
 CONFIG_PCCARD=y
 CONFIG_PCMCIA_SA1100=y
arch/arm/configs/at91_dt_defconfig +1 -1
index 67bc571..fb42cd3 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_SOC_AT91SAM9260=y
 CONFIG_SOC_AT91SAM9263=y
 CONFIG_SOC_AT91SAM9G45=y
arch/arm/configs/at91rm9200_defconfig +1 -1
index d54e2ac..cfde6c2 100644
@@ -13,7 +13,7 @@ CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91RM9200=y
 CONFIG_MACH_ONEARM=y
 CONFIG_ARCH_AT91RM9200DK=y
arch/arm/configs/at91sam9260_defconfig +1 -1
index 505b376..8206d1c 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_ARCH_AT91SAM9260_SAM9XE=y
 CONFIG_MACH_AT91SAM9260EK=y
arch/arm/configs/at91sam9261_defconfig +1 -1
index ade6b2f..2e2e559 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9261=y
 CONFIG_MACH_AT91SAM9261EK=y
 CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
arch/arm/configs/at91sam9263_defconfig +1 -1
index 1cf9626..287de20 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9263=y
 CONFIG_MACH_AT91SAM9263EK=y
 CONFIG_MACH_USB_A9263=y
arch/arm/configs/at91sam9g20_defconfig +1 -1
index 994d331..fbe6f40 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9G20=y
 CONFIG_MACH_AT91SAM9G20EK=y
 CONFIG_MACH_AT91SAM9G20EK_2MMC=y
arch/arm/configs/at91sam9g45_defconfig +1 -1
index 606d48f..85f2743 100644
@@ -15,7 +15,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9G45=y
 CONFIG_MACH_AT91SAM9M10G45EK=y
 CONFIG_MACH_AT91SAM_DT=y
arch/arm/configs/at91sam9rl_defconfig +1 -1
index ad562ee..0f8f9b3 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9RL=y
 CONFIG_MACH_AT91SAM9RLEK=y
 CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
arch/arm/configs/at91x40_defconfig +1 -1
index c55e921..42acdab 100644
@@ -13,7 +13,7 @@ CONFIG_SLAB=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
 # CONFIG_MMU is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91X40=y
 CONFIG_MACH_AT91EB01=y
 CONFIG_AT91_EARLY_USART0=y
arch/arm/configs/badge4_defconfig +1 -1
index 5b54abb..e657c9e 100644
@@ -3,7 +3,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_EXPERT=y
 CONFIG_MODULES=y
 CONFIG_MODVERSIONS=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_BADGE4=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/bcmring_defconfig +1 -1
index 9e6a8fe..7fabe55 100644
@@ -20,7 +20,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_BCMRING=y
+CONFIG_ARCH_BCMRING_CHOICE=y
 CONFIG_BCM_ZRELADDR=0x8000
 CONFIG_CPU_32v6K=y
 CONFIG_NO_HZ=y
arch/arm/configs/bonito_defconfig +1 -1
index 5457108..c1bf7ba 100644
@@ -17,7 +17,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_R8A7740=y
 CONFIG_MACH_BONITO=y
 # CONFIG_SH_TIMER_TMU is not set
arch/arm/configs/cam60_defconfig +1 -1
index cedc92e..f692e00 100644
@@ -14,7 +14,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_CAM60=y
 CONFIG_ZBOOT_ROM_BSS=0x20004000
arch/arm/configs/cerfcube_defconfig +1 -1
index dce912d..f728b36 100644
@@ -5,7 +5,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_CERF=y
 CONFIG_SA1100_CERF_FLASH_16MB=y
 CONFIG_PCCARD=m
arch/arm/configs/cm_x2xx_defconfig +1 -1
index a93ff8d..069fe65 100644
@@ -13,7 +13,7 @@ CONFIG_EXPERT=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_ARMCORE=y
 CONFIG_PCI=y
 CONFIG_PCCARD=m
arch/arm/configs/cm_x300_defconfig +1 -1
index f4b7672..65be1f6 100644
@@ -11,7 +11,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_MACH_CM_X300=y
 CONFIG_NO_HZ=y
arch/arm/configs/cns3420vb_defconfig +1 -1
index 313627a..eeefbdd 100644
@@ -19,7 +19,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_IOSCHED_CFQ=m
-CONFIG_ARCH_CNS3XXX=y
+CONFIG_ARCH_CNS3XXX_CHOICE=y
 CONFIG_MACH_CNS3420VB=y
 CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/colibri_pxa270_defconfig +1 -1
index 2ef2c5e..7e543e1 100644
@@ -17,7 +17,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_COLIBRI=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
arch/arm/configs/colibri_pxa300_defconfig +1 -1
index b985334..44b61a595 100644
@@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_COLIBRI300=y
 CONFIG_AEABI=y
 CONFIG_CMDLINE="console=ttyS0,115200 rw"
arch/arm/configs/collie_defconfig +1 -1
index 6c56ad0..2efaad1 100644
@@ -10,7 +10,7 @@ CONFIG_EXPERT=y
 CONFIG_SLOB=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_COLLIE=y
 CONFIG_PCCARD=y
 CONFIG_PCMCIA_SA1100=y
arch/arm/configs/corgi_defconfig +1 -1
index e53c475..9a925e8 100644
@@ -11,7 +11,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_PXA_SHARPSL=y
 CONFIG_MACH_POODLE=y
 CONFIG_MACH_CORGI=y
arch/arm/configs/cpu9260_defconfig +1 -1
index bbf729e..93b387d 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_CPU9260=y
 # CONFIG_ARM_THUMB is not set
arch/arm/configs/cpu9g20_defconfig +1 -1
index e7d7942..544b25d 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9G20=y
 CONFIG_MACH_CPU9G20=y
 # CONFIG_ARM_THUMB is not set
arch/arm/configs/da8xx_omapl_defconfig +1 -1
index 88ccde0..f546dba 100644
@@ -14,7 +14,7 @@ CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_DAVINCI=y
+CONFIG_ARCH_DAVINCI_CHOICE=y
 CONFIG_ARCH_DAVINCI_DA830=y
 CONFIG_ARCH_DAVINCI_DA850=y
 CONFIG_MACH_MITYOMAPL138=y
arch/arm/configs/davinci_all_defconfig +1 -1
index 67b5abb6..aeed63e 100644
@@ -14,7 +14,7 @@ CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_DAVINCI=y
+CONFIG_ARCH_DAVINCI_CHOICE=y
 CONFIG_ARCH_DAVINCI_DM644x=y
 CONFIG_ARCH_DAVINCI_DM355=y
 CONFIG_ARCH_DAVINCI_DM646x=y
arch/arm/configs/dove_defconfig +1 -1
index 40db34c..24988f7 100644
@@ -6,7 +6,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_DOVE=y
+CONFIG_ARCH_DOVE_CHOICE=y
 CONFIG_MACH_DOVE_DB=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
arch/arm/configs/ebsa110_defconfig +1 -1
index 14559db..016261c 100644
@@ -4,7 +4,7 @@ CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_EXPERT=y
 CONFIG_MODULES=y
-CONFIG_ARCH_EBSA110=y
+CONFIG_ARCH_EBSA110_CHOICE=y
 CONFIG_PCCARD=m
 CONFIG_I82365=m
 CONFIG_LEDS=y
arch/arm/configs/edb7211_defconfig +1 -1
index d52ded35..5dc3398 100644
@@ -4,7 +4,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_EXPERT=y
 # CONFIG_HOTPLUG is not set
-CONFIG_ARCH_CLPS711X=y
+CONFIG_ARCH_CLPS711X_CHOICE=y
 CONFIG_ARCH_EDB7211=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/em_x270_defconfig +1 -1
index 60a21e0..1ae64d2 100644
@@ -13,7 +13,7 @@ CONFIG_EXPERT=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_EM_X270=y
 CONFIG_MACH_EXEDA=y
 CONFIG_NO_HZ=y
arch/arm/configs/ep93xx_defconfig +1 -1
index 8e97b2f..2e74fae 100644
@@ -11,7 +11,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_EP93XX=y
+CONFIG_ARCH_EP93XX_CHOICE=y
 CONFIG_CRUNCH=y
 CONFIG_MACH_ADSSPHERE=y
 CONFIG_MACH_EDB9301=y
arch/arm/configs/eseries_pxa_defconfig +1 -1
index d68ac67..ded7fd6 100644
@@ -12,7 +12,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_PXA_ESERIES=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_IWMMXT=y
arch/arm/configs/exynos4_defconfig +1 -1
index bffe68e..dd1d584 100644
@@ -4,7 +4,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_EXYNOS=y
+CONFIG_ARCH_EXYNOS_CHOICE=y
 CONFIG_S3C_LOWLEVEL_UART_PORT=1
 CONFIG_MACH_SMDKC210=y
 CONFIG_MACH_ARMLEX4210=y
arch/arm/configs/exynos_defconfig +2 -2
index e40b435..cd76c19 100644
@@ -8,10 +8,10 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_EFI_PARTITION=y
-CONFIG_ARCH_EXYNOS=y
+CONFIG_ARCH_EXYNOS_CHOICE=y
 CONFIG_S3C_LOWLEVEL_UART_PORT=1
 CONFIG_S3C24XX_PWM=y
-CONFIG_ARCH_EXYNOS5=y
+CONFIG_ARCH_EXYNOS5_CHOICE=y
 CONFIG_MACH_EXYNOS4_DT=y
 CONFIG_MACH_EXYNOS5_DT=y
 CONFIG_SMP=y
arch/arm/configs/ezx_defconfig +1 -1
index d95763d..c33b4d0 100644
@@ -17,7 +17,7 @@ CONFIG_MODVERSIONS=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_PXA_EZX=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
arch/arm/configs/footbridge_defconfig +1 -1
index 038518a..557867a 100644
@@ -6,7 +6,7 @@ CONFIG_BLK_DEV_INITRD=y
 CONFIG_EXPERT=y
 # CONFIG_HOTPLUG is not set
 CONFIG_MODULES=y
-CONFIG_ARCH_FOOTBRIDGE=y
+CONFIG_ARCH_FOOTBRIDGE_CHOICE=y
 CONFIG_ARCH_CATS=y
 CONFIG_ARCH_PERSONAL_SERVER=y
 CONFIG_ARCH_EBSA285_HOST=y
arch/arm/configs/fortunet_defconfig +1 -1
index 840fced..aa5652b 100644
@@ -4,7 +4,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_EXPERT=y
 # CONFIG_HOTPLUG is not set
-CONFIG_ARCH_CLPS711X=y
+CONFIG_ARCH_CLPS711X_CHOICE=y
 CONFIG_ARCH_FORTUNET=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/g3evm_defconfig +1 -1
index 4a336ab..4299600 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_SH7367=y
 CONFIG_MACH_G3EVM=y
 CONFIG_AEABI=y
arch/arm/configs/g4evm_defconfig +1 -1
index 21c6d03..e5fa444 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_SH7377=y
 CONFIG_MACH_G4EVM=y
 CONFIG_AEABI=y
arch/arm/configs/h3600_defconfig +1 -1
index 317960f..65009de 100644
@@ -7,7 +7,7 @@ CONFIG_MODULES=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_H3600=y
 CONFIG_PCCARD=y
 CONFIG_PCMCIA_SA1100=y
arch/arm/configs/h5000_defconfig +1 -1
index 37903e3..94cc67d 100644
@@ -12,7 +12,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_H5000=y
 CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/h7201_defconfig +1 -1
index bee94d2..8404e5e 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
-CONFIG_ARCH_H720X=y
+CONFIG_ARCH_H720X_CHOICE=y
 CONFIG_ARCH_H7201=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/h7202_defconfig +1 -1
index 69405a7..768f654 100644
@@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
-CONFIG_ARCH_H720X=y
+CONFIG_ARCH_H720X_CHOICE=y
 CONFIG_ARCH_H7202=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/hackkit_defconfig +1 -1
index bed8047..7d2c376 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_HACKKIT=y
 CONFIG_LEDS=y
 CONFIG_LEDS_CPU=y
arch/arm/configs/imote2_defconfig +1 -1
index fd996bb..6b574fd 100644
@@ -16,7 +16,7 @@ CONFIG_MODVERSIONS=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_INTELMOTE2=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
arch/arm/configs/imx_v4_v5_defconfig +1 -1
index 78ed575..21fdab3 100644
@@ -17,7 +17,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_MXC=y
+CONFIG_ARCH_MXC_CHOICE=y
 CONFIG_ARCH_IMX_V4_V5=y
 CONFIG_ARCH_MX1ADS=y
 CONFIG_MACH_SCB9328=y
arch/arm/configs/imx_v6_v7_defconfig +1 -1
index 3c9f32f..cf959d2 100644
@@ -16,7 +16,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_MXC=y
+CONFIG_ARCH_MXC_CHOICE=y
 CONFIG_MACH_MX31LILLY=y
 CONFIG_MACH_MX31LITE=y
 CONFIG_MACH_PCM037=y
arch/arm/configs/integrator_defconfig +1 -1
index a8314c3..c3cfc4b 100644
@@ -7,7 +7,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_INTEGRATOR=y
+CONFIG_ARCH_INTEGRATOR_CHOICE=y
 CONFIG_ARCH_INTEGRATOR_AP=y
 CONFIG_ARCH_INTEGRATOR_CP=y
 CONFIG_CPU_ARM720T=y
arch/arm/configs/iop13xx_defconfig +1 -1
index 4fa94a1..5c0b6ec 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_IOP13XX=y
+CONFIG_ARCH_IOP13XX_CHOICE=y
 CONFIG_MACH_IQ81340SC=y
 CONFIG_MACH_IQ81340MC=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/iop32x_defconfig +1 -1
index 4f2ec3a..92ba2c7 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_IOP32X=y
+CONFIG_ARCH_IOP32X_CHOICE=y
 CONFIG_MACH_GLANTANK=y
 CONFIG_ARCH_IQ80321=y
 CONFIG_ARCH_IQ31244=y
arch/arm/configs/iop33x_defconfig +1 -1
index aa36128..ea381ec 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_IOP33X=y
+CONFIG_ARCH_IOP33X_CHOICE=y
 CONFIG_ARCH_IQ80331=y
 CONFIG_MACH_IQ80332=y
 # CONFIG_ARM_THUMB is not set
arch/arm/configs/ixp4xx_defconfig +1 -1
index 063e2ab..663f522 100644
@@ -7,7 +7,7 @@ CONFIG_EXPERT=y
 CONFIG_MODULES=y
 CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_IXP4XX=y
+CONFIG_ARCH_IXP4XX_CHOICE=y
 CONFIG_MACH_NSLU2=y
 CONFIG_MACH_AVILA=y
 CONFIG_MACH_LOFT=y
arch/arm/configs/jornada720_defconfig +1 -1
index ea80e7e..83e38b1 100644
@@ -4,7 +4,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_SYSFS_DEPRECATED_V2=y
 CONFIG_MODULES=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_JORNADA720=y
 CONFIG_SA1100_JORNADA720_SSP=y
 CONFIG_PCCARD=y
arch/arm/configs/kirkwood_defconfig +1 -1
index aeb3af5..accc8db 100644
@@ -7,7 +7,7 @@ CONFIG_KPROBES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_KIRKWOOD=y
+CONFIG_ARCH_KIRKWOOD_CHOICE=y
 CONFIG_MACH_DB88F6281_BP=y
 CONFIG_MACH_RD88F6192_NAS=y
 CONFIG_MACH_RD88F6281=y
arch/arm/configs/kota2_defconfig +1 -1
index b7735d6..3b73777 100644
@@ -17,7 +17,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_KEYBOARD_GPIO_POLLED=y
 CONFIG_ARCH_SH73A0=y
 CONFIG_MACH_KOTA2=y
arch/arm/configs/ks8695_defconfig +1 -1
index 47c4883..f795954 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_KS8695=y
+CONFIG_ARCH_KS8695_CHOICE=y
 CONFIG_MACH_KS8695=y
 CONFIG_MACH_DSM320=y
 # CONFIG_ARM_THUMB is not set
arch/arm/configs/kzm9d_defconfig +1 -1
index 26146ff..5ce2ba4 100644
@@ -12,7 +12,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_EMEV2=y
 CONFIG_MACH_KZM9D=y
 CONFIG_MEMORY_START=0x40000000
arch/arm/configs/kzm9g_defconfig +1 -1
index 2388c86..5490470 100644
@@ -21,7 +21,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_KEYBOARD_GPIO_POLLED=y
 CONFIG_ARCH_SH73A0=y
 CONFIG_MACH_KZM9G=y
arch/arm/configs/lart_defconfig +1 -1
index faa2865..68e03f9 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_LART=y
 CONFIG_LEDS=y
 CONFIG_LEDS_CPU=y
arch/arm/configs/lpc32xx_defconfig +1 -1
index e42a0e3..d219a20 100644
@@ -17,7 +17,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_PARTITION_ADVANCED=y
-CONFIG_ARCH_LPC32XX=y
+CONFIG_ARCH_LPC32XX_CHOICE=y
 CONFIG_KEYBOARD_GPIO_POLLED=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
arch/arm/configs/lpd270_defconfig +1 -1
index 1c8c9ee..12ee552 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_SLAB=y
 CONFIG_MODULES=y
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_LOGICPD_PXA270=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/lubbock_defconfig +1 -1
index c4ba274..617271e 100644
@@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_LUBBOCK=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_PCCARD=y
arch/arm/configs/mackerel_defconfig +1 -1
index 306a2e2..7ca4ffa 100644
@@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_SH7372=y
 CONFIG_MACH_MACKEREL=y
 CONFIG_MEMORY_SIZE=0x10000000
arch/arm/configs/magician_defconfig +1 -1
index a691ef4..2e402f4 100644
@@ -12,7 +12,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_H4700=y
 CONFIG_MACH_MAGICIAN=y
 CONFIG_NO_HZ=y
arch/arm/configs/mainstone_defconfig +1 -1
index 04efa1b..e90b18e 100644
@@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_MAINSTONE=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_LEDS=y
arch/arm/configs/marzen_defconfig +1 -1
index 864f9a5..46c2a50 100644
@@ -8,7 +8,7 @@ CONFIG_SYSCTL_SYSCALL=y
 CONFIG_EMBEDDED=y
 CONFIG_SLAB=y
 # CONFIG_BLOCK is not set
-CONFIG_ARCH_SHMOBILE=y
+CONFIG_ARCH_SHMOBILE_CHOICE=y
 CONFIG_ARCH_R8A7779=y
 CONFIG_MACH_MARZEN=y
 CONFIG_MEMORY_START=0x60000000
arch/arm/configs/mini2440_defconfig +1 -1
index 082175c..828a920 100644
@@ -13,7 +13,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_BLK_DEV_INTEGRITY=y
-CONFIG_ARCH_S3C24XX=y
+CONFIG_ARCH_S3C24XX_CHOICE=y
 # CONFIG_CPU_S3C2410 is not set
 CONFIG_CPU_S3C2440=y
 CONFIG_S3C_ADC=y
arch/arm/configs/mmp2_defconfig +1 -1
index 5a58452..c5e0355 100644
@@ -7,7 +7,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_MMP=y
+CONFIG_ARCH_MMP_CHOICE=y
 CONFIG_MACH_BROWNSTONE=y
 CONFIG_MACH_FLINT=y
 CONFIG_MACH_MARVELL_JASPER=y
arch/arm/configs/msm_defconfig +1 -1
index 2b8f7af..77218bd 100644
@@ -6,7 +6,7 @@ CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_MSM=y
+CONFIG_ARCH_MSM_CHOICE=y
 CONFIG_MACH_HALIBUT=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
arch/arm/configs/mv78xx0_defconfig +1 -1
index 7305ebd..f2200bc 100644
@@ -11,7 +11,7 @@ CONFIG_KPROBES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_MV78XX0=y
+CONFIG_ARCH_MV78XX0_CHOICE=y
 CONFIG_MACH_DB78X00_BP=y
 CONFIG_MACH_RD78X00_MASA=y
 CONFIG_MACH_TERASTATION_WXL=y
arch/arm/configs/mvebu_defconfig +1 -1
index 2e86b31..76f2486 100644
@@ -8,7 +8,7 @@ CONFIG_EXPERT=y
 CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_MVEBU=y
+CONFIG_ARCH_MVEBU_CHOICE=y
 CONFIG_MACH_ARMADA_370_XP=y
 CONFIG_AEABI=y
 CONFIG_HIGHMEM=y
arch/arm/configs/mxs_defconfig +1 -1
index 4edcfb4..a64a406 100644
@@ -21,7 +21,7 @@ CONFIG_MODVERSIONS=y
 CONFIG_BLK_DEV_INTEGRITY=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_MXS=y
+CONFIG_ARCH_MXS_CHOICE=y
 CONFIG_MACH_MXS_DT=y
 CONFIG_MACH_MX23EVK=y
 CONFIG_MACH_MX28EVK=y
arch/arm/configs/neponset_defconfig +1 -1
index d7dc992..ee6b316 100644
@@ -4,7 +4,7 @@ CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_ASSABET=y
 CONFIG_ASSABET_NEPONSET=y
 CONFIG_PCCARD=y
arch/arm/configs/netwinder_defconfig +1 -1
index 25ed772..e9bcdc3 100644
@@ -1,7 +1,7 @@
 CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
-CONFIG_ARCH_FOOTBRIDGE=y
+CONFIG_ARCH_FOOTBRIDGE_CHOICE=y
 CONFIG_ARCH_NETWINDER=y
 CONFIG_LEDS=y
 CONFIG_LEDS_CPU=y
arch/arm/configs/netx_defconfig +1 -1
index 9c0ad79..4d036c9 100644
@@ -8,7 +8,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_ARCH_NETX=y
+CONFIG_ARCH_NETX_CHOICE=y
 CONFIG_MACH_NXDKN=y
 CONFIG_MACH_NXDB500=y
 CONFIG_MACH_NXEB500HMI=y
arch/arm/configs/nhk8815_defconfig +1 -1
index bf123c5..2e327e0 100644
@@ -13,7 +13,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_NOMADIK=y
+CONFIG_ARCH_NOMADIK_CHOICE=y
 CONFIG_MACH_NOMADIK_8815NHK=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
arch/arm/configs/nuc910_defconfig +1 -1
index 10180cf..4d05295 100644
@@ -8,7 +8,7 @@ CONFIG_USER_NS=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_SLAB=y
-CONFIG_ARCH_W90X900=y
+CONFIG_ARCH_W90X900_CHOICE=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
 CONFIG_CMDLINE="root=/dev/ram0 console=ttyS0,115200n8 rdinit=/sbin/init mem=64M"
arch/arm/configs/nuc950_defconfig +1 -1
index 27aa873..846fd11 100644
@@ -8,7 +8,7 @@ CONFIG_USER_NS=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_SLAB=y
-CONFIG_ARCH_W90X900=y
+CONFIG_ARCH_W90X900_CHOICE=y
 # CONFIG_MACH_W90P910EVB is not set
 CONFIG_MACH_W90P950EVB=y
 CONFIG_NO_HZ=y
arch/arm/configs/nuc960_defconfig +1 -1
index 56fd7ad..3ec4197 100644
@@ -8,7 +8,7 @@ CONFIG_USER_NS=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_SLAB=y
-CONFIG_ARCH_W90X900=y
+CONFIG_ARCH_W90X900_CHOICE=y
 # CONFIG_MACH_W90P910EVB is not set
 CONFIG_MACH_W90N960EVB=y
 CONFIG_NO_HZ=y
arch/arm/configs/omap1_defconfig +1 -1
index dde2a1a..43e9487 100644
@@ -22,7 +22,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP_CHOICE=y
 CONFIG_ARCH_OMAP1=y
 CONFIG_OMAP_RESET_CLOCKS=y
 # CONFIG_OMAP_MUX is not set
arch/arm/configs/omap2plus_defconfig +1 -1
index e58edc3..7d959cd 100644
@@ -20,7 +20,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP_CHOICE=y
 CONFIG_OMAP_RESET_CLOCKS=y
 CONFIG_OMAP_MUX_DEBUG=y
 CONFIG_ARM_THUMBEE=y
arch/arm/configs/orion5x_defconfig +1 -1
index a288d70..cad9bd5 100644
@@ -10,7 +10,7 @@ CONFIG_KPROBES=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_ORION5X=y
+CONFIG_ARCH_ORION5X_CHOICE=y
 CONFIG_MACH_DB88F5281=y
 CONFIG_MACH_RD88F5182=y
 CONFIG_MACH_KUROBOX_PRO=y
arch/arm/configs/palmz72_defconfig +1 -1
index 4baa83c..67cff48 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_PXA_PALM=y
 # CONFIG_MACH_PALMTX is not set
 CONFIG_PREEMPT=y
arch/arm/configs/pcm027_defconfig +1 -1
index 2f136c3..521caef 100644
@@ -16,7 +16,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_PCM027=y
 CONFIG_MACH_PCM990_BASEBOARD=y
 CONFIG_NO_HZ=y
arch/arm/configs/pleb_defconfig +1 -1
index cb08cc5..703751e 100644
@@ -9,7 +9,7 @@ CONFIG_EXPERT=y
 CONFIG_MODULES=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_PLEB=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/pnx4008_defconfig +1 -1
index 35a31cc..87e705d 100644
@@ -12,7 +12,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_ARCH_PNX4008=y
+CONFIG_ARCH_PNX4008_CHOICE=y
 CONFIG_PREEMPT=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/prima2_defconfig +1 -1
index c328ac6..e23ebd2 100644
@@ -8,7 +8,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_BSD_DISKLABEL=y
 CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_ARCH_PRIMA2=y
+CONFIG_ARCH_PRIMA2_CHOICE=y
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_PREEMPT=y
arch/arm/configs/pxa168_defconfig +1 -1
index 74d7e01..f479d22 100644
@@ -7,7 +7,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_MMP=y
+CONFIG_ARCH_MMP_CHOICE=y
 CONFIG_MACH_ASPENITE=y
 CONFIG_MACH_ZYLONITE2=y
 CONFIG_MACH_AVENGERS_LITE=y
arch/arm/configs/pxa255-idp_defconfig +1 -1
index 917a070..e836371 100644
@@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_PXA_IDP=y
 # CONFIG_ARM_THUMB is not set
 CONFIG_LEDS=y
arch/arm/configs/pxa3xx_defconfig +1 -1
index 1677a06..0da136d 100644
@@ -7,7 +7,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_SLAB=y
 CONFIG_MODULES=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_LITTLETON=y
 CONFIG_MACH_TAVOREVB=y
 CONFIG_MACH_SAAR=y
arch/arm/configs/pxa910_defconfig +1 -1
index 1cd381e..73a3c23 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_MMP=y
+CONFIG_ARCH_MMP_CHOICE=y
 CONFIG_MACH_TAVOREVB=y
 CONFIG_MACH_TTC_DKB=y
 CONFIG_NO_HZ=y
arch/arm/configs/qil-a9260_defconfig +1 -1
index 9160f3b..446403b 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_QIL_A9260=y
 CONFIG_AT91_SLOW_CLOCK=y
arch/arm/configs/raumfeld_defconfig +1 -1
index f7caa90..062fbcd 100644
@@ -5,7 +5,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_RAUMFELD_RC=y
 CONFIG_MACH_RAUMFELD_CONNECTOR=y
 CONFIG_MACH_RAUMFELD_SPEAKER=y
arch/arm/configs/realview-smp_defconfig +1 -1
index abe61bf..8080936 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_REALVIEW=y
+CONFIG_ARCH_REALVIEW_CHOICE=y
 CONFIG_MACH_REALVIEW_EB=y
 CONFIG_REALVIEW_EB_ARM11MP=y
 CONFIG_MACH_REALVIEW_PB11MP=y
arch/arm/configs/realview_defconfig +1 -1
index 7079cbe..4114be5 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_REALVIEW=y
+CONFIG_ARCH_REALVIEW_CHOICE=y
 CONFIG_MACH_REALVIEW_EB=y
 CONFIG_REALVIEW_EB_ARM11MP=y
 CONFIG_MACH_REALVIEW_PB11MP=y
arch/arm/configs/rpc_defconfig +1 -1
index 00515ef..e57d7af 100644
@@ -7,7 +7,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_RPC=y
+CONFIG_ARCH_RPC_CHOICE=y
 CONFIG_CPU_SA110=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/s3c2410_defconfig +1 -1
index 193448f..80b7757 100644
@@ -11,7 +11,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_BSD_DISKLABEL=y
 CONFIG_SOLARIS_X86_PARTITION=y
-CONFIG_ARCH_S3C24XX=y
+CONFIG_ARCH_S3C24XX_CHOICE=y
 CONFIG_S3C_BOOT_ERROR_RESET=y
 CONFIG_S3C_ADC=y
 CONFIG_S3C24XX_PWM=y
arch/arm/configs/s3c6400_defconfig +1 -1
index ba6a515..72cd97a 100644
@@ -5,7 +5,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_S3C64XX=y
+CONFIG_ARCH_S3C64XX_CHOICE=y
 CONFIG_S3C_BOOT_ERROR_RESET=y
 CONFIG_MACH_SMDK6400=y
 CONFIG_MACH_ANW6410=y
arch/arm/configs/s5p64x0_defconfig +1 -1
index ad6b61b..32edf95 100644
@@ -5,7 +5,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_S5P64X0=y
+CONFIG_ARCH_S5P64X0_CHOICE=y
 CONFIG_S3C_BOOT_ERROR_RESET=y
 CONFIG_S3C_LOWLEVEL_UART_PORT=1
 CONFIG_MACH_SMDK6440=y
arch/arm/configs/s5pc100_defconfig +1 -1
index 41bafc9..eb6dbd7 100644
@@ -5,7 +5,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_S5PC100=y
+CONFIG_ARCH_S5PC100_CHOICE=y
 CONFIG_MACH_SMDKC100=y
 CONFIG_AEABI=y
 CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySAC2,115200 mem=128M"
arch/arm/configs/s5pv210_defconfig +1 -1
index fa98990..5176dac59 100644
@@ -5,7 +5,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_S5PV210=y
+CONFIG_ARCH_S5PV210_CHOICE=y
 CONFIG_S3C_LOWLEVEL_UART_PORT=1
 CONFIG_S3C_DEV_FB=y
 CONFIG_S5PV210_SETUP_FB_24BPP=y
arch/arm/configs/sam9_l9260_defconfig +1 -1
index ecf2531..18d831b 100644
@@ -9,7 +9,7 @@ CONFIG_LOG_BUF_SHIFT=15
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_SLAB=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_SAM9_L9260=y
 CONFIG_MTD_AT91_DATAFLASH_CARD=y
arch/arm/configs/shannon_defconfig +1 -1
index b0b9694..b64afb0 100644
@@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_MODULES=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_SHANNON=y
 CONFIG_PCCARD=y
 CONFIG_PCMCIA_SA1100=y
arch/arm/configs/shark_defconfig +1 -1
index caa07db..6579d28 100644
@@ -8,7 +8,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_SHARK=y
+CONFIG_ARCH_SHARK_CHOICE=y
 CONFIG_LEDS=y
 CONFIG_LEDS_TIMER=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
arch/arm/configs/simpad_defconfig +1 -1
index d335815..e3bbdf9 100644
@@ -6,7 +6,7 @@ CONFIG_EXPERT=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_MODULES=y
-CONFIG_ARCH_SA1100=y
+CONFIG_ARCH_SA1100_CHOICE=y
 CONFIG_SA1100_SIMPAD=y
 CONFIG_PCCARD=y
 CONFIG_PCMCIA_SA1100=y
arch/arm/configs/socfpga_defconfig +1 -1
index 0ac1293..89023b6 100644
@@ -15,7 +15,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_SOCFPGA=y
+CONFIG_ARCH_SOCFPGA_CHOICE=y
 CONFIG_MACH_SOCFPGA_CYCLONE5=y
 CONFIG_ARM_THUMBEE=y
 # CONFIG_CACHE_L2X0 is not set
arch/arm/configs/spear13xx_defconfig +1 -1
index 1fdb826..ea4069c 100644
@@ -7,7 +7,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_PLAT_SPEAR=y
-CONFIG_ARCH_SPEAR13XX=y
+CONFIG_ARCH_SPEAR13XX_CHOICE=y
 CONFIG_MACH_SPEAR1310=y
 CONFIG_MACH_SPEAR1340=y
 # CONFIG_SWP_EMULATE is not set
arch/arm/configs/spear6xx_defconfig +1 -1
index a2a1265..a82ba96 100644
@@ -7,7 +7,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_PLAT_SPEAR=y
-CONFIG_ARCH_SPEAR6XX=y
+CONFIG_ARCH_SPEAR6XX_CHOICE=y
 CONFIG_BINFMT_MISC=y
 CONFIG_NET=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
arch/arm/configs/spitz_defconfig +1 -1
index 7015827..35667a0 100644
@@ -11,7 +11,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_PXA_SHARPSL=y
 CONFIG_MACH_AKITA=y
 CONFIG_MACH_BORZOI=y
arch/arm/configs/stamp9g20_defconfig +1 -1
index d5e260b..23da280 100644
@@ -11,7 +11,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9G20=y
 CONFIG_MACH_PORTUXG20=y
 CONFIG_MACH_STAMP9G20=y
arch/arm/configs/tct_hammer_defconfig +1 -1
index 71277a1..d618ae2 100644
@@ -14,7 +14,7 @@ CONFIG_SLOB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_S3C24XX=y
+CONFIG_ARCH_S3C24XX_CHOICE=y
 CONFIG_MACH_TCT_HAMMER=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
arch/arm/configs/tegra_defconfig +1 -1
index db22453..24c16fa 100644
@@ -23,7 +23,7 @@ CONFIG_PARTITION_ADVANCED=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_TEGRA=y
+CONFIG_ARCH_TEGRA_CHOICE=y
 CONFIG_ARCH_TEGRA_2x_SOC=y
 CONFIG_ARCH_TEGRA_3x_SOC=y
 CONFIG_MACH_HARMONY=y
arch/arm/configs/trizeps4_defconfig +1 -1
index 3162173..7433db3 100644
@@ -15,7 +15,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_TRIZEPS_PXA=y
 CONFIG_MACH_TRIZEPS4=y
 CONFIG_PCCARD=y
arch/arm/configs/u300_defconfig +1 -1
index 374000e..2a0b97d 100644
@@ -11,7 +11,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_U300=y
+CONFIG_ARCH_U300_CHOICE=y
 CONFIG_MACH_U300=y
 CONFIG_MACH_U300_BS335=y
 CONFIG_MACH_U300_SPIDUMMY=y
arch/arm/configs/u8500_defconfig +1 -1
index 2d4f661..35aa6dc 100644
@@ -7,7 +7,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_LBDAF is not set
 # CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_U8500=y
+CONFIG_ARCH_U8500_CHOICE=y
 CONFIG_MACH_HREFV60=y
 CONFIG_MACH_SNOWBALL=y
 CONFIG_MACH_U5500=y
arch/arm/configs/usb-a9260_defconfig +1 -1
index 2e39f38..d2c5d90 100644
@@ -10,7 +10,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91_CHOICE=y
 CONFIG_ARCH_AT91SAM9260=y
 CONFIG_MACH_USB_A9260=y
 CONFIG_AT91_SLOW_CLOCK=y
arch/arm/configs/vexpress_defconfig +1 -1
index f2de51f..75c85ad 100644
@@ -21,7 +21,7 @@ CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_VEXPRESS=y
+CONFIG_ARCH_VEXPRESS_CHOICE=y
 CONFIG_ARCH_VEXPRESS_CA9X4=y
 # CONFIG_SWP_EMULATE is not set
 CONFIG_SMP=y
arch/arm/configs/viper_defconfig +1 -1
index 1d01ddd..2e9d898 100644
@@ -11,7 +11,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_ARCH_VIPER=y
 CONFIG_IWMMXT=y
 CONFIG_PCCARD=m
arch/arm/configs/xcep_defconfig +1 -1
index 721832f..3136636 100644
@@ -20,7 +20,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLOCK is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_XCEP=y
 CONFIG_IWMMXT=y
 CONFIG_NO_HZ=y
arch/arm/configs/zeus_defconfig +1 -1
index 547a3c1..4a1b536 100644
@@ -6,7 +6,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
-CONFIG_ARCH_PXA=y
+CONFIG_ARCH_PXA_CHOICE=y
 CONFIG_MACH_ARCOM_ZEUS=y
 CONFIG_PCCARD=m
 CONFIG_PCMCIA_PXA2XX=m
Signature · 1 line
1.7.9.5
#20 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

In reply to Rob Herring

From: Rob Herring <[email protected]>

This lets us build a multiplatform kernel for experimental purposes. However, it will not be useful for any real work, because it relies on a number of useful things to be disabled for now:

* SMP support must be turned off because of conflicting symbols. Marc Zyngier has proposed a solution by adding a new SOC operations structure to hold indirect function pointers for these, but that work is currently stalled

* We turn on SPARSE_IRQ unconditionally, which is not supported on most platforms. Each of them is currently in a different state, but most are being worked on.

* Only platforms using common clock framework or no clocks at all can be converted to multi-platform.

* THUMB2_KERNEL does not work with allyesconfig because the kernel gets too big

[Rob Herring]: Rebased to not be dependent on the mass mach header rename. As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank, picoxcell, mvebu, socfpga, and vexpress are converted.

v2: This version avoids the kconfig symbol name changes and simply moves multi-platform enabled platform kconfig option out of the choice option and into the platform's mach directory. A separate series fixes DEBUG_LL for multi-platform.

---
 arch/arm/Kconfig                 |  145 +++++++++++++++--------------------
 arch/arm/Makefile                |  155 ++++++++++++++++++++------------------
 arch/arm/boot/compressed/misc.c  |    6 ++
 arch/arm/include/asm/timex.h     |    4 +
 arch/arm/mach-highbank/Kconfig   |   15 ++++
 arch/arm/mach-mvebu/Kconfig      |   10 +++
 arch/arm/mach-mvebu/Makefile     |    2 +
 arch/arm/mach-picoxcell/Kconfig  |   14 ++++
 arch/arm/mach-socfpga/Kconfig    |   16 ++++
 arch/arm/mach-vexpress/Kconfig   |   16 ++++
 arch/arm/mach-vexpress/Makefile  |    2 +
 arch/arm/plat-versatile/Makefile |    2 +
 12 files changed, 226 insertions(+), 161 deletions(-)
 create mode 100644 arch/arm/mach-highbank/Kconfig
 create mode 100644 arch/arm/mach-picoxcell/Kconfig
 create mode 100644 arch/arm/mach-socfpga/Kconfig
arch/arm/Kconfig +59 -86
index 3557f12..4c9f2fc 100644
@@ -254,27 +254,9 @@ config MMU
 #
 choice
 	prompt "ARM system type"
+	depends on !ARCH_MULTIPLATFORM
 	default ARCH_VERSATILE
 
-config ARCH_SOCFPGA
-	bool "Altera SOCFPGA family"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_GIC
-	select CACHE_L2X0
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select CPU_V7
-	select DW_APB_TIMER
-	select DW_APB_TIMER_OF
-	select GENERIC_CLOCKEVENTS
-	select GPIO_PL061 if GPIOLIB
-	select HAVE_ARM_SCU
-	select SPARSE_IRQ
-	select USE_OF
-	help
-	  This enables support for Altera SOCFPGA Cyclone V platform
-
 config ARCH_INTEGRATOR
 	bool "ARM Ltd. Integrator family"
 	select ARM_AMBA
@@ -328,24 +310,6 @@ config ARCH_VERSATILE
 	help
 	  This enables support for ARM Ltd Versatile board.
 
-config ARCH_VEXPRESS
-	bool "ARM Ltd. Versatile Express family"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_TIMER_SP804
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select GENERIC_CLOCKEVENTS
-	select HAVE_CLK
-	select HAVE_PATA_PLATFORM
-	select ICST
-	select NO_IOPORT
-	select PLAT_VERSATILE
-	select PLAT_VERSATILE_CLCD
-	select REGULATOR_FIXED_VOLTAGE if REGULATOR
-	help
-	  This enables support for the ARM Ltd Versatile Express boards.
-
 config ARCH_AT91
 	bool "Atmel AT91"
 	select ARCH_REQUIRE_GPIOLIB
@@ -369,24 +333,6 @@ config ARCH_BCMRING
 	help
 	  Support for Broadcom's BCMRing platform.
 
-config ARCH_HIGHBANK
-	bool "Calxeda Highbank-based"
-	select ARCH_WANT_OPTIONAL_GPIOLIB
-	select ARM_AMBA
-	select ARM_GIC
-	select ARM_TIMER_SP804
-	select CACHE_L2X0
-	select CLKDEV_LOOKUP
-	select COMMON_CLK
-	select CPU_V7
-	select GENERIC_CLOCKEVENTS
-	select HAVE_ARM_SCU
-	select HAVE_SMP
-	select SPARSE_IRQ
-	select USE_OF
-	help
-	  Support for the Calxeda Highbank SoC based boards.
-
 config ARCH_CLPS711X
 	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
 	select CPU_ARM720T
@@ -567,18 +513,6 @@ config ARCH_IXP4XX
 	help
 	  Support for Intel's IXP4XX (XScale) family of processors.
 
-config ARCH_MVEBU
-	bool "Marvell SOCs with Device Tree support"
-	select GENERIC_CLOCKEVENTS
-	select MULTI_IRQ_HANDLER
-	select SPARSE_IRQ
-	select CLKSRC_MMIO
-	select GENERIC_IRQ_CHIP
-	select IRQ_DOMAIN
-	select COMMON_CLK
-	help
-	  Support for the Marvell SoC Family with device tree support
-
 config ARCH_DOVE
 	bool "Marvell Dove"
 	select CPU_V7
@@ -699,25 +633,6 @@ config ARCH_TEGRA
 	  This enables support for NVIDIA Tegra based systems (Tegra APX,
 	  Tegra 6xx and Tegra 2 series).
 
-config ARCH_PICOXCELL
-	bool "Picochip picoXcell"
-	select ARCH_REQUIRE_GPIOLIB
-	select ARM_PATCH_PHYS_VIRT
-	select ARM_VIC
-	select CPU_V6K
-	select DW_APB_TIMER
-	select DW_APB_TIMER_OF
-	select GENERIC_CLOCKEVENTS
-	select GENERIC_GPIO
-	select HAVE_TCM
-	select NO_IOPORT
-	select SPARSE_IRQ
-	select USE_OF
-	help
-	  This enables support for systems based on the Picochip picoXcell
-	  family of Femtocell devices.  The picoxcell support requires device tree
-	  for all boards.
-
 config ARCH_PNX4008
 	bool "Philips Nexperia PNX4008 Mobile"
 	select CPU_ARM926T
@@ -1039,6 +954,58 @@ config ARCH_ZYNQ
 	  Support for Xilinx Zynq ARM Cortex A9 Platform
 endchoice
 
+menuconfig ARCH_MULTIPLATFORM
+	bool "Multiple platform selection"
+	select USE_OF
+	select COMMON_CLK
+	select SPARSE_IRQ
+	select MULTI_IRQ_HANDLER
+	select AUTO_ZRELADDR
+	depends on MMU
+
+if ARCH_MULTIPLATFORM
+
+comment "CPU Core family selection"
+
+config ARCH_MULTI_V4
+	bool "ARMv4 based platforms (FA526, StrongARM)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V4T
+	bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V5
+	bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)"
+	select ARCH_MULTI_V4_V5
+	depends on !ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V4_V5
+	bool
+
+config ARCH_MULTI_V6
+	bool "ARMv6 based platforms (ARM11, Scorpion, ...)"
+	select CPU_V6
+	select ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V7
+	bool "ARMv7 based platforms (Cortex-A, PJ4, Krait)"
+	select CPU_V7
+	select ARCH_VEXPRESS
+	default y
+	select ARCH_MULTI_V6_V7
+
+config ARCH_MULTI_V6_V7
+	bool
+
+config ARCH_MULTI_CPU_AUTO
+	def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7)
+	select ARCH_MULTI_V5
+
+endif
+
 #
 # This is sorted alphabetically by mach-* pathname.  However, plat-*
 # Kconfigs may be included either alphabetically (according to the
@@ -1066,6 +1033,8 @@ source "arch/arm/mach-gemini/Kconfig"
 
 source "arch/arm/mach-h720x/Kconfig"
 
+source "arch/arm/mach-highbank/Kconfig"
+
 source "arch/arm/mach-integrator/Kconfig"
 
 source "arch/arm/mach-iop32x/Kconfig"
@@ -1101,6 +1070,8 @@ source "arch/arm/mach-omap2/Kconfig"
 
 source "arch/arm/mach-orion5x/Kconfig"
 
+source "arch/arm/mach-picoxcell/Kconfig"
+
 source "arch/arm/mach-pxa/Kconfig"
 source "arch/arm/plat-pxa/Kconfig"
 
@@ -1113,6 +1084,8 @@ source "arch/arm/mach-sa1100/Kconfig"
 source "arch/arm/plat-samsung/Kconfig"
 source "arch/arm/plat-s3c24xx/Kconfig"
 
+source "arch/arm/mach-socfpga/Kconfig"
+
 source "arch/arm/plat-spear/Kconfig"
 
 source "arch/arm/mach-s3c24xx/Kconfig"
arch/arm/Makefile +80 -75

179 lines not on this page · raw message

arch/arm/boot/compressed/misc.c +6 -0
index 8e2a8fc..df89983 100644
@@ -25,7 +25,13 @@ unsigned int __machine_arch_type;
 static void putstr(const char *ptr);
 extern void error(char *x);
 
+#ifdef CONFIG_ARCH_MULTIPLATFORM
+static inline void putc(int c) {}
+static inline void flush(void) {}
+static inline void arch_decomp_setup(void) {}
+#else
 #include <mach/uncompress.h>
+#endif
 
 #ifdef CONFIG_DEBUG_ICEDCC
 
arch/arm/include/asm/timex.h +4 -0
index ce11944..963342a 100644
@@ -13,7 +13,11 @@
 #define _ASMARM_TIMEX_H
 
 #include <asm/arch_timer.h>
+#ifdef CONFIG_ARCH_MULTIPLATFORM
+#define CLOCK_TICK_RATE 1000000
+#else
 #include <mach/timex.h>
+#endif
 
 typedef unsigned long cycles_t;
 
arch/arm/mach-highbank/Kconfig new file +15 -0
new file mode 100644
index 0000000..0e1d0a4
@@ -0,0 +1,15 @@
+config ARCH_HIGHBANK
+	bool "Calxeda ECX-1000 (Highbank)" if ARCH_MULTI_V7
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_GIC
+	select ARM_TIMER_SP804
+	select CACHE_L2X0
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select CPU_V7
+	select GENERIC_CLOCKEVENTS
+	select HAVE_ARM_SCU
+	select HAVE_SMP
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-mvebu/Kconfig +10 -0
index caa2c5e..7b27035 100644
@@ -1,3 +1,13 @@
+config ARCH_MVEBU
+	bool "Marvell SOCs with Device Tree support" if ARCH_MULTI_V7
+	select CLKSRC_MMIO
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_IRQ_CHIP
+	select IRQ_DOMAIN
+	select MULTI_IRQ_HANDLER
+	select SPARSE_IRQ
+
 if ARCH_MVEBU
 
 menu "Marvell SOC with device tree"
arch/arm/mach-mvebu/Makefile +2 -0
index e61d2b8..6ea8998 100644
@@ -1,2 +1,4 @@
+ccflags-$(ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include
+
 obj-y += system-controller.o
 obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o
arch/arm/mach-picoxcell/Kconfig new file +14 -0
new file mode 100644
index 0000000..868796f
@@ -0,0 +1,14 @@
+config ARCH_PICOXCELL
+	bool "Picochip PicoXcell" if ARCH_MULTI_V6
+	select ARCH_REQUIRE_GPIOLIB
+	select ARM_PATCH_PHYS_VIRT
+	select ARM_VIC
+	select CPU_V6K
+	select DW_APB_TIMER
+	select DW_APB_TIMER_OF
+	select GENERIC_CLOCKEVENTS
+	select GENERIC_GPIO
+	select HAVE_TCM
+	select NO_IOPORT
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-socfpga/Kconfig new file +16 -0
new file mode 100644
index 0000000..803a328
@@ -0,0 +1,16 @@
+config ARCH_SOCFPGA
+	bool "Altera SOCFPGA family" if ARCH_MULTI_V7
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_GIC
+	select CACHE_L2X0
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select CPU_V7
+	select DW_APB_TIMER
+	select DW_APB_TIMER_OF
+	select GENERIC_CLOCKEVENTS
+	select GPIO_PL061 if GPIOLIB
+	select HAVE_ARM_SCU
+	select SPARSE_IRQ
+	select USE_OF
arch/arm/mach-vexpress/Kconfig +16 -0
index fc3730f..498ea15 100644
@@ -1,3 +1,19 @@
+config ARCH_VEXPRESS
+	bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7
+	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select ARM_AMBA
+	select ARM_TIMER_SP804
+	select CLKDEV_LOOKUP
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select HAVE_CLK
+	select HAVE_PATA_PLATFORM
+	select ICST
+	select NO_IOPORT
+	select PLAT_VERSATILE
+	select PLAT_VERSATILE_CLCD
+	select REGULATOR_FIXED_VOLTAGE if REGULATOR
+
 menu "Versatile Express platform type"
 	depends on ARCH_VEXPRESS
 
arch/arm/mach-vexpress/Makefile +2 -0
index 90551b9..42703e8 100644
@@ -1,6 +1,8 @@
 #
 # Makefile for the linux kernel.
 #
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
+	-I$(srctree)/arch/arm/plat-versatile/include
 
 obj-y					:= v2m.o
 obj-$(CONFIG_ARCH_VEXPRESS_CA9X4)	+= ct-ca9x4.o
arch/arm/plat-versatile/Makefile +2 -0
index 272769a8..74cfd94 100644
@@ -1,3 +1,5 @@
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include
+
 obj-$(CONFIG_PLAT_VERSATILE_CLOCK) += clock.o
 obj-$(CONFIG_PLAT_VERSATILE_CLCD) += clcd.o
 obj-$(CONFIG_PLAT_VERSATILE_FPGA_IRQ) += fpga-irq.o
Signature · 1 line
1.7.9.5
#21 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 8 lines · Rob Herring

[Rob Herring]: Rebased to not be dependent on the mass mach header rename. As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank, picoxcell, mvebu, socfpga, and vexpress are converted.

v2: This version avoids the kconfig symbol name changes and simply moves multi-platform enabled platform kconfig option out of the choice option and into the platform's mach directory. A separate series fixes DEBUG_LL for multi-platform.

This looks like a nice start to play with multiplatform, and I guess it would be nice to merge it for v3.7.

arch/arm/Kconfig config MMU · line 258

Quoted 8 lines
arch/arm/Kconfig +1 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

I also still think that we should allow platforms to be part of both multi-platform and single-platform builds, for cases it helps with.

For instance, we could enable one platform to be used in multiplatform kernels with the subset of its board files and device drivers that are possible, while leaving board files that cannot work with sparse-irq and drivers that rely on platform specific headers as "depends on !ARCH_MULTIPLATFORM".

Arnd

#22 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 13 lines · Arnd Bergmann
Quoted 8 lines · Rob Herring

[Rob Herring]: Rebased to not be dependent on the mass mach header rename. As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank, picoxcell, mvebu, socfpga, and vexpress are converted.

v2: This version avoids the kconfig symbol name changes and simply moves multi-platform enabled platform kconfig option out of the choice option and into the platform's mach directory. A separate series fixes DEBUG_LL for multi-platform.

This looks like a nice start to play with multiplatform, and I guess it would be nice to merge it for v3.7.

Quoted 14 lines

arch/arm/Kconfig config MMU · line 258

Quoted 8 lines
arch/arm/Kconfig +1 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

We don't have to change and of the defconfigs or .config in this patch.

Bisecting the converted platforms is a problem I guess. It can be worked around by setting ARCH_MULTIPLATFORM before configuring. I'm not convinced fixing it is worth the complexity added to kconfig.

Quoted 9 lines

I also still think that we should allow platforms to be part of both multi-platform and single-platform builds, for cases it helps with.

For instance, we could enable one platform to be used in multiplatform kernels with the subset of its board files and device drivers that are possible, while leaving board files that cannot work with sparse-irq and drivers that rely on platform specific headers as "depends on !ARCH_MULTIPLATFORM".

Individual platforms can still do that. I just happened to convert all platforms which have no need to be in both. While you can do that, I don't think we should encourage it. I don't think we want to see platforms partially converted to common clk or sparse irq. The latter is certainly not hard to do.

Rob

#23 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 14 lines · Rob Herring
Quoted 4 lines · Arnd Bergmann
Quoted 4 lines
arch/arm/Kconfig +0 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
Quoted 8 lines

arch/arm/Kconfig config MMU · line 258

Quoted 2 lines
arch/arm/Kconfig +1 -0
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

Quoted 1 line

We don't have to change and of the defconfigs or .config in this patch.

How does ARCH_MULTIPLATFORM get set then when building the existing defconfig files for the converted platforms?

Quoted 11 lines
Quoted 5 lines

For instance, we could enable one platform to be used in multiplatform kernels with the subset of its board files and device drivers that are possible, while leaving board files that cannot work with sparse-irq and drivers that rely on platform specific headers as "depends on !ARCH_MULTIPLATFORM".

Individual platforms can still do that. I just happened to convert all platforms which have no need to be in both. While you can do that, I don't think we should encourage it. I don't think we want to see platforms partially converted to common clk or sparse irq. The latter is certainly not hard to do.

I was thinking of other cases actually:

* device drivers that we don't really care about much but that rely on a mach/* header file. In some cases it can be hard to clean up those headers, so as an intermediate step, we can just disable the drivers when building multiplatform.

* At least the Samsung platforms have files that are built for separate platforms in a way that does not work across platforms:
arch/arm/plat-samsung/devs.c depends heavily on constants defined in mach/*.h header files. When building for DT-only, we can decide to just not build this file.

Arnd

#24 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 15 lines · Arnd Bergmann
Quoted 14 lines · Rob Herring
Quoted 12 lines · Arnd Bergmann

arch/arm/Kconfig config MMU · line 258

Quoted 6 lines
arch/arm/Kconfig +1 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

Quoted 4 lines
Quoted 1 line

We don't have to change and of the defconfigs or .config in this patch.

How does ARCH_MULTIPLATFORM get set then when building the existing defconfig files for the converted platforms?

Ahhh, right. Those need to be updated. It doesn't really matter if ARCH_MULTIPLATFORM is in the choice or not. It matters if we move platforms out of the choice or not. More on that below.

Quoted 12 lines
Quoted 11 lines
Quoted 5 lines

For instance, we could enable one platform to be used in multiplatform kernels with the subset of its board files and device drivers that are possible, while leaving board files that cannot work with sparse-irq and drivers that rely on platform specific headers as "depends on !ARCH_MULTIPLATFORM".

Individual platforms can still do that. I just happened to convert all platforms which have no need to be in both. While you can do that, I don't think we should encourage it. I don't think we want to see platforms partially converted to common clk or sparse irq. The latter is certainly not hard to do.

Quoted 6 lines

I was thinking of other cases actually:

* device drivers that we don't really care about much but that rely on a mach/* header file. In some cases it can be hard to clean up those headers, so as an intermediate step, we can just disable the drivers when building multiplatform.

depends on !ARCH_MULTIPLATFORM ?

Quoted 5 lines

* At least the Samsung platforms have files that are built for separate platforms in a way that does not work across platforms:
arch/arm/plat-samsung/devs.c depends heavily on constants defined in mach/*.h header files. When building for DT-only, we can decide to just not build this file.

I still think that should be possible on a per platform basis, but why mandate that all platforms do that?

We have ARCH_FOO in the choice today. Assuming we want to keep the choice name as is to not break configs (as Russell wanted), we have to leave this alone. So then we create ARCH_FOO_MULTI for the mult-platform case and also ARCH_FOO_OPTIONS to avoid duplicating all the per mach selects for ARCH_FOO and ARCH_FOO_MULTI. However, then we have ARCH_FOO as a depends all over the tree. I'd like to avoid having to fix-up all those to be depends on ARCH_FOO_OPTIONS or (ARCH_FOO || ARCH_FOO_MULTI).

Rob

#25 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 16 lines · Rob Herring
Quoted 15 lines · Arnd Bergmann
Quoted 14 lines · Rob Herring
Quoted 12 lines · Arnd Bergmann

arch/arm/Kconfig config MMU · line 258

Quoted 6 lines
arch/arm/Kconfig +1 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

We don't have to change and of the defconfigs or .config in this patch.

How does ARCH_MULTIPLATFORM get set then when building the existing defconfig files for the converted platforms?

Ahhh, right. Those need to be updated. It doesn't really matter if ARCH_MULTIPLATFORM is in the choice or not. It matters if we move platforms out of the choice or not. More on that below.

But if ARCH_MULTIPLATFORM is one of the choice statements rather than a separate option, you don't need to change any of the defconfigs, and you can keep using 'make oldconfig' when bisecting over this commit.

Quoted 9 lines
Quoted 7 lines

I was thinking of other cases actually:

* device drivers that we don't really care about much but that rely on a mach/* header file. In some cases it can be hard to clean up those headers, so as an intermediate step, we can just disable the drivers when building multiplatform.

depends on !ARCH_MULTIPLATFORM ?

Yes, of course, that is what you'd do in in the drivers, but it only works if the same platform can be used both with and without ARCH_MULTIPLATFORM.

Quoted 8 lines
Quoted 5 lines

* At least the Samsung platforms have files that are built for separate platforms in a way that does not work across platforms:
arch/arm/plat-samsung/devs.c depends heavily on constants defined in mach/*.h header files. When building for DT-only, we can decide to just not build this file.

I still think that should be possible on a per platform basis, but why mandate that all platforms do that?

I wasn't suggesting we do that. The platforms that you have already converted are all ok to stay multiplatform-only.

Quoted 7 lines

We have ARCH_FOO in the choice today. Assuming we want to keep the choice name as is to not break configs (as Russell wanted), we have to leave this alone. So then we create ARCH_FOO_MULTI for the mult-platform case and also ARCH_FOO_OPTIONS to avoid duplicating all the per mach selects for ARCH_FOO and ARCH_FOO_MULTI. However, then we have ARCH_FOO as a depends all over the tree. I'd like to avoid having to fix-up all those to be depends on ARCH_FOO_OPTIONS or (ARCH_FOO || ARCH_FOO_MULTI).

I've been going back and forth a few times between the different methods when I created the earlier version of this patch, trying to find the one that is least invasive. As you say, creating a new ARCH_FOO_MULTI in parallel with the existing (choice) ARCH_FOO means we have to change all the Kconfig statements that refer to ARCH_FOO. The good news is that I think we now only have to do it inside of the mach-foo directories, which we might want to rework anyway so you can more easily build e.g. a THUMB2 kernel that enables all the ARMv7 platforms but not the ARMv6 ones.

All device drivers that have a dependency on a specific platform should fall into one of two categories:

a) Those using platform specific header files. We just decided to not allow this in multiplatform kernels, so having a dependency on a symbol that only exists for single-platform builds is appropriate.

b) Drivers that only make sense for one platform but can be built anywhere, e.g. after fixing the include path from a). I'd argue that we should allow building them anyway, to improve build coverage, so we should better remove the dependency, or turn it into a more specific one.

Arnd

#26 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 75 lines · Arnd Bergmann
Quoted 16 lines · Rob Herring
Quoted 15 lines · Arnd Bergmann
Quoted 14 lines · Rob Herring
Quoted 12 lines · Arnd Bergmann

arch/arm/Kconfig config MMU · line 258

Quoted 6 lines
arch/arm/Kconfig +1 -0
@@ -254,27 +254,9 @@ config MMU
 #
 choice
        prompt "ARM system type"
+       depends on !ARCH_MULTIPLATFORM
        default ARCH_VERSATILE

Why did you move ARCH_MULTIPLATFORM out of the "choice" statement? If we leave it in there, and make it the default, then we don't even have to change the defconfigs any more (except the versatile one, which is no longer the default), which I think is quite clever and helps git-bisecting across this commit.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

We don't have to change and of the defconfigs or .config in this patch.

How does ARCH_MULTIPLATFORM get set then when building the existing defconfig files for the converted platforms?

Ahhh, right. Those need to be updated. It doesn't really matter if ARCH_MULTIPLATFORM is in the choice or not. It matters if we move platforms out of the choice or not. More on that below.

But if ARCH_MULTIPLATFORM is one of the choice statements rather than a separate option, you don't need to change any of the defconfigs, and you can keep using 'make oldconfig' when bisecting over this commit.

Quoted 9 lines
Quoted 7 lines

I was thinking of other cases actually:

* device drivers that we don't really care about much but that rely on a mach/* header file. In some cases it can be hard to clean up those headers, so as an intermediate step, we can just disable the drivers when building multiplatform.

depends on !ARCH_MULTIPLATFORM ?

Yes, of course, that is what you'd do in in the drivers, but it only works if the same platform can be used both with and without ARCH_MULTIPLATFORM.

Quoted 8 lines
Quoted 5 lines

* At least the Samsung platforms have files that are built for separate platforms in a way that does not work across platforms:
arch/arm/plat-samsung/devs.c depends heavily on constants defined in mach/*.h header files. When building for DT-only, we can decide to just not build this file.

I still think that should be possible on a per platform basis, but why mandate that all platforms do that?

I wasn't suggesting we do that. The platforms that you have already converted are all ok to stay multiplatform-only.

Quoted 7 lines

We have ARCH_FOO in the choice today. Assuming we want to keep the choice name as is to not break configs (as Russell wanted), we have to leave this alone. So then we create ARCH_FOO_MULTI for the mult-platform case and also ARCH_FOO_OPTIONS to avoid duplicating all the per mach selects for ARCH_FOO and ARCH_FOO_MULTI. However, then we have ARCH_FOO as a depends all over the tree. I'd like to avoid having to fix-up all those to be depends on ARCH_FOO_OPTIONS or (ARCH_FOO || ARCH_FOO_MULTI).

I've been going back and forth a few times between the different methods when I created the earlier version of this patch, trying to find the one that is least invasive. As you say, creating a new ARCH_FOO_MULTI in parallel with the existing (choice) ARCH_FOO means we have to change all the Kconfig statements that refer to ARCH_FOO. The good news is that I think we now only have to do it inside of the mach-foo directories, which we might want to rework anyway so you can more easily build e.g. a THUMB2 kernel that enables all the ARMv7 platforms but not the ARMv6 ones.

All device drivers that have a dependency on a specific platform should fall into one of two categories:

Quoted 8 lines

a) Those using platform specific header files. We just decided to not allow this in multiplatform kernels, so having a dependency on a symbol that only exists for single-platform builds is appropriate.

b) Drivers that only make sense for one platform but can be built anywhere, e.g. after fixing the include path from a). I'd argue that we should allow building them anyway, to improve build coverage, so we should better remove the dependency, or turn it into a more specific one.

Agreed. There are some other cases like clk drivers which are not visible options. But changing those are probably manageable.

So to summarize, I'll make ARCH_MULTIPLATFORM part of the choice. The platforms I converted will stay multi-plat only and don't need additional kconfig options. Additional platforms converted can choose whether they want to support both single and multi platform in the kconfig.

Rob

#27 lore raw

PATCH v2 1/1 ARM: initial multiplatform support

Quoted 5 lines · Rob Herring

So to summarize, I'll make ARCH_MULTIPLATFORM part of the choice. The platforms I converted will stay multi-plat only and don't need additional kconfig options. Additional platforms converted can choose whether they want to support both single and multi platform in the kconfig.

Ok, excellent!

Arnd