13d0407baSopenharmony_ci#
23d0407baSopenharmony_ci# (C) COPYRIGHT 2012-2016, 2017 ARM Limited. All rights reserved.
33d0407baSopenharmony_ci#
43d0407baSopenharmony_ci# This program is free software and is provided to you under the terms of the
53d0407baSopenharmony_ci# GNU General Public License version 2 as published by the Free Software
63d0407baSopenharmony_ci# Foundation, and any use by you of this program is subject to the terms
73d0407baSopenharmony_ci# of such GNU licence.
83d0407baSopenharmony_ci#
93d0407baSopenharmony_ci# A copy of the licence is included with the program, and can also be obtained
103d0407baSopenharmony_ci# from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
113d0407baSopenharmony_ci# Boston, MA  02110-1301, USA.
123d0407baSopenharmony_ci#
133d0407baSopenharmony_ci#
143d0407baSopenharmony_ci
153d0407baSopenharmony_ciKBUILD_CFLAGS += -include rename.h
163d0407baSopenharmony_ci
173d0407baSopenharmony_ci# Driver version string which is returned to userspace via an ioctl
183d0407baSopenharmony_ciMALI_RELEASE_NAME ?= "r18p0-01rel0"
193d0407baSopenharmony_ci
203d0407baSopenharmony_ci# Paths required for build
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci# make $(src) as absolute path if it isn't already, by prefixing $(srctree)
233d0407baSopenharmony_cisrc:=$(if $(patsubst /%,,$(src)),$(srctree)/$(src),$(src))
243d0407baSopenharmony_ciKBASE_PATH = $(src)
253d0407baSopenharmony_ciKBASE_PLATFORM_PATH = $(KBASE_PATH)/platform_dummy
263d0407baSopenharmony_ciUMP_PATH = $(src)/../../../base
273d0407baSopenharmony_ci
283d0407baSopenharmony_ciifeq ($(CONFIG_MALI_ERROR_INJECTION),y)
293d0407baSopenharmony_ciMALI_ERROR_INJECT_ON = 1
303d0407baSopenharmony_ciendif
313d0407baSopenharmony_ci
323d0407baSopenharmony_ci# Set up defaults if not defined by build system
333d0407baSopenharmony_ciMALI_CUSTOMER_RELEASE ?= 1
343d0407baSopenharmony_ciMALI_UNIT_TEST ?= 0
353d0407baSopenharmony_ciMALI_KERNEL_TEST_API ?= 0
363d0407baSopenharmony_ciMALI_ERROR_INJECT_ON ?= 0
373d0407baSopenharmony_ciMALI_MOCK_TEST ?= 0
383d0407baSopenharmony_ciMALI_COVERAGE ?= 0
393d0407baSopenharmony_ciMALI_INSTRUMENTATION_LEVEL ?= 0
403d0407baSopenharmony_ci# This workaround is for what seems to be a compiler bug we observed in
413d0407baSopenharmony_ci# GCC 4.7 on AOSP 4.3.  The bug caused an intermittent failure compiling
423d0407baSopenharmony_ci# the "_Pragma" syntax, where an error message is returned:
433d0407baSopenharmony_ci#
443d0407baSopenharmony_ci# "internal compiler error: unspellable token PRAGMA"
453d0407baSopenharmony_ci#
463d0407baSopenharmony_ci# This regression has thus far only been seen on the GCC 4.7 compiler bundled
473d0407baSopenharmony_ci# with AOSP 4.3.0.  So this makefile, intended for in-tree kernel builds
483d0407baSopenharmony_ci# which are not known to be used with AOSP, is hardcoded to disable the
493d0407baSopenharmony_ci# workaround, i.e. set the define to 0.
503d0407baSopenharmony_ciMALI_GCC_WORKAROUND_MIDCOM_4598 ?= 0
513d0407baSopenharmony_ci
523d0407baSopenharmony_ci# Set up our defines, which will be passed to gcc
533d0407baSopenharmony_ciDEFINES = \
543d0407baSopenharmony_ci	-DMALI_CUSTOMER_RELEASE=$(MALI_CUSTOMER_RELEASE) \
553d0407baSopenharmony_ci	-DMALI_KERNEL_TEST_API=$(MALI_KERNEL_TEST_API) \
563d0407baSopenharmony_ci	-DMALI_UNIT_TEST=$(MALI_UNIT_TEST) \
573d0407baSopenharmony_ci	-DMALI_ERROR_INJECT_ON=$(MALI_ERROR_INJECT_ON) \
583d0407baSopenharmony_ci	-DMALI_MOCK_TEST=$(MALI_MOCK_TEST) \
593d0407baSopenharmony_ci	-DMALI_COVERAGE=$(MALI_COVERAGE) \
603d0407baSopenharmony_ci	-DMALI_INSTRUMENTATION_LEVEL=$(MALI_INSTRUMENTATION_LEVEL) \
613d0407baSopenharmony_ci	-DMALI_RELEASE_NAME=\"$(MALI_RELEASE_NAME)\" \
623d0407baSopenharmony_ci	-DMALI_GCC_WORKAROUND_MIDCOM_4598=$(MALI_GCC_WORKAROUND_MIDCOM_4598)
633d0407baSopenharmony_ci
643d0407baSopenharmony_ciifeq ($(KBUILD_EXTMOD),)
653d0407baSopenharmony_ci# in-tree
663d0407baSopenharmony_ciDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=../../$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME)
673d0407baSopenharmony_cielse
683d0407baSopenharmony_ci# out-of-tree
693d0407baSopenharmony_ciDEFINES +=-DMALI_KBASE_THIRDPARTY_PATH=$(src)/platform/$(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME)
703d0407baSopenharmony_ciendif
713d0407baSopenharmony_ci
723d0407baSopenharmony_ciDEFINES += -I$(srctree)/drivers/staging/android
733d0407baSopenharmony_ci
743d0407baSopenharmony_ci# Use our defines when compiling
753d0407baSopenharmony_ciccflags-y += $(DEFINES) -I$(KBASE_PATH)   -I$(KBASE_PLATFORM_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux
763d0407baSopenharmony_cisubdir-ccflags-y += $(DEFINES) -I$(KBASE_PATH)   -I$(KBASE_PLATFORM_PATH) -I$(OSK_PATH) -I$(UMP_PATH) -I$(srctree)/include/linux
773d0407baSopenharmony_ci
783d0407baSopenharmony_ciSRC := \
793d0407baSopenharmony_ci	mali_kbase_device.c \
803d0407baSopenharmony_ci	mali_kbase_cache_policy.c \
813d0407baSopenharmony_ci	mali_kbase_mem.c \
823d0407baSopenharmony_ci	mali_kbase_mmu.c \
833d0407baSopenharmony_ci	mali_kbase_ctx_sched.c \
843d0407baSopenharmony_ci	mali_kbase_jd.c \
853d0407baSopenharmony_ci	mali_kbase_jd_debugfs.c \
863d0407baSopenharmony_ci	mali_kbase_jm.c \
873d0407baSopenharmony_ci	mali_kbase_gpuprops.c \
883d0407baSopenharmony_ci	mali_kbase_js.c \
893d0407baSopenharmony_ci	mali_kbase_js_ctx_attr.c \
903d0407baSopenharmony_ci	mali_kbase_event.c \
913d0407baSopenharmony_ci	mali_kbase_context.c \
923d0407baSopenharmony_ci	mali_kbase_pm.c \
933d0407baSopenharmony_ci	mali_kbase_config.c \
943d0407baSopenharmony_ci	mali_kbase_vinstr.c \
953d0407baSopenharmony_ci	mali_kbase_softjobs.c \
963d0407baSopenharmony_ci	mali_kbase_10969_workaround.c \
973d0407baSopenharmony_ci	mali_kbase_hw.c \
983d0407baSopenharmony_ci	mali_kbase_utility.c \
993d0407baSopenharmony_ci	mali_kbase_debug.c \
1003d0407baSopenharmony_ci	mali_kbase_trace_timeline.c \
1013d0407baSopenharmony_ci	mali_kbase_gpu_memory_debugfs.c \
1023d0407baSopenharmony_ci	mali_kbase_mem_linux.c \
1033d0407baSopenharmony_ci	mali_kbase_core_linux.c \
1043d0407baSopenharmony_ci	mali_kbase_replay.c \
1053d0407baSopenharmony_ci	mali_kbase_mem_profile_debugfs.c \
1063d0407baSopenharmony_ci	mali_kbase_mmu_mode_lpae.c \
1073d0407baSopenharmony_ci	mali_kbase_mmu_mode_aarch64.c \
1083d0407baSopenharmony_ci	mali_kbase_disjoint_events.c \
1093d0407baSopenharmony_ci	mali_kbase_gator_api.c \
1103d0407baSopenharmony_ci	mali_kbase_debug_mem_view.c \
1113d0407baSopenharmony_ci	mali_kbase_debug_job_fault.c \
1123d0407baSopenharmony_ci	mali_kbase_smc.c \
1133d0407baSopenharmony_ci	mali_kbase_mem_pool.c \
1143d0407baSopenharmony_ci	mali_kbase_mem_pool_debugfs.c \
1153d0407baSopenharmony_ci	mali_kbase_tlstream.c \
1163d0407baSopenharmony_ci	mali_kbase_strings.c \
1173d0407baSopenharmony_ci	mali_kbase_as_fault_debugfs.c \
1183d0407baSopenharmony_ci	mali_kbase_regs_history_debugfs.c
1193d0407baSopenharmony_ci
1203d0407baSopenharmony_ci
1213d0407baSopenharmony_ci
1223d0407baSopenharmony_ci
1233d0407baSopenharmony_ciifeq ($(MALI_UNIT_TEST),1)
1243d0407baSopenharmony_ci	SRC += mali_kbase_tlstream_test.c
1253d0407baSopenharmony_ciendif
1263d0407baSopenharmony_ci
1273d0407baSopenharmony_ciifeq ($(MALI_CUSTOMER_RELEASE),0)
1283d0407baSopenharmony_ci	SRC += mali_kbase_regs_dump_debugfs.c
1293d0407baSopenharmony_ciendif
1303d0407baSopenharmony_ci
1313d0407baSopenharmony_ci
1323d0407baSopenharmony_ciccflags-y += -I$(KBASE_PATH)
1333d0407baSopenharmony_ci
1343d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_FAKE),y)
1353d0407baSopenharmony_ci	SRC += mali_kbase_platform_fake.c
1363d0407baSopenharmony_ci
1373d0407baSopenharmony_ci	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS),y)
1383d0407baSopenharmony_ci		SRC += platform/vexpress/mali_kbase_config_vexpress.c \
1393d0407baSopenharmony_ci		platform/vexpress/mali_kbase_cpu_vexpress.c
1403d0407baSopenharmony_ci		ccflags-y += -I$(src)/platform/vexpress
1413d0407baSopenharmony_ci	endif
1423d0407baSopenharmony_ci
1433d0407baSopenharmony_ci	ifeq ($(CONFIG_MALI_PLATFORM_RTSM_VE),y)
1443d0407baSopenharmony_ci		SRC += platform/rtsm_ve/mali_kbase_config_vexpress.c
1453d0407baSopenharmony_ci		ccflags-y += -I$(src)/platform/rtsm_ve
1463d0407baSopenharmony_ci	endif
1473d0407baSopenharmony_ci
1483d0407baSopenharmony_ci	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_1XV7_A57),y)
1493d0407baSopenharmony_ci		SRC += platform/vexpress_1xv7_a57/mali_kbase_config_vexpress.c
1503d0407baSopenharmony_ci		ccflags-y += -I$(src)/platform/vexpress_1xv7_a57
1513d0407baSopenharmony_ci	endif
1523d0407baSopenharmony_ci
1533d0407baSopenharmony_ci	ifeq ($(CONFIG_MALI_PLATFORM_VEXPRESS_6XVIRTEX7_10MHZ),y)
1543d0407baSopenharmony_ci		SRC += platform/vexpress_6xvirtex7_10mhz/mali_kbase_config_vexpress.c \
1553d0407baSopenharmony_ci		platform/vexpress_6xvirtex7_10mhz/mali_kbase_cpu_vexpress.c
1563d0407baSopenharmony_ci		ccflags-y += -I$(src)/platform/vexpress_6xvirtex7_10mhz
1573d0407baSopenharmony_ci	endif
1583d0407baSopenharmony_ciendif # CONFIG_MALI_PLATFORM_FAKE=y
1593d0407baSopenharmony_ci
1603d0407baSopenharmony_ci# Tell the Linux build system from which .o file to create the kernel module
1613d0407baSopenharmony_ciobj-$(CONFIG_MALI_MIDGARD) += midgard_kbase.o
1623d0407baSopenharmony_ci
1633d0407baSopenharmony_ci# Tell the Linux build system to enable building of our .c files
1643d0407baSopenharmony_cimidgard_kbase-y := $(SRC:.c=.o)
1653d0407baSopenharmony_ci
1663d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY),y)
1673d0407baSopenharmony_ci  # Kconfig passes in the name with quotes for in-tree builds - remove them.
1683d0407baSopenharmony_ci  platform_name := $(shell echo $(CONFIG_MALI_PLATFORM_THIRDPARTY_NAME))
1693d0407baSopenharmony_ci  MALI_PLATFORM_THIRDPARTY_DIR := platform/$(platform_name)
1703d0407baSopenharmony_ci  ccflags-y += -I$(src)/$(MALI_PLATFORM_THIRDPARTY_DIR)
1713d0407baSopenharmony_ci  include $(src)/$(MALI_PLATFORM_THIRDPARTY_DIR)/Kbuild
1723d0407baSopenharmony_ciendif
1733d0407baSopenharmony_ci
1743d0407baSopenharmony_ciifeq ($(CONFIG_MALI_DEVFREQ),y)
1753d0407baSopenharmony_ci  ifeq ($(CONFIG_DEVFREQ_THERMAL),y)
1763d0407baSopenharmony_ci    include $(src)/ipa/Kbuild
1773d0407baSopenharmony_ci  endif
1783d0407baSopenharmony_ciendif
1793d0407baSopenharmony_ci
1803d0407baSopenharmony_cimidgard_kbase-$(CONFIG_MALI_DMA_FENCE) += \
1813d0407baSopenharmony_ci	mali_kbase_dma_fence.o \
1823d0407baSopenharmony_ci	mali_kbase_fence.o
1833d0407baSopenharmony_cimidgard_kbase-$(CONFIG_SYNC) += \
1843d0407baSopenharmony_ci	mali_kbase_sync_android.o \
1853d0407baSopenharmony_ci	mali_kbase_sync_common.o
1863d0407baSopenharmony_cimidgard_kbase-$(CONFIG_SYNC_FILE) += \
1873d0407baSopenharmony_ci	mali_kbase_sync_file.o \
1883d0407baSopenharmony_ci	mali_kbase_sync_common.o \
1893d0407baSopenharmony_ci	mali_kbase_fence.o
1903d0407baSopenharmony_ci
1913d0407baSopenharmony_ciMALI_BACKEND_PATH ?= backend
1923d0407baSopenharmony_ciCONFIG_MALI_BACKEND ?= gpu
1933d0407baSopenharmony_ciCONFIG_MALI_BACKEND_REAL ?= $(CONFIG_MALI_BACKEND)
1943d0407baSopenharmony_ci
1953d0407baSopenharmony_ciifeq ($(MALI_MOCK_TEST),1)
1963d0407baSopenharmony_ciifeq ($(CONFIG_MALI_BACKEND_REAL),gpu)
1973d0407baSopenharmony_ci# Test functionality
1983d0407baSopenharmony_cimidgard_kbase-y += tests/internal/src/mock/mali_kbase_pm_driver_mock.o
1993d0407baSopenharmony_ciendif
2003d0407baSopenharmony_ciendif
2013d0407baSopenharmony_ci
2023d0407baSopenharmony_ciinclude  $(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)/Kbuild
2033d0407baSopenharmony_cimidgard_kbase-y += $(BACKEND:.c=.o)
2043d0407baSopenharmony_ci
2053d0407baSopenharmony_ci
2063d0407baSopenharmony_ciccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)
2073d0407baSopenharmony_cisubdir-ccflags-y += -I$(src)/$(MALI_BACKEND_PATH)/$(CONFIG_MALI_BACKEND_REAL)
2083d0407baSopenharmony_ci
2093d0407baSopenharmony_ci# Default to devicetree platform if neither a fake platform or a thirdparty
2103d0407baSopenharmony_ci# platform is configured.
2113d0407baSopenharmony_ciifeq ($(CONFIG_MALI_PLATFORM_THIRDPARTY)$(CONFIG_MALI_PLATFORM_FAKE),)
2123d0407baSopenharmony_ciCONFIG_MALI_PLATFORM_DEVICETREE := y
2133d0407baSopenharmony_ciendif
2143d0407baSopenharmony_ci
2153d0407baSopenharmony_cimidgard_kbase-$(CONFIG_MALI_PLATFORM_DEVICETREE) += \
2163d0407baSopenharmony_ci	platform/devicetree/mali_kbase_runtime_pm.o \
2173d0407baSopenharmony_ci	platform/devicetree/mali_kbase_config_devicetree.o
2183d0407baSopenharmony_ciccflags-$(CONFIG_MALI_PLATFORM_DEVICETREE) += -I$(src)/platform/devicetree
2193d0407baSopenharmony_ci
2203d0407baSopenharmony_ci# For kutf and mali_kutf_irq_latency_test
2213d0407baSopenharmony_ciobj-$(CONFIG_MALI_KUTF) += tests/
222