| ############################################################################## |
| # |
| # 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 |