# SPDX-License-Identifier: GPL-2.0
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.rst.
#

config PPC4xx_PCI_EXPRESS
	bool
	depends on PCI && 4xx

config PPC4xx_HSTA_MSI
	bool
	depends on PCI_MSI
	depends on PCI && 4xx

config PPC4xx_MSI
	bool
	depends on PCI_MSI
	depends on PCI && 4xx

config PPC_MSI_BITMAP
	bool
	depends on PCI_MSI
	default y if MPIC
	default y if FSL_PCI
	default y if PPC4xx_MSI
	default y if PPC_POWERNV

source "arch/powerpc/sysdev/xics/Kconfig"
source "arch/powerpc/sysdev/xive/Kconfig"

config GE_FPGA
	bool

config FSL_CORENET_RCPM
	bool
	help
	  This option enables support for RCPM (Run Control/Power Management).
