if ARCH_PXA

menu "Intel PXA2xx Implementations"

choice
	prompt "Select target board"

config ARCH_LUBBOCK
	bool "Intel DBPXA250 Development Platform"
	select PXA25x
	select SA1111

config MACH_LOGICPD_PXA270
	bool "LogicPD PXA270 Card Engine Development Platform"
	select PXA27x

config MACH_MAINSTONE
	bool "Intel HCDDBBVA0 Development Platform"
	select PXA27x

config ARCH_PXA_IDP
	bool "Accelent Xscale IDP"
	select PXA25x

config PXA_SHARPSL
	bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models"
	select SHARP_SCOOP
	select SHARP_PARAM
	help
	  Say Y here if you intend to run this kernel on a
	  Sharp Zaurus SL-5600 (Poodle), SL-C700 (Corgi),
	  SL-C750 (Shepherd), SL-C760 (Husky), SL-C1000 (Akita),
	  SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa)
	  handheld computer.

config MACH_TRIZEPS4
	bool "Keith und Koep Trizeps4 DIMM-Module"
	select PXA27x

config MACH_EM_X270
	bool "CompuLab EM-x270 platform"
	select PXA27x

endchoice

if PXA_SHARPSL

choice
	prompt "Select target Sharp Zaurus device range"

config PXA_SHARPSL_25x
	bool "Sharp PXA25x models (SL-5600, SL-C7xx and SL-C6000x)"
	select PXA25x

config PXA_SHARPSL_27x
	bool "Sharp PXA270 models (SL-Cxx00)"
	select PXA27x

endchoice

endif

if MACH_TRIZEPS4

choice
	prompt "Select base board for Trizeps 4 module"

config MACH_TRIZEPS4_CONXS
	bool "ConXS Eval Board"

config MACH_TRIZEPS4_ANY
	bool "another Board"

endchoice

endif

endmenu

config MACH_POODLE
	bool "Enable Sharp SL-5600 (Poodle) Support"
	depends on PXA_SHARPSL_25x
	select SHARP_LOCOMO
	select PXA_SSP

config MACH_CORGI
	bool "Enable Sharp SL-C700 (Corgi) Support"
	depends on PXA_SHARPSL_25x
	select PXA_SHARP_C7xx

config MACH_SHEPHERD
	bool "Enable Sharp SL-C750 (Shepherd) Support"
	depends on PXA_SHARPSL_25x
	select PXA_SHARP_C7xx

config MACH_HUSKY
	bool "Enable Sharp SL-C760 (Husky) Support"
	depends on PXA_SHARPSL_25x
	select PXA_SHARP_C7xx

config MACH_AKITA
	bool "Enable Sharp SL-1000 (Akita) Support"
	depends on PXA_SHARPSL_27x
	select PXA_SHARP_Cxx00
	select MACH_SPITZ
	select I2C
	select I2C_PXA

config MACH_SPITZ
	bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
	depends on PXA_SHARPSL_27x
	select PXA_SHARP_Cxx00

config MACH_BORZOI
	bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support"
	depends on PXA_SHARPSL_27x
	select PXA_SHARP_Cxx00

config MACH_TOSA
	bool "Enable Sharp SL-6000x (Tosa) Support"
	depends on PXA_SHARPSL_25x

config PXA25x
	bool
	help
	  Select code specific to PXA21x/25x/26x variants

config PXA27x
	bool
	help
	  Select code specific to PXA27x variants

config PXA_SHARP_C7xx
	bool
	select PXA_SSP
	select SHARPSL_PM
	help
	  Enable support for all Sharp C7xx models

config PXA_SHARP_Cxx00
	bool
	select PXA_SSP
	select SHARPSL_PM
	help
	  Enable common support for Sharp Cxx00 models

config PXA_SSP
	tristate
	help
	  Enable support for PXA2xx SSP ports
endif
