# 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_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"
	depends on 64BIT
	default ARCH_MEDIATEK
	select MTK_CMDQ
	help
	  Say yes here to add support for the MediaTek Multimedia
	  Subsystem (MMSYS).

config MTK_SVS
	tristate "MediaTek Smart Voltage Scaling(SVS)"
	depends on MTK_EFUSE && NVMEM
	help
	  The Smart Voltage Scaling(SVS) engine is a piece of hardware
	  which has several controllers(banks) for calculating suitable
	  voltage to different power domains(CPU/GPU/CCI) according to
	  chip process corner, temperatures and other factors. Then DVFS
	  driver could apply SVS bank voltage to PMIC/Buck.

config MTK_SOCINFO
	tristate "MediaTek SoC Information"
	default y
	depends on MTK_EFUSE
	help
	  The MediaTek SoC Information (mtk-socinfo) driver provides
	  information about the SoC to the userspace including the
	  manufacturer name, marketing name and soc name.
endmenu
