From patchwork Thu Mar 30 12:08:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wu, Hao" X-Patchwork-Id: 9654059 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A827C60350 for ; Thu, 30 Mar 2017 12:17:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 978EA2858C for ; Thu, 30 Mar 2017 12:17:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8ADDC2858F; Thu, 30 Mar 2017 12:17:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2892D2858D for ; Thu, 30 Mar 2017 12:17:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932921AbdC3MQM (ORCPT ); Thu, 30 Mar 2017 08:16:12 -0400 Received: from mga02.intel.com ([134.134.136.20]:12144 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933806AbdC3MP6 (ORCPT ); Thu, 30 Mar 2017 08:15:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490876157; x=1522412157; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=0KmISSNu+/AA/bIiw1jvCDYSsVll3NjoTKim07I3azE=; b=u6AqeK7EbYH/aXb5ifoEXRVzrDgRizmlR3CXzkXVyXL3QHq6V9kZaL0d VGYg8Nq8ZHip1oAvg0UVIhPw2HF3lA==; Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Mar 2017 05:15:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,246,1486454400"; d="scan'208";a="840018271" Received: from hao-dev.bj.intel.com ([10.238.157.61]) by FMSMGA003.fm.intel.com with ESMTP; 30 Mar 2017 05:15:54 -0700 From: Wu Hao To: atull@kernel.org, moritz.fischer@ettus.com, linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org Cc: luwei.kang@intel.com, yi.z.zhang@intel.com, hao.wu@intel.com, Tim Whisonant , Enno Luebbers , Shiva Rao , Christopher Rauer , Xiao Guangrong Subject: [PATCH 10/16] fpga: intel: fme: add FPGA_GET_API_VERSION/CHECK_EXTENSION ioctls support Date: Thu, 30 Mar 2017 20:08:10 +0800 Message-Id: <1490875696-15145-11-git-send-email-hao.wu@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490875696-15145-1-git-send-email-hao.wu@intel.com> References: <1490875696-15145-1-git-send-email-hao.wu@intel.com> Sender: linux-fpga-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fpga@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP FPGA_GET_API_VERSION and 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 Intel FPGA Management Engine (FME) driver. Signed-off-by: Tim Whisonant Signed-off-by: Enno Luebbers Signed-off-by: Shiva Rao Signed-off-by: Christopher Rauer Signed-off-by: Xiao Guangrong Signed-off-by: Wu Hao --- Documentation/ioctl/ioctl-number.txt | 1 + drivers/fpga/intel/fme-main.c | 12 +++++++++ include/uapi/linux/intel-fpga.h | 52 ++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 include/uapi/linux/intel-fpga.h diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 08244be..462f4a5 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt @@ -322,6 +322,7 @@ Code Seq#(hex) Include File Comments 0xB3 00 linux/mmc/ioctl.h 0xB4 00-0F linux/gpio.h 0xB5 00-0F uapi/linux/rpmsg.h +0xB6 all linux/intel-fpga.h 0xC0 00-0F linux/usb/iowarrior.h 0xCA 00-0F uapi/misc/cxl.h 0xCA 80-8F uapi/scsi/cxlflash_ioctl.h diff --git a/drivers/fpga/intel/fme-main.c b/drivers/fpga/intel/fme-main.c index a7c69fc..36d0c4c 100644 --- a/drivers/fpga/intel/fme-main.c +++ b/drivers/fpga/intel/fme-main.c @@ -20,6 +20,7 @@ #include #include +#include #include "feature-dev.h" @@ -104,6 +105,13 @@ static struct feature_driver fme_feature_drvs[] = { }, }; +static long fme_ioctl_check_extension(struct feature_platform_data *pdata, + unsigned long arg) +{ + /* No extension support for now */ + return 0; +} + static int fme_open(struct inode *inode, struct file *filp) { struct platform_device *fdev = fpga_inode_to_feature_dev(inode); @@ -142,6 +150,10 @@ static long fme_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) dev_dbg(&pdev->dev, "%s cmd 0x%x\n", __func__, cmd); switch (cmd) { + case FPGA_GET_API_VERSION: + return FPGA_API_VERSION; + case FPGA_CHECK_EXTENSION: + return fme_ioctl_check_extension(pdata, arg); default: /* * Let sub-feature's ioctl function to handle the cmd diff --git a/include/uapi/linux/intel-fpga.h b/include/uapi/linux/intel-fpga.h new file mode 100644 index 0000000..992e556 --- /dev/null +++ b/include/uapi/linux/intel-fpga.h @@ -0,0 +1,52 @@ +/* + * Header File for Intel FPGA User API + * + * Copyright (C) 2017 Intel Corporation, Inc. + * + * Authors: + * Kang Luwei + * Zhang Yi + * Wu Hao + * Xiao Guangrong + * + * This work is licensed under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. See the + * LICENSE.BSD file under drivers/fpga/intel for the BSD license and see + * the COPYING file in the top-level directory for the GPLv2 license. + */ + +#ifndef _UAPI_LINUX_INTEL_FPGA_H +#define _UAPI_LINUX_INTEL_FPGA_H + +#define FPGA_API_VERSION 0 + +/* + * The IOCTL interface for Intel FPGA is designed for extensibility by + * embedding the structure length (argsz) and flags into structures passed + * between kernel and userspace. This design referenced the VFIO IOCTL + * interface (include/uapi/linux/vfio.h). + */ + +#define FPGA_MAGIC 0xB6 + +#define FPGA_BASE 0 + +/** + * FPGA_GET_API_VERSION - _IO(FPGA_MAGIC, FPGA_BASE + 0) + * + * Report the version of the driver API. + * Return: Driver API Version. + */ + +#define FPGA_GET_API_VERSION _IO(FPGA_MAGIC, FPGA_BASE + 0) + +/** + * FPGA_CHECK_EXTENSION - _IO(FPGA_MAGIC, FPGA_BASE + 1) + * + * Check whether an extension is supported. + * Return: 0 if not supported, otherwise the extension is supported. + */ + +#define FPGA_CHECK_EXTENSION _IO(FPGA_MAGIC, FPGA_BASE + 1) + +#endif /* _UAPI_INTEL_FPGA_H */