# SPDX-License-Identifier: GPL-2.0
menu "Xilinx SoC drivers"

config XILINX_VCU
	tristate "Xilinx VCU logicoreIP Init"
	depends on HAS_IOMEM
	help
	  Provides the driver to enable and disable the isolation between the
	  processing system and programmable logic part by using the logicoreIP
	  register set. This driver also configures the frequency based on the
	  clock information from the logicoreIP register set.

	  If you say yes here you get support for the logicoreIP.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called xlnx_vcu.

config ZYNQMP_POWER
	bool "Enable Xilinx Zynq MPSoC Power Management driver"
	depends on PM && ZYNQMP_FIRMWARE
	default y
	select MAILBOX
	select ZYNQMP_IPI_MBOX
	help
	  Say yes to enable power management support for ZyqnMP SoC.
	  This driver uses firmware driver as an interface for power
	  management request to firmware. It registers isr to handle
	  power management callbacks from firmware. It registers mailbox client
	  to handle power management callbacks from firmware.

	  If in doubt, say N.

config ZYNQMP_PM_DOMAINS
	bool "Enable Zynq MPSoC generic PM domains"
	default y
	depends on PM && ZYNQMP_FIRMWARE
	select PM_GENERIC_DOMAINS
	help
	  Say yes to enable device power management through PM domains
	  If in doubt, say N.

endmenu
