##############################################################################
#
#    Copyright (c) 2016 - 2020 by CSIC 709.  All rights reserved.
#
#    The material in this file is confidential and contains trade secrets
#    of CSIC 709. This is proprietary information owned by CSIC 709. No
#    part of this work may be disclosed, reproduced, copied, transmitted,
#    or used in any way for any purpose, without the express written
#    permission of CSIC 709.
#
##############################################################################

#默认开启vpu，若改为0则关闭VPU
CSMICRO_ENABLE_VPU ?= 0
#####

EXTRA_CFLAGS += -DgcdENABLE_3D=1
EXTRA_CFLAGS += -DgcdENABLE_2D=1

ifeq ($(CSMICRO_ENABLE_VPU),0)
EXTRA_CFLAGS += -DgcdENABLE_VPU=0
else
EXTRA_CFLAGS += -DgcdENABLE_VPU=1
endif

EXTRA_CFLAGS += -DgcdENABLE_TRUST_APPLICATION=1
EXTRA_CFLAGS += -DgcdPAGED_MEMORY_CACHEABLE=0
EXTRA_CFLAGS += -DgcdCACHE_FUNCTION_UNIMPLEMENTED=0
EXTRA_CFLAGS += -DgcdFPGA_BUILD=1
EXTRA_CFLAGS += -DgcdENABLE_DRM=1
EXTRA_CFLAGS += -DgcdSECURITY=0
EXTRA_CFLAGS += -DgcdNOVBIOS=1
EXTRA_CFLAGS += -DgcdNOEDID=0
EXTRA_CFLAGS += -DgcdFBMEM_RESERVED=0
EXTRA_CFLAGS += -DCSMICRO_PROFILER=1
EXTRA_CFLAGS += -DCSMICRO_PROFILER_CONTEXT=1
EXTRA_CFLAGS += -DENABLE_GPU_CLOCK_BY_DRIVER=0
EXTRA_CFLAGS += -DLINUX -DDRIVER -DDBG=0
EXTRA_CFLAGS += -DUSE_HDMI_HPD=1
EXTRA_CFLAGS += -DUSE_GREATWALL_F32X=0
EXTRA_CFLAGS += -DUSE_DDR_1333
EXTRA_CFLAGS += -DUSE_LINUX_PCIE=1
EXTRA_CFLAGS += -DUSE_NEW_LINUX_SIGNAL=0

ifeq ($(CONFIG_ARM64),y)
EXTRA_CFLAGS += -DDYNAMIC_GART=0
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=0
CSMCORE_OBJ_DIR	:= objs/arm64
else ifeq ($(CONFIG_MIPS),y)
EXTRA_CFLAGS += -DDYNAMIC_GART=0
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=1
CSMCORE_OBJ_DIR	:= objs/mips
else ifeq ($(CONFIG_X86),y)
EXTRA_CFLAGS += -DDYNAMIC_GART=1
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=0
CSMCORE_OBJ_DIR	:= objs/x86_64
else ifeq ($(CONFIG_LOONGARCH),y)
EXTRA_CFLAGS += -DDYNAMIC_GART=0
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=1
CSMCORE_OBJ_DIR	:= objs/loongarch64
else ifeq ($(CONFIG_SW),y)
EXTRA_CFLAGS += -DDYNAMIC_GART=0
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=0
CSMCORE_OBJ_DIR	:= objs/sw_64
else
EXTRA_CFLAGS += -DDYNAMIC_GART=0
EXTRA_CFLAGS += -DALL_CMD_IN_VRAM=0
CSMCORE_OBJ_DIR	:= objs/others
endif

HOST := $(shell hostname)
EXTRA_CFLAGS += -DHOST=\"$(HOST)\"

ccflags-y := -Ikylin/gpu/709/csmcore/inc $(EXTRA_CFLAGS)

#将.o.hex文件转换为.o文件
quiet_cmd_xxd =	XXD     $@
      cmd_xxd = xxd -r $< $@

all: $(subst .hex,.o,$(wildcard *.hex))

%.o: %.o.hex
	$(call cmd,xxd)
#####

CSMCORE_SRC_DIR		:= src

OBJS	:=	$(CSMCORE_SRC_DIR)/csmcore_device.o \
		$(CSMCORE_SRC_DIR)/csmcore_linux.o \
		$(CSMCORE_SRC_DIR)/csmcore_math.o \
		$(CSMCORE_SRC_DIR)/csmcore_os.o \
		$(CSMCORE_SRC_DIR)/csmcore_debugfs.o \
		$(CSMCORE_SRC_DIR)/csmcore_allocator.o \
		$(CSMCORE_SRC_DIR)/csmcore_allocator_user_memory.o \
		$(CSMCORE_SRC_DIR)/csmcore_allocator_dma.o \
		$(CSMCORE_SRC_DIR)/csmcore_allocator_gfp.o \
		$(CSMCORE_SRC_DIR)/csmcore_allocator_reserved_mem.o \
		$(CSMCORE_SRC_DIR)/csmcore_driver.o \
		$(CSMCORE_SRC_DIR)/csmcore_platform_edma_dev.o \
		$(CSMCORE_SRC_DIR)/csmcore_platform_gpseries.o  

ifneq ($(CONFIG_DMA_SHARED_BUFFER),)
OBJS += $(CSMCORE_SRC_DIR)/csmcore_allocator_dmabuf.o
endif

ifneq ($(CONFIG_IOMMU_SUPPORT),)
OBJS += $(CSMCORE_SRC_DIR)/csmcore_iommu.o
endif

OBJS += $(CSMCORE_SRC_DIR)/csmcore_drm.o
OBJS += $(CSMCORE_SRC_DIR)/gp_drv.o
OBJS += $(CSMCORE_SRC_DIR)/gp_mm.o
OBJS += $(CSMCORE_SRC_DIR)/gp_mode.o
OBJS += $(CSMCORE_SRC_DIR)/gp_fbdev.o
OBJS += $(CSMCORE_SRC_DIR)/gp_ddc.o
OBJS += $(CSMCORE_SRC_DIR)/gp_cursor.o
OBJS += $(CSMCORE_SRC_DIR)/csm_util.o
ifeq ($(CSMICRO_ENABLE_VPU), 1)
OBJS += $(CSMCORE_SRC_DIR)/csm_vpu.o
endif

OBJS += $(CSMCORE_SRC_DIR)/csmcore_security_channel_emulator.o \
	$(CSMCORE_SRC_DIR)/csm_ta_emulator.o

OBJS += $(CSMCORE_OBJ_DIR)/csmcore_main.o \
	$(CSMCORE_OBJ_DIR)/csmcore_command.o \
	$(CSMCORE_OBJ_DIR)/csmcore_async_command.o \
	$(CSMCORE_OBJ_DIR)/csmcore_db.o \
	$(CSMCORE_OBJ_DIR)/csmcore_debug.o \
	$(CSMCORE_OBJ_DIR)/csmcore_event.o \
	$(CSMCORE_OBJ_DIR)/csmcore_heap.o \
	$(CSMCORE_OBJ_DIR)/csmcore_mmu.o \
	$(CSMCORE_OBJ_DIR)/csmcore_video_memory.o \
	$(CSMCORE_OBJ_DIR)/csmcore_power.o \
	$(CSMCORE_OBJ_DIR)/csmcore_security_v1.o

OBJS += $(CSMCORE_OBJ_DIR)/csmcore_context.o \
	$(CSMCORE_OBJ_DIR)/csmcore_hardware.o

OBJS += $(CSMCORE_OBJ_DIR)/csm_ta.o \
	$(CSMCORE_OBJ_DIR)/csm_ta_hardware.o \
	$(CSMCORE_OBJ_DIR)/csm_ta_mmu.o

OBJS += $(CSMCORE_OBJ_DIR)/csmcore_recorder.o

csmcore-objs = $(OBJS)

obj-$(CONFIG_GPU_709_CSMCORE)	+= csmcore.o
