config PPC_47x
	bool "Support for 47x variant"
	depends on 44x
	default n
	select MPIC
	help
	  This option enables support for the 47x family of processors and is
	  not currently compatible with other 44x or 46x varients

config BAMBOO
	bool "Bamboo"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440EP
	select PCI
	help
	  This option enables support for the IBM PPC440EP evaluation board.

config BLUESTONE
	bool "Bluestone"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select APM821xx
	select IBM_NEW_EMAC_RGMII
	help
	  This option enables support for the APM APM821xx Evaluation board.

config EBONY
	bool "Ebony"
	depends on 44x
	default y
	select 440GP
	select PCI
	select OF_RTC
	help
	  This option enables support for the IBM PPC440GP evaluation board.

config SAM440EP
        bool "Sam440ep"
	depends on 44x
        default n
        select 440EP
        select PCI
        help
          This option enables support for the ACube Sam440ep board.

config SEQUOIA
	bool "Sequoia"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440EPX
	help
	  This option enables support for the AMCC PPC440EPX evaluation board.

config TAISHAN
	bool "Taishan"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440GX
	select PCI
	help
	  This option enables support for the AMCC PPC440GX "Taishan"
	  evaluation board.

config KATMAI
	bool "Katmai"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440SPe
	select PCI
	select PPC4xx_PCI_EXPRESS
	help
	  This option enables support for the AMCC PPC440SPe evaluation board.

config RAINIER
	bool "Rainier"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440GRX
	select PCI
	help
	  This option enables support for the AMCC PPC440GRX evaluation board.

config WARP
	bool "PIKA Warp"
	depends on 44x
	default n
	select 440EP
	help
	  This option enables support for the PIKA Warp(tm) Appliance. The Warp
	  is a small computer replacement with up to 9 ports of FXO/FXS plus VOIP
	  stations and trunks.

	  See http://www.pikatechnologies.com/ and follow the "PIKA for Computer
	  Telephony Developers" link for more information.

config ARCHES
	bool "Arches"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 460EX # Odd since it uses 460GT but the effects are the same
	select PCI
	select PPC4xx_PCI_EXPRESS
	help
	  This option enables support for the AMCC Dual PPC460GT evaluation board.

config CANYONLANDS
	bool "Canyonlands"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 460EX
	select PCI
	select PPC4xx_PCI_EXPRESS
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII
	help
	  This option enables support for the AMCC PPC460EX evaluation board.

config GLACIER
	bool "Glacier"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 460EX # Odd since it uses 460GT but the effects are the same
	select PCI
	select PPC4xx_PCI_EXPRESS
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII
	help
	  This option enables support for the AMCC PPC460GT evaluation board.

config REDWOOD
	bool "Redwood"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 460SX
	select PCI
	select PPC4xx_PCI_EXPRESS
	help
	  This option enables support for the AMCC PPC460SX Redwood board.

config EIGER
	bool "Eiger"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 460SX
	select PCI
	select PPC4xx_PCI_EXPRESS
	select IBM_NEW_EMAC_RGMII
	help
	  This option enables support for the AMCC PPC460SX evaluation board.

config YOSEMITE
	bool "Yosemite"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440EP
	select PCI
	help
	  This option enables support for the AMCC PPC440EP evaluation board.

config ISS4xx
	bool "ISS 4xx Simulator"
	depends on (44x || 40x)
	default n
	select 405GP if 40x
	select 440GP if 44x && !PPC_47x
	select PPC_FPU
	select OF_RTC
	help
	  This option enables support for the IBM ISS simulation environment

config ICON
	bool "Icon"
	depends on 44x
	default n
	select PPC44x_SIMPLE
	select 440SPe
	select PCI
	select PPC4xx_PCI_EXPRESS
	help
	  This option enables support for the AMCC PPC440SPe evaluation board.

#config LUAN
#	bool "Luan"
#	depends on 44x
#	default n
#	select 440SP
#	help
#	  This option enables support for the IBM PPC440SP evaluation board.

#config OCOTEA
#	bool "Ocotea"
#	depends on 44x
#	default n
#	select 440GX
#	help
#	  This option enables support for the IBM PPC440GX evaluation board.

config XILINX_VIRTEX440_GENERIC_BOARD
	bool "Generic Xilinx Virtex 5 FXT board support"
	depends on 44x
	default n
	select XILINX_VIRTEX_5_FXT
	help
	  This option enables generic support for Xilinx Virtex based boards
	  that use a 440 based processor in the Virtex 5 FXT FPGA architecture.

	  The generic virtex board support matches any device tree which
	  specifies 'xlnx,virtex440' in its compatible field.  This includes
	  the Xilinx ML5xx reference designs using the powerpc core.

	  Most Virtex 5 designs should use this unless it needs to do some
	  special configuration at board probe time.

config XILINX_ML510
	bool "Xilinx ML510 extra support"
	depends on XILINX_VIRTEX440_GENERIC_BOARD
	select PPC_PCI_CHOICE
	select XILINX_PCI if PCI
	select PPC_INDIRECT_PCI if PCI
	select PPC_I8259 if PCI
	help
	  This option enables extra support for features on the Xilinx ML510
	  board.  The ML510 has a PCI bus with ALI south bridge.

config PPC44x_SIMPLE
	bool "Simple PowerPC 44x board support"
	depends on 44x
	default n
	help
	  This option enables the simple PowerPC 44x platform support.

config PPC4xx_GPIO
	bool "PPC4xx GPIO support"
	depends on 44x
	select ARCH_REQUIRE_GPIOLIB
	select GENERIC_GPIO
	help
	  Enable gpiolib support for ppc440 based boards

# 44x specific CPU modules, selected based on the board above.
config 440EP
	bool
	select PPC_FPU
	select IBM440EP_ERR42
	select IBM_NEW_EMAC_ZMII
	select USB_ARCH_HAS_OHCI

config 440EPX
	bool
	select PPC_FPU
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII

config 440GRX
	bool
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII

config 440GP
	bool
	select IBM_NEW_EMAC_ZMII

config 440GX
	bool
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII #test only
	select IBM_NEW_EMAC_TAH  #test only

config 440SP
	bool

config 440SPe
	bool
	select IBM_NEW_EMAC_EMAC4

config 460EX
	bool
	select PPC_FPU
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_TAH

config 460SX
	bool
	select PPC_FPU
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_RGMII
	select IBM_NEW_EMAC_ZMII
	select IBM_NEW_EMAC_TAH

config APM821xx
	bool
	select PPC_FPU
	select IBM_NEW_EMAC_EMAC4
	select IBM_NEW_EMAC_TAH

# 44x errata/workaround config symbols, selected by the CPU models above
config IBM440EP_ERR42
	bool

# Xilinx specific config options.
config XILINX_VIRTEX
	bool
	select DEFAULT_UIMAGE

# Xilinx Virtex 5 FXT FPGA architecture, selected by a Xilinx board above
config XILINX_VIRTEX_5_FXT
	bool
	select XILINX_VIRTEX

