# GSP vGPU-IO Driver Makefile

obj-m += gsp-vgpu.o

gsp-vgpu-y := \
    core/gsp_core.o \
    rpc/gsp_rpc.o \
    vf/gsp_vf.o \
    bar/gsp_bar.o \
    wpr/gsp_wpr.o \
    migration/gsp_migration.o \
    debugfs/gsp_debugfs.o

ccflags-y += -I$(src)/include
ccflags-y += -I$(src)/../kernel/include

# Build against the kernel source
KDIR ?= /lib/modules/$(shell uname -r)/build

all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
	$(MAKE) -C $(KDIR) M=$(PWD) clean

install:
	$(MAKE) -C $(KDIR) M=$(PWD) modules_install

load: all
	sudo insmod gsp-vgpu.ko firmware_name=gsp-570.144.fwimage.bin

unload:
	sudo rmmod gsp-vgpu

test: all load
	@echo "Driver loaded, checking status..."
	sleep 2
	dmesg -T | tail -20
	@echo "Checking debugfs..."
	ls -la /sys/kernel/debug/gsp-vgpu/ 2>/dev/null || echo "Debugfs not available"
	@echo "Checking device nodes..."
	ls -la /dev/gsp-vgpu* 2>/dev/null || echo "No device nodes"

.PHONY: all clean install load unload test