# SPDX-License-Identifier: GPL-2.0-only
#
# NXP/Freescale QorIQ series SOC drivers
#

menu "NXP/Freescale QorIQ SoC drivers"

source "drivers/soc/fsl/qbman/Kconfig"
source "drivers/soc/fsl/qe/Kconfig"

config FSL_GUTS
	bool
	select SOC_BUS
	help
	  The global utilities block controls power management, I/O device
	  enabling, power-onreset(POR) configuration monitoring, alternate
	  function selection for multiplexed signals,and clock control.
	  This driver is to manage and access global utilities block.
	  Initially only reading SVR and registering soc device are supported.
	  Other guts accesses, such as reading RCW, should eventually be moved
	  into this driver as well.

config FSL_MC_DPIO
        tristate "QorIQ DPAA2 DPIO driver"
        depends on FSL_MC_BUS && NET
        select SOC_BUS
        select FSL_GUTS
        select DIMLIB
        help
	  Driver for the DPAA2 DPIO object.  A DPIO provides queue and
	  buffer management facilities for software to interact with
	  other DPAA2 objects. This driver does not expose the DPIO
	  objects individually, but groups them under a service layer
	  API.

config DPAA2_CONSOLE
	tristate "QorIQ DPAA2 console driver"
	depends on OF && (ARCH_LAYERSCAPE || COMPILE_TEST)
	default y
	help
	  Console driver for DPAA2 platforms. Exports 2 char devices,
	  /dev/dpaa2_mc_console and /dev/dpaa2_aiop_console,
	  which can be used to dump the Management Complex and AIOP
	  firmware logs.

config FSL_RCPM
	bool "Freescale RCPM support"
	depends on PM_SLEEP && (ARM || ARM64)
	help
	  The NXP QorIQ Processors based on ARM Core have RCPM module
	  (Run Control and Power Management), which performs all device-level
	  tasks associated with power management, such as wakeup source control.
	  Note that currently this driver will not support PowerPC based
	  QorIQ processor.
endmenu
