History

fpga: dfl: fme: add DFL_FPGA_GET_API_VERSION/CHECK_EXTENSION ioctls support

DFL_FPGA_GET_API_VERSION and DFL_FPGA_CHECK_EXTENSION ioctls are common ones which need to be supported by all feature devices drivers including FME and AFU. Userspace application can use these ioctl interfaces to get the API info and check if specific extension is supported or not in current driver. This patch implements above 2 ioctls in FPGA Management Engine (FME) driver.

Wu Hao committed 8 years ago

Commit 620e1901 parent 0a27ff23 files · +63 −0Browse files

Unified · Split

3 files
  1. Documentation/ioctl/ioctl-number.txt +1 −0
  2. drivers/fpga/dfl-fme-main.c +12 −0
  3. include/uapi/linux/fpga-dfl.h +50 −0
Documentation/ioctl/ioctl-number.txt+1−0
@@ -322,6 +322,7 @@ Code Seq#(hex) Include File Comments · 321 unmodified lines
3220xB3 00 linux/mmc/ioctl.h3220xB3 00 linux/mmc/ioctl.h
3230xB4 00-0F linux/gpio.h <mailto:linux-gpio@vger.kernel.org>3230xB4 00-0F linux/gpio.h <mailto:linux-gpio@vger.kernel.org>
3240xB5 00-0F uapi/linux/rpmsg.h <mailto:linux-remoteproc@vger.kernel.org>3240xB5 00-0F uapi/linux/rpmsg.h <mailto:linux-remoteproc@vger.kernel.org>
3250xB6 all linux/fpga-dfl.h
3250xC0 00-0F linux/usb/iowarrior.h3260xC0 00-0F linux/usb/iowarrior.h
3260xCA 00-0F uapi/misc/cxl.h3270xCA 00-0F uapi/misc/cxl.h
3270xCA 10-2F uapi/misc/ocxl.h3280xCA 10-2F uapi/misc/ocxl.h
drivers/fpga/dfl-fme-main.c+12−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
16 16
17#include <linux/kernel.h>17#include <linux/kernel.h>
18#include <linux/module.h>18#include <linux/module.h>
19#include <linux/fpga-dfl.h>
19 20
20#include "dfl.h"21#include "dfl.h"
21 22
@@ -116,6 +117,13 @@ static struct dfl_feature_driver fme_feature_drvs[] = { · 94 unmodified lines
116 },117 },
117};118};
118 119
120static long fme_ioctl_check_extension(struct dfl_feature_platform_data *pdata,
121 unsigned long arg)
122{
123 /* No extension support for now */
124 return 0;
125}
126
119static int fme_open(struct inode *inode, struct file *filp)127static int fme_open(struct inode *inode, struct file *filp)
120{128{
121 struct platform_device *fdev = dfl_fpga_inode_to_feature_dev(inode);129 struct platform_device *fdev = dfl_fpga_inode_to_feature_dev(inode);
@@ -156,6 +164,10 @@ static long fme_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) · 34 unmodified lines
156 dev_dbg(&pdev->dev, "%s cmd 0x%x\n", __func__, cmd);164 dev_dbg(&pdev->dev, "%s cmd 0x%x\n", __func__, cmd);
157 165
158 switch (cmd) {166 switch (cmd) {
167 case DFL_FPGA_GET_API_VERSION:
168 return DFL_FPGA_API_VERSION;
169 case DFL_FPGA_CHECK_EXTENSION:
170 return fme_ioctl_check_extension(pdata, arg);
159 default:171 default:
160 /*172 /*
161 * Let sub-feature's ioctl function to handle the cmd.173 * Let sub-feature's ioctl function to handle the cmd.
include/uapi/linux/fpga-dfl.h+50−0
@@ -0,0 +1,50 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * Header File for FPGA DFL User API
4 *
5 * Copyright (C) 2017-2018 Intel Corporation, Inc.
6 *
7 * Authors:
8 * Kang Luwei <luwei.kang@intel.com>
9 * Zhang Yi <yi.z.zhang@intel.com>
10 * Wu Hao <hao.wu@intel.com>
11 * Xiao Guangrong <guangrong.xiao@linux.intel.com>
12 */
13
14#ifndef _UAPI_LINUX_FPGA_DFL_H
15#define _UAPI_LINUX_FPGA_DFL_H
16
17#include <linux/ioctl.h>
18
19#define DFL_FPGA_API_VERSION 0
20
21/*
22 * The IOCTL interface for DFL based FPGA is designed for extensibility by
23 * embedding the structure length (argsz) and flags into structures passed
24 * between kernel and userspace. This design referenced the VFIO IOCTL
25 * interface (include/uapi/linux/vfio.h).
26 */
27
28#define DFL_FPGA_MAGIC 0xB6
29
30#define DFL_FPGA_BASE 0
31
32/**
33 * DFL_FPGA_GET_API_VERSION - _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 0)
34 *
35 * Report the version of the driver API.
36 * Return: Driver API Version.
37 */
38
39#define DFL_FPGA_GET_API_VERSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 0)
40
41/**
42 * DFL_FPGA_CHECK_EXTENSION - _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 1)
43 *
44 * Check whether an extension is supported.
45 * Return: 0 if not supported, otherwise the extension is supported.
46 */
47
48#define DFL_FPGA_CHECK_EXTENSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 1)
49
50#endif /* _UAPI_LINUX_FPGA_DFL_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t