All of lore.kernel.org
 help / color / mirror / Atom feed
From: mgross@linux.intel.com
To: markgross@kernel.org, mgross@linux.intel.com, arnd@arndb.de,
	bp@suse.de, damien.lemoal@wdc.com, dragan.cvetic@xilinx.com,
	gregkh@linuxfoundation.org, corbet@lwn.net,
	palmerdabbelt@google.com, paul.walmsley@sifive.com,
	peng.fan@nxp.com, robh+dt@kernel.org, shawnguo@kernel.org,
	jassisinghbrar@gmail.com
Cc: linux-kernel@vger.kernel.org,
	Srikanth Thokala <srikanth.thokala@intel.com>
Subject: [PATCH v5 15/34] misc: xlink-pcie: Add XLink API interface
Date: Fri,  5 Feb 2021 14:51:45 -0800	[thread overview]
Message-ID: <20210205225204.32902-16-mgross@linux.intel.com> (raw)
In-Reply-To: <20210205225204.32902-1-mgross@linux.intel.com>

From: Srikanth Thokala <srikanth.thokala@intel.com>

Provide interface for XLink layer to interact with XLink PCIe transport
layer on both local host and remote host.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Mark Gross <mgross@linux.intel.com>
Signed-off-by: Mark Gross <mgross@linux.intel.com>
Signed-off-by: Srikanth Thokala <srikanth.thokala@intel.com>
---
 drivers/misc/xlink-pcie/common/interface.c   | 107 +++++++++++++++++++
 drivers/misc/xlink-pcie/local_host/Makefile  |   1 +
 drivers/misc/xlink-pcie/remote_host/Makefile |   1 +
 3 files changed, 109 insertions(+)
 create mode 100644 drivers/misc/xlink-pcie/common/interface.c

diff --git a/drivers/misc/xlink-pcie/common/interface.c b/drivers/misc/xlink-pcie/common/interface.c
new file mode 100644
index 000000000000..fcc69a940a4c
--- /dev/null
+++ b/drivers/misc/xlink-pcie/common/interface.c
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Intel Keem Bay XLink PCIe Driver
+ *
+ * Copyright (C) 2021 Intel Corporation
+ */
+
+#include <linux/xlink_drv_inf.h>
+
+#include "core.h"
+#include "xpcie.h"
+
+/* Define xpcie driver interface API */
+int xlink_pcie_get_device_list(u32 *sw_device_id_list, u32 *num_devices)
+{
+	if (!sw_device_id_list || !num_devices)
+		return -EINVAL;
+
+	*num_devices = intel_xpcie_get_device_num(sw_device_id_list);
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_get_device_list);
+
+int xlink_pcie_get_device_name(u32 sw_device_id, char *device_name,
+			       size_t name_size)
+{
+	if (!device_name)
+		return -EINVAL;
+
+	return intel_xpcie_get_device_name_by_id(sw_device_id,
+						 device_name, name_size);
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_get_device_name);
+
+int xlink_pcie_get_device_status(u32 sw_device_id, u32 *device_status)
+{
+	u32 status;
+	int rc;
+
+	if (!device_status)
+		return -EINVAL;
+
+	rc = intel_xpcie_get_device_status_by_id(sw_device_id, &status);
+	if (rc)
+		return rc;
+
+	switch (status) {
+	case XPCIE_STATUS_READY:
+	case XPCIE_STATUS_RUN:
+		*device_status = _XLINK_DEV_READY;
+		break;
+	case XPCIE_STATUS_ERROR:
+		*device_status = _XLINK_DEV_ERROR;
+		break;
+	case XPCIE_STATUS_RECOVERY:
+		*device_status = _XLINK_DEV_RECOVERY;
+		break;
+	case XPCIE_STATUS_OFF:
+		*device_status = _XLINK_DEV_OFF;
+		break;
+	default:
+		*device_status = _XLINK_DEV_BUSY;
+		break;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_get_device_status);
+
+int xlink_pcie_boot_device(u32 sw_device_id, const char *binary_name)
+{
+	return 0;
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_boot_device);
+
+int xlink_pcie_connect(u32 sw_device_id)
+{
+	return intel_xpcie_pci_connect_device(sw_device_id);
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_connect);
+
+int xlink_pcie_read(u32 sw_device_id, void *data, size_t *const size,
+		    u32 timeout)
+{
+	if (!data || !size)
+		return -EINVAL;
+
+	return intel_xpcie_pci_read(sw_device_id, data, size, timeout);
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_read);
+
+int xlink_pcie_write(u32 sw_device_id, void *data, size_t *const size,
+		     u32 timeout)
+{
+	if (!data || !size)
+		return -EINVAL;
+
+	return intel_xpcie_pci_write(sw_device_id, data, size, timeout);
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_write);
+
+int xlink_pcie_reset_device(u32 sw_device_id)
+{
+	return intel_xpcie_pci_reset_device(sw_device_id);
+}
+EXPORT_SYMBOL_GPL(xlink_pcie_reset_device);
diff --git a/drivers/misc/xlink-pcie/local_host/Makefile b/drivers/misc/xlink-pcie/local_host/Makefile
index 65df94c7e860..16bb1e7345ac 100644
--- a/drivers/misc/xlink-pcie/local_host/Makefile
+++ b/drivers/misc/xlink-pcie/local_host/Makefile
@@ -3,3 +3,4 @@ mxlk_ep-objs := epf.o
 mxlk_ep-objs += dma.o
 mxlk_ep-objs += core.o
 mxlk_ep-objs += ../common/util.o
+mxlk_ep-objs += ../common/interface.o
diff --git a/drivers/misc/xlink-pcie/remote_host/Makefile b/drivers/misc/xlink-pcie/remote_host/Makefile
index e8074dbb1161..088e121ad46e 100644
--- a/drivers/misc/xlink-pcie/remote_host/Makefile
+++ b/drivers/misc/xlink-pcie/remote_host/Makefile
@@ -3,3 +3,4 @@ mxlk-objs := main.o
 mxlk-objs += pci.o
 mxlk-objs += core.o
 mxlk-objs += ../common/util.o
+mxlk-objs += ../common/interface.o
-- 
2.17.1


  parent reply	other threads:[~2021-02-06  4:25 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-05 22:51 [PATCH v5 00/34] Intel Vision Processing base enabling mgross
2021-02-05 22:51 ` [PATCH v5 01/34] Add Vision Processing Unit (VPU) documentation mgross
2021-02-05 22:51 ` [PATCH v5 02/34] dt-bindings: mailbox: Add Intel VPU IPC mailbox bindings mgross
2021-02-05 22:51 ` [PATCH v5 03/34] mailbox: vpu-ipc-mailbox: Add support for Intel VPU IPC mailbox mgross
2021-02-05 22:51 ` [PATCH v5 04/34] dt-bindings: Add bindings for Keem Bay IPC driver mgross
2021-02-05 22:51 ` [PATCH v5 05/34] keembay-ipc: Add Keem Bay IPC module mgross
2021-02-05 22:51 ` [PATCH v5 06/34] dt-bindings: Add bindings for Keem Bay VPU IPC driver mgross
2021-02-05 22:51 ` [PATCH v5 07/34] keembay-vpu-ipc: Add Keem Bay VPU IPC module mgross
2021-02-05 22:51 ` [PATCH v5 08/34] misc: xlink-pcie: Add documentation for XLink PCIe driver mgross
2021-02-05 22:51 ` [PATCH v5 09/34] misc: xlink-pcie: lh: Add PCIe EPF driver for Local Host mgross
2021-02-05 22:51 ` [PATCH v5 10/34] misc: xlink-pcie: lh: Add PCIe EP DMA functionality mgross
2021-02-05 22:51 ` [PATCH v5 11/34] misc: xlink-pcie: lh: Add core communication logic mgross
2021-02-05 22:51 ` [PATCH v5 12/34] misc: xlink-pcie: lh: Prepare changes for adding remote host driver mgross
2021-02-05 22:51 ` [PATCH v5 13/34] misc: xlink-pcie: rh: Add PCIe EP driver for Remote Host mgross
2021-02-05 22:51 ` [PATCH v5 14/34] misc: xlink-pcie: rh: Add core communication logic mgross
2021-02-05 22:51 ` mgross [this message]
2021-02-05 22:51 ` [PATCH v5 16/34] misc: xlink-pcie: Add asynchronous event notification support for XLink mgross
2021-02-05 22:51 ` [PATCH v5 17/34] xlink-ipc: Add xlink ipc device tree bindings mgross
2021-02-05 22:51 ` [PATCH v5 18/34] xlink-ipc: Add xlink ipc driver mgross
2021-02-05 22:51 ` [PATCH v5 19/34] xlink-core: Add xlink core device tree bindings mgross
2021-02-05 22:51 ` [PATCH v5 20/34] xlink-core: Add xlink core driver xLink mgross
2021-02-05 22:51 ` [PATCH v5 21/34] xlink-core: Enable xlink protocol over pcie mgross
2021-02-05 22:51 ` [PATCH v5 22/34] xlink-core: Enable VPU IP management and runtime control mgross
2021-02-05 22:51 ` [PATCH v5 23/34] xlink-core: add async channel and events mgross
2021-02-05 22:51 ` [PATCH v5 24/34] dt-bindings: misc: Add Keem Bay vpumgr mgross
2021-02-05 22:51 ` [PATCH v5 25/34] misc: Add Keem Bay VPU manager mgross
2021-02-05 22:51 ` [PATCH v5 26/34] dt-bindings: misc: intel_tsens: Add tsens thermal bindings documentation mgross
2021-02-05 22:51 ` [PATCH v5 27/34] misc: Tsens ARM host thermal driver mgross
2021-02-05 22:51 ` [PATCH v5 28/34] misc: Intel tsens IA host driver mgross
2021-02-05 22:51 ` [PATCH v5 29/34] Intel tsens i2c slave driver mgross
2021-02-05 22:52 ` [PATCH v5 30/34] misc:intel_tsens: Intel Keem Bay tsens driver mgross
2021-02-05 22:52 ` [PATCH v5 31/34] Intel Keem Bay XLink SMBus driver mgross
2021-02-05 22:52 ` [PATCH v5 32/34] dt-bindings: misc: hddl_dev: Add hddl device management documentation mgross
2021-02-05 22:52 ` [PATCH v5 33/34] misc: Hddl device management for local host mgross
2021-02-05 22:52 ` [PATCH v5 34/34] misc: HDDL device management for IA host mgross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210205225204.32902-16-mgross@linux.intel.com \
    --to=mgross@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=bp@suse.de \
    --cc=corbet@lwn.net \
    --cc=damien.lemoal@wdc.com \
    --cc=dragan.cvetic@xilinx.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jassisinghbrar@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=palmerdabbelt@google.com \
    --cc=paul.walmsley@sifive.com \
    --cc=peng.fan@nxp.com \
    --cc=robh+dt@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=srikanth.thokala@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.