xref: /OK3568_Linux_fs/kernel/drivers/gpu/arm/bifrost/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
2#
3# (C) COPYRIGHT 2010-2023 ARM Limited. All rights reserved.
4#
5# This program is free software and is provided to you under the terms of the
6# GNU General Public License version 2 as published by the Free Software
7# Foundation, and any use by you of this program is subject to the terms
8# of such GNU license.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, you can access it online at
17# http://www.gnu.org/licenses/gpl-2.0.html.
18#
19#
20
21KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build
22KDIR ?= $(KERNEL_SRC)
23
24ifeq ($(KDIR),)
25    $(error Must specify KDIR to point to the kernel to target))
26endif
27
28#
29# Default configuration values
30#
31# Dependency resolution is done through statements as Kconfig
32# is not supported for out-of-tree builds.
33#
34
35CONFIG_MALI_BIFROST ?= m
36ifeq ($(CONFIG_MALI_BIFROST),m)
37    CONFIG_MALI_PLATFORM_NAME ?= "devicetree"
38    CONFIG_MALI_BIFROST_GATOR_SUPPORT ?= y
39    CONFIG_MALI_ARBITRATION ?= n
40    CONFIG_MALI_PARTITION_MANAGER ?= n
41
42    ifneq ($(CONFIG_MALI_BIFROST_NO_MALI),y)
43        # Prevent misuse when CONFIG_MALI_BIFROST_NO_MALI
44        CONFIG_MALI_REAL_HW ?= y
45        CONFIG_MALI_CORESIGHT = n
46    endif
47
48    ifeq ($(CONFIG_MALI_BIFROST_DVFS),y)
49        # Prevent misuse when CONFIG_MALI_BIFROST_DVFS=y
50        CONFIG_MALI_BIFROST_DEVFREQ ?= n
51    else
52        CONFIG_MALI_BIFROST_DEVFREQ ?= y
53    endif
54
55    ifeq ($(CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND), y)
56        # Prevent misuse when CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND=y
57        CONFIG_MALI_DMA_BUF_LEGACY_COMPAT = n
58    endif
59
60    ifeq ($(CONFIG_MALI_CSF_SUPPORT), y)
61        CONFIG_MALI_CORESIGHT ?= n
62    endif
63
64    #
65    # Expert/Debug/Test released configurations
66    #
67    ifeq ($(CONFIG_MALI_BIFROST_EXPERT), y)
68        ifeq ($(CONFIG_MALI_BIFROST_NO_MALI), y)
69            CONFIG_MALI_REAL_HW = n
70
71        else
72            # Prevent misuse when CONFIG_MALI_BIFROST_NO_MALI=n
73            CONFIG_MALI_REAL_HW = y
74            CONFIG_MALI_BIFROST_ERROR_INJECT = n
75        endif
76
77
78        ifeq ($(CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED), y)
79            # Prevent misuse when CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED=y
80            CONFIG_MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE = n
81        endif
82
83        ifeq ($(CONFIG_MALI_BIFROST_DEBUG), y)
84            CONFIG_MALI_BIFROST_ENABLE_TRACE ?= y
85            CONFIG_MALI_BIFROST_SYSTEM_TRACE ?= y
86
87            ifeq ($(CONFIG_SYNC_FILE), y)
88                CONFIG_MALI_BIFROST_FENCE_DEBUG ?= y
89            else
90                CONFIG_MALI_BIFROST_FENCE_DEBUG = n
91            endif
92        else
93            # Prevent misuse when CONFIG_MALI_BIFROST_DEBUG=n
94            CONFIG_MALI_BIFROST_ENABLE_TRACE = n
95            CONFIG_MALI_BIFROST_SYSTEM_TRACE = n
96            CONFIG_MALI_BIFROST_FENCE_DEBUG = n
97        endif
98    else
99        # Prevent misuse when CONFIG_MALI_BIFROST_EXPERT=n
100        CONFIG_MALI_CORESTACK = n
101        CONFIG_LARGE_PAGE_ALLOC_OVERRIDE = n
102        CONFIG_LARGE_PAGE_ALLOC = n
103        CONFIG_MALI_PWRSOFT_765 = n
104        CONFIG_MALI_MEMORY_FULLY_BACKED = n
105        CONFIG_MALI_JOB_DUMP = n
106        CONFIG_MALI_BIFROST_NO_MALI = n
107        CONFIG_MALI_REAL_HW = y
108        CONFIG_MALI_BIFROST_ERROR_INJECT = n
109        CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED = n
110        CONFIG_MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE = n
111        CONFIG_MALI_PRFCNT_SET_SELECT_VIA_DEBUG_FS = n
112        CONFIG_MALI_BIFROST_DEBUG = n
113        CONFIG_MALI_BIFROST_ENABLE_TRACE = n
114        CONFIG_MALI_BIFROST_SYSTEM_TRACE = n
115        CONFIG_MALI_BIFROST_FENCE_DEBUG = n
116    endif
117
118    ifeq ($(CONFIG_MALI_BIFROST_DEBUG), y)
119        CONFIG_MALI_KUTF ?= y
120        ifeq ($(CONFIG_MALI_KUTF), y)
121            CONFIG_MALI_KUTF_IRQ_TEST ?= y
122            CONFIG_MALI_KUTF_CLK_RATE_TRACE ?= y
123            CONFIG_MALI_KUTF_MGM_INTEGRATION_TEST ?= y
124        else
125            # Prevent misuse when CONFIG_MALI_KUTF=n
126            CONFIG_MALI_KUTF_IRQ_TEST = n
127            CONFIG_MALI_KUTF_CLK_RATE_TRACE = n
128            CONFIG_MALI_KUTF_MGM_INTEGRATION_TEST = n
129        endif
130    else
131        # Prevent misuse when CONFIG_MALI_BIFROST_DEBUG=n
132        CONFIG_MALI_KUTF = n
133        CONFIG_MALI_KUTF_IRQ_TEST = n
134        CONFIG_MALI_KUTF_CLK_RATE_TRACE = n
135        CONFIG_MALI_KUTF_MGM_INTEGRATION_TEST = n
136    endif
137else
138    # Prevent misuse when CONFIG_MALI_BIFROST=n
139    CONFIG_MALI_ARBITRATION = n
140    CONFIG_MALI_KUTF = n
141    CONFIG_MALI_KUTF_IRQ_TEST = n
142    CONFIG_MALI_KUTF_CLK_RATE_TRACE = n
143    CONFIG_MALI_KUTF_MGM_INTEGRATION_TEST = n
144endif
145
146# All Mali CONFIG should be listed here
147CONFIGS := \
148    CONFIG_MALI_BIFROST \
149    CONFIG_MALI_CSF_SUPPORT \
150    CONFIG_MALI_BIFROST_GATOR_SUPPORT \
151    CONFIG_MALI_ARBITER_SUPPORT \
152    CONFIG_MALI_ARBITRATION \
153    CONFIG_MALI_PARTITION_MANAGER \
154    CONFIG_MALI_REAL_HW \
155    CONFIG_MALI_BIFROST_DEVFREQ \
156    CONFIG_MALI_BIFROST_DVFS \
157    CONFIG_MALI_DMA_BUF_MAP_ON_DEMAND \
158    CONFIG_MALI_DMA_BUF_LEGACY_COMPAT \
159    CONFIG_MALI_BIFROST_EXPERT \
160    CONFIG_MALI_CORESTACK \
161    CONFIG_LARGE_PAGE_ALLOC_OVERRIDE \
162    CONFIG_LARGE_PAGE_ALLOC \
163    CONFIG_MALI_PWRSOFT_765 \
164    CONFIG_MALI_MEMORY_FULLY_BACKED \
165    CONFIG_MALI_JOB_DUMP \
166    CONFIG_MALI_BIFROST_NO_MALI \
167    CONFIG_MALI_BIFROST_ERROR_INJECT \
168    CONFIG_MALI_HW_ERRATA_1485982_NOT_AFFECTED \
169    CONFIG_MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE \
170    CONFIG_MALI_PRFCNT_SET_PRIMARY \
171    CONFIG_MALI_BIFROST_PRFCNT_SET_SECONDARY \
172    CONFIG_MALI_PRFCNT_SET_TERTIARY \
173    CONFIG_MALI_PRFCNT_SET_SELECT_VIA_DEBUG_FS \
174    CONFIG_MALI_BIFROST_DEBUG \
175    CONFIG_MALI_BIFROST_ENABLE_TRACE \
176    CONFIG_MALI_BIFROST_SYSTEM_TRACE \
177    CONFIG_MALI_BIFROST_FENCE_DEBUG \
178    CONFIG_MALI_KUTF \
179    CONFIG_MALI_KUTF_IRQ_TEST \
180    CONFIG_MALI_KUTF_CLK_RATE_TRACE \
181    CONFIG_MALI_KUTF_MGM_INTEGRATION_TEST \
182    CONFIG_MALI_XEN \
183    CONFIG_MALI_CORESIGHT
184
185
186THIS_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
187-include $(THIS_DIR)/../arbitration/Makefile
188
189# MAKE_ARGS to pass the custom CONFIGs on out-of-tree build
190#
191# Generate the list of CONFIGs and values.
192# $(value config) is the name of the CONFIG option.
193# $(value $(value config)) is its value (y, m).
194# When the CONFIG is not set to y or m, it defaults to n.
195MAKE_ARGS := $(foreach config,$(CONFIGS), \
196                    $(if $(filter y m,$(value $(value config))), \
197                        $(value config)=$(value $(value config)), \
198                        $(value config)=n))
199
200MAKE_ARGS += CONFIG_MALI_PLATFORM_NAME=$(CONFIG_MALI_PLATFORM_NAME)
201
202#
203# EXTRA_CFLAGS to define the custom CONFIGs on out-of-tree build
204#
205# Generate the list of CONFIGs defines with values from CONFIGS.
206# $(value config) is the name of the CONFIG option.
207# When set to y or m, the CONFIG gets defined to 1.
208EXTRA_CFLAGS := $(foreach config,$(CONFIGS), \
209                    $(if $(filter y m,$(value $(value config))), \
210                        -D$(value config)=1))
211
212EXTRA_CFLAGS += -DCONFIG_MALI_PLATFORM_NAME=$(CONFIG_MALI_PLATFORM_NAME)
213
214#
215# KBUILD_EXTRA_SYMBOLS to prevent warnings about unknown functions
216#
217
218KBUILD_CFLAGS += -Wall -Werror
219
220# The following were added to align with W=1 in scripts/Makefile.extrawarn
221# from the Linux source tree (v5.18.14)
222KBUILD_CFLAGS += -Wextra -Wunused -Wno-unused-parameter
223KBUILD_CFLAGS += -Wmissing-declarations
224KBUILD_CFLAGS += -Wmissing-format-attribute
225KBUILD_CFLAGS += -Wmissing-prototypes
226KBUILD_CFLAGS += -Wold-style-definition
227# The -Wmissing-include-dirs cannot be enabled as the path to some of the
228# included directories change depending on whether it is an in-tree or
229# out-of-tree build.
230KBUILD_CFLAGS += $(call cc-option, -Wunused-but-set-variable)
231KBUILD_CFLAGS += $(call cc-option, -Wunused-const-variable)
232KBUILD_CFLAGS += $(call cc-option, -Wpacked-not-aligned)
233KBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation)
234# The following turn off the warnings enabled by -Wextra
235KBUILD_CFLAGS += -Wno-sign-compare
236KBUILD_CFLAGS += -Wno-shift-negative-value
237# This flag is needed to avoid build errors on older kernels
238KBUILD_CFLAGS += $(call cc-option, -Wno-cast-function-type)
239
240KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1
241
242# The following were added to align with W=2 in scripts/Makefile.extrawarn
243# from the Linux source tree (v5.18.14)
244KBUILD_CFLAGS += -Wdisabled-optimization
245# The -Wshadow flag cannot be enabled unless upstream kernels are
246# patched to fix redefinitions of certain built-in functions and
247# global variables.
248KBUILD_CFLAGS += $(call cc-option, -Wlogical-op)
249KBUILD_CFLAGS += -Wmissing-field-initializers
250# -Wtype-limits must be disabled due to build failures on kernel 5.x
251KBUILD_CFLAGS += -Wno-type-limit
252KBUILD_CFLAGS += $(call cc-option, -Wmaybe-uninitialized)
253KBUILD_CFLAGS += $(call cc-option, -Wunused-macros)
254
255KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN2
256
257# This warning is disabled to avoid build failures in some kernel versions
258KBUILD_CFLAGS += -Wno-ignored-qualifiers
259
260ifeq ($(CONFIG_GCOV_KERNEL),y)
261    KBUILD_CFLAGS += $(call cc-option, -ftest-coverage)
262    KBUILD_CFLAGS += $(call cc-option, -fprofile-arcs)
263    EXTRA_CFLAGS += -DGCOV_PROFILE=1
264endif
265
266ifeq ($(CONFIG_MALI_KCOV),y)
267    KBUILD_CFLAGS += $(call cc-option, -fsanitize-coverage=trace-cmp)
268    EXTRA_CFLAGS += -DKCOV=1
269    EXTRA_CFLAGS += -DKCOV_ENABLE_COMPARISONS=1
270endif
271
272all:
273	$(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" KBUILD_EXTRA_SYMBOLS="$(EXTRA_SYMBOLS)" modules
274
275modules_install:
276	$(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) modules_install
277
278clean:
279	$(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE_ARGS) clean
280