New upstream version 17.11-rc3
[deb_dpdk.git] / drivers / bus / fslmc / mc / fsl_dpio.h
index 4448cca..3d96adf 100644 (file)
@@ -5,7 +5,7 @@
  *   BSD LICENSE
  *
  * Copyright 2013-2016 Freescale Semiconductor Inc.
- * Copyright 2016 NXP.
+ * Copyright 2016-2017 NXP.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
 
 struct fsl_mc_io;
 
-/**
- * dpio_open() - Open a control session for the specified object
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @dpio_id:   DPIO unique ID
- * @token:     Returned token; use in subsequent API calls
- *
- * This function can be used to open a control session for an
- * already created object; an object may have been declared in
- * the DPL or by calling the dpio_create() function.
- * This function returns a unique authentication token,
- * associated with the specific object ID and any MC portals
- * assigned to the parent container; this token must be used in
- * all subsequent commands for this specific object.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_open(struct fsl_mc_io *mc_io,
-             uint32_t          cmd_flags,
-             int               dpio_id,
-             uint16_t          *token);
+int dpio_open(struct fsl_mc_io *mc_io,
+             uint32_t cmd_flags,
+             int dpio_id,
+             uint16_t *token);
 
-/**
- * dpio_close() - Close the control session of the object
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_close(struct fsl_mc_io        *mc_io,
-              uint32_t         cmd_flags,
-              uint16_t         token);
+int dpio_close(struct fsl_mc_io *mc_io,
+              uint32_t cmd_flags,
+              uint16_t token);
 
 /**
  * enum dpio_channel_mode - DPIO notification channel mode
- * @DPIO_NO_CHANNEL: No support for notification channel
- * @DPIO_LOCAL_CHANNEL: Notifications on data availability can be received by a
+ * @DPIO_NO_CHANNEL:   No support for notification channel
+ * @DPIO_LOCAL_CHANNEL:        Notifications on data availability can be received by a
  *     dedicated channel in the DPIO; user should point the queue's
  *     destination in the relevant interface to this DPIO
  */
@@ -94,216 +69,94 @@ enum dpio_channel_mode {
 
 /**
  * struct dpio_cfg - Structure representing DPIO configuration
- * @channel_mode: Notification channel mode
- * @num_priorities: Number of priorities for the notification channel (1-8);
+ * @channel_mode:      Notification channel mode
+ * @num_priorities:    Number of priorities for the notification channel (1-8);
  *                     relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL'
  */
 struct dpio_cfg {
-       enum dpio_channel_mode  channel_mode;
-       uint8_t                 num_priorities;
+       enum dpio_channel_mode channel_mode;
+       uint8_t num_priorities;
 };
 
-/**
- * dpio_create() - Create the DPIO object.
- * @mc_io:     Pointer to MC portal's I/O object
- * @dprc_token:        Parent container token; '0' for default container
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @cfg:       Configuration structure
- * @obj_id: returned object id
- *
- * Create the DPIO object, allocate required resources and
- * perform required initialization.
- *
- * The object can be created either by declaring it in the
- * DPL file, or by calling this function.
- *
- * The function accepts an authentication token of a parent
- * container that this object should be assigned to. The token
- * can be '0' so the object will be assigned to the default container.
- * The newly created object can be opened with the returned
- * object id and using the container's associated tokens and MC portals.
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_create(struct fsl_mc_io       *mc_io,
-               uint16_t                dprc_token,
-               uint32_t                cmd_flags,
-               const struct dpio_cfg   *cfg,
-               uint32_t                *obj_id);
 
-/**
- * dpio_destroy() - Destroy the DPIO object and release all its resources.
- * @mc_io:     Pointer to MC portal's I/O object
- * @dprc_token: Parent container token; '0' for default container
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @object_id: The object id; it must be a valid id within the container that
- * created this object;
- *
- * The function accepts the authentication token of the parent container that
- * created the object (not the one that currently owns the object). The object
- * is searched within parent using the provided 'object_id'.
- * All tokens to the object must be closed before calling destroy.
- *
- * Return:     '0' on Success; Error code otherwise
- */
-int dpio_destroy(struct fsl_mc_io      *mc_io,
-                uint16_t               dprc_token,
-               uint32_t                cmd_flags,
-               uint32_t                object_id);
+int dpio_create(struct fsl_mc_io *mc_io,
+               uint16_t dprc_token,
+               uint32_t cmd_flags,
+               const struct dpio_cfg *cfg,
+               uint32_t *obj_id);
 
-/**
- * dpio_enable() - Enable the DPIO, allow I/O portal operations.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- *
- * Return:     '0' on Success; Error code otherwise
- */
-int dpio_enable(struct fsl_mc_io       *mc_io,
-               uint32_t                cmd_flags,
-               uint16_t                token);
+int dpio_destroy(struct fsl_mc_io *mc_io,
+                uint16_t dprc_token,
+                uint32_t cmd_flags,
+                uint32_t object_id);
 
-/**
- * dpio_disable() - Disable the DPIO, stop any I/O portal operation.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- *
- * Return:     '0' on Success; Error code otherwise
- */
-int dpio_disable(struct fsl_mc_io      *mc_io,
-                uint32_t               cmd_flags,
-                uint16_t               token);
+int dpio_enable(struct fsl_mc_io *mc_io,
+               uint32_t cmd_flags,
+               uint16_t token);
 
-/**
- * dpio_is_enabled() - Check if the DPIO is enabled.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @en:        Returns '1' if object is enabled; '0' otherwise
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_is_enabled(struct fsl_mc_io   *mc_io,
-                   uint32_t            cmd_flags,
-                   uint16_t            token,
-                   int                 *en);
+int dpio_disable(struct fsl_mc_io *mc_io,
+                uint32_t cmd_flags,
+                uint16_t token);
 
-/**
- * dpio_reset() - Reset the DPIO, returns the object to initial state.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_reset(struct fsl_mc_io        *mc_io,
-              uint32_t         cmd_flags,
-              uint16_t         token);
+int dpio_is_enabled(struct fsl_mc_io *mc_io,
+                   uint32_t cmd_flags,
+                   uint16_t token,
+                   int *en);
 
-/**
- * dpio_set_stashing_destination() - Set the stashing destination.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @sdest:     stashing destination value
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_set_stashing_destination(struct fsl_mc_io     *mc_io,
-                                 uint32_t              cmd_flags,
-                                 uint16_t              token,
-                                 uint8_t               sdest);
+int dpio_reset(struct fsl_mc_io *mc_io,
+              uint32_t cmd_flags,
+              uint16_t token);
 
-/**
- * dpio_get_stashing_destination() - Get the stashing destination..
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @sdest:     Returns the stashing destination value
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_get_stashing_destination(struct fsl_mc_io     *mc_io,
-                                 uint32_t              cmd_flags,
-                                 uint16_t              token,
-                                 uint8_t               *sdest);
+int dpio_set_stashing_destination(struct fsl_mc_io *mc_io,
+                                 uint32_t cmd_flags,
+                                 uint16_t token,
+                                 uint8_t sdest);
 
-/**
- * dpio_add_static_dequeue_channel() - Add a static dequeue channel.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @dpcon_id:  DPCON object ID
- * @channel_index: Returned channel index to be used in qbman API
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_add_static_dequeue_channel(struct fsl_mc_io   *mc_io,
-                                   uint32_t            cmd_flags,
-                                   uint16_t            token,
-                                   int                 dpcon_id,
-                                   uint8_t             *channel_index);
+int dpio_get_stashing_destination(struct fsl_mc_io *mc_io,
+                                 uint32_t cmd_flags,
+                                 uint16_t token,
+                                 uint8_t *sdest);
 
-/**
- * dpio_remove_static_dequeue_channel() - Remove a static dequeue channel.
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @dpcon_id:  DPCON object ID
- *
- * Return:     '0' on Success; Error code otherwise.
- */
-int dpio_remove_static_dequeue_channel(struct fsl_mc_io        *mc_io,
-                                      uint32_t         cmd_flags,
-                                      uint16_t         token,
-                                      int              dpcon_id);
+int dpio_add_static_dequeue_channel(struct fsl_mc_io *mc_io,
+                                   uint32_t cmd_flags,
+                                   uint16_t token,
+                                   int dpcon_id,
+                                   uint8_t *channel_index);
+
+int dpio_remove_static_dequeue_channel(struct fsl_mc_io *mc_io,
+                                      uint32_t cmd_flags,
+                                      uint16_t token,
+                                      int dpcon_id);
 
 /**
  * struct dpio_attr - Structure representing DPIO attributes
- * @id: DPIO object ID
- * @qbman_portal_ce_offset: offset of the software portal cache-enabled area
- * @qbman_portal_ci_offset: offset of the software portal cache-inhibited area
- * @qbman_portal_id: Software portal ID
- * @channel_mode: Notification channel mode
- * @num_priorities: Number of priorities for the notification channel (1-8);
- *                     relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL'
- * @qbman_version: QBMAN version
+ * @id:                                DPIO object ID
+ * @qbman_portal_ce_offset:    Offset of the software portal cache-enabled area
+ * @qbman_portal_ci_offset:    Offset of the software portal
+ *                             cache-inhibited area
+ * @qbman_portal_id:           Software portal ID
+ * @channel_mode:              Notification channel mode
+ * @num_priorities:            Number of priorities for the notification
+ *                             channel (1-8); relevant only if
+ *                             'channel_mode = DPIO_LOCAL_CHANNEL'
+ * @qbman_version:             QBMAN version
  */
 struct dpio_attr {
-       int                     id;
-       uint64_t                qbman_portal_ce_offset;
-       uint64_t                qbman_portal_ci_offset;
-       uint16_t                qbman_portal_id;
-       enum dpio_channel_mode  channel_mode;
-       uint8_t                 num_priorities;
-       uint32_t                qbman_version;
-       uint32_t                clk;
+       int id;
+       uint64_t qbman_portal_ce_offset;
+       uint64_t qbman_portal_ci_offset;
+       uint16_t qbman_portal_id;
+       enum dpio_channel_mode channel_mode;
+       uint8_t num_priorities;
+       uint32_t qbman_version;
+       uint32_t clk;
 };
 
-/**
- * dpio_get_attributes() - Retrieve DPIO attributes
- * @mc_io:     Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @token:     Token of DPIO object
- * @attr:      Returned object's attributes
- *
- * Return:     '0' on Success; Error code otherwise
- */
-int dpio_get_attributes(struct fsl_mc_io       *mc_io,
-                       uint32_t                cmd_flags,
-                       uint16_t                token,
-                       struct dpio_attr        *attr);
+int dpio_get_attributes(struct fsl_mc_io *mc_io,
+                       uint32_t cmd_flags,
+                       uint16_t token,
+                       struct dpio_attr *attr);
 
-/**
- * dpio_get_api_version() - Get Data Path I/O API version
- * @mc_io:  Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @major_ver: Major version of data path i/o API
- * @minor_ver: Minor version of data path i/o API
- *
- * Return:  '0' on Success; Error code otherwise.
- */
 int dpio_get_api_version(struct fsl_mc_io *mc_io,
                         uint32_t cmd_flags,
                         uint16_t *major_ver,