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

config MESON_CANVAS
	tristate "Amlogic Meson Canvas driver"
	depends on ARCH_MESON || COMPILE_TEST
	default n
	help
	  Say yes to support the canvas IP for Amlogic SoCs.

config MESON_CLK_MEASURE
	tristate "Amlogic Meson SoC Clock Measure driver"
	depends on ARCH_MESON || COMPILE_TEST
	default ARCH_MESON
	select REGMAP_MMIO
	help
	  Say yes to support of Measuring a set of internal SoC clocks
	  from the debugfs interface.

config MESON_GX_SOCINFO
	bool "Amlogic Meson GX SoC Information driver"
	depends on (ARM64 && ARCH_MESON) || COMPILE_TEST
	default ARCH_MESON
	select SOC_BUS
	help
	  Say yes to support decoding of Amlogic Meson GX SoC family
	  information about the type, package and version.

config MESON_GX_PM_DOMAINS
	tristate "Amlogic Meson GX Power Domains driver"
	depends on ARCH_MESON || COMPILE_TEST
	depends on PM && OF
	default ARCH_MESON
	select PM_GENERIC_DOMAINS
	select PM_GENERIC_DOMAINS_OF
	help
	  Say yes to expose Amlogic Meson GX Power Domains as
	  Generic Power Domains.

config MESON_EE_PM_DOMAINS
	tristate "Amlogic Meson Everything-Else Power Domains driver"
	depends on ARCH_MESON || COMPILE_TEST
	depends on PM && OF
	default ARCH_MESON
	select PM_GENERIC_DOMAINS
	select PM_GENERIC_DOMAINS_OF
	help
	  Say yes to expose Amlogic Meson Everything-Else Power Domains as
	  Generic Power Domains.

config MESON_SECURE_PM_DOMAINS
	tristate "Amlogic Meson Secure Power Domains driver"
	depends on (ARCH_MESON || COMPILE_TEST) && MESON_SM
	depends on PM && OF
	depends on HAVE_ARM_SMCCC
	default ARCH_MESON
	select PM_GENERIC_DOMAINS
	select PM_GENERIC_DOMAINS_OF
	help
	  Support for the power controller on Amlogic A1/C1 series.
	  Say yes to expose Amlogic Meson Secure Power Domains as Generic
	  Power Domains.

config MESON_MX_SOCINFO
	bool "Amlogic Meson MX SoC Information driver"
	depends on (ARM && ARCH_MESON) || COMPILE_TEST
	default ARCH_MESON
	select SOC_BUS
	help
	  Say yes to support decoding of Amlogic Meson6, Meson8,
	  Meson8b and Meson8m2 SoC family information about the type
	  and version.

endmenu
