############################################################################## # # The MIT License (MIT) # # Copyright (c) 2014 - 2020 Vivante Corporation # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # ############################################################################## # # The GPL License (GPL) # # Copyright (C) 2014 - 2020 Vivante Corporation # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # 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, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################## # # Note: This software is released under dual MIT and GPL licenses. A # recipient may use this file under the terms of either the MIT license or # GPL License. If you wish to use only one license not the other, you can # indicate your decision by deleting one of the above license notices in your # version of this file. # ############################################################################## # # Linux build file for kernel HAL driver. # AQROOT ?= $(srctree)/drivers/mxc/gpu-viv ifeq ($(CONFIG_MXC_GPU_VIV),) CONFIG_MXC_GPU_VIV=m endif include $(AQROOT)/config soc_vendor := $(firstword $(subst -, ,$(SOC_PLATFORM))) soc_board := $(lastword $(subst -, ,$(SOC_PLATFORM))) KERNEL_DIR ?= $(TOOL_DIR)/kernel OS_KERNEL_DIR := hal/os/linux/kernel ARCH_KERNEL_DIR := hal/kernel/arch ARCH_VG_KERNEL_DIR := hal/kernel/archvg HAL_KERNEL_DIR := hal/kernel TA_DIR := hal/security_v1 HOST := $(shell hostname) MODULE_NAME ?= galcore CUSTOMER_ALLOCATOR_OBJS ?= ALLOCATOR_ARRAY_H_LOCATION ?= $(OS_KERNEL_DIR)/allocator/default/ SOC_PLATFORM_LOCATION ?= $(OS_KERNEL_DIR)/platform/$(soc_vendor) # Set common platform driver source SOC_PLATFORM_OBJS ?= $(SOC_PLATFORM_LOCATION)/gc_hal_kernel_platform_$(soc_board).o # Include platform config if exists. -include $(AQROOT)/$(SOC_PLATFORM_LOCATION)/gc_hal_kernel_platform_$(soc_board).config ifeq ($(CONFIG_KASAN),) EXTRA_CFLAGS += -Werror -Wno-implicit-fallthrough endif OBJS := $(OS_KERNEL_DIR)/gc_hal_kernel_device.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_linux.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_math.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_os.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_debugfs.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_allocator.o \ $(OS_KERNEL_DIR)/allocator/default/gc_hal_kernel_allocator_user_memory.o \ $(OS_KERNEL_DIR)/allocator/default/gc_hal_kernel_allocator_dma.o \ $(OS_KERNEL_DIR)/allocator/default/gc_hal_kernel_allocator_gfp.o \ $(OS_KERNEL_DIR)/allocator/default/gc_hal_kernel_allocator_reserved_mem.o \ $(OS_KERNEL_DIR)/gc_hal_kernel_driver.o # Source files for soc platform board OBJS += $(SOC_PLATFORM_OBJS) ifneq ($(CONFIG_DMA_SHARED_BUFFER),) OBJS += $(OS_KERNEL_DIR)/allocator/default/gc_hal_kernel_allocator_dmabuf.o endif ifneq ($(CONFIG_IOMMU_SUPPORT),) OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_iommu.o endif ifneq ($(CONFIG_DRM),) OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_drm.o endif OBJS += $(HAL_KERNEL_DIR)/gc_hal_kernel.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_command.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_db.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_debug.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_event.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_heap.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_mmu.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_video_memory.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_power.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_security_v1.o OBJS += $(ARCH_KERNEL_DIR)/gc_hal_kernel_context.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_func.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_func_flop_reset.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_async_fe.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_mc_fe.o \ $(ARCH_KERNEL_DIR)/gc_hal_kernel_hardware_waitlink_fe.o ifeq ($(VIVANTE_ENABLE_3D), 1) OBJS += $(ARCH_KERNEL_DIR)/gc_hal_kernel_recorder.o endif ifneq ($(CONFIG_ARM64),) ifeq ($(CONFIG_ANDROID),) VIVANTE_ENABLE_VG=0 endif endif ifeq ($(VIVANTE_ENABLE_VG), 1) OBJS +=\ $(HAL_KERNEL_DIR)/gc_hal_kernel_vg.o\ $(HAL_KERNEL_DIR)/gc_hal_kernel_command_vg.o\ $(HAL_KERNEL_DIR)/gc_hal_kernel_interrupt_vg.o\ $(HAL_KERNEL_DIR)/gc_hal_kernel_mmu_vg.o\ $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_command_vg.o\ $(ARCH_VG_KERNEL_DIR)/gc_hal_kernel_hardware_vg.o endif ifneq ($(CONFIG_SYNC),) EXTRA_CFLAGS += -Idrivers/staging/android EXTRA_CFLAGS += -DgcdLINUX_SYNC_FILE=1 OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_sync.o else ifneq ($(CONFIG_SYNC_FILE),) EXTRA_CFLAGS += -DgcdLINUX_SYNC_FILE=1 OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_sync.o endif endif ifeq ($(SECURITY), 1) OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_security_channel.o \ $(HAL_KERNEL_DIR)/gc_hal_kernel_security.o endif ifneq ($(CUSTOMER_ALLOCATOR_OBJS),) OBJS += $(CUSTOMER_ALLOCATOR_OBJS) endif OBJS += $(OS_KERNEL_DIR)/gc_hal_kernel_security_channel_emulator.o \ $(TA_DIR)/gc_hal_ta.o \ $(TA_DIR)/gc_hal_ta_hardware.o \ $(TA_DIR)/gc_hal_ta_mmu.o \ $(TA_DIR)/os/emulator/gc_hal_ta_emulator.o ifeq ($(KERNELRELEASE), ) .PHONY: all clean install # Define targets. all: @$(MAKE) V=$(V) ARCH=$(ARCH_TYPE) -C $(KERNEL_DIR) M=`pwd` modules clean: @rm -rf $(OBJS) @rm -rf modules.order Module.symvers .tmp_versions @find $(AQROOT) -name ".gc_*.cmd" | xargs rm -f install: all @mkdir -p $(SDK_DIR)/drivers @cp $(MODULE_NAME).ko $(SDK_DIR)/drivers else EXTRA_CFLAGS += -DLINUX -DDRIVER ifeq ($(FLAREON),1) EXTRA_CFLAGS += -DFLAREON endif ifeq ($(DEBUG), 1) EXTRA_CFLAGS += -DDBG=1 -DDEBUG -D_DEBUG else EXTRA_CFLAGS += -DDBG=0 endif ifeq ($(NO_DMA_COHERENT), 1) EXTRA_CFLAGS += -DNO_DMA_COHERENT endif ifeq ($(CONFIG_DOVE_GPU), 1) EXTRA_CFLAGS += -DCONFIG_DOVE_GPU=1 endif ifneq ($(USE_PLATFORM_DRIVER), 0) EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=1 else EXTRA_CFLAGS += -DUSE_PLATFORM_DRIVER=0 endif EXTRA_CFLAGS += -DVIVANTE_PROFILER=1 EXTRA_CFLAGS += -DVIVANTE_PROFILER_CONTEXT=1 ifeq ($(ENABLE_GPU_CLOCK_BY_DRIVER), 1) EXTRA_CFLAGS += -DENABLE_GPU_CLOCK_BY_DRIVER=1 else EXTRA_CFLAGS += -DENABLE_GPU_CLOCK_BY_DRIVER=0 endif ifeq ($(USE_NEW_LINUX_SIGNAL), 1) EXTRA_CFLAGS += -DUSE_NEW_LINUX_SIGNAL=1 else EXTRA_CFLAGS += -DUSE_NEW_LINUX_SIGNAL=0 endif ifeq ($(USE_LINUX_PCIE), 1) EXTRA_CFLAGS += -DUSE_LINUX_PCIE=1 else EXTRA_CFLAGS += -DUSE_LINUX_PCIE=0 endif ifeq ($(CACHE_FUNCTION_UNIMPLEMENTED), 1) EXTRA_CFLAGS += -DgcdCACHE_FUNCTION_UNIMPLEMENTED=1 else EXTRA_CFLAGS += -DgcdCACHE_FUNCTION_UNIMPLEMENTED=0 endif ifeq ($(VIVANTE_ENABLE_3D),0) EXTRA_CFLAGS += -DgcdENABLE_3D=0 else EXTRA_CFLAGS += -DgcdENABLE_3D=1 endif ifeq ($(VIVANTE_ENABLE_2D),0) EXTRA_CFLAGS += -DgcdENABLE_2D=0 else EXTRA_CFLAGS += -DgcdENABLE_2D=1 endif ifeq ($(VIVANTE_ENABLE_VG),0) EXTRA_CFLAGS += -DgcdENABLE_VG=0 else EXTRA_CFLAGS += -DgcdENABLE_VG=1 endif ifeq ($(USE_BANK_ALIGNMENT), 1) EXTRA_CFLAGS += -DgcdENABLE_BANK_ALIGNMENT=1 ifneq ($(BANK_BIT_START), 0) ifneq ($(BANK_BIT_END), 0) EXTRA_CFLAGS += -DgcdBANK_BIT_START=$(BANK_BIT_START) EXTRA_CFLAGS += -DgcdBANK_BIT_END=$(BANK_BIT_END) endif endif ifneq ($(BANK_CHANNEL_BIT), 0) EXTRA_CFLAGS += -DgcdBANK_CHANNEL_BIT=$(BANK_CHANNEL_BIT) endif endif ifeq ($(FPGA_BUILD), 1) EXTRA_CFLAGS += -DgcdFPGA_BUILD=1 else EXTRA_CFLAGS += -DgcdFPGA_BUILD=0 endif ifeq ($(SECURITY), 1) EXTRA_CFLAGS += -DgcdSECURITY=1 endif ifneq ($(CONFIG_DRM), ) ifneq ($(CONFIG_ANDROID),) EXTRA_CFLAGS += -DgcdENABLE_DRM=$(VIVANTE_ENABLE_DRM) else EXTRA_CFLAGS += -DgcdENABLE_DRM=0 endif else EXTRA_CFLAGS += -DgcdENABLE_DRM=0 endif EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/inc EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/arch EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/inc EXTRA_CFLAGS += -I$(AQROOT)/hal/os/linux/kernel EXTRA_CFLAGS += -I$(AQROOT)/$(ALLOCATOR_ARRAY_H_LOCATION) EXTRA_CFLAGS += -I$(AQROOT)/hal/security_v1/ EXTRA_CFLAGS += -I$(AQROOT)/$(SOC_PLATFORM_LOCATION) ifneq ($(CONFIG_ARM), ) EXTRA_CFLAGS += -Iarch/arm/mm endif ifeq ($(VIVANTE_ENABLE_VG), 1) EXTRA_CFLAGS += -I$(AQROOT)/hal/kernel/archvg endif EXTRA_CFLAGS += -DHOST=\"$(HOST)\" EXTRA_CFLAGS += -DgcdENABLE_TRUST_APPLICATION=1 obj-$(CONFIG_MXC_GPU_VIV) = $(MODULE_NAME).o $(MODULE_NAME)-objs = $(OBJS) endif