These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / fsl-mc / include / dprc.h
index f1862a7..c3152f6 100644 (file)
@@ -32,6 +32,8 @@
 #ifndef _FSL_DPRC_H
 #define _FSL_DPRC_H
 
+#include "mc-cmd.h"
+
 /* Data Path Resource Container API
  * Contains DPRC API for managing and querying DPAA resources
  */
@@ -43,7 +45,7 @@ struct fsl_mc_io;
  * container, in case the ICID is not selected by the user and should be
  * allocated by the DPRC from the pool of ICIDs.
  */
-#define DPRC_GET_ICID_FROM_POOL                        (uint16_t)(~(0))
+#define DPRC_GET_ICID_FROM_POOL                        (u16)(~(0))
 
 /**
  * Set this value as the portal_id value in dprc_cfg structure when creating a
@@ -52,29 +54,14 @@ struct fsl_mc_io;
  */
 #define DPRC_GET_PORTAL_ID_FROM_POOL   (int)(~(0))
 
-/**
- * dprc_open() - Open DPRC object for use
- * @mc_io:     Pointer to MC portal's I/O object
- * @container_id: Container ID to open
- * @token:     Returned token of DPRC object
- *
- * Return:     '0' on Success; Error code otherwise.
- *
- * @warning    Required before any operation on the object.
- */
-int dprc_open(struct fsl_mc_io *mc_io, int container_id, uint16_t *token);
+int dprc_open(struct fsl_mc_io *mc_io,
+             u32 cmd_flags,
+             int container_id,
+             u16 *token);
 
-/**
- * dprc_close() - Close the control session of the object
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- *
- * After this function is called, no further operations are
- * allowed on the object without opening a new control session.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dprc_close(struct fsl_mc_io *mc_io, uint16_t token);
+int dprc_close(struct fsl_mc_io *mc_io,
+              u32 cmd_flags,
+              u16 token);
 
 /**
  * Container general options
@@ -115,6 +102,9 @@ int dprc_close(struct fsl_mc_io *mc_io, uint16_t token);
 /* AIOP - Indicates that container belongs to AIOP.  */
 #define DPRC_CFG_OPT_AIOP                      0x00000020
 
+/* IRQ Config - Indicates that the container allowed to configure its IRQs.  */
+#define DPRC_CFG_OPT_IRQ_CFG_ALLOWED           0x00000040
+
 /**
  * struct dprc_cfg - Container configuration options
  * @icid: Container's ICID; if set to 'DPRC_GET_ICID_FROM_POOL', a free
@@ -122,94 +112,49 @@ int dprc_close(struct fsl_mc_io *mc_io, uint16_t token);
  * @portal_id: Portal ID; if set to 'DPRC_GET_PORTAL_ID_FROM_POOL', a free
  *             portal ID is allocated by the DPRC
  * @options: Combination of 'DPRC_CFG_OPT_<X>' options
+ * @label: Object's label
  */
 struct dprc_cfg {
-       uint16_t icid;
+       u16 icid;
        int portal_id;
-       uint64_t options;
+       u64 options;
+       char label[16];
 };
 
-/**
- * dprc_create_container() - Create child container
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @cfg:       Child container configuration
- * @child_container_id:        Returned child container ID
- * @child_portal_paddr:        Returned base physical address of the
- *                                     child portal
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_create_container(struct fsl_mc_io     *mc_io,
-                         uint16_t              token,
+                         u32           cmd_flags,
+                         u16           token,
                          struct dprc_cfg       *cfg,
                          int                   *child_container_id,
-                         uint64_t              *child_portal_paddr);
+                         u64           *child_portal_offset);
 
-/**
- * dprc_destroy_container() - Destroy child container.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @child_container_id:        ID of the container to destroy
- *
- * This function terminates the child container, so following this call the
- * child container ID becomes invalid.
- *
- * Notes:
- * - All resources and objects of the destroyed container are returned to the
- * parent container or destroyed if were created be the destroyed container.
- * - This function destroy all the child containers of the specified
- *   container prior to destroying the container itself.
- *
- * warning: Only the parent container is allowed to destroy a child policy
- *             Container 0 can't be destroyed
- *
- * Return:     '0' on Success; Error code otherwise.
- *
- */
 int dprc_destroy_container(struct fsl_mc_io    *mc_io,
-                          uint16_t             token,
+                          u32          cmd_flags,
+                          u16          token,
                           int                  child_container_id);
 
-/**
- * dprc_reset_container - Reset child container.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @child_container_id:        ID of the container to reset
- *
- * In case a software context crashes or becomes non-responsive, the parent
- * may wish to reset its resources container before the software context is
- * restarted.
- *
- * This routine informs all objects assigned to the child container that the
- * container is being reset, so they may perform any cleanup operations that are
- * needed. All objects handles that were owned by the child container shall be
- * closed.
- *
- * Note that such request may be submitted even if the child software context
- * has not crashed, but the resulting object cleanup operations will not be
- * aware of that.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_reset_container(struct fsl_mc_io *mc_io,
-                        uint16_t token,
+                        u32 cmd_flags,
+                        u16 token,
                         int child_container_id);
 
 /* IRQ */
 
+/* IRQ index */
+#define DPRC_IRQ_INDEX          0
+
 /* Number of dprc's IRQs */
 #define DPRC_NUM_OF_IRQS               1
 
-/* Object irq events */
+/* DPRC IRQ events */
 
-/* IRQ event - Indicates that a new object assigned to the container */
+/* 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 unassigned from the container */
+/* IRQ event - Indicates that an object was removed from the container */
 #define DPRC_IRQ_EVENT_OBJ_REMOVED             0x00000002
-/* IRQ event - Indicates that resources assigned to the container */
+/* IRQ event - Indicates that resources added to the container */
 #define DPRC_IRQ_EVENT_RES_ADDED               0x00000004
-/* IRQ event - Indicates that resources unassigned from the container */
+/* IRQ event - Indicates that resources removed from the container */
 #define DPRC_IRQ_EVENT_RES_REMOVED             0x00000008
 /* IRQ event - Indicates that one of the descendant containers that opened by
  * this container is destroyed
@@ -225,147 +170,65 @@ int dprc_reset_container(struct fsl_mc_io *mc_io,
 #define DPRC_IRQ_EVENT_OBJ_CREATED             0x00000040
 
 /**
- * dprc_set_irq() - Set IRQ information for the DPRC to trigger an interrupt.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: Identifies the interrupt index to configure
- * @irq_addr:  Address that must be written to
- *                     signal a message-based interrupt
- * @irq_val:   Value to write into irq_addr address
- * @user_irq_id: Returned a user defined number associated with this IRQ
- *
- * Return:     '0' on Success; Error code otherwise.
+ * 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
+ * @user_irq_id: A user defined number associated with this IRQ
  */
+struct dprc_irq_cfg {
+            u64                paddr;
+            u32                val;
+            int                user_irq_id;
+};
+
 int dprc_set_irq(struct fsl_mc_io      *mc_io,
-                uint16_t               token,
-                uint8_t                irq_index,
-                uint64_t               irq_addr,
-                uint32_t               irq_val,
-                int                    user_irq_id);
+                u32            cmd_flags,
+                u16            token,
+                u8             irq_index,
+                struct dprc_irq_cfg    *irq_cfg);
 
-/**
- * dprc_get_irq() - Get IRQ information from the DPRC.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @type:      Returned interrupt type: 0 represents message interrupt
- *                     type (both irq_addr and irq_val are valid)
- * @irq_addr:  Returned address that must be written to
- *                     signal the message-based interrupt
- * @irq_val:   Value to write into irq_addr address
- * @user_irq_id: A user defined number associated with this IRQ
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_irq(struct fsl_mc_io      *mc_io,
-                uint16_t               token,
-                uint8_t                irq_index,
+                u32            cmd_flags,
+                u16            token,
+                u8             irq_index,
                 int                    *type,
-                uint64_t               *irq_addr,
-                uint32_t               *irq_val,
-                int                    *user_irq_id);
+                struct dprc_irq_cfg    *irq_cfg);
 
-/**
- * dprc_set_irq_enable() - Set overall interrupt state.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @en:                Interrupt state - enable = 1, disable = 0
- *
- * Allows GPP software to control when interrupts are generated.
- * Each interrupt can have up to 32 causes.  The enable/disable control's the
- * overall interrupt state. if the interrupt is disabled no causes will cause
- * an interrupt.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_set_irq_enable(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
-                       uint8_t                 irq_index,
-                       uint8_t                 en);
+                       u32             cmd_flags,
+                       u16             token,
+                       u8                      irq_index,
+                       u8                      en);
 
-/**
- * dprc_get_irq_enable() - Get overall interrupt state.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index:  The interrupt index to configure
- * @en:                Returned interrupt state - enable = 1, disable = 0
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_irq_enable(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
-                       uint8_t                 irq_index,
-                       uint8_t                 *en);
+                       u32             cmd_flags,
+                       u16             token,
+                       u8                      irq_index,
+                       u8                      *en);
 
-/**
- * dprc_set_irq_mask() - Set interrupt mask.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @mask:      event mask to trigger interrupt;
- *                     each bit:
- *                             0 = ignore event
- *                             1 = consider event for asserting irq
- *
- * Every interrupt can have up to 32 causes and the interrupt model supports
- * masking/unmasking each cause independently
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_set_irq_mask(struct fsl_mc_io *mc_io,
-                     uint16_t          token,
-                     uint8_t           irq_index,
-                     uint32_t          mask);
+                     u32               cmd_flags,
+                     u16               token,
+                     u8                irq_index,
+                     u32               mask);
 
-/**
- * dprc_get_irq_mask() - Get interrupt mask.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @mask:      Returned event mask to trigger interrupt
- *
- * Every interrupt can have up to 32 causes and the interrupt model supports
- * masking/unmasking each cause independently
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_irq_mask(struct fsl_mc_io *mc_io,
-                     uint16_t          token,
-                     uint8_t           irq_index,
-                     uint32_t          *mask);
+                     u32               cmd_flags,
+                     u16               token,
+                     u8                irq_index,
+                     u32               *mask);
 
-/**
- * dprc_get_irq_status() - Get the current status of any pending interrupts.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @status:    Returned interrupts status - one bit per cause:
- *                     0 = no interrupt pending
- *                     1 = interrupt pending
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_irq_status(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
-                       uint8_t                 irq_index,
-                       uint32_t                *status);
+                       u32             cmd_flags,
+                       u16             token,
+                       u8                      irq_index,
+                       u32             *status);
 
-/**
- * dprc_clear_irq_status() - Clear a pending interrupt's status
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @irq_index: The interrupt index to configure
- * @status:    bits to clear (W1C) - one bit per cause:
- *                                     0 = don't change
- *                                     1 = clear status bit
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_clear_irq_status(struct fsl_mc_io     *mc_io,
-                         uint16_t              token,
-                         uint8_t               irq_index,
-                         uint32_t              status);
+                         u32           cmd_flags,
+                         u16           token,
+                         u8            irq_index,
+                         u32           status);
 
 /**
  * struct dprc_attributes - Container attributes
@@ -377,81 +240,38 @@ int dprc_clear_irq_status(struct fsl_mc_io        *mc_io,
  */
 struct dprc_attributes {
        int container_id;
-       uint16_t icid;
+       u16 icid;
        int portal_id;
-       uint64_t options;
+       u64 options;
        /**
         * struct version - DPRC version
         * @major: DPRC major version
         * @minor: DPRC minor version
         */
        struct {
-               uint16_t major;
-               uint16_t minor;
+               u16 major;
+               u16 minor;
        } version;
 };
 
-/**
- * dprc_get_attributes() - Obtains container attributes
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @attributes Returned container attributes
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_attributes(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
+                       u32             cmd_flags,
+                       u16             token,
                        struct dprc_attributes  *attributes);
 
-/**
- * dprc_set_res_quota() - Set allocation policy for a specific resource/object
- *             type in a child container
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @child_container_id:        ID of the child container
- * @type:      Resource/object type
- * @quota:     Sets the maximum number of resources of the selected type
- *             that the child container is allowed to allocate from its parent;
- *             when quota is set to -1, the policy is the same as container's
- *             general policy.
- *
- * Allocation policy determines whether or not a container may allocate
- * resources from its parent. Each container has a 'global' allocation policy
- * that is set when the container is created.
- *
- * This function sets allocation policy for a specific resource type.
- * The default policy for all resource types matches the container's 'global'
- * allocation policy.
- *
- * Return:     '0' on Success; Error code otherwise.
- *
- * @warning    Only the parent container is allowed to change a child policy.
- */
 int dprc_set_res_quota(struct fsl_mc_io        *mc_io,
-                      uint16_t         token,
+                      u32              cmd_flags,
+                      u16              token,
                       int              child_container_id,
                       char             *type,
-                      uint16_t         quota);
+                      u16              quota);
 
-/**
- * dprc_get_res_quota() - Gets the allocation policy of a specific
- *             resource/object type in a child container
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @child_container_id;        ID of the child container
- * @type:      resource/object type
- * @quota:     Returnes the maximum number of resources of the selected type
- *             that the child container is allowed to allocate from the parent;
- *             when quota is set to -1, the policy is the same as container's
- *             general policy.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_res_quota(struct fsl_mc_io        *mc_io,
-                      uint16_t         token,
+                      u32              cmd_flags,
+                      u16              token,
                       int              child_container_id,
                       char             *type,
-                      uint16_t         *quota);
+                      u16              *quota);
 
 /* Resource request options */
 
@@ -492,106 +312,38 @@ int dprc_get_res_quota(struct fsl_mc_io  *mc_io,
  */
 struct dprc_res_req {
        char type[16];
-       uint32_t num;
-       uint32_t options;
+       u32 num;
+       u32 options;
        int id_base_align;
 };
 
-/**
- * dprc_assign() - Assigns objects or resource to a child container.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @container_id: ID of the child container
- * @res_req:   Describes the type and amount of resources to
- *                     assign to the given container
- *
- * Assignment is usually done by a parent (this DPRC) to one of its child
- * containers.
- *
- * According to the DPRC allocation policy, the assigned resources may be taken
- * (allocated) from the container's ancestors, if not enough resources are
- * available in the container itself.
- *
- * The type of assignment depends on the dprc_res_req options, as follows:
- * - DPRC_RES_REQ_OPT_EXPLICIT: indicates that assigned resources should have
- *   the explicit base ID specified at the id_base_align field of res_req.
- * - DPRC_RES_REQ_OPT_ALIGNED: indicates that the assigned resources should be
- *   aligned to the value given at id_base_align field of res_req.
- * - DPRC_RES_REQ_OPT_PLUGGED: Relevant only for object assignment,
- *   and indicates that the object must be set to the plugged state.
- *
- * A container may use this function with its own ID in order to change a
- * object state to plugged or unplugged.
- *
- * If IRQ information has been set in the child DPRC, it will signal an
- * interrupt following every change in its object assignment.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_assign(struct fsl_mc_io       *mc_io,
-               uint16_t                token,
+               u32             cmd_flags,
+               u16             token,
                int                     container_id,
                struct dprc_res_req     *res_req);
 
-/**
- * dprc_unassign() - Un-assigns objects or resources from a child container
- *             and moves them into this (parent) DPRC.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @child_container_id:        ID of the child container
- * @res_req:   Describes the type and amount of resources to un-assign from
- *             the child container
- *
- * Un-assignment of objects can succeed only if the object is not in the
- * plugged or opened state.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_unassign(struct fsl_mc_io     *mc_io,
-                 uint16_t              token,
+                 u32           cmd_flags,
+                 u16           token,
                  int                   child_container_id,
                  struct dprc_res_req   *res_req);
 
-/**
- * dprc_get_pool_count() - Get the number of dprc's pools
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @pool_count:        Returned number of resource pools in the dprc
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_pool_count(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
+                       u32             cmd_flags,
+                       u16             token,
                        int                     *pool_count);
 
-/**
- * dprc_get_pool() - Get the type (string) of a certain dprc's pool
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @pool_index;        Index of the pool to be queried (< pool_count)
- * @type:      The type of the pool
- *
- * The pool types retrieved one by one by incrementing
- * pool_index up to (not including) the value of pool_count returned
- * from dprc_get_pool_count(). dprc_get_pool_count() must
- * be called prior to dprc_get_pool().
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_pool(struct fsl_mc_io     *mc_io,
-                 uint16_t              token,
+                 u32           cmd_flags,
+                 u16           token,
                  int                   pool_index,
                  char                  *type);
 
-/**
- * dprc_get_obj_count() - Obtains the number of objects in the DPRC
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @obj_count: Number of objects assigned to the DPRC
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dprc_get_obj_count(struct fsl_mc_io *mc_io, uint16_t token, int *obj_count);
+int dprc_get_obj_count(struct fsl_mc_io *mc_io,
+                      u32              cmd_flags,
+                      u16              token,
+                      int              *obj_count);
 
 /* Objects Attributes Flags */
 
@@ -610,50 +362,53 @@ int dprc_get_obj_count(struct fsl_mc_io *mc_io, uint16_t token, int *obj_count);
  * @irq_count: Number of interrupts supported by the object
  * @region_count: Number of mappable regions supported by the object
  * @state: Object state: combination of DPRC_OBJ_STATE_ states
+ * @label: Object label
  */
 struct dprc_obj_desc {
        char type[16];
        int id;
-       uint16_t vendor;
-       uint16_t ver_major;
-       uint16_t ver_minor;
-       uint8_t irq_count;
-       uint8_t region_count;
-       uint32_t state;
+       u16 vendor;
+       u16 ver_major;
+       u16 ver_minor;
+       u8 irq_count;
+       u8 region_count;
+       u32 state;
+       char label[16];
 };
 
-/**
- * dprc_get_obj() - Get general information on an object
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @obj_index: Index of the object to be queried (< obj_count)
- * @obj_desc:  Returns the requested object descriptor
- *
- * The object descriptors are retrieved one by one by incrementing
- * obj_index up to (not including) the value of obj_count returned
- * from dprc_get_obj_count(). dprc_get_obj_count() must
- * be called prior to dprc_get_obj().
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_obj(struct fsl_mc_io      *mc_io,
-                uint16_t               token,
+                u32            cmd_flags,
+                u16            token,
                 int                    obj_index,
                 struct dprc_obj_desc   *obj_desc);
 
-/**
- * dprc_get_res_count() - Obtains the number of free resources that are assigned
- *             to this container, by pool type
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @type:      pool type
- * @res_count: Returned number of free resources of the given
- *                     resource type that are assigned to this DPRC
- *
- * Return:     '0' on Success; Error code otherwise.
- */
+int dprc_get_obj_desc(struct fsl_mc_io         *mc_io,
+                     u32               cmd_flags,
+                       u16             token,
+                       char                    *obj_type,
+                       int                     obj_id,
+                       struct dprc_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);
+
+int dprc_get_obj_irq(struct fsl_mc_io          *mc_io,
+                    u32                        cmd_flags,
+                    u16                        token,
+                    char                       *obj_type,
+                    int                        obj_id,
+                    u8                 irq_index,
+                    int                        *type,
+                    struct dprc_irq_cfg        *irq_cfg);
+
 int dprc_get_res_count(struct fsl_mc_io        *mc_io,
-                      uint16_t         token,
+                      u32              cmd_flags,
+                      u16              token,
                       char             *type,
                       int              *res_count);
 
@@ -684,115 +439,98 @@ struct dprc_res_ids_range_desc {
        enum dprc_iter_status iter_status;
 };
 
-/**
- * dprc_get_res_ids() - Obtains IDs of free resources in the container
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @type:      pool type
- * @range_desc:        range descriptor
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_res_ids(struct fsl_mc_io                  *mc_io,
-                    uint16_t                           token,
+                    u32                                cmd_flags,
+                    u16                                token,
                     char                               *type,
                     struct dprc_res_ids_range_desc     *range_desc);
 
+/* Region flags */
+/* Cacheable - Indicates that region should be mapped as cacheable */
+#define DPRC_REGION_CACHEABLE  0x00000001
+
 /**
- * dprc_get_portal_paddr() - Get the physical address of MC portals
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @portal_id: MC portal ID
- * @portal_addr: The physical address of the MC portal ID
- *
- * Return:     '0' on Success; Error code otherwise.
+ * enum dprc_region_type - Region type
+ * @DPRC_REGION_TYPE_MC_PORTAL: MC portal region
+ * @DPRC_REGION_TYPE_QBMAN_PORTAL: Qbman portal region
  */
-int dprc_get_portal_paddr(struct fsl_mc_io     *mc_io,
-                         uint16_t              token,
-                         int                   portal_id,
-                         uint64_t              *portal_addr);
+enum dprc_region_type {
+       DPRC_REGION_TYPE_MC_PORTAL,
+       DPRC_REGION_TYPE_QBMAN_PORTAL
+};
 
 /**
  * struct dprc_region_desc - Mappable region descriptor
- * @base_paddr: Region base physical address
+ * @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 {
-       uint64_t base_paddr;
-       uint32_t size;
+       u32 base_offset;
+       u32 size;
+       u32 flags;
+       enum dprc_region_type type;
 };
 
-/**
- * dprc_get_obj_region() - Get region information for a specified object.
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @obj_type;  Object type as returned in dprc_get_obj()
- * @obj_id:    Unique object instance as returned in dprc_get_obj()
- * @region_index: The specific region to query
- * @region_desc:  Returns the requested region descriptor
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_get_obj_region(struct fsl_mc_io       *mc_io,
-                       uint16_t                token,
+                       u32             cmd_flags,
+                       u16             token,
                        char                    *obj_type,
                        int                     obj_id,
-                       uint8_t                 region_index,
+                       u8                      region_index,
                        struct dprc_region_desc *region_desc);
 
+int dprc_set_obj_label(struct fsl_mc_io        *mc_io,
+                      u32              cmd_flags,
+                      u16              token,
+                      char             *obj_type,
+                      int              obj_id,
+                      char             *label);
+
 /**
  * struct dprc_endpoint - Endpoint description for link connect/disconnect
  *                     operations
  * @type: Endpoint object type: NULL terminated string
  * @id: Endpoint object ID
- * @interface_id: Interface ID; should be set for endpoints with multiple
+ * @if_id: Interface ID; should be set for endpoints with multiple
  *             interfaces ("dpsw", "dpdmux"); for others, always set to 0
  */
 struct dprc_endpoint {
        char type[16];
        int id;
-       int interface_id;
+       int if_id;
 };
 
 /**
- * dprc_connect() - Connect two endpoints to create a network link between them
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @endpoint1: Endpoint 1 configuration parameters
- * @endpoint2: Endpoint 2 configuration parameters
- *
- * Return:     '0' on Success; Error code otherwise.
+ * struct dprc_connection_cfg - Connection configuration.
+ *                             Used for virtual connections only
+ * @committed_rate: Committed rate (Mbits/s)
+ * @max_rate: Maximum rate (Mbits/s)
  */
+struct dprc_connection_cfg {
+       u32 committed_rate;
+       u32 max_rate;
+};
+
 int dprc_connect(struct fsl_mc_io              *mc_io,
-                uint16_t                       token,
+                u32                    cmd_flags,
+                u16                    token,
                 const struct dprc_endpoint     *endpoint1,
-                const struct dprc_endpoint     *endpoint2);
+                const struct dprc_endpoint     *endpoint2,
+                const struct dprc_connection_cfg *cfg);
 
-/**
- * dprc_disconnect() - Disconnect one endpoint to remove its network connection
- * @mc_io:     Pointer to MC portal's I/O object
- * @token:     Token of DPRC object
- * @endpoint:  Endpoint configuration parameters
- *
- * Return:     '0' on Success; Error code otherwise.
- */
 int dprc_disconnect(struct fsl_mc_io           *mc_io,
-                   uint16_t                    token,
+                   u32                 cmd_flags,
+                   u16                 token,
                    const struct dprc_endpoint  *endpoint);
 
-/**
-* dprc_get_connection() - Get connected endpoint and link status if connection
-*                      exists.
-* @mc_io               Pointer to MC portal's I/O object
-* @token               Token of DPRC object
-* @endpoint1   Endpoint 1 configuration parameters
-* @endpoint2   Returned endpoint 2 configuration parameters
-* @state:      Returned link state: 1 - link is up, 0 - link is down
-*
-* Return:     '0' on Success; -ENAVAIL if connection does not exist.
-*/
 int dprc_get_connection(struct fsl_mc_io               *mc_io,
-                       uint16_t                        token,
+                       u32                     cmd_flags,
+                       u16                     token,
                        const struct dprc_endpoint      *endpoint1,
                        struct dprc_endpoint            *endpoint2,
                        int                             *state);