From f39f45c52bf0e399c8e0d3de8a99296d8761e34b Mon Sep 17 00:00:00 2001 From: Packit Date: Sep 07 2020 11:42:39 +0000 Subject: Apply patch 0001-Reinclude-fpgaport-in-tools.patch patch_name: 0001-Reinclude-fpgaport-in-tools.patch present_in_specfile: true --- diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 9674af0..d4b5503 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -31,6 +31,7 @@ opae_add_subdirectory(libboard/board_dc) opae_add_subdirectory(fpgaconf) opae_add_subdirectory(fpgainfo) opae_add_subdirectory(fpgametrics) +opae_add_subdirectory(fpgaport) # extra opae_add_subdirectory(extra/userclk) diff --git a/tools/fpgaport/CMakeLists.txt b/tools/fpgaport/CMakeLists.txt new file mode 100644 index 0000000..cb16c8e --- /dev/null +++ b/tools/fpgaport/CMakeLists.txt @@ -0,0 +1,29 @@ +## Copyright(c) 2017, Intel Corporation +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are met: +## +## * Redistributions of source code must retain the above copyright notice, +## this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright notice, +## this list of conditions and the following disclaimer in the documentation +## and/or other materials provided with the distribution. +## * Neither the name of Intel Corporation nor the names of its contributors +## may be used to endorse or promote products derived from this software +## without specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +## POSSIBILITY OF SUCH DAMAGE. + +install(PROGRAMS fpgaport + DESTINATION bin + COMPONENT toolfpgaport) diff --git a/tools/fpgaport/fpgaport b/tools/fpgaport/fpgaport new file mode 100755 index 0000000..2f70718 --- /dev/null +++ b/tools/fpgaport/fpgaport @@ -0,0 +1,72 @@ +#! /usr/bin/python3 +# Copyright(c) 2017, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import fcntl, os, sys, argparse, stat, struct + +FPGA_FME_PORT_ASSIGN = 0xB582 +FPGA_FME_PORT_RELEASE = 0xB581 + +if __name__ == "__main__": + + # parse command line arguments + parser = argparse.ArgumentParser() + parser.add_argument('action', help = 'action to perform', action = 'store', choices = ['assign', 'release']) + parser.add_argument('device', help = 'the FPGA (FME) device') + parser.add_argument('port', type = int, help = 'the number of the port') + + args = parser.parse_args() + + # check device file + try: + mode = os.stat(args.device).st_mode + if not stat.S_ISCHR(mode): + print( args.device, "is not a device file.") + except Exception as e: + print("Couldn't open", args.device, ":", e) + sys.exit(1) + + # open FPGA device + try: + f = open(args.device, "rw") + except Exception as e: + print("open() failed:", e) + sys.exit(1) + + # send IOCTL + ioctl_data = struct.pack('III', 12, 0, args.port) + try: + if args.action == 'assign': + ret = fcntl.ioctl(f, FPGA_FME_PORT_ASSIGN, ioctl_data) + else: + ret = fcntl.ioctl(f, FPGA_FME_PORT_RELEASE, ioctl_data) + except Exception as e: + print("ioctl() failed:", e) + f.close() + sys.exit(1) + + # close FPGA device + f.close()