blob: ceb6a88ab2272f6d45b1677f67b8b03530182c19 [file] [log] [blame]
##############################################################################
#
# 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.
#
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_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_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
EXTRA_CFLAGS += -DgcdENABLE_2D=0
EXTRA_CFLAGS += -DgcdENABLE_VG=0
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_DRM),1)
EXTRA_CFLAGS += -I$(AQROOT)/driver/X/libdrm-2.4.91/include/drm
endif
EXTRA_CFLAGS += -DHOST=\"$(HOST)\"
EXTRA_CFLAGS += -DgcdENABLE_TRUST_APPLICATION=1
obj-m = $(MODULE_NAME).o
$(MODULE_NAME)-objs = $(OBJS)
endif