if ARCH_PXA

menu "Intel PXA2xx/PXA3xx Implementations"

comment "Intel/Marvell Dev Platforms (sorted by hardware release time)"

config MACH_PXA25X_DT
	bool "Support PXA25x platforms from device tree"
	select PINCTRL
	select POWER_SUPPLY
	select PXA25x
	select USE_OF
	help
	  Include support for Marvell PXA25x based platforms using
	  the device tree. Needn't select any other machine while
	  MACH_PXA25x_DT is enabled.

config MACH_PXA27X_DT
	bool "Support PXA27x platforms from device tree"
	select PINCTRL
	select POWER_SUPPLY
	select PXA27x
	select USE_OF
	help
	  Include support for Marvell PXA27x based platforms using
	  the device tree. Needn't select any other machine while
	  MACH_PXA27X_DT is enabled.

config MACH_PXA3XX_DT
	bool "Support PXA3xx platforms from device tree"
	select CPU_PXA300
	select PINCTRL
	select POWER_SUPPLY
	select PXA3xx
	select USE_OF
	help
	  Include support for Marvell PXA3xx based platforms using
	  the device tree. Needn't select any other machine while
	  MACH_PXA3XX_DT is enabled.

config ARCH_LUBBOCK
	bool "Intel DBPXA250 Development Platform (aka Lubbock)"
	select GPIO_REG
	select PXA25x
	select SA1111

config MACH_MAINSTONE
	bool "Intel HCDDBBVA0 Development Platform (aka Mainstone)"
	select GPIO_REG
	select PXA27x

config MACH_ZYLONITE
	bool
	select PXA3xx

config MACH_ZYLONITE300
	bool "PXA3xx Development Platform (aka Zylonite) PXA300/310"
	select CPU_PXA300
	select CPU_PXA310
	select MACH_ZYLONITE

config MACH_ZYLONITE320
	bool "PXA3xx Development Platform (aka Zylonite) PXA320"
	select CPU_PXA320
	select MACH_ZYLONITE

config MACH_LITTLETON
	bool "PXA3xx Form Factor Platform (aka Littleton)"
	select CPU_PXA300
	select CPU_PXA310
	select PXA3xx

config MACH_TAVOREVB
	bool "PXA930 Evaluation Board (aka TavorEVB)"
	select CPU_PXA930
	select CPU_PXA935
	select PXA3xx
	select FB
	select FB_PXA

config MACH_SAAR
	bool "PXA930 Handheld Platform (aka SAAR)"
	select CPU_PXA930
	select CPU_PXA935
	select PXA3xx
	select FB
	select FB_PXA

comment "Third Party Dev Platforms (sorted by vendor name)"

config ARCH_PXA_IDP
	bool "Accelent Xscale IDP"
	select PXA25x

config ARCH_VIPER
	bool "Arcom/Eurotech VIPER SBC"
	select ARCOM_PCMCIA
	select I2C_GPIO if I2C=y
	select ISA
	select PXA25x

config MACH_ARCOM_ZEUS
	bool "Arcom/Eurotech ZEUS SBC"
	select ARCOM_PCMCIA
	select ISA
	select PXA27x

config MACH_BALLOON3
	bool "Balloon 3 board"
	select IWMMXT
	select PXA27x

config MACH_CSB726
	bool "Enable Cogent CSB726 System On a Module"
	select IWMMXT
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on a Cogent
	  CSB726 System On Module.

config CSB726_CSB701
	bool "Enable support for CSB701 baseboard"
	depends on MACH_CSB726

config MACH_ARMCORE
	bool "CompuLab CM-X255/CM-X270 modules"
	select ARCH_HAS_DMA_SET_COHERENT_MASK if PCI
	select IWMMXT
	select HAVE_PCI
	select NEED_MACH_IO_H if PCI
	select PXA25x
	select PXA27x

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

config MACH_EXEDA
	bool "CompuLab eXeda platform"
	select PXA27x

config MACH_CM_X300
	bool "CompuLab CM-X300 modules"
	select CPU_PXA300
	select CPU_PXA310
	select PXA3xx

config MACH_CAPC7117
	bool "Embedian CAPC-7117 evaluation kit based on the MXM-8x10 CoM"
	select CPU_PXA320
	select PXA3xx

config ARCH_GUMSTIX
	bool "Gumstix XScale 255 boards"
	select PXA25x
	help
	  Say Y here if you intend to run this kernel on
	  Basix, Connex, ws-200ax, ws-400ax systems

choice
	prompt "Gumstix Carrier/Expansion Board"
	depends on ARCH_GUMSTIX

config GUMSTIX_AM200EPD
	bool "Enable AM200EPD board support"

config GUMSTIX_AM300EPD
	bool "Enable AM300EPD board support"

endchoice

config MACH_INTELMOTE2
	bool "Intel Mote 2 Platform"
	select IWMMXT
	select PXA27x

config MACH_STARGATE2
	bool "Intel Stargate 2 Platform"
	select IWMMXT
	select PXA27x

config MACH_XCEP
	bool "Iskratel Electronics XCEP"
	select MTD
	select MTD_CFI
	select MTD_CFI_INTELEXT
	select MTD_PHYSMAP
	select PXA25x
	help
	  PXA255 based Single Board Computer with SMC 91C111 ethernet chip and 64 MB of flash.
	  Tuned for usage in Libera instruments for particle accelerators.

config TRIZEPS_PXA
	bool "PXA based Keith und Koep Trizeps DIMM-Modules"

config MACH_TRIZEPS4
	bool "Keith und Koep Trizeps4 DIMM-Module"
	depends on TRIZEPS_PXA
	select PXA27x
	select TRIZEPS_PCMCIA

config MACH_TRIZEPS4WL
	bool "Keith und Koep Trizeps4-WL DIMM-Module"
	depends on TRIZEPS_PXA
	select MACH_TRIZEPS4
	select PXA27x
	select TRIZEPS_PCMCIA

choice
	prompt "Select base board for Trizeps module"
	depends on TRIZEPS_PXA

config MACH_TRIZEPS_CONXS
	bool "ConXS Eval Board"

config MACH_TRIZEPS_UCONXS
	bool "uConXS Eval Board"

config MACH_TRIZEPS_ANY
	bool "another Board"

endchoice

config ARCOM_PCMCIA
	bool
	help
	  Generic option for Arcom Viper/Zeus PCMCIA

config TRIZEPS_PCMCIA
	bool
	help
	  Enable PCMCIA support for Trizeps modules

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

config MACH_PCM027
	bool "Phytec phyCORE-PXA270 CPU module (PCM-027)"
	select IWMMXT
	select PXA27x

config MACH_PCM990_BASEBOARD
	bool "PHYTEC PCM-990 development board"
	depends on MACH_PCM027

choice
	prompt "display on pcm990"
	depends on MACH_PCM990_BASEBOARD

config PCM990_DISPLAY_SHARP
	bool "sharp lq084v1dg21 stn display"

config PCM990_DISPLAY_NEC
	bool "nec nl6448bc20_18d tft display"

config PCM990_DISPLAY_NONE
	bool "no display"

endchoice

config MACH_COLIBRI
	bool "Toradex Colibri PXA270"
	select PXA27x

config MACH_COLIBRI_PXA270_INCOME
	bool "Income s.r.o. PXA270 SBC"
	depends on MACH_COLIBRI
	select PXA27x

config MACH_COLIBRI300
	bool "Toradex Colibri PXA300/310"
	select CPU_PXA300
	select CPU_PXA310
	select PXA3xx

config MACH_COLIBRI320
	bool "Toradex Colibri PXA320"
	select CPU_PXA320
	select PXA3xx

config MACH_COLIBRI_EVALBOARD
	bool "Toradex Colibri Evaluation Carrier Board support"
	depends on MACH_COLIBRI || MACH_COLIBRI300 || MACH_COLIBRI320

config MACH_VPAC270
	bool "Voipac PXA270"
	select HAVE_PATA_PLATFORM
	select PXA27x
	help
	  PXA270 based Single Board Computer.

comment "End-user Products (sorted by vendor name)"

config MACH_H4700
	bool "HP iPAQ hx4700"
	select IWMMXT
	select PXA27x

config MACH_H5000
	bool "HP iPAQ h5000"
	select PXA25x

config MACH_HIMALAYA
	bool "HTC Himalaya Support"
	select CPU_PXA26x

config MACH_MAGICIAN
	bool "Enable HTC Magician Support"
	select IWMMXT
	select PXA27x

config MACH_MIOA701
	bool "Mitac Mio A701 Support"
	select IWMMXT
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on a
	  MIO A701. Currently there is only basic support
	  for this PDA.

config PXA_EZX
	bool "Motorola EZX Platform"
	select IWMMXT
	select PXA27x

config MACH_EZX_A780
	bool "Motorola EZX A780"
	default y
	depends on PXA_EZX

config MACH_EZX_E680
	bool "Motorola EZX E680"
	default y
	depends on PXA_EZX

config MACH_EZX_A1200
	bool "Motorola EZX A1200"
	default y
	depends on PXA_EZX

config MACH_EZX_A910
	bool "Motorola EZX A910"
	default y
	depends on PXA_EZX

config MACH_EZX_E6
	bool "Motorola EZX E6"
	default y
	depends on PXA_EZX

config MACH_EZX_E2
	bool "Motorola EZX E2"
	default y
	depends on PXA_EZX

config MACH_MP900C
	bool "Nec Mobilepro 900/c"
	select PXA25x

config ARCH_PXA_PALM
	bool "PXA based Palm PDAs"

config MACH_PALM27X
	bool

config MACH_PALMTE2
	bool "Palm Tungsten|E2"
	default y
	depends on ARCH_PXA_PALM
	select PXA25x
	help
	  Say Y here if you intend to run this kernel on a Palm Tungsten|E2
	  handheld computer.

config MACH_PALMTC
	bool "Palm Tungsten|C"
	default y
	depends on ARCH_PXA_PALM
	select PXA25x
	help
	  Say Y here if you intend to run this kernel on a Palm Tungsten|C
	  handheld computer.

config MACH_PALMT5
	bool "Palm Tungsten|T5"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on a Palm Tungsten|T5
	  handheld computer.

config MACH_PALMTX
	bool "Palm T|X"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on a Palm T|X
	  handheld computer.

config MACH_PALMZ72
	bool "Palm Zire 72"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on Palm Zire 72
	  handheld computer.

config MACH_PALMLD
	bool "Palm LifeDrive"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on a Palm LifeDrive
	  handheld computer.

config PALM_TREO
	bool
	depends on ARCH_PXA_PALM

config MACH_CENTRO
	bool "Palm Centro 685 (GSM)"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PALM_TREO
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on Palm Centro 685 (GSM)
	  smartphone.

config MACH_TREO680
	bool "Palm Treo 680"
	default y
	depends on ARCH_PXA_PALM
	select IWMMXT
	select MACH_PALM27X
	select PALM_TREO
	select PXA27x
	help
	  Say Y here if you intend to run this kernel on Palm Treo 680
	  smartphone.

config PXA_SHARPSL
	bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models"
	select SHARP_PARAM
	select SHARP_SCOOP
	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 PXA_SHARPSL_DETECT_MACH_ID
	bool "Detect machine ID at run-time in the decompressor"
	depends on PXA_SHARPSL
	help
	  Say Y here if you want the zImage decompressor to detect
	  the Zaurus machine ID at run-time. For latest kexec-based
	  boot loader, this is not necessary.

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

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

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

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

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

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

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

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

config TOSA_BT
	tristate "Control the state of built-in bluetooth chip on Sharp SL-6000"
	depends on MACH_TOSA && NET
	select RFKILL
	help
	  This is a simple driver that is able to control
	  the state of built in bluetooth chip on tosa.

config TOSA_USE_EXT_KEYCODES
	bool "Tosa keyboard: use extended keycodes"
	depends on MACH_TOSA
	help
	  Say Y here to enable the tosa keyboard driver to generate extended
	  (>= 127) keycodes. Be aware, that they can't be correctly interpreted
	  by either console keyboard driver or by Kdrive keybd driver.

	  Say Y only if you know, what you are doing!

config MACH_ICONTROL
	bool "TMT iControl/SafeTCam based on the MXM-8x10 CoM"
	select CPU_PXA320
	select PXA3xx

config ARCH_PXA_ESERIES
	bool "PXA based Toshiba e-series PDAs"
	select FB_W100
	select FB
	select PXA25x

config MACH_E330
	bool "Toshiba e330"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e330 family PDA.

config MACH_E350
	bool "Toshiba e350"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e350 family PDA.

config MACH_E740
	bool "Toshiba e740"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e740 family PDA.

config MACH_E750
	bool "Toshiba e750"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e750 family PDA.

config MACH_E400
	bool "Toshiba e400"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e400 family PDA.

config MACH_E800
	bool "Toshiba e800"
	default y
	depends on ARCH_PXA_ESERIES
	help
	  Say Y here if you intend to run this kernel on a Toshiba
	  e800 family PDA.

config MACH_ZIPIT2
	bool "Zipit Z2 Handheld"
	select PXA27x
endmenu

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

config PXA27x
	bool
	select CPU_XSCALE
	help
	  Select code specific to PXA27x variants

config CPU_PXA26x
	bool
	select PXA25x
	help
	  Select code specific to PXA26x (codename Dalhart)

config PXA3xx
	bool
	select CPU_XSC3
	help
	  Select code specific to PXA3xx variants

config CPU_PXA300
	bool
	select PXA3xx
	help
	  PXA300 (codename Monahans-L)

config CPU_PXA310
	bool
	select CPU_PXA300
	select PXA310_ULPI if USB_ULPI
	help
	  PXA310 (codename Monahans-LV)

config CPU_PXA320
	bool
	select PXA3xx
	help
	  PXA320 (codename Monahans-P)

config CPU_PXA930
	bool
	select PXA3xx
	help
	  PXA930 (codename Tavor-P)

config CPU_PXA935
	bool
	select CPU_PXA930
	help
	  PXA935 (codename Tavor-P65)

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

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

config SHARPSL_PM
	bool
	select APM_EMULATION
	select SHARPSL_PM_MAX1111

config SHARPSL_PM_MAX1111
	bool
	select HWMON
	select SENSORS_MAX1111
	select SPI
	select SPI_MASTER

config PXA310_ULPI
	bool

config PXA_SYSTEMS_CPLDS
	tristate "Motherboard cplds"
	default ARCH_LUBBOCK || MACH_MAINSTONE
	help
	  This driver supports the Lubbock and Mainstone multifunction chip
	  found on the pxa25x development platform system (Lubbock) and pxa27x
	  development platform system (Mainstone). This IO board supports the
	  interrupts handling, ethernet controller, flash chips, etc ...

endif
