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