CONFIG_GPU_ICUBE ?= m
SRC_DIR=src
OBJ_DIR=objs/arm64

# 放在内核编译时，需前缀$(srctree)
ifneq ("$(srctree)", ".")
FULL_ICUBE_PATH ?= $(srctree)/$(src)
else
FULL_ICUBE_PATH ?= $(src)
endif


quiet_cmd_xxd=xxd $@
cmd_xxd=xxd -r $< $@

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

%.o: %.o.hex
	$(call cmd_xxd)

DRIVER_DATE ?= `date "+%Y%m%d-%H:%M"`
DRIVER_MAJOR ?= 3
DRIVER_MINOR ?= 2
DRIVER_PATCHLEVEL ?= 1

#-DNEW_MEM_REGION \
#-DCONFIG_LOW_POWER \

ccflags-y := \
	-Werror \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/inc \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/mm \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/kms \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/kms/icube_hdmib \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/kms/icubedp \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/kms/hdmi \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/kms/i2c \
	-DDRIVER_DATE=\"$(DRIVER_DATE)\" \
	-DDRIVER_MAJOR=$(DRIVER_MAJOR) \
	-DDRIVER_MINOR=$(DRIVER_MINOR) \
	-DDRIVER_PATCHLEVEL=$(DRIVER_PATCHLEVEL) \
	-DCONFIG_ICUBEDP_CURSOR \
	-DCONFIG_ENABLE_DDCCI \
	-DRAM_BACKUP=1 \
	-DCONFIG_ENABLE_EDMA \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/soc/dma \
	-DCONFIG_HAS_G3D \
	-I$(FULL_ICUBE_PATH)/$(SRC_DIR)/3d/icubeg3d \
	-DCONFIG_ARCH_ARM64

OBJS := \
	$(SRC_DIR)/icube_drv.o \
	$(SRC_DIR)/icube_debugfs.o \
	$(SRC_DIR)/icube_log.o \
	$(SRC_DIR)/mm/icube_mm.o \
	$(SRC_DIR)/mm/icube_ddr.o \
	$(SRC_DIR)/mm/icube_gem.o \
	$(SRC_DIR)/soc/icube_sys.o \
	$(SRC_DIR)/soc/icube_isr.o \
	$(SRC_DIR)/soc/icube_hw.o \
	$(SRC_DIR)/soc/icube_cmu.o \
	$(SRC_DIR)/soc/icube_clocks.o \
	$(SRC_DIR)/soc/icube_reset.o \
	$(SRC_DIR)/soc/icube_pwm.o \
	$(SRC_DIR)/soc/dma/virt-dma.o \
	$(SRC_DIR)/soc/dma/icube-edma-pcie.o \
	$(SRC_DIR)/soc/dma/icube-edma-core.o \
	$(SRC_DIR)/soc/dma/icube-edma-v0-core.o \
	$(SRC_DIR)/soc/dma/icube_dma_api.o \
	$(SRC_DIR)/soc/dma/icube_dma_job.o \
	$(SRC_DIR)/kms/icube_kms.o \
	$(SRC_DIR)/kms/icube_fbdev.o \
	$(SRC_DIR)/kms/icubedp/icubedp_drv.o \
	$(SRC_DIR)/kms/icubedp/icubedp_hw.o \
	$(SRC_DIR)/kms/icubedp/icubedp_planes.o \
	$(SRC_DIR)/kms/icubedp/icubedp_crtc.o \
	$(SRC_DIR)/kms/icubedp/icubedp_cursor.o \
	$(SRC_DIR)/kms/i2c/i2c-icube-platdrv.o \
	$(SRC_DIR)/kms/i2c/i2c-icube-master.o \
	$(SRC_DIR)/kms/i2c/i2c-icube-recover.o \
	$(SRC_DIR)/kms/i2c/i2c-icube-common.o \
	$(SRC_DIR)/kms/hdmi/icubehdmi-encoder.o \
	$(SRC_DIR)/kms/hdmi/icubehdmi.o \
	$(SRC_DIR)/kms/hdmi/icubehdmi-ahb-audio.o \
	$(SRC_DIR)/icube_selftest.o

OBJS += \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JEYEGMAK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JEYUGMIK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JEZEGMQK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JEZUGMYK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JE2EGNAK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JE2UGNIK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JE3EGNQK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JE3UGNYK.o \
	$(OBJ_DIR)/3d/icubeg3d/icubeg3d_JE4EGOAK.o

icubegpu-objs = $(OBJS)
obj-$(CONFIG_GPU_ICUBE) += icubegpu.o
