if ARCH_PXA

menu "Intel PXA2xx/PXA3xx Implementations"

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

config MACH_PXA3XX_DT
	bool "Support PXA3xx platforms from device tree"
	select CPU_PXA300
	select HAVE_PWM
	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 PXA25x
	select SA1111

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

config MACH_ZYLONITE
	bool
	select HAVE_PWM
	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
	select PXA_HAVE_ISA_IRQS

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

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 MIGHT_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 HAVE_PWM
	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 HAVE_PWM
	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
	select HAVE_PWM

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 HAVE_PWM
	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 HAVE_PWM
	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 HAVE_PWM
	select IWMMXT
	select PXA27x

config MACH_MIOA701
	bool "Mitac Mio A701 Support"
	select GPIO_SYSFS
	select HAVE_PWM
	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 HAVE_PWM
	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"
	select HAVE_PWM

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 MACH_RAUMFELD_RC
	bool "Raumfeld Controller"
	select CPU_PXA300
	select HAVE_PWM
	select POWER_SUPPLY
	select PXA3xx

config MACH_RAUMFELD_CONNECTOR
	bool "Raumfeld Connector"
	select CPU_PXA300
	select POWER_SUPPLY
	select PXA3xx

config MACH_RAUMFELD_SPEAKER
	bool "Raumfeld Speaker"
	select CPU_PXA300
	select POWER_SUPPLY
	select PXA3xx

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
	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
	default n
	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 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 HAVE_PWM
	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 PXA_HAVE_ISA_IRQS
	bool

config PXA310_ULPI
	bool

endif
