# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
#
# (C) COPYRIGHT 2016-2018, 2020-2021 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.
#
#

mali_kbase-y += \
    ipa/mali_kbase_ipa_simple.o \
    ipa/mali_kbase_ipa.o

mali_kbase-$(CONFIG_DEBUG_FS) += ipa/mali_kbase_ipa_debugfs.o

ifeq ($(MALI_USE_CSF),1)
    mali_kbase-y += \
        ipa/backend/mali_kbase_ipa_counter_csf.o \
        ipa/backend/mali_kbase_ipa_counter_common_csf.o
else
    mali_kbase-y += \
        ipa/backend/mali_kbase_ipa_counter_jm.o \
        ipa/backend/mali_kbase_ipa_counter_common_jm.o
endif
