aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2022-03-21 01:16:48 +0000
committerDaniel Golle <daniel@makrotopia.org>2022-03-21 13:11:56 +0000
commit786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186 (patch)
tree926fecb2b1f6ce1e42ba7ef4c7aab8e68dfd214c /target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch
parent9470160c350d15f765c33d6c1db15d6c4709a64c (diff)
downloadupstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.tar.gz
upstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.tar.bz2
upstream-786bf7fdaca4c75e7eba6e9aa3a8b5775fd21186.zip
kernel: delete Linux 5.4 config and patches
As the upcoming release will be based on Linux 5.10 only, remove all kernel configuration as well as patches for Linux 5.4. There were no targets still actively using Linux 5.4. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 3a14580411adfb75f9a44eded9f41245b9e44606)
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch960
1 files changed, 0 insertions, 960 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch b/target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch
deleted file mode 100644
index 74d1c2a4eb..0000000000
--- a/target/linux/layerscape/patches-5.4/701-net-0142-bus-fsl-mc-Some-apis-are-made-public-for-vfio.patch
+++ /dev/null
@@ -1,960 +0,0 @@
-From e8dd5b8ee227cc60f10073faaa0f74b36aa4f40f Mon Sep 17 00:00:00 2001
-From: Laurentiu Tudor <laurentiu.tudor@nxp.com>
-Date: Mon, 16 Apr 2018 12:26:38 +0300
-Subject: [PATCH] bus: fsl-mc: Some apis are made public for vfio
-
-Some of the APIs and data-structures are required for VFIO.
-This patch moves dprc.h to public header files.
-Also some APIs of mc-bus are made public for vfio.
-
-Signed-off-by: Bharat Bhushan <Bharat.Bhushan@nxp.com>
-Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
----
- drivers/bus/fsl-mc/fsl-mc-allocator.c | 2 +
- drivers/bus/fsl-mc/fsl-mc-bus.c | 5 +-
- drivers/bus/fsl-mc/fsl-mc-private.h | 414 ---------------------------------
- include/linux/fsl/mc.h | 420 ++++++++++++++++++++++++++++++++++
- 4 files changed, 425 insertions(+), 416 deletions(-)
-
---- a/drivers/bus/fsl-mc/fsl-mc-allocator.c
-+++ b/drivers/bus/fsl-mc/fsl-mc-allocator.c
-@@ -549,6 +549,7 @@ void fsl_mc_init_all_resource_pools(stru
- mutex_init(&res_pool->mutex);
- }
- }
-+EXPORT_SYMBOL_GPL(fsl_mc_init_all_resource_pools);
-
- static void fsl_mc_cleanup_resource_pool(struct fsl_mc_device *mc_bus_dev,
- enum fsl_mc_pool_type pool_type)
-@@ -573,6 +574,7 @@ void fsl_mc_cleanup_all_resource_pools(s
- for (pool_type = 0; pool_type < FSL_MC_NUM_POOL_TYPES; pool_type++)
- fsl_mc_cleanup_resource_pool(mc_bus_dev, pool_type);
- }
-+EXPORT_SYMBOL_GPL(fsl_mc_cleanup_all_resource_pools);
-
- /**
- * fsl_mc_allocator_probe - callback invoked when an allocatable device is
---- a/drivers/bus/fsl-mc/fsl-mc-bus.c
-+++ b/drivers/bus/fsl-mc/fsl-mc-bus.c
-@@ -447,8 +447,8 @@ static int mc_get_version(struct fsl_mc_
- /**
- * fsl_mc_get_root_dprc - function to traverse to the root dprc
- */
--static void fsl_mc_get_root_dprc(struct device *dev,
-- struct device **root_dprc_dev)
-+void fsl_mc_get_root_dprc(struct device *dev,
-+ struct device **root_dprc_dev)
- {
- if (!dev) {
- *root_dprc_dev = NULL;
-@@ -460,6 +460,7 @@ static void fsl_mc_get_root_dprc(struct
- *root_dprc_dev = (*root_dprc_dev)->parent;
- }
- }
-+EXPORT_SYMBOL_GPL(fsl_mc_get_root_dprc);
-
- static int get_dprc_attr(struct fsl_mc_io *mc_io,
- int container_id, struct dprc_attributes *attr)
---- a/drivers/bus/fsl-mc/fsl-mc-private.h
-+++ b/drivers/bus/fsl-mc/fsl-mc-private.h
-@@ -10,8 +10,6 @@
-
- #include <linux/fsl/mc.h>
- #include <linux/mutex.h>
--#include <linux/ioctl.h>
--#include <linux/miscdevice.h>
-
- /*
- * Data Path Management Complex (DPMNG) General API
-@@ -72,339 +70,6 @@ int dpmcp_reset(struct fsl_mc_io *mc_io,
- u16 token);
-
- /*
-- * Data Path Resource Container (DPRC) API
-- */
--
--/* Minimal supported DPRC Version */
--#define DPRC_MIN_VER_MAJOR 6
--#define DPRC_MIN_VER_MINOR 0
--
--/* DPRC command versioning */
--#define DPRC_CMD_BASE_VERSION 1
--#define DPRC_CMD_2ND_VERSION 2
--#define DPRC_CMD_ID_OFFSET 4
--
--#define DPRC_CMD(id) (((id) << DPRC_CMD_ID_OFFSET) | DPRC_CMD_BASE_VERSION)
--#define DPRC_CMD_V2(id) (((id) << DPRC_CMD_ID_OFFSET) | DPRC_CMD_2ND_VERSION)
--
--/* DPRC command IDs */
--#define DPRC_CMDID_CLOSE DPRC_CMD(0x800)
--#define DPRC_CMDID_OPEN DPRC_CMD(0x805)
--#define DPRC_CMDID_GET_API_VERSION DPRC_CMD(0xa05)
--
--#define DPRC_CMDID_GET_ATTR DPRC_CMD(0x004)
--#define DPRC_CMDID_RESET_CONT DPRC_CMD(0x005)
--
--#define DPRC_CMDID_SET_IRQ DPRC_CMD(0x010)
--#define DPRC_CMDID_SET_IRQ_ENABLE DPRC_CMD(0x012)
--#define DPRC_CMDID_SET_IRQ_MASK DPRC_CMD(0x014)
--#define DPRC_CMDID_GET_IRQ_STATUS DPRC_CMD(0x016)
--#define DPRC_CMDID_CLEAR_IRQ_STATUS DPRC_CMD(0x017)
--
--#define DPRC_CMDID_GET_CONT_ID DPRC_CMD(0x830)
--#define DPRC_CMDID_GET_OBJ_COUNT DPRC_CMD(0x159)
--#define DPRC_CMDID_GET_OBJ DPRC_CMD(0x15A)
--#define DPRC_CMDID_GET_OBJ_REG DPRC_CMD(0x15E)
--#define DPRC_CMDID_GET_OBJ_REG_V2 DPRC_CMD_V2(0x15E)
--#define DPRC_CMDID_SET_OBJ_IRQ DPRC_CMD(0x15F)
--
--struct dprc_cmd_open {
-- __le32 container_id;
--};
--
--struct dprc_cmd_reset_container {
-- __le32 child_container_id;
--};
--
--struct dprc_cmd_set_irq {
-- /* cmd word 0 */
-- __le32 irq_val;
-- u8 irq_index;
-- u8 pad[3];
-- /* cmd word 1 */
-- __le64 irq_addr;
-- /* cmd word 2 */
-- __le32 irq_num;
--};
--
--#define DPRC_ENABLE 0x1
--
--struct dprc_cmd_set_irq_enable {
-- u8 enable;
-- u8 pad[3];
-- u8 irq_index;
--};
--
--struct dprc_cmd_set_irq_mask {
-- __le32 mask;
-- u8 irq_index;
--};
--
--struct dprc_cmd_get_irq_status {
-- __le32 status;
-- u8 irq_index;
--};
--
--struct dprc_rsp_get_irq_status {
-- __le32 status;
--};
--
--struct dprc_cmd_clear_irq_status {
-- __le32 status;
-- u8 irq_index;
--};
--
--struct dprc_rsp_get_attributes {
-- /* response word 0 */
-- __le32 container_id;
-- __le32 icid;
-- /* response word 1 */
-- __le32 options;
-- __le32 portal_id;
--};
--
--struct dprc_rsp_get_obj_count {
-- __le32 pad;
-- __le32 obj_count;
--};
--
--struct dprc_cmd_get_obj {
-- __le32 obj_index;
--};
--
--struct dprc_rsp_get_obj {
-- /* response word 0 */
-- __le32 pad0;
-- __le32 id;
-- /* response word 1 */
-- __le16 vendor;
-- u8 irq_count;
-- u8 region_count;
-- __le32 state;
-- /* response word 2 */
-- __le16 version_major;
-- __le16 version_minor;
-- __le16 flags;
-- __le16 pad1;
-- /* response word 3-4 */
-- u8 type[16];
-- /* response word 5-6 */
-- u8 label[16];
--};
--
--struct dprc_cmd_get_obj_region {
-- /* cmd word 0 */
-- __le32 obj_id;
-- __le16 pad0;
-- u8 region_index;
-- u8 pad1;
-- /* cmd word 1-2 */
-- __le64 pad2[2];
-- /* cmd word 3-4 */
-- u8 obj_type[16];
--};
--
--struct dprc_rsp_get_obj_region {
-- /* response word 0 */
-- __le64 pad0;
-- /* response word 1 */
-- __le64 base_offset;
-- /* response word 2 */
-- __le32 size;
-- u8 type;
-- u8 pad2[3];
-- /* response word 3 */
-- __le32 flags;
-- __le32 pad3;
-- /* response word 4 */
-- /* base_addr may be zero if older MC firmware is used */
-- __le64 base_addr;
--};
--
--struct dprc_cmd_set_obj_irq {
-- /* cmd word 0 */
-- __le32 irq_val;
-- u8 irq_index;
-- u8 pad[3];
-- /* cmd word 1 */
-- __le64 irq_addr;
-- /* cmd word 2 */
-- __le32 irq_num;
-- __le32 obj_id;
-- /* cmd word 3-4 */
-- u8 obj_type[16];
--};
--
--/*
-- * DPRC API for managing and querying DPAA resources
-- */
--int dprc_open(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- int container_id,
-- u16 *token);
--
--int dprc_close(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token);
--
--/* DPRC IRQ events */
--
--/* IRQ event - Indicates that a new object added to the container */
--#define DPRC_IRQ_EVENT_OBJ_ADDED 0x00000001
--/* IRQ event - Indicates that an object was removed from the container */
--#define DPRC_IRQ_EVENT_OBJ_REMOVED 0x00000002
--/*
-- * IRQ event - Indicates that one of the descendant containers that opened by
-- * this container is destroyed
-- */
--#define DPRC_IRQ_EVENT_CONTAINER_DESTROYED 0x00000010
--
--/*
-- * IRQ event - Indicates that on one of the container's opened object is
-- * destroyed
-- */
--#define DPRC_IRQ_EVENT_OBJ_DESTROYED 0x00000020
--
--/* Irq event - Indicates that object is created at the container */
--#define DPRC_IRQ_EVENT_OBJ_CREATED 0x00000040
--
--/**
-- * struct dprc_irq_cfg - IRQ configuration
-- * @paddr: Address that must be written to signal a message-based interrupt
-- * @val: Value to write into irq_addr address
-- * @irq_num: A user defined number associated with this IRQ
-- */
--struct dprc_irq_cfg {
-- phys_addr_t paddr;
-- u32 val;
-- int irq_num;
--};
--
--int dprc_set_irq(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- u8 irq_index,
-- struct dprc_irq_cfg *irq_cfg);
--
--int dprc_set_irq_enable(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- u8 irq_index,
-- u8 en);
--
--int dprc_set_irq_mask(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- u8 irq_index,
-- u32 mask);
--
--int dprc_get_irq_status(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- u8 irq_index,
-- u32 *status);
--
--int dprc_clear_irq_status(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- u8 irq_index,
-- u32 status);
--
--/**
-- * struct dprc_attributes - Container attributes
-- * @container_id: Container's ID
-- * @icid: Container's ICID
-- * @portal_id: Container's portal ID
-- * @options: Container's options as set at container's creation
-- */
--struct dprc_attributes {
-- int container_id;
-- u32 icid;
-- int portal_id;
-- u64 options;
--};
--
--int dprc_get_attributes(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- struct dprc_attributes *attributes);
--
--int dprc_get_obj_count(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- int *obj_count);
--
--int dprc_get_obj(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- int obj_index,
-- struct fsl_mc_obj_desc *obj_desc);
--
--int dprc_set_obj_irq(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- char *obj_type,
-- int obj_id,
-- u8 irq_index,
-- struct dprc_irq_cfg *irq_cfg);
--
--/* Region flags */
--/* Cacheable - Indicates that region should be mapped as cacheable */
--#define DPRC_REGION_CACHEABLE 0x00000001
--#define DPRC_REGION_SHAREABLE 0x00000002
--
--/**
-- * enum dprc_region_type - Region type
-- * @DPRC_REGION_TYPE_MC_PORTAL: MC portal region
-- * @DPRC_REGION_TYPE_QBMAN_PORTAL: Qbman portal region
-- */
--enum dprc_region_type {
-- DPRC_REGION_TYPE_MC_PORTAL,
-- DPRC_REGION_TYPE_QBMAN_PORTAL,
-- DPRC_REGION_TYPE_QBMAN_MEM_BACKED_PORTAL
--};
--
--/**
-- * struct dprc_region_desc - Mappable region descriptor
-- * @base_offset: Region offset from region's base address.
-- * For DPMCP and DPRC objects, region base is offset from SoC MC portals
-- * base address; For DPIO, region base is offset from SoC QMan portals
-- * base address
-- * @size: Region size (in bytes)
-- * @flags: Region attributes
-- * @type: Portal region type
-- */
--struct dprc_region_desc {
-- u32 base_offset;
-- u32 size;
-- u32 flags;
-- enum dprc_region_type type;
-- u64 base_address;
--};
--
--int dprc_get_obj_region(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- char *obj_type,
-- int obj_id,
-- u8 region_index,
-- struct dprc_region_desc *region_desc);
--
--int dprc_get_api_version(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 *major_ver,
-- u16 *minor_ver);
--
--int dprc_get_container_id(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- int *container_id);
--
--int dprc_reset_container(struct fsl_mc_io *mc_io,
-- u32 cmd_flags,
-- u16 token,
-- int child_container_id);
--
--/*
- * Data Path Buffer Pool (DPBP) API
- */
-
-@@ -491,70 +156,6 @@ struct dpcon_cmd_set_notification {
- __le64 user_ctx;
- };
-
--/**
-- * Maximum number of total IRQs that can be pre-allocated for an MC bus'
-- * IRQ pool
-- */
--#define FSL_MC_IRQ_POOL_MAX_TOTAL_IRQS 256
--
--/**
-- * struct fsl_mc_resource_pool - Pool of MC resources of a given
-- * type
-- * @type: type of resources in the pool
-- * @max_count: maximum number of resources in the pool
-- * @free_count: number of free resources in the pool
-- * @mutex: mutex to serialize access to the pool's free list
-- * @free_list: anchor node of list of free resources in the pool
-- * @mc_bus: pointer to the MC bus that owns this resource pool
-- */
--struct fsl_mc_resource_pool {
-- enum fsl_mc_pool_type type;
-- int max_count;
-- int free_count;
-- struct mutex mutex; /* serializes access to free_list */
-- struct list_head free_list;
-- struct fsl_mc_bus *mc_bus;
--};
--
--/**
-- * struct fsl_mc_uapi - information associated with a device file
-- * @misc: struct miscdevice linked to the root dprc
-- * @device: newly created device in /dev
-- * @mutex: mutex lock to serialize the open/release operations
-- * @local_instance_in_use: local MC I/O instance in use or not
-- * @static_mc_io: pointer to the static MC I/O object
-- */
--struct fsl_mc_uapi {
-- struct miscdevice misc;
-- struct device *device;
-- struct mutex mutex; /* serialize open/release operations */
-- u32 local_instance_in_use;
-- struct fsl_mc_io *static_mc_io;
--};
--
--/**
-- * struct fsl_mc_bus - logical bus that corresponds to a physical DPRC
-- * @mc_dev: fsl-mc device for the bus device itself.
-- * @resource_pools: array of resource pools (one pool per resource type)
-- * for this MC bus. These resources represent allocatable entities
-- * from the physical DPRC.
-- * @irq_resources: Pointer to array of IRQ objects for the IRQ pool
-- * @scan_mutex: Serializes bus scanning
-- * @dprc_attr: DPRC attributes
-- * @uapi_misc: struct that abstracts the interaction with userspace
-- */
--struct fsl_mc_bus {
-- struct fsl_mc_device mc_dev;
-- struct fsl_mc_resource_pool resource_pools[FSL_MC_NUM_POOL_TYPES];
-- struct fsl_mc_device_irq *irq_resources;
-- struct mutex scan_mutex; /* serializes bus scanning */
-- struct dprc_attributes dprc_attr;
-- struct fsl_mc_uapi uapi_misc;
--};
--
--#define to_fsl_mc_bus(_mc_dev) \
-- container_of(_mc_dev, struct fsl_mc_bus, mc_dev)
--
- int __must_check fsl_mc_device_add(struct fsl_mc_obj_desc *obj_desc,
- struct fsl_mc_io *mc_io,
- struct device *parent_dev,
-@@ -565,17 +166,10 @@ int __init dprc_driver_init(void);
-
- void dprc_driver_exit(void);
-
--int dprc_scan_objects(struct fsl_mc_device *mc_bus_dev,
-- const char *driver_override,
-- unsigned int *total_irq_count);
- int __init fsl_mc_allocator_driver_init(void);
-
- void fsl_mc_allocator_driver_exit(void);
-
--void fsl_mc_init_all_resource_pools(struct fsl_mc_device *mc_bus_dev);
--
--void fsl_mc_cleanup_all_resource_pools(struct fsl_mc_device *mc_bus_dev);
--
- int __must_check fsl_mc_resource_allocate(struct fsl_mc_bus *mc_bus,
- enum fsl_mc_pool_type pool_type,
- struct fsl_mc_resource
-@@ -588,14 +182,6 @@ int fsl_mc_msi_domain_alloc_irqs(struct
-
- void fsl_mc_msi_domain_free_irqs(struct device *dev);
-
--int fsl_mc_find_msi_domain(struct device *mc_platform_dev,
-- struct irq_domain **mc_msi_domain);
--
--int fsl_mc_populate_irq_pool(struct fsl_mc_bus *mc_bus,
-- unsigned int irq_count);
--
--void fsl_mc_cleanup_irq_pool(struct fsl_mc_bus *mc_bus);
--
- int __must_check fsl_create_mc_io(struct device *dev,
- phys_addr_t mc_portal_phys_addr,
- u32 mc_portal_size,
---- a/include/linux/fsl/mc.h
-+++ b/include/linux/fsl/mc.h
-@@ -12,6 +12,8 @@
- #include <linux/device.h>
- #include <linux/mod_devicetable.h>
- #include <linux/interrupt.h>
-+#include <linux/ioctl.h>
-+#include <linux/miscdevice.h>
- #include <uapi/linux/fsl_mc.h>
-
- #define FSL_MC_VENDOR_FREESCALE 0x1957
-@@ -49,6 +51,9 @@ struct fsl_mc_driver {
- #define to_fsl_mc_driver(_drv) \
- container_of(_drv, struct fsl_mc_driver, driver)
-
-+#define to_fsl_mc_bus(_mc_dev) \
-+ container_of(_mc_dev, struct fsl_mc_bus, mc_dev)
-+
- /**
- * enum fsl_mc_pool_type - Types of allocatable MC bus resources
- *
-@@ -469,6 +474,339 @@ static inline bool is_fsl_mc_bus_dpseci(
- }
-
- /*
-+ * Data Path Resource Container (DPRC) API
-+ */
-+
-+/* Minimal supported DPRC Version */
-+#define DPRC_MIN_VER_MAJOR 6
-+#define DPRC_MIN_VER_MINOR 0
-+
-+/* DPRC command versioning */
-+#define DPRC_CMD_BASE_VERSION 1
-+#define DPRC_CMD_2ND_VERSION 2
-+#define DPRC_CMD_ID_OFFSET 4
-+
-+#define DPRC_CMD(id) (((id) << DPRC_CMD_ID_OFFSET) | DPRC_CMD_BASE_VERSION)
-+#define DPRC_CMD_V2(id) (((id) << DPRC_CMD_ID_OFFSET) | DPRC_CMD_2ND_VERSION)
-+
-+/* DPRC command IDs */
-+#define DPRC_CMDID_CLOSE DPRC_CMD(0x800)
-+#define DPRC_CMDID_OPEN DPRC_CMD(0x805)
-+#define DPRC_CMDID_GET_API_VERSION DPRC_CMD(0xa05)
-+
-+#define DPRC_CMDID_GET_ATTR DPRC_CMD(0x004)
-+#define DPRC_CMDID_RESET_CONT DPRC_CMD(0x005)
-+
-+#define DPRC_CMDID_SET_IRQ DPRC_CMD(0x010)
-+#define DPRC_CMDID_SET_IRQ_ENABLE DPRC_CMD(0x012)
-+#define DPRC_CMDID_SET_IRQ_MASK DPRC_CMD(0x014)
-+#define DPRC_CMDID_GET_IRQ_STATUS DPRC_CMD(0x016)
-+#define DPRC_CMDID_CLEAR_IRQ_STATUS DPRC_CMD(0x017)
-+
-+#define DPRC_CMDID_GET_CONT_ID DPRC_CMD(0x830)
-+#define DPRC_CMDID_GET_OBJ_COUNT DPRC_CMD(0x159)
-+#define DPRC_CMDID_GET_OBJ DPRC_CMD(0x15A)
-+#define DPRC_CMDID_GET_OBJ_REG DPRC_CMD(0x15E)
-+#define DPRC_CMDID_GET_OBJ_REG_V2 DPRC_CMD_V2(0x15E)
-+#define DPRC_CMDID_SET_OBJ_IRQ DPRC_CMD(0x15F)
-+
-+struct dprc_cmd_open {
-+ __le32 container_id;
-+};
-+
-+struct dprc_cmd_reset_container {
-+ __le32 child_container_id;
-+};
-+
-+struct dprc_cmd_set_irq {
-+ /* cmd word 0 */
-+ __le32 irq_val;
-+ u8 irq_index;
-+ u8 pad[3];
-+ /* cmd word 1 */
-+ __le64 irq_addr;
-+ /* cmd word 2 */
-+ __le32 irq_num;
-+};
-+
-+#define DPRC_ENABLE 0x1
-+
-+struct dprc_cmd_set_irq_enable {
-+ u8 enable;
-+ u8 pad[3];
-+ u8 irq_index;
-+};
-+
-+struct dprc_cmd_set_irq_mask {
-+ __le32 mask;
-+ u8 irq_index;
-+};
-+
-+struct dprc_cmd_get_irq_status {
-+ __le32 status;
-+ u8 irq_index;
-+};
-+
-+struct dprc_rsp_get_irq_status {
-+ __le32 status;
-+};
-+
-+struct dprc_cmd_clear_irq_status {
-+ __le32 status;
-+ u8 irq_index;
-+};
-+
-+struct dprc_rsp_get_attributes {
-+ /* response word 0 */
-+ __le32 container_id;
-+ __le32 icid;
-+ /* response word 1 */
-+ __le32 options;
-+ __le32 portal_id;
-+};
-+
-+struct dprc_rsp_get_obj_count {
-+ __le32 pad;
-+ __le32 obj_count;
-+};
-+
-+struct dprc_cmd_get_obj {
-+ __le32 obj_index;
-+};
-+
-+struct dprc_rsp_get_obj {
-+ /* response word 0 */
-+ __le32 pad0;
-+ __le32 id;
-+ /* response word 1 */
-+ __le16 vendor;
-+ u8 irq_count;
-+ u8 region_count;
-+ __le32 state;
-+ /* response word 2 */
-+ __le16 version_major;
-+ __le16 version_minor;
-+ __le16 flags;
-+ __le16 pad1;
-+ /* response word 3-4 */
-+ u8 type[16];
-+ /* response word 5-6 */
-+ u8 label[16];
-+};
-+
-+struct dprc_cmd_get_obj_region {
-+ /* cmd word 0 */
-+ __le32 obj_id;
-+ __le16 pad0;
-+ u8 region_index;
-+ u8 pad1;
-+ /* cmd word 1-2 */
-+ __le64 pad2[2];
-+ /* cmd word 3-4 */
-+ u8 obj_type[16];
-+};
-+
-+struct dprc_rsp_get_obj_region {
-+ /* response word 0 */
-+ __le64 pad0;
-+ /* response word 1 */
-+ __le64 base_offset;
-+ /* response word 2 */
-+ __le32 size;
-+ u8 type;
-+ u8 pad2[3];
-+ /* response word 3 */
-+ __le32 flags;
-+ __le32 pad3;
-+ /* response word 4 */
-+ /* base_addr may be zero if older MC firmware is used */
-+ __le64 base_addr;
-+};
-+
-+struct dprc_cmd_set_obj_irq {
-+ /* cmd word 0 */
-+ __le32 irq_val;
-+ u8 irq_index;
-+ u8 pad[3];
-+ /* cmd word 1 */
-+ __le64 irq_addr;
-+ /* cmd word 2 */
-+ __le32 irq_num;
-+ __le32 obj_id;
-+ /* cmd word 3-4 */
-+ u8 obj_type[16];
-+};
-+
-+/*
-+ * DPRC API for managing and querying DPAA resources
-+ */
-+int dprc_open(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ int container_id,
-+ u16 *token);
-+
-+int dprc_close(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token);
-+
-+/* DPRC IRQ events */
-+
-+/* IRQ event - Indicates that a new object added to the container */
-+#define DPRC_IRQ_EVENT_OBJ_ADDED 0x00000001
-+/* IRQ event - Indicates that an object was removed from the container */
-+#define DPRC_IRQ_EVENT_OBJ_REMOVED 0x00000002
-+/*
-+ * IRQ event - Indicates that one of the descendant containers that opened by
-+ * this container is destroyed
-+ */
-+#define DPRC_IRQ_EVENT_CONTAINER_DESTROYED 0x00000010
-+
-+/*
-+ * IRQ event - Indicates that on one of the container's opened object is
-+ * destroyed
-+ */
-+#define DPRC_IRQ_EVENT_OBJ_DESTROYED 0x00000020
-+
-+/* Irq event - Indicates that object is created at the container */
-+#define DPRC_IRQ_EVENT_OBJ_CREATED 0x00000040
-+
-+/**
-+ * struct dprc_irq_cfg - IRQ configuration
-+ * @paddr: Address that must be written to signal a message-based interrupt
-+ * @val: Value to write into irq_addr address
-+ * @irq_num: A user defined number associated with this IRQ
-+ */
-+struct dprc_irq_cfg {
-+ phys_addr_t paddr;
-+ u32 val;
-+ int irq_num;
-+};
-+
-+int dprc_set_irq(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ u8 irq_index,
-+ struct dprc_irq_cfg *irq_cfg);
-+
-+int dprc_set_irq_enable(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ u8 irq_index,
-+ u8 en);
-+
-+int dprc_set_irq_mask(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ u8 irq_index,
-+ u32 mask);
-+
-+int dprc_get_irq_status(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ u8 irq_index,
-+ u32 *status);
-+
-+int dprc_clear_irq_status(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ u8 irq_index,
-+ u32 status);
-+
-+/**
-+ * struct dprc_attributes - Container attributes
-+ * @container_id: Container's ID
-+ * @icid: Container's ICID
-+ * @portal_id: Container's portal ID
-+ * @options: Container's options as set at container's creation
-+ */
-+struct dprc_attributes {
-+ int container_id;
-+ u32 icid;
-+ int portal_id;
-+ u64 options;
-+};
-+
-+int dprc_get_attributes(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ struct dprc_attributes *attributes);
-+
-+int dprc_get_obj_count(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ int *obj_count);
-+
-+int dprc_get_obj(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ int obj_index,
-+ struct fsl_mc_obj_desc *obj_desc);
-+
-+int dprc_set_obj_irq(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ char *obj_type,
-+ int obj_id,
-+ u8 irq_index,
-+ struct dprc_irq_cfg *irq_cfg);
-+
-+/* Region flags */
-+/* Cacheable - Indicates that region should be mapped as cacheable */
-+#define DPRC_REGION_CACHEABLE 0x00000001
-+#define DPRC_REGION_SHAREABLE 0x00000002
-+
-+/**
-+ * enum dprc_region_type - Region type
-+ * @DPRC_REGION_TYPE_MC_PORTAL: MC portal region
-+ * @DPRC_REGION_TYPE_QBMAN_PORTAL: Qbman portal region
-+ */
-+enum dprc_region_type {
-+ DPRC_REGION_TYPE_MC_PORTAL,
-+ DPRC_REGION_TYPE_QBMAN_PORTAL,
-+ DPRC_REGION_TYPE_QBMAN_MEM_BACKED_PORTAL
-+};
-+
-+/**
-+ * struct dprc_region_desc - Mappable region descriptor
-+ * @base_offset: Region offset from region's base address.
-+ * For DPMCP and DPRC objects, region base is offset from SoC MC portals
-+ * base address; For DPIO, region base is offset from SoC QMan portals
-+ * base address
-+ * @size: Region size (in bytes)
-+ * @flags: Region attributes
-+ * @type: Portal region type
-+ */
-+struct dprc_region_desc {
-+ u32 base_offset;
-+ u32 size;
-+ u32 flags;
-+ enum dprc_region_type type;
-+ u64 base_address;
-+};
-+
-+int dprc_get_obj_region(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ char *obj_type,
-+ int obj_id,
-+ u8 region_index,
-+ struct dprc_region_desc *region_desc);
-+
-+int dprc_get_api_version(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 *major_ver,
-+ u16 *minor_ver);
-+
-+int dprc_get_container_id(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ int *container_id);
-+
-+int dprc_reset_container(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ int child_container_id);
-+
-+/*
- * Data Path Buffer Pool (DPBP) API
- * Contains initialization APIs and runtime control APIs for DPBP
- */
-@@ -576,4 +914,86 @@ int dpcon_set_notification(struct fsl_mc
- u16 token,
- struct dpcon_notification_cfg *cfg);
-
-+struct irq_domain;
-+struct msi_domain_info;
-+
-+/**
-+ * Maximum number of total IRQs that can be pre-allocated for an MC bus'
-+ * IRQ pool
-+ */
-+#define FSL_MC_IRQ_POOL_MAX_TOTAL_IRQS 256
-+
-+/**
-+ * struct fsl_mc_resource_pool - Pool of MC resources of a given
-+ * type
-+ * @type: type of resources in the pool
-+ * @max_count: maximum number of resources in the pool
-+ * @free_count: number of free resources in the pool
-+ * @mutex: mutex to serialize access to the pool's free list
-+ * @free_list: anchor node of list of free resources in the pool
-+ * @mc_bus: pointer to the MC bus that owns this resource pool
-+ */
-+struct fsl_mc_resource_pool {
-+ enum fsl_mc_pool_type type;
-+ int max_count;
-+ int free_count;
-+ struct mutex mutex; /* serializes access to free_list */
-+ struct list_head free_list;
-+ struct fsl_mc_bus *mc_bus;
-+};
-+
-+/**
-+ * struct fsl_mc_uapi - information associated with a device file
-+ * @misc: struct miscdevice linked to the root dprc
-+ * @device: newly created device in /dev
-+ * @mutex: mutex lock to serialize the open/release operations
-+ * @local_instance_in_use: local MC I/O instance in use or not
-+ * @static_mc_io: pointer to the static MC I/O object
-+ */
-+struct fsl_mc_uapi {
-+ struct miscdevice misc;
-+ struct device *device;
-+ struct mutex mutex; /* serialize open/release operations */
-+ u32 local_instance_in_use;
-+ struct fsl_mc_io *static_mc_io;
-+};
-+
-+/**
-+ * struct fsl_mc_bus - logical bus that corresponds to a physical DPRC
-+ * @mc_dev: fsl-mc device for the bus device itself.
-+ * @resource_pools: array of resource pools (one pool per resource type)
-+ * for this MC bus. These resources represent allocatable entities
-+ * from the physical DPRC.
-+ * @irq_resources: Pointer to array of IRQ objects for the IRQ pool
-+ * @scan_mutex: Serializes bus scanning
-+ * @dprc_attr: DPRC attributes
-+ * @uapi_misc: struct that abstracts the interaction with userspace
-+ */
-+struct fsl_mc_bus {
-+ struct fsl_mc_device mc_dev;
-+ struct fsl_mc_resource_pool resource_pools[FSL_MC_NUM_POOL_TYPES];
-+ struct fsl_mc_device_irq *irq_resources;
-+ struct mutex scan_mutex; /* serializes bus scanning */
-+ struct dprc_attributes dprc_attr;
-+ struct fsl_mc_uapi uapi_misc;
-+};
-+
-+int dprc_scan_objects(struct fsl_mc_device *mc_bus_dev,
-+ const char *driver_override,
-+ unsigned int *total_irq_count);
-+
-+int fsl_mc_find_msi_domain(struct device *mc_platform_dev,
-+ struct irq_domain **mc_msi_domain);
-+
-+int fsl_mc_populate_irq_pool(struct fsl_mc_bus *mc_bus,
-+ unsigned int irq_count);
-+
-+void fsl_mc_cleanup_irq_pool(struct fsl_mc_bus *mc_bus);
-+
-+void fsl_mc_init_all_resource_pools(struct fsl_mc_device *mc_bus_dev);
-+
-+void fsl_mc_cleanup_all_resource_pools(struct fsl_mc_device *mc_bus_dev);
-+
-+void fsl_mc_get_root_dprc(struct device *dev, struct device **root_dprc_dev);
-+
- #endif /* _FSL_MC_H_ */