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 PCI_MSI
	select PPC4xx_MSI
	select PPC4xx_PCI_EXPRESS
	select IBM_EMAC_RGMII if IBM_EMAC
	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
	select PCI_MSI
	select PPC4xx_MSI
	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 460EX
	select PCI
	select PPC4xx_PCI_EXPRESS
	select PCI_MSI
	select PPC4xx_MSI
	select IBM_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC
	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_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC
	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
	select PCI_MSI
	select PPC4xx_MSI
	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_EMAC_RGMII if IBM_EMAC
	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 CURRITUCK
	bool "IBM Currituck (476fpe) Support"
	depends on PPC_47x
	default n
	select SWIOTLB
	select 476FPE
	select PPC4xx_PCI_EXPRESS
	help
	  This option enables support for the IBM Currituck (476fpe) evaluation board

config FSP2
	bool "IBM FSP2 (476fpe) Support"
	depends on PPC_47x
	default n
	select 476FPE
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_RGMII if IBM_EMAC
	select COMMON_CLK
	select DEFAULT_UIMAGE
	help
	  This option enables support for the IBM FSP2 (476fpe) board

config AKEBONO
	bool "IBM Akebono (476gtr) Support"
	depends on PPC_47x
	default n
	select SWIOTLB
	select 476FPE
	select PPC4xx_PCI_EXPRESS
	select PCI_MSI
	select PPC4xx_HSTA_MSI
	select I2C
	select I2C_IBM_IIC
	select NETDEVICES
	select ETHERNET
	select NET_VENDOR_IBM
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select USB if USB_SUPPORT
	select USB_OHCI_HCD_PLATFORM if USB_OHCI_HCD
	select USB_EHCI_HCD_PLATFORM if USB_EHCI_HCD
	select MMC_SDHCI
	select MMC_SDHCI_PLTFM
	select ATA
	select SATA_AHCI_PLATFORM
	help
	  This option enables support for the IBM Akebono (476gtr) evaluation board


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 XILINX_VIRTEX440_GENERIC_BOARD
	bool "Generic Xilinx Virtex 5 FXT board support"
	depends on 44x
	default n
	select XILINX_VIRTEX_5_FXT
	select XILINX_INTC
	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 GPIOLIB
	help
	  Enable gpiolib support for ppc440 based boards

config PPC4xx_OCM
	bool "PPC4xx On Chip Memory (OCM) support"
	depends on 4xx
	select PPC_LIB_RHEAP
	help
	  Enable OCM support for PowerPC 4xx platforms with on chip memory,
	  OCM provides the fast place for memory access to improve performance.

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

config 440EPX
	bool
	select PPC_FPU
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC
	select USB_EHCI_BIG_ENDIAN_MMIO
	select USB_EHCI_BIG_ENDIAN_DESC

config 440GRX
	bool
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC

config 440GP
	bool
	select IBM_EMAC_ZMII if IBM_EMAC

config 440GX
	bool
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC #test only
	select IBM_EMAC_TAH if IBM_EMAC  #test only

config 440SP
	bool

config 440SPe
	bool
	select IBM_EMAC_EMAC4 if IBM_EMAC

config 460EX
	bool
	select PPC_FPU
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_TAH if IBM_EMAC

config 460SX
	bool
	select PPC_FPU
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_RGMII if IBM_EMAC
	select IBM_EMAC_ZMII if IBM_EMAC
	select IBM_EMAC_TAH if IBM_EMAC

config 476FPE
	bool
	select PPC_FPU

config APM821xx
	bool
	select PPC_FPU
	select IBM_EMAC_EMAC4 if IBM_EMAC
	select IBM_EMAC_TAH if IBM_EMAC

config 476FPE_ERR46
	depends on 476FPE
	bool "Enable linker work around for PPC476FPE errata #46"
	help
	  This option enables a work around for an icache bug on 476
	  that can cause execution of stale instructions when falling
	  through pages (IBM errata #46). It requires a recent version
	  of binutils which supports the --ppc476-workaround option.

	  The work around enables the appropriate linker options and
	  ensures that all module output sections are aligned to 4K
	  page boundaries. The work around is only required when
	  building modules.

# 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

