# SPDX-License-Identifier: GPL-2.0
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

