# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
#
# (C) COPYRIGHT 2022 ARM Limited. All rights reserved.
#
# This program is free software and is provided to you under the terms of the
# GNU General Public License version 2 as published by the Free Software
# Foundation, and any use by you of this program is subject to the terms
# of such GNU license.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
#


config CORESIGHT_MALI_SOURCES_ETM
	depends on MALI_CORESIGHT && ARM64
	bool "Enable CoreSight Mali Sources ETM module"
	default y
	help
	  This option will build coresight ETM source driver,
	  that is used for configuring, enabling and disabling
	  the ETM component.

config CORESIGHT_MALI_SOURCES_ITM
	depends on MALI_CORESIGHT
	bool "Enable CoreSight Mali Sources ITM module"
	default y
	help
	  This option will build coresight ITM source driver,
	  that is used for configuring, enabling and disabling
	  the ITM component.

config CORESIGHT_MALI_SOURCES_ELA
	depends on MALI_CORESIGHT
	bool "Enable CoreSight Mali Sources ELA module"
	default y
	help
	  This option will build coresight ELA source driver,
	  that is used for configuring, enabling and disabling
	  the ELA component.
