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

config PPC4xx_PCI_EXPRESS
	bool
	depends on PCI && 4xx
	default n

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

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

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 PPC_SCOM
	bool

config SCOM_DEBUGFS
	bool "Expose SCOM controllers via debugfs"
	depends on PPC_SCOM && DEBUG_FS
	default n

config GE_FPGA
	bool
	default n

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