Blob Blame History Raw
From cd80370722f050f15cbeae121584853fbe44949b Mon Sep 17 00:00:00 2001
From: Tom Rix <trix@redhat.com>
Date: Wed, 13 May 2020 15:06:40 -0400
Subject: [PATCH 2/2] Add support for public dfl driver to fpgaport

The ioctl's are different and the data passed is an int.

Signed-off-by: Tom Rix <trix@redhat.com>
---
 tools/fpgaport/fpgaport | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/tools/fpgaport/fpgaport b/tools/fpgaport/fpgaport
index 2f707183..cf133c98 100755
--- a/tools/fpgaport/fpgaport
+++ b/tools/fpgaport/fpgaport
@@ -27,8 +27,12 @@
 
 import fcntl, os, sys, argparse, stat, struct
 
+# Intel driver
 FPGA_FME_PORT_ASSIGN = 0xB582
 FPGA_FME_PORT_RELEASE = 0xB581
+# DFL driver
+DFL_FME_PORT_ASSIGN = 0x4004B682
+DFL_FME_PORT_RELEASE = 0x4004B681
 
 if __name__ == "__main__":
 
@@ -51,18 +55,27 @@ if __name__ == "__main__":
 
 	# open FPGA device
 	try:
-		f = open(args.device, "rw")
+		f = open(args.device, "w")
 	except Exception as e:
 		print("open() failed:", e)
 		sys.exit(1)
 
 	# send IOCTL
-	ioctl_data = struct.pack('III', 12, 0, args.port)
+	if (args.device.find("intel-fpga-fme") != -1):
+		ioctl_data = struct.pack('III', 12, 0, args.port)
+	else:
+		ioctl_data = struct.pack('I', args.port)
 	try:
 		if args.action == 'assign':
-			ret = fcntl.ioctl(f, FPGA_FME_PORT_ASSIGN, ioctl_data)
+			if (args.device.find("intel-fpga-fme") != -1):
+				ret = fcntl.ioctl(f, FPGA_FME_PORT_ASSIGN, ioctl_data)
+			else:
+				ret = fcntl.ioctl(f, DFL_FME_PORT_ASSIGN, ioctl_data)
 		else:
-			ret = fcntl.ioctl(f, FPGA_FME_PORT_RELEASE, ioctl_data)
+			if (args.device.find("intel-fpga-fme") != -1):
+				ret = fcntl.ioctl(f, FPGA_FME_PORT_RELEASE, ioctl_data)
+			else:
+				ret = fcntl.ioctl(f, DFL_FME_PORT_RELEASE, ioctl_data)
 	except Exception as e:
 		print("ioctl() failed:", e)
 		f.close()
-- 
2.18.2