########################################################################### ###
#@File           Makefile
#@Title
#@Copyright     Copyright (c) Innosilicon Technology Ltd. All Rights Reserved
#@Description
#@License       Dual MIT/GPLv2
#
# The contents of this file are subject to the MIT license as set out below.
#
# 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.
#
# Alternatively, the contents of this file may be used under the terms of
# the GNU General Public License Version 2 ("GPL") in which case the provisions
# of GPL are applicable instead of those above.
#
# If you wish to allow use of your version of this file only under the terms of
# GPL, and not to allow others to use your version of this file under the terms
# of the MIT license, indicate your decision by deleting the provisions above
# and replace them with the notice and other provisions required by GPL as set
# out in the file called "GPL-COPYING" included in this distribution. If you do
# not delete the provisions above, a recipient may use your version of this file
# under the terms of either the MIT license or GPL.
#
# This License is also included in this distribution in the file called
# "MIT-COPYING".
#
# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) 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; AND (B) 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.
### ###########################################################################
#include $(INNOGPU_PRO_PATH)/innosrvkm/display/Makefile

INNOSRVKM_INCLUDE := \
	-I$(INNOGPU_PRO_PATH)/innogpu/osfunc \
	-I$(INNOGPU_PRO_PATH)/innogpu/pcie \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/include/public \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/include/volcanic \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/include/drm \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/hwdefs \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/hwdefs/volcanic \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/hwdefs/volcanic/km \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/hwdefs/volcanic/km/configs \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/common \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/devices \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/devices/volcanic \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/env/linux \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/include/volcanic \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/shared \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/shared/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/shared/common \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/system \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/system/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/system/volcanic/include \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/kernel_compatibility \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/cache_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/cmm_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/devicememhistory_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/di_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/dma_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/dmabuf_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/htbuffer_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/mm_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/pvrtl_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxcmp_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxfwdbg_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxhwperf_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxkicksync_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxray_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxregconfig_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxta3d_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxtimerquery_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxtq2_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/srvcore_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/sync_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/synctracking_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/innogpu_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/services/server/include
# generated/volcanic



INNOSRVKM_OBJS := \
	bridge/cache_bridge/client_cache_direct_bridge.o \
	bridge/cache_bridge/server_cache_bridge.o \
	bridge/cmm_bridge/server_cmm_bridge.o \
	bridge/devicememhistory_bridge/client_devicememhistory_direct_bridge.o \
	bridge/devicememhistory_bridge/server_devicememhistory_bridge.o \
	bridge/di_bridge/server_di_bridge.o \
	bridge/dma_bridge/server_dma_bridge.o \
	bridge/dmabuf_bridge/server_dmabuf_bridge.o \
	bridge/htbuffer_bridge/client_htbuffer_direct_bridge.o \
	bridge/htbuffer_bridge/server_htbuffer_bridge.o \
	bridge/mm_bridge/client_mm_direct_bridge.o \
	bridge/mm_bridge/server_mm_bridge.o \
	bridge/pvrtl_bridge/client_pvrtl_direct_bridge.o \
	bridge/pvrtl_bridge/server_pvrtl_bridge.o \
	bridge/rgxcmp_bridge/server_rgxcmp_bridge.o \
	bridge/rgxfwdbg_bridge/server_rgxfwdbg_bridge.o \
	bridge/rgxhwperf_bridge/server_rgxhwperf_bridge.o \
	bridge/rgxkicksync_bridge/server_rgxkicksync_bridge.o \
	bridge/rgxray_bridge/server_rgxray_bridge.o \
	bridge/rgxregconfig_bridge/server_rgxregconfig_bridge.o \
	bridge/rgxta3d_bridge/server_rgxta3d_bridge.o \
	bridge/rgxtimerquery_bridge/server_rgxtimerquery_bridge.o \
	bridge/rgxtq2_bridge/server_rgxtq2_bridge.o \
	bridge/srvcore_bridge/server_srvcore_bridge.o \
	bridge/sync_bridge/client_sync_direct_bridge.o \
	bridge/sync_bridge/server_sync_bridge.o \
	bridge/synctracking_bridge/client_synctracking_direct_bridge.o \
	bridge/synctracking_bridge/server_synctracking_bridge.o \
	bridge/innogpu_bridge/server_innogpu_bridge.o \
	services/server/common/cache_km.o \
	services/server/common/connection_server.o \
	services/server/common/debug_common.o \
 	services/server/env/linux/pvr_fence.o \
	services/server/common/devicemem_heapcfg.o \
	services/server/common/devicemem_history_server.o \
	services/server/common/devicemem_server.o \
	services/server/common/di_impl_brg.o \
	services/server/common/di_server.o \
	services/server/common/dma_km.o \
	services/server/common/handle.o \
	services/server/common/htb_debug.o \
	services/server/common/htbserver.o \
	services/server/common/info_page_km.o \
	services/server/common/lists.o \
	services/server/common/mmu_common.o \
	services/server/common/physheap.o \
	services/server/common/physmem.o \
	services/server/common/physmem_hostmem.o \
	services/server/common/physmem_invlma.o \
	services/server/common/physmem_lma.o \
	services/server/common/physmem_osgtt_linux.o \
	services/server/common/pmr.o \
	services/server/common/power.o \
	services/server/common/process_stats.o \
	services/server/common/pvr_notifier.o \
	services/server/common/pvrsrv_bridge_init.o \
	services/server/common/pvrsrv.o \
	services/server/common/pvrsrv_pool.o \
	services/server/common/srvcore.o \
	services/server/common/sync_checkpoint.o \
	services/server/common/sync_server.o \
	services/server/common/tlintern.o \
	services/server/common/tlserver.o \
	services/server/common/tlstream.o \
	services/server/common/vmm_pvz_client.o \
	services/server/common/vmm_pvz_server.o \
	services/server/common/vz_vmm_pvz.o \
	services/server/common/vz_vmm_vm.o \
	services/server/devices/rgxcompute.o \
	services/server/devices/volcanic/rgxdebug.o \
	services/server/devices/volcanic/rgxfwutils.o \
	services/server/devices/volcanic/rgxhwperf.o \
	services/server/devices/volcanic/rgxinit.o \
	services/server/devices/volcanic/rgxlayer_impl.o \
	services/server/devices/volcanic/rgxmmuinit.o \
	services/server/devices/volcanic/rgxmulticore.o \
	services/server/devices/volcanic/rgxpower.o \
	services/server/devices/volcanic/rgxray.o \
	services/server/devices/volcanic/rgxsrvinit.o \
	services/server/devices/volcanic/rgxstartstop.o \
	services/server/devices/volcanic/rgxta3d.o \
	services/server/devices/rgxtdmtransfer.o \
	services/server/devices/rgxbreakpoint.o \
	services/server/devices/rgxbvnc.o \
	services/server/devices/rgxccb.o \
	services/server/devices/rgxfwdbg.o \
	services/server/devices/rgxfwimageutils.o \
	services/server/devices/rgxfwtrace_strings.o \
	services/server/devices/rgxhwperf_common.o \
	services/server/devices/rgxkicksync.o \
	services/server/devices/rgxmem.o \
	services/server/devices/rgxregconfig.o \
	services/server/devices/rgxshader.o \
	services/server/devices/rgxsyncutils.o \
	services/server/devices/rgxtimecorr.o \
	services/server/devices/rgx_bridge_init.o \
	services/server/devices/rgxtimerquery.o \
	services/server/devices/rgxutils.o \
	services/server/devices/rgxgpuutil.o \
	services/server/env/linux/inno_trace.o \
	services/server/env/linux/inno_srvkm.o \
	services/server/env/linux/allocmem.o \
	services/server/env/linux/event.o \
	services/server/env/linux/fwload.o \
	services/server/env/linux/handle_idr.o \
	services/server/env/linux/km_apphint.o \
	services/server/env/linux/inno_apphint.o \
	services/server/env/linux/module_common.o \
	services/server/env/linux/osconnection_server.o \
	services/server/env/linux/osfunc.o \
	services/server/env/linux/osmmap_stub.o \
	services/server/env/linux/inno_dma_buf.o \
	services/server/env/linux/physmem_dmabuf.o \
	services/server/env/linux/physmem_osmem_linux.o \
	services/server/env/linux/physmem_test.o \
	services/server/env/linux/inno_pmr.o \
	services/server/env/linux/pmr_os.o \
	services/server/env/linux/pvr_bridge_k.o \
	services/server/env/linux/pvr_buffer_sync.o \
	services/server/env/linux/pvr_debug.o \
	services/server/env/linux/inno_debugfs.o \
	services/server/env/linux/pvr_debugfs.o \
	services/server/env/linux/pvr_procfs.o \
	services/server/env/linux/pvr_drm.o \
	services/server/env/linux/pvr_platform_drv.o \
	services/shared/common/devicemem.o \
	services/shared/common/devicemem_utils.o \
	services/shared/common/hash.o \
	services/shared/common/htbuffer.o \
	services/shared/common/mem_utils.o \
	services/shared/common/pvrsrv_error.o \
	services/shared/common/ra.o \
	services/shared/common/sync.o \
	services/shared/common/tlclient.o \
	services/shared/common/uniq_key_splay_tree.o \
	services/system/common/sysconfig_cmn.o \
	services/system/common/env/linux/interrupt_support.o \
	services/system/common/env/linux/pci_support.o \
	services/system/volcanic/common/vmm_type_stub.o \
	services/system/volcanic/common/env/linux/dma_support.o

ifeq ($(CONFIG_DRM_INNO_DPU),y)
	INNODPU_DRM_OBJS := \
		innodpu_compatibility.o \
		innodpu_dpu.o \
		innodpu_audio_api.o \
		innodpu_drm_drv.o \
		innodpu_drm_pm.o \
		innodpu_drm_fb.o \
		innodpu_drm_gem.o \
		innodpu_drm_modeset.o \
		innodpu_drm_debugfs.o \
		innodpu_module_param.o \

	# connector
	INNODPU_DRM_OBJS += \
		connector/innodpu_parse_edid.o \
		connector/innodpu_connector.o \
		connector/innodpu_dp.o \
		connector/innodpu_dp_audio_api.o \
		connector/innodpu_dp_common.o \
		connector/innodpu_hdmi.o \
		connector/innodpu_hdmi_audio_api.o \
		connector/innodpu_hdmi_common.o \
		connector/chip/genfunc/genv1_soc_hdmi_clk.o \
		connector/chip/genfunc/genv2_soc_hdmi_clk.o \
		connector/chip/g0_soc_dp.o \
		connector/chip/g0_soc_hdmi.o \
		connector/chip/g0m_soc_dp.o \
		connector/chip/g0m_soc_hdmi.o \
		connector/chip/g0m_soc_vga.o \
		connector/chip/g1_soc_dp.o \
		connector/chip/g1_soc_hdmi.o \
		connector/chip/g1p_soc_dp.o \
		connector/chip/g1p_soc_hdmi.o \
		connector/chip/g1p_soc_vga.o \
		connector/chip/gen_soc_hdmi.o \
		connector/innodpu_hdmi_debugfs.o \
		connector/innodpu_dp_debugfs.o \
		connector/innodpu_vga_debugfs.o \
		connector/innodpu_vga.o \
		connector/innodpu_vkms.o \
		connector/innodpu_panel_backlight.o \
		connector/innodpu_panel_pwr.o \
		connector/innodpu_common_drm_panel.o

	# pdp0
	INNODPU_DRM_OBJS += \
		pdp0/pdp0_crtc.o \
		pdp0/pdp0_drv.o \
		pdp0/pdp0_hw.o \
		pdp0/pdp0_common.o \
		pdp0/pdp0_plane.o \
		pdp0/chip/g0_pdp0_hw.o \
		pdp0/chip/g0m_pdp0_hw.o \
		pdp0/chip/g1p_pdp0_hw.o \
		pdp0/chip/g1_pdp0_hw.o

	INNODPU_DRM_OBJS := $(addprefix display/, $(INNODPU_DRM_OBJS))

	INNOSRVKM_INCLUDE += \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display/pdp0 \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display/connector \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display/connector/chip
	INNOSRVKM_OBJS += $(INNODPU_DRM_OBJS)
	INNOSRVKM_OBJS += services/server/env/linux/innogpu_drm.o

ifeq ($(CONFIG_DRM_INNO_AUDIO),y)
	INNOSRVKM_INCLUDE += -I$(INNOGPU_PRO_PATH)/innosrvkm/display/innoaudio \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display/innoaudio/chip \
		-I$(INNOGPU_PRO_PATH)/innosrvkm/display/innoaudio/osfunc \

	INNOAUDIO_OBJS += \
		display/innoaudio/innoaudio_drv.o \
		display/innoaudio/innoaudio_print.o \
		display/innoaudio/chip/g0_soc_audio.o \
		display/innoaudio/chip/g0m_soc_audio.o \
		display/innoaudio/chip/g1_soc_audio.o \
		display/innoaudio/chip/g1p_soc_audio.o \
		display/innoaudio/chip/innoaudio_chip_common.o \
		display/innoaudio/osfunc/inno_audio.o
	INNOSRVKM_OBJS += $(INNOAUDIO_OBJS)
endif  #($(CONFIG_DRM_INNO_AUDIO),y)

else
INNOSRVKM_OBJS += services/server/env/linux/innogpu_drm_without_dpu.o
endif

ifeq ($(CONFIG_DRM_INNO_POWER),y)
INNOSRVKM_OBJS += \
	services/server/env/linux/pvr_dvfs_device.o
endif

ifeq ($(PVR_BUILD_DIR),android_container)
INNOSRVKM_INCLUDE += \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/innoion
INNOSRVKM_OBJS += \
	services/server/env/linux/pvr_sync_ioctl_dev.o
else
ifeq ($(SUPPORT_FALLBACK_FENCE_SYNC),1)
else
INNOSRVKM_OBJS += services/server/env/linux/pvr_sync_ioctl_drm.o
endif
endif

ifeq ($(SUPPORT_FALLBACK_FENCE_SYNC),1)
INNOSRVKM_OBJS += services/server/common/sync_fallback_server.o \
 services/server/env/linux/ossecure_export.o \
 generated/volcanic/syncfallback_bridge/server_syncfallback_bridge.o
else
INNOSRVKM_OBJS += \
 services/server/env/linux/pvr_sync_file.o \
 services/server/env/linux/pvr_counting_timeline.o \
 services/server/env/linux/pvr_sw_fence.o \
 services/server/env/linux/pvr_sync_ioctl_common.o
endif


ifeq ($(PVRSRV_ENABLE_GPU_MEMORY_INFO),1)
INNOSRVKM_INCLUDE += -I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/ri_bridge
INNOSRVKM_OBJS += bridge/ri_bridge/server_ri_bridge.o \
	bridge/ri_bridge/client_ri_direct_bridge.o \
	services/server/common/ri_server.o
endif

ifeq ($(PDUMP),1)
INNOSRVKM_INCLUDE += \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/pdumpmm_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/pdumpctrl_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/pdump_bridge \
	-I$(INNOGPU_PRO_PATH)/innosrvkm/bridge/rgxpdump_bridge

INNOSRVKM_OBJS += \
	bridge/pdump_bridge/client_pdump_direct_bridge.o \
	bridge/pdump_bridge/server_pdump_bridge.o \
	bridge/pdumpctrl_bridge/client_pdumpctrl_direct_bridge.o \
	bridge/pdumpctrl_bridge/server_pdumpctrl_bridge.o \
	bridge/pdumpmm_bridge/client_pdumpmm_direct_bridge.o \
	bridge/pdumpmm_bridge/server_pdumpmm_bridge.o \
	bridge/rgxpdump_bridge/client_rgxpdump_direct_bridge.o \
	bridge/rgxpdump_bridge/server_rgxpdump_bridge.o \
	services/server/common/pdump_mmu.o \
	services/server/common/pdump_physmem.o \
	services/server/common/pdump_server.o \
	services/server/devices/volcanic/rgxpdump.o \
	services/shared/common/devicemem_pdump.o
endif

ifeq ($(DISPLAY_CONTROLLER),drm_nulldisp)
INNOSRVKM_OBJS += \
	 services/shared/common/mem_utils.o
endif

INNOSRVKM_OBJS += services/server/env/linux/trace_events.o \
				  services/server/env/linux/pvr_gputrace.o

ifeq ($(SUPPORT_DMA_TRANSFER),1)
	INNOSRVKM_OBJS += services/server/common/dma_km.o \
		generated/volcanic/dma_bridge/server_dma_bridge.o
endif

ifeq ($(CONFIG_X86),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_x86.o
else ifeq ($(CONFIG_ARM),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_arm.o
else ifeq ($(CONFIG_ARM64),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_arm64.o
	INNOSRVKM_OBJS += quirks/fixup_alignment.o
else ifeq ($(CONFIG_LOONGARCH),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_loongarch.o
else ifeq ($(CONFIG_RISCV),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_riscv.o
else ifeq ($(CONFIG_SW64),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_sw_64.o
else ifeq ($(CONFIG_MIPS),y)
	INNOSRVKM_OBJS += services/server/env/linux/osfunc_mips.o
endif

ifeq ($(PVR_BUILD_DIR), android_container)
  ifeq ($(CONFIG_DEBUG_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_debugfs.o
  else ifeq ($(CONFIG_PROC_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_procfs.o
  endif
else ifeq ($(SUPPORT_ANDROID_PLATFORM),1)
  ifeq ($(CONFIG_PROC_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_procfs.o
  else ifeq ($(CONFIG_DEBUG_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_debugfs.o
  endif
else
  ifeq ($(CONFIG_DEBUG_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_debugfs.o
  else ifeq ($(CONFIG_PROC_FS),y)
    INNOSRVKM_OBJS += services/server/env/linux/pvr_procfs.o
  endif
endif

#	-I$(src)/generated/volcanic/syncfallback_bridge \
#	generated/volcanic/syncfallback_bridge/server_syncfallback_bridge.o \
#	services/server/common/sync_fallback_server.o \
#	services/server/devices/rgxworkest.o \
#	services/server/devices/rgxpdvfs.o \
#	services/shared/common/devicememx_pdump.o \
#	services/system/volcanic/rgx_innogpu/fpga.o \

ifeq ($(PVR_BUILD_DIR),nohw_linux)
  INNOSRVKM_INCLUDE += -I$(INNOGPU_PRO_PATH)/innosrvkm/services/system/volcanic/rgx_nohw
  INNOSRVKM_OBJS += services/system/volcanic/rgx_nohw/sysconfig.o
  innosrvkm_nohw-y := $(addprefix innosrvkm/, $(INNOSRVKM_OBJS))
  innosrvkm_nohw-y += innogpu/osfunc/inno_task.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_cpumask.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_mm.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_misc.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_timer.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_lock.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_dma.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_drm.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_idr.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_firmware.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_uaccess.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_pci.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_mtrr.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_fence.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_interrupt.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_fs.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_plat_dev.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_math.o
  innosrvkm_nohw-y += innogpu/osfunc/inno_debug.o
  innosrvkm_nohw-y += innogpu/osfunc/kernel_compat.o
  obj-m += innosrvkm_nohw.o
else
  INNOSRVKM_INCLUDE += -I$(INNOGPU_PRO_PATH)/innosrvkm/services/system/volcanic/rgx_innogpu
  INNOSRVKM_OBJS += services/system/volcanic/rgx_innogpu/sysconfig.o
  INNOSRVKM_OBJS := $(addprefix innosrvkm/, $(INNOSRVKM_OBJS))
  ifeq ($(SEPARATE_BUILD),y)
	innosrvkm-y := $(INNOSRVKM_OBJS)
	obj-m += innosrvkm.o
  else ifeq ($(CONFIG_DRM_INNO_SRVKM),y)
    INNOSRVKM := $(INNOSRVKM_OBJS)
  endif
endif
