# SPDX-License-Identifier: GPL-2.0-only
#
# MediaTek SoC drivers
#
menu "MediaTek SoC drivers"
	depends on ARCH_MEDIATEK || COMPILE_TEST

config MTK_CMDQ
	tristate "MediaTek CMDQ Support"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	select MAILBOX
	select MTK_CMDQ_MBOX
	select MTK_INFRACFG
	help
	  Say yes here to add support for the MediaTek Command Queue (CMDQ)
	  driver. The CMDQ is used to help read/write registers with critical
	  time limitation, such as updating display configuration during the
	  vblank.

config MTK_DEVAPC
	tristate "Mediatek Device APC Support"
	help
	  Say yes here to enable support for Mediatek Device APC driver.
	  This driver is mainly used to handle the violation which catches
	  unexpected transaction.
	  The violation information is logged for further analysis or
	  countermeasures.

config MTK_INFRACFG
	bool "MediaTek INFRACFG Support"
	select REGMAP
	help
	  Say yes here to add support for the MediaTek INFRACFG controller. The
	  INFRACFG controller contains various infrastructure registers not
	  directly associated to any device.

config MTK_PMIC_WRAP
	tristate "MediaTek PMIC Wrapper Support"
	depends on RESET_CONTROLLER
	select REGMAP
	help
	  Say yes here to add support for MediaTek PMIC Wrapper found
	  on different MediaTek SoCs. The PMIC wrapper is a proprietary
	  hardware to connect the PMIC.

config MTK_SCPSYS
	bool "MediaTek SCPSYS Support"
	default ARCH_MEDIATEK
	select REGMAP
	select MTK_INFRACFG
	select PM_GENERIC_DOMAINS if PM
	help
	  Say yes here to add support for the MediaTek SCPSYS power domain
	  driver.

config MTK_SCPSYS_PM_DOMAINS
	bool "MediaTek SCPSYS generic power domain"
	default ARCH_MEDIATEK
	depends on PM
	select PM_GENERIC_DOMAINS
	select REGMAP
	help
	  Say y here to enable power domain support.
	  In order to meet high performance and low power requirements, the System
	  Control Processor System (SCPSYS) has several power management related
	  tasks in the system.

config MTK_MMSYS
	bool "MediaTek MMSYS Support"
	default ARCH_MEDIATEK
	depends on HAS_IOMEM
	help
	  Say yes here to add support for the MediaTek Multimedia
	  Subsystem (MMSYS).

endmenu
