• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 2010-2017 ARM Limited. All rights reserved.
3#
4# This program is free software and is provided to you under the terms of the GNU General Public License version 2
5# as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
6#
7# A copy of the licence is included with the program, and can also be obtained from Free Software
8# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
9#
10
11USE_UMPV2=0
12USING_PROFILING ?= 1
13USING_INTERNAL_PROFILING ?= 0
14USING_DVFS ?= 1
15USING_DMA_BUF_FENCE ?= 0
16MALI_HEATMAPS_ENABLED ?= 0
17MALI_DMA_BUF_MAP_ON_ATTACH ?= 1
18MALI_PMU_PARALLEL_POWER_UP ?= 0
19USING_DT ?= 0
20MALI_MEM_SWAP_TRACKING ?= 0
21USING_DEVFREQ ?= 0
22
23# The Makefile sets up "arch" based on the CONFIG, creates the version info
24# string and the __malidrv_build_info.c file, and then call the Linux build
25# system to actually build the driver. After that point the Kbuild file takes
26# over.
27
28# set up defaults if not defined by the user
29ARCH ?= arm
30
31OSKOS=linux
32FILES_PREFIX=
33
34check_cc2 = \
35	$(shell if $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
36	then \
37		echo "$(2)"; \
38	else \
39		echo "$(3)"; \
40	fi ;)
41
42# This conditional makefile exports the global definition ARM_INTERNAL_BUILD. Customer releases will not include arm_internal.mak
43-include ../../../arm_internal.mak
44
45# Give warning of old config parameters are used
46ifneq ($(CONFIG),)
47$(warning "You have specified the CONFIG variable which is no longer in used. Use TARGET_PLATFORM instead.")
48endif
49
50ifneq ($(CPU),)
51$(warning "You have specified the CPU variable which is no longer in used. Use TARGET_PLATFORM instead.")
52endif
53
54# Include the mapping between TARGET_PLATFORM and KDIR + MALI_PLATFORM
55-include MALI_CONFIGURATION
56export KDIR ?= $(KDIR-$(TARGET_PLATFORM))
57export MALI_PLATFORM ?= $(MALI_PLATFORM-$(TARGET_PLATFORM))
58
59ifneq ($(TARGET_PLATFORM),)
60ifeq ($(MALI_PLATFORM),)
61$(error "Invalid TARGET_PLATFORM: $(TARGET_PLATFORM)")
62endif
63endif
64
65# validate lookup result
66ifeq ($(KDIR),)
67$(error No KDIR found for platform $(TARGET_PLATFORM))
68endif
69
70ifeq ($(USING_GPU_UTILIZATION), 1)
71    ifeq ($(USING_DVFS), 1)
72        $(error USING_GPU_UTILIZATION conflict with USING_DVFS you can read the Integration Guide to choose which one do you need)
73    endif
74endif
75
76ifeq ($(USING_UMP),1)
77export CONFIG_MALI400_UMP=y
78export EXTRA_DEFINES += -DCONFIG_MALI400_UMP=1
79ifeq ($(USE_UMPV2),1)
80UMP_SYMVERS_FILE ?= ../umpv2/Module.symvers
81else
82UMP_SYMVERS_FILE ?= ../ump/Module.symvers
83endif
84KBUILD_EXTRA_SYMBOLS = $(realpath $(UMP_SYMVERS_FILE))
85$(warning $(KBUILD_EXTRA_SYMBOLS))
86endif
87
88# Define host system directory
89KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
90
91include $(KDIR)/.config
92
93ifeq ($(ARCH), arm)
94# when compiling for ARM we're cross compiling
95export CROSS_COMPILE ?= $(call check_cc2, arm-linux-gnueabi-gcc, arm-linux-gnueabi-, arm-none-linux-gnueabi-)
96endif
97
98# report detected/selected settings
99ifdef ARM_INTERNAL_BUILD
100$(warning TARGET_PLATFORM $(TARGET_PLATFORM))
101$(warning KDIR $(KDIR))
102$(warning MALI_PLATFORM $(MALI_PLATFORM))
103endif
104
105# Set up build config
106export CONFIG_MALI400=m
107export CONFIG_MALI450=y
108export CONFIG_MALI470=y
109
110export EXTRA_DEFINES += -DCONFIG_MALI400=1
111export EXTRA_DEFINES += -DCONFIG_MALI450=1
112export EXTRA_DEFINES += -DCONFIG_MALI470=1
113
114ifneq ($(MALI_PLATFORM),)
115export EXTRA_DEFINES += -DMALI_FAKE_PLATFORM_DEVICE=1
116export MALI_PLATFORM_FILES = $(wildcard platform/$(MALI_PLATFORM)/*.c)
117endif
118
119ifeq ($(USING_PROFILING),1)
120ifeq ($(CONFIG_TRACEPOINTS),)
121$(warning CONFIG_TRACEPOINTS required for profiling)
122else
123export CONFIG_MALI400_PROFILING=y
124export EXTRA_DEFINES += -DCONFIG_MALI400_PROFILING=1
125ifeq ($(USING_INTERNAL_PROFILING),1)
126export CONFIG_MALI400_INTERNAL_PROFILING=y
127export EXTRA_DEFINES += -DCONFIG_MALI400_INTERNAL_PROFILING=1
128endif
129ifeq ($(MALI_HEATMAPS_ENABLED),1)
130export MALI_HEATMAPS_ENABLED=y
131export EXTRA_DEFINES += -DCONFIG_MALI400_HEATMAPS_ENABLED
132endif
133endif
134endif
135
136ifeq ($(MALI_DMA_BUF_MAP_ON_ATTACH),1)
137export CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y
138export EXTRA_DEFINES += -DCONFIG_MALI_DMA_BUF_MAP_ON_ATTACH
139endif
140
141ifeq ($(MALI_SHARED_INTERRUPTS),1)
142export CONFIG_MALI_SHARED_INTERRUPTS=y
143export EXTRA_DEFINES += -DCONFIG_MALI_SHARED_INTERRUPTS
144endif
145
146ifeq ($(USING_DVFS),1)
147export CONFIG_MALI_DVFS=y
148export EXTRA_DEFINES += -DCONFIG_MALI_DVFS
149endif
150
151ifeq ($(USING_DMA_BUF_FENCE),1)
152export CONFIG_MALI_DMA_BUF_FENCE=y
153export EXTRA_DEFINES += -DCONFIG_MALI_DMA_BUF_FENCE
154endif
155
156ifeq ($(MALI_PMU_PARALLEL_POWER_UP),1)
157export CONFIG_MALI_PMU_PARALLEL_POWER_UP=y
158export EXTRA_DEFINES += -DCONFIG_MALI_PMU_PARALLEL_POWER_UP
159endif
160
161ifdef CONFIG_OF
162ifeq ($(USING_DT),1)
163export CONFIG_MALI_DT=y
164export EXTRA_DEFINES += -DCONFIG_MALI_DT
165endif
166endif
167
168ifeq ($(USING_DEVFREQ), 1)
169ifdef CONFIG_PM_DEVFREQ
170export CONFIG_MALI_DEVFREQ=y
171export EXTRA_DEFINES += -DCONFIG_MALI_DEVFREQ=1
172else
173$(warning "You want to support DEVFREQ but kernel didn't support DEVFREQ.")
174endif
175endif
176
177ifneq ($(BUILD),release)
178# Debug
179export CONFIG_MALI400_DEBUG=y
180else
181# Release
182ifeq ($(MALI_QUIET),1)
183export CONFIG_MALI_QUIET=y
184export EXTRA_DEFINES += -DCONFIG_MALI_QUIET
185endif
186endif
187
188ifeq ($(MALI_SKIP_JOBS),1)
189EXTRA_DEFINES += -DPROFILING_SKIP_PP_JOBS=1 -DPROFILING_SKIP_GP_JOBS=1
190endif
191
192ifeq ($(MALI_MEM_SWAP_TRACKING),1)
193EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
194endif
195
196all: $(UMP_SYMVERS_FILE)
197	$(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) modules
198	@rm $(FILES_PREFIX)__malidrv_build_info.c $(FILES_PREFIX)__malidrv_build_info.o
199
200clean:
201	$(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean
202
203kernelrelease:
204	$(MAKE) ARCH=$(ARCH) -C $(KDIR) kernelrelease
205
206export CONFIG KBUILD_EXTRA_SYMBOLS
207