# SPDX-License-Identifier: (GPL-2.0+ OR MIT)
#
# Amlogic media module configuration
#

menu "Amlogic media modules configuration"

config AMLOGIC_MEDIA_MODULES_DRIVERS_ENABLE
	bool "Amlogic drivers of the media modules"
	default n
	help
		media modules compile support

config AMLOGIC_MEDIA_MODULES_MEDIA_CLOCK
	tristate "Amlogic Media Modules Media Clock"
	depends on AMLOGIC_MEDIA_MODULES_DRIVERS_ENABLE
	default n
	help
		This option is used to configure Amlogic media modules
		For common media clock driver,
		if y this driver with build in.
		and m for build as modules.

config AMLOGIC_MEDIA_MODULES_FIRMARE
	tristate "Amlogic Media Modules Firmware"
	depends on AMLOGIC_MEDIA_MODULES_DRIVERS_ENABLE
	depends on AMLOGIC_MEDIA_MODULES_MEDIA_CLOCK
	default n
	help
		This option is used to configure Amlogic media modules
		For common firmware driver,
		if y this driver with build in.
		and m for build as modules.

config AMLOGIC_MEDIA_VENC_MULTI
	tristate "Amlogic Multi video encoder"
	depends on AMLOGIC_MEDIA_MODULES_DRIVERS_ENABLE
	depends on AMLOGIC_MEDIA_MODULES_MEDIA_CLOCK
	default n
	help
		This option is used to configure Amlogic media modules
		For multi video encoder driver,
		if y this driver with build in.
		and m for build as modules.

config AMLOGIC_MEDIA_VENC_JPEG
	tristate "Amlogic JPEG video encoder"
	depends on AMLOGIC_MEDIA_MODULES_DRIVERS_ENABLE
	depends on AMLOGIC_MEDIA_MODULES_MEDIA_CLOCK
	depends on AMLOGIC_MEDIA_MODULES_FIRMARE
	default n
	help
		This option is used to configure Amlogic media modules
		For JPEG video encoder driver,
		if y this driver with build in.
		and m for build as modules.
endmenu
