mirror of
https://github.com/u-boot/u-boot.git
synced 2025-01-27 05:03:28 +08:00
drivers: fsl-mc: Update flibs to mc-0.6.0.1
Update flibs changes to mc-0.6.0.1 for dpmang, dprc, dpni and dpio objects Also rename qbman_portal_ce/ci_paddr to qbman_portal_ce/ci_offset in dpio_attr. These are now offsets from the SoC QBMan portals base. Signed-off-by: J. German Rivera <German.Rivera@freescale.com> Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
c1000c12d3
commit
1f1c25c745
@ -313,7 +313,7 @@ int dpni_set_counter(struct fsl_mc_io *mc_io,
|
||||
|
||||
int dpni_set_link_cfg(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
struct dpni_link_cfg *cfg)
|
||||
const struct dpni_link_cfg *cfg)
|
||||
{
|
||||
struct mc_command cmd = { 0 };
|
||||
|
||||
|
@ -610,14 +610,16 @@ int dpio_init(struct dprc_obj_desc obj_desc)
|
||||
printf("dpio_enable() failed %d\n", err);
|
||||
goto err_get_enable;
|
||||
}
|
||||
debug("ce_paddr=0x%llx, ci_paddr=0x%llx, portalid=%d, prios=%d\n",
|
||||
attr.qbman_portal_ce_paddr,
|
||||
attr.qbman_portal_ci_paddr,
|
||||
debug("ce_offset=0x%llx, ci_offset=0x%llx, portalid=%d, prios=%d\n",
|
||||
attr.qbman_portal_ce_offset,
|
||||
attr.qbman_portal_ci_offset,
|
||||
attr.qbman_portal_id,
|
||||
attr.num_priorities);
|
||||
|
||||
p_des.cena_bar = (void *)attr.qbman_portal_ce_paddr;
|
||||
p_des.cinh_bar = (void *)attr.qbman_portal_ci_paddr;
|
||||
p_des.cena_bar = (void *)(SOC_QBMAN_PORTALS_BASE_ADDR
|
||||
+ attr.qbman_portal_ce_offset);
|
||||
p_des.cinh_bar = (void *)(SOC_QBMAN_PORTALS_BASE_ADDR
|
||||
+ attr.qbman_portal_ci_offset);
|
||||
|
||||
dflt_dpio->sw_portal = qbman_swp_init(&p_des);
|
||||
if (dflt_dpio->sw_portal == NULL) {
|
||||
|
@ -8,8 +8,8 @@
|
||||
#define _FSL_DPIO_H
|
||||
|
||||
/* DPIO Version */
|
||||
#define DPIO_VER_MAJOR 2
|
||||
#define DPIO_VER_MINOR 1
|
||||
#define DPIO_VER_MAJOR 3
|
||||
#define DPIO_VER_MINOR 0
|
||||
|
||||
/* Command IDs */
|
||||
#define DPIO_CMDID_CLOSE 0x800
|
||||
@ -31,8 +31,8 @@ do { \
|
||||
MC_RSP_OP(cmd, 0, 32, 16, uint16_t, attr->qbman_portal_id);\
|
||||
MC_RSP_OP(cmd, 0, 48, 8, uint8_t, attr->num_priorities);\
|
||||
MC_RSP_OP(cmd, 0, 56, 4, enum dpio_channel_mode, attr->channel_mode);\
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, attr->qbman_portal_ce_paddr);\
|
||||
MC_RSP_OP(cmd, 2, 0, 64, uint64_t, attr->qbman_portal_ci_paddr);\
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, attr->qbman_portal_ce_offset);\
|
||||
MC_RSP_OP(cmd, 2, 0, 64, uint64_t, attr->qbman_portal_ci_offset);\
|
||||
MC_RSP_OP(cmd, 3, 0, 16, uint16_t, attr->version.major);\
|
||||
MC_RSP_OP(cmd, 3, 16, 16, uint16_t, attr->version.minor);\
|
||||
} while (0)
|
||||
@ -42,6 +42,7 @@ do { \
|
||||
*/
|
||||
|
||||
struct fsl_mc_io;
|
||||
|
||||
/**
|
||||
* dpio_open() - Open a control session for the specified object
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
@ -61,18 +62,9 @@ struct fsl_mc_io;
|
||||
int dpio_open(struct fsl_mc_io *mc_io, int dpio_id, uint16_t *token);
|
||||
|
||||
/**
|
||||
* dpio_open() - Open a control session for the specified object
|
||||
* dpio_close() - Close the control session of the object
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
* @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 the specific MC
|
||||
* portal; this token must be used in all subsequent commands for
|
||||
* this specific object.
|
||||
* @token: Token of DPIO object
|
||||
*
|
||||
* Return: '0' on Success; Error code otherwise.
|
||||
*/
|
||||
@ -121,10 +113,8 @@ int dpio_reset(struct fsl_mc_io *mc_io, uint16_t token);
|
||||
* struct dpio_attr - Structure representing DPIO attributes
|
||||
* @id: DPIO object ID
|
||||
* @version: DPIO version
|
||||
* @qbman_portal_ce_paddr: Physical address of the software portal
|
||||
* cache-enabled area
|
||||
* @qbman_portal_ci_paddr: Physical address of the software portal
|
||||
* cache-inhibited area
|
||||
* @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);
|
||||
@ -141,8 +131,8 @@ struct dpio_attr {
|
||||
uint16_t major;
|
||||
uint16_t minor;
|
||||
} version;
|
||||
uint64_t qbman_portal_ce_paddr;
|
||||
uint64_t qbman_portal_ci_paddr;
|
||||
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;
|
||||
|
@ -14,7 +14,7 @@ struct fsl_mc_io;
|
||||
/**
|
||||
* Management Complex firmware version information
|
||||
*/
|
||||
#define MC_VER_MAJOR 6
|
||||
#define MC_VER_MAJOR 7
|
||||
#define MC_VER_MINOR 0
|
||||
|
||||
/**
|
||||
|
@ -7,7 +7,7 @@
|
||||
#define _FSL_DPNI_H
|
||||
|
||||
/* DPNI Version */
|
||||
#define DPNI_VER_MAJOR 4
|
||||
#define DPNI_VER_MAJOR 5
|
||||
#define DPNI_VER_MINOR 0
|
||||
|
||||
/* Command IDs */
|
||||
@ -78,7 +78,7 @@ do { \
|
||||
MC_RSP_OP(cmd, 0, 32, 8, uint8_t, attr->max_tcs); \
|
||||
MC_RSP_OP(cmd, 0, 40, 8, uint8_t, attr->max_senders); \
|
||||
MC_RSP_OP(cmd, 0, 48, 8, enum net_prot, attr->start_hdr); \
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, attr->options); \
|
||||
MC_RSP_OP(cmd, 1, 0, 32, uint32_t, attr->options); \
|
||||
MC_RSP_OP(cmd, 2, 0, 8, uint8_t, attr->max_unicast_filters); \
|
||||
MC_RSP_OP(cmd, 2, 8, 8, uint8_t, attr->max_multicast_filters);\
|
||||
MC_RSP_OP(cmd, 2, 16, 8, uint8_t, attr->max_vlan_filters); \
|
||||
@ -98,7 +98,9 @@ do { \
|
||||
MC_RSP_OP(cmd, 4, 16, 16, uint16_t, \
|
||||
attr->ipr_cfg.min_frag_size_ipv4); \
|
||||
MC_RSP_OP(cmd, 4, 32, 16, uint16_t, \
|
||||
attr->ipr_cfg.min_frag_size_ipv6); \
|
||||
attr->ipr_cfg.min_frag_size_ipv6);\
|
||||
MC_RSP_OP(cmd, 4, 48, 8, uint8_t, attr->max_policers); \
|
||||
MC_RSP_OP(cmd, 4, 56, 8, uint8_t, attr->max_congestion_ctrl); \
|
||||
MC_RSP_OP(cmd, 5, 0, 16, uint16_t, \
|
||||
attr->ipr_cfg.max_open_frames_ipv4); \
|
||||
MC_RSP_OP(cmd, 5, 16, 16, uint16_t, \
|
||||
@ -208,7 +210,7 @@ do { \
|
||||
/* cmd, param, offset, width, type, arg_name */
|
||||
#define DPNI_CMD_SET_LINK_CFG(cmd, cfg) \
|
||||
do { \
|
||||
MC_CMD_OP(cmd, 1, 0, 64, uint64_t, cfg->rate);\
|
||||
MC_CMD_OP(cmd, 1, 0, 32, uint32_t, cfg->rate);\
|
||||
MC_CMD_OP(cmd, 2, 0, 64, uint64_t, cfg->options);\
|
||||
} while (0)
|
||||
|
||||
@ -216,7 +218,7 @@ do { \
|
||||
#define DPNI_RSP_GET_LINK_STATE(cmd, state) \
|
||||
do { \
|
||||
MC_RSP_OP(cmd, 0, 32, 1, int, state->up);\
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, state->rate);\
|
||||
MC_RSP_OP(cmd, 1, 0, 32, uint32_t, state->rate);\
|
||||
MC_RSP_OP(cmd, 2, 0, 64, uint64_t, state->options);\
|
||||
} while (0)
|
||||
|
||||
@ -326,6 +328,13 @@ do { \
|
||||
MC_CMD_OP(cmd, 1, 0, 64, uint64_t, cfg->user_ctx); \
|
||||
MC_CMD_OP(cmd, 2, 16, 8, uint8_t, tc_id); \
|
||||
MC_CMD_OP(cmd, 2, 32, 32, uint32_t, cfg->options); \
|
||||
MC_CMD_OP(cmd, 3, 0, 4, enum dpni_flc_type, cfg->flc_cfg.flc_type); \
|
||||
MC_CMD_OP(cmd, 3, 4, 4, enum dpni_stash_size, \
|
||||
cfg->flc_cfg.frame_data_size);\
|
||||
MC_CMD_OP(cmd, 3, 8, 4, enum dpni_stash_size, \
|
||||
cfg->flc_cfg.flow_context_size);\
|
||||
MC_CMD_OP(cmd, 3, 32, 32, uint32_t, cfg->flc_cfg.options);\
|
||||
MC_CMD_OP(cmd, 4, 0, 64, uint64_t, cfg->flc_cfg.flow_context);\
|
||||
} while (0)
|
||||
|
||||
/* cmd, param, offset, width, type, arg_name */
|
||||
@ -343,6 +352,13 @@ do { \
|
||||
MC_RSP_OP(cmd, 0, 40, 2, enum dpni_dest, attr->dest_cfg.dest_type); \
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, attr->user_ctx); \
|
||||
MC_RSP_OP(cmd, 2, 32, 32, uint32_t, attr->fqid); \
|
||||
MC_RSP_OP(cmd, 3, 0, 4, enum dpni_flc_type, attr->flc_cfg.flc_type); \
|
||||
MC_RSP_OP(cmd, 3, 4, 4, enum dpni_stash_size, \
|
||||
attr->flc_cfg.frame_data_size);\
|
||||
MC_RSP_OP(cmd, 3, 8, 4, enum dpni_stash_size, \
|
||||
attr->flc_cfg.flow_context_size);\
|
||||
MC_RSP_OP(cmd, 3, 32, 32, uint32_t, attr->flc_cfg.options);\
|
||||
MC_RSP_OP(cmd, 4, 0, 64, uint64_t, attr->flc_cfg.flow_context);\
|
||||
} while (0)
|
||||
|
||||
enum net_prot {
|
||||
@ -399,7 +415,8 @@ enum net_prot {
|
||||
NET_PROT_DUMMY_LAST
|
||||
};
|
||||
|
||||
/* Data Path Network Interface API
|
||||
/**
|
||||
* Data Path Network Interface API
|
||||
* Contains initialization APIs and runtime control APIs for DPNI
|
||||
*/
|
||||
|
||||
@ -545,6 +562,8 @@ int dpni_reset(struct fsl_mc_io *mc_io, uint16_t token);
|
||||
* @max_qos_entries: if 'max_tcs > 1', declares the maximum entries in QoS table
|
||||
* @max_qos_key_size: Maximum key size for the QoS look-up
|
||||
* @max_dist_key_size: Maximum key size for the distribution look-up
|
||||
* @max_policers: Maximum number of policers;
|
||||
* @max_congestion_ctrl: Maximum number of congestion control groups (CGs);
|
||||
* @ipr_cfg: IP reassembly configuration
|
||||
*/
|
||||
struct dpni_attr {
|
||||
@ -559,7 +578,7 @@ struct dpni_attr {
|
||||
uint16_t minor;
|
||||
} version;
|
||||
enum net_prot start_hdr;
|
||||
uint64_t options;
|
||||
uint32_t options;
|
||||
uint8_t max_senders;
|
||||
uint8_t max_tcs;
|
||||
uint8_t max_dist_per_tc[DPNI_MAX_TC];
|
||||
@ -569,8 +588,11 @@ struct dpni_attr {
|
||||
uint8_t max_qos_entries;
|
||||
uint8_t max_qos_key_size;
|
||||
uint8_t max_dist_key_size;
|
||||
uint8_t max_policers;
|
||||
uint8_t max_congestion_ctrl;
|
||||
struct dpni_ipr_cfg ipr_cfg;
|
||||
};
|
||||
|
||||
/**
|
||||
* dpni_get_attributes() - Retrieve DPNI attributes.
|
||||
* @mc_io: Pointer to MC portal's I/O objec
|
||||
@ -634,6 +656,7 @@ struct dpni_buffer_layout {
|
||||
int dpni_get_rx_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
struct dpni_buffer_layout *layout);
|
||||
|
||||
/**
|
||||
* dpni_set_rx_buffer_layout() - Set Rx buffer layout configuration.
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
@ -661,19 +684,19 @@ int dpni_get_tx_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
struct dpni_buffer_layout *layout);
|
||||
|
||||
/**
|
||||
* @brief Set Tx buffer layout configuration.
|
||||
* dpni_set_tx_buffer_layout() - Set Tx buffer layout configuration.
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
* @token: Token of DPNI object
|
||||
* @layout: Buffer layout configuration
|
||||
*
|
||||
* @param[in] mc_io Pointer to MC portal's I/O object
|
||||
* @param[in] token Token of DPNI object
|
||||
* @param[in] layout Buffer layout configuration
|
||||
*
|
||||
* @returns '0' on Success; Error code otherwise.
|
||||
* Return: '0' on Success; Error code otherwise.
|
||||
*
|
||||
* @warning Allowed only when DPNI is disabled
|
||||
*/
|
||||
int dpni_set_tx_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
const struct dpni_buffer_layout *layout);
|
||||
|
||||
/**
|
||||
* dpni_get_tx_conf_buffer_layout() - Retrieve Tx confirmation buffer layout
|
||||
* attributes.
|
||||
@ -686,6 +709,7 @@ int dpni_set_tx_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
int dpni_get_tx_conf_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
struct dpni_buffer_layout *layout);
|
||||
|
||||
/**
|
||||
* dpni_set_tx_conf_buffer_layout() - Set Tx confirmation buffer layout
|
||||
* configuration.
|
||||
@ -700,15 +724,16 @@ int dpni_get_tx_conf_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
int dpni_set_tx_conf_buffer_layout(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
const struct dpni_buffer_layout *layout);
|
||||
|
||||
/**
|
||||
* dpni_get_spid() - Get the AIOP storage profile ID associated with the DPNI
|
||||
* dpni_get_qdid() - Get the Queuing Destination ID (QDID) that should be used
|
||||
* for enqueue operations
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
* @token: Token of DPNI object
|
||||
* @spid: Returned aiop storage-profile ID
|
||||
* @qdid: Returned virtual QDID value that should be used as an argument
|
||||
* in all enqueue operations
|
||||
*
|
||||
* Return: '0' on Success; Error code otherwise.
|
||||
*
|
||||
* @warning Only relevant for DPNI that belongs to AIOP container.
|
||||
*/
|
||||
int dpni_get_qdid(struct fsl_mc_io *mc_io, uint16_t token, uint16_t *qdid);
|
||||
|
||||
@ -781,13 +806,23 @@ int dpni_set_counter(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
enum dpni_counter counter,
|
||||
uint64_t value);
|
||||
|
||||
/* Enable auto-negotiation */
|
||||
#define DPNI_LINK_OPT_AUTONEG 0x0000000000000001ULL
|
||||
/* Enable half-duplex mode */
|
||||
#define DPNI_LINK_OPT_HALF_DUPLEX 0x0000000000000002ULL
|
||||
/* Enable pause frames */
|
||||
#define DPNI_LINK_OPT_PAUSE 0x0000000000000004ULL
|
||||
/* Enable a-symmetric pause frames */
|
||||
#define DPNI_LINK_OPT_ASYM_PAUSE 0x0000000000000008ULL
|
||||
|
||||
/**
|
||||
* struct - Structure representing DPNI link configuration
|
||||
* @rate: Rate
|
||||
* @options: Mask of available options; use 'DPNI_LINK_OPT_<X>' values
|
||||
*/
|
||||
struct dpni_link_cfg {
|
||||
uint64_t rate;
|
||||
uint32_t rate;
|
||||
uint64_t options;
|
||||
};
|
||||
|
||||
@ -801,7 +836,7 @@ struct dpni_link_cfg {
|
||||
*/
|
||||
int dpni_set_link_cfg(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
struct dpni_link_cfg *cfg);
|
||||
const struct dpni_link_cfg *cfg);
|
||||
|
||||
/**
|
||||
* struct dpni_link_state - Structure representing DPNI link state
|
||||
@ -810,7 +845,7 @@ int dpni_set_link_cfg(struct fsl_mc_io *mc_io,
|
||||
* @up: Link state; '0' for down, '1' for up
|
||||
*/
|
||||
struct dpni_link_state {
|
||||
uint64_t rate;
|
||||
uint32_t rate;
|
||||
uint64_t options;
|
||||
int up;
|
||||
};
|
||||
@ -838,6 +873,7 @@ int dpni_get_link_state(struct fsl_mc_io *mc_io,
|
||||
int dpni_set_primary_mac_addr(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
const uint8_t mac_addr[6]);
|
||||
|
||||
/**
|
||||
* dpni_get_primary_mac_addr() - Get the primary MAC address
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
@ -849,6 +885,7 @@ int dpni_set_primary_mac_addr(struct fsl_mc_io *mc_io,
|
||||
int dpni_get_primary_mac_addr(struct fsl_mc_io *mc_io,
|
||||
uint16_t token,
|
||||
uint8_t mac_addr[6]);
|
||||
|
||||
/**
|
||||
* dpni_add_mac_addr() - Add MAC address filter
|
||||
* @mc_io: Pointer to MC portal's I/O object
|
||||
@ -875,7 +912,7 @@ int dpni_remove_mac_addr(struct fsl_mc_io *mc_io,
|
||||
|
||||
/**
|
||||
* enum dpni_dest - DPNI destination types
|
||||
* DPNI_DEST_NONE: Unassigned destination; The queue is set in parked mode and
|
||||
* @DPNI_DEST_NONE: Unassigned destination; The queue is set in parked mode and
|
||||
* does not generate FQDAN notifications; user is expected to
|
||||
* dequeue from the queue based on polling or other user-defined
|
||||
* method
|
||||
@ -906,12 +943,69 @@ struct dpni_dest_cfg {
|
||||
uint8_t priority;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpni_flc_type - DPNI FLC types
|
||||
* @DPNI_FLC_USER_DEFINED: select the FLC to be used for user defined value
|
||||
* @DPNI_FLC_STASH: select the FLC to be used for stash control
|
||||
*/
|
||||
enum dpni_flc_type {
|
||||
DPNI_FLC_USER_DEFINED = 0,
|
||||
DPNI_FLC_STASH = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpni_stash_size - DPNI FLC stashing size
|
||||
* @DPNI_STASH_SIZE_0B: no stash
|
||||
* @DPNI_STASH_SIZE_64B: stashes 64 bytes
|
||||
* @DPNI_STASH_SIZE_128B: stashes 128 bytes
|
||||
* @DPNI_STASH_SIZE_192B: stashes 192 bytes
|
||||
*/
|
||||
enum dpni_stash_size {
|
||||
DPNI_STASH_SIZE_0B = 0,
|
||||
DPNI_STASH_SIZE_64B = 1,
|
||||
DPNI_STASH_SIZE_128B = 2,
|
||||
DPNI_STASH_SIZE_192B = 3,
|
||||
};
|
||||
|
||||
/* DPNI FLC stash options */
|
||||
|
||||
/* stashes the whole annotation area (up to 192 bytes) */
|
||||
#define DPNI_FLC_STASH_FRAME_ANNOTATION 0x00000001
|
||||
|
||||
/**
|
||||
* struct dpni_flc_cfg - Structure representing DPNI FLC configuration
|
||||
* @flc_type: FLC type
|
||||
* @options: Mask of available options;
|
||||
* use 'DPNI_FLC_STASH_<X>' values
|
||||
* @frame_data_size: Size of frame data to be stashed
|
||||
* @flow_context_size: Size of flow context to be stashed
|
||||
* @flow_context: 1. In case flc_type is 'DPNI_FLC_USER_DEFINED':
|
||||
* this value will be provided in the frame descriptor
|
||||
* (FD[FLC])
|
||||
* 2. In case flc_type is 'DPNI_FLC_STASH':
|
||||
* this value will be I/O virtual address of the
|
||||
* flow-context;
|
||||
* Must be cacheline-aligned and DMA-able memory
|
||||
*/
|
||||
struct dpni_flc_cfg {
|
||||
enum dpni_flc_type flc_type;
|
||||
uint32_t options;
|
||||
enum dpni_stash_size frame_data_size;
|
||||
enum dpni_stash_size flow_context_size;
|
||||
uint64_t flow_context;
|
||||
};
|
||||
|
||||
/* DPNI queue modification options */
|
||||
|
||||
/* Select to modify the user's context associated with the queue */
|
||||
#define DPNI_QUEUE_OPT_USER_CTX 0x00000001
|
||||
/* Select to modify the queue's destination */
|
||||
#define DPNI_QUEUE_OPT_DEST 0x00000002
|
||||
/** Select to modify the flow-context parameters;
|
||||
* not applicable for Tx-conf/Err queues as the FD comes from the user
|
||||
*/
|
||||
#define DPNI_QUEUE_OPT_FLC 0x00000004
|
||||
|
||||
|
||||
/**
|
||||
* struct dpni_queue_cfg - Structure representing queue configuration
|
||||
@ -922,11 +1016,17 @@ struct dpni_dest_cfg {
|
||||
* is contained in 'options'
|
||||
* @dest_cfg: Queue destination parameters;
|
||||
* valid only if 'DPNI_QUEUE_OPT_DEST' is contained in 'options'
|
||||
* @flc_cfg: Flow context configuration; in case the TC's distribution
|
||||
* is either NONE or HASH the FLC's settings of flow#0 are used.
|
||||
* in the case of FS (flow-steering) the flow's FLC settings
|
||||
* are used.
|
||||
* valid only if 'DPNI_QUEUE_OPT_FLC' is contained in 'options'
|
||||
*/
|
||||
struct dpni_queue_cfg {
|
||||
uint32_t options;
|
||||
uint64_t user_ctx;
|
||||
struct dpni_dest_cfg dest_cfg;
|
||||
struct dpni_flc_cfg flc_cfg;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -934,11 +1034,13 @@ struct dpni_queue_cfg {
|
||||
* @user_ctx: User context value provided in the frame descriptor of each
|
||||
* dequeued frame
|
||||
* @dest_cfg: Queue destination configuration
|
||||
* @flc_cfg: Flow context configuration
|
||||
* @fqid: Virtual fqid value to be used for dequeue operations
|
||||
*/
|
||||
struct dpni_queue_attr {
|
||||
uint64_t user_ctx;
|
||||
struct dpni_dest_cfg dest_cfg;
|
||||
struct dpni_flc_cfg flc_cfg;
|
||||
uint32_t fqid;
|
||||
};
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#define _FSL_DPRC_H
|
||||
|
||||
/* DPRC Version */
|
||||
#define DPRC_VER_MAJOR 2
|
||||
#define DPRC_VER_MAJOR 4
|
||||
#define DPRC_VER_MINOR 0
|
||||
|
||||
/* Command IDs */
|
||||
@ -88,6 +88,22 @@ do { \
|
||||
MC_RSP_OP(cmd, 4, 40, 8, char, obj_desc->type[13]);\
|
||||
MC_RSP_OP(cmd, 4, 48, 8, char, obj_desc->type[14]);\
|
||||
MC_RSP_OP(cmd, 4, 56, 8, char, obj_desc->type[15]);\
|
||||
MC_RSP_OP(cmd, 5, 0, 8, char, obj_desc->label[0]);\
|
||||
MC_RSP_OP(cmd, 5, 8, 8, char, obj_desc->label[1]);\
|
||||
MC_RSP_OP(cmd, 5, 16, 8, char, obj_desc->label[2]);\
|
||||
MC_RSP_OP(cmd, 5, 24, 8, char, obj_desc->label[3]);\
|
||||
MC_RSP_OP(cmd, 5, 32, 8, char, obj_desc->label[4]);\
|
||||
MC_RSP_OP(cmd, 5, 40, 8, char, obj_desc->label[5]);\
|
||||
MC_RSP_OP(cmd, 5, 48, 8, char, obj_desc->label[6]);\
|
||||
MC_RSP_OP(cmd, 5, 56, 8, char, obj_desc->label[7]);\
|
||||
MC_RSP_OP(cmd, 6, 0, 8, char, obj_desc->label[8]);\
|
||||
MC_RSP_OP(cmd, 6, 8, 8, char, obj_desc->label[9]);\
|
||||
MC_RSP_OP(cmd, 6, 16, 8, char, obj_desc->label[10]);\
|
||||
MC_RSP_OP(cmd, 6, 24, 8, char, obj_desc->label[11]);\
|
||||
MC_RSP_OP(cmd, 6, 32, 8, char, obj_desc->label[12]);\
|
||||
MC_RSP_OP(cmd, 6, 40, 8, char, obj_desc->label[13]);\
|
||||
MC_RSP_OP(cmd, 6, 48, 8, char, obj_desc->label[14]);\
|
||||
MC_RSP_OP(cmd, 6, 56, 8, char, obj_desc->label[15]);\
|
||||
} while (0)
|
||||
|
||||
/* cmd, param, offset, width, type, arg_name */
|
||||
@ -175,10 +191,32 @@ do { \
|
||||
/* param, offset, width, type, arg_name */
|
||||
#define DPRC_RSP_GET_OBJ_REGION(cmd, region_desc) \
|
||||
do { \
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, region_desc->base_paddr);\
|
||||
MC_RSP_OP(cmd, 1, 0, 64, uint64_t, region_desc->base_offset);\
|
||||
MC_RSP_OP(cmd, 2, 0, 32, uint32_t, region_desc->size); \
|
||||
} while (0)
|
||||
|
||||
/* cmd, param, offset, width, type, arg_name */
|
||||
#define DPRC_CMD_SET_OBJ_LABEL(cmd, obj_index, label) \
|
||||
do { \
|
||||
MC_CMD_OP(cmd, 0, 0, 32, int, obj_index); \
|
||||
MC_CMD_OP(cmd, 1, 0, 8, char, label[0]);\
|
||||
MC_CMD_OP(cmd, 1, 8, 8, char, label[1]);\
|
||||
MC_CMD_OP(cmd, 1, 16, 8, char, label[2]);\
|
||||
MC_CMD_OP(cmd, 1, 24, 8, char, label[3]);\
|
||||
MC_CMD_OP(cmd, 1, 32, 8, char, label[4]);\
|
||||
MC_CMD_OP(cmd, 1, 40, 8, char, label[5]);\
|
||||
MC_CMD_OP(cmd, 1, 48, 8, char, label[6]);\
|
||||
MC_CMD_OP(cmd, 1, 56, 8, char, label[7]);\
|
||||
MC_CMD_OP(cmd, 2, 0, 8, char, label[8]);\
|
||||
MC_CMD_OP(cmd, 2, 8, 8, char, label[9]);\
|
||||
MC_CMD_OP(cmd, 2, 16, 8, char, label[10]);\
|
||||
MC_CMD_OP(cmd, 2, 24, 8, char, label[11]);\
|
||||
MC_CMD_OP(cmd, 2, 32, 8, char, label[12]);\
|
||||
MC_CMD_OP(cmd, 2, 40, 8, char, label[13]);\
|
||||
MC_CMD_OP(cmd, 2, 48, 8, char, label[14]);\
|
||||
MC_CMD_OP(cmd, 2, 56, 8, char, label[15]);\
|
||||
} while (0)
|
||||
|
||||
/* cmd, param, offset, width, type, arg_name */
|
||||
#define DPRC_CMD_CONNECT(cmd, endpoint1, endpoint2) \
|
||||
do { \
|
||||
@ -294,6 +332,7 @@ do { \
|
||||
/* Data Path Resource Container API
|
||||
* Contains DPRC API for managing and querying DPAA resources
|
||||
*/
|
||||
|
||||
struct fsl_mc_io;
|
||||
|
||||
/**
|
||||
@ -366,7 +405,7 @@ int dprc_close(struct fsl_mc_io *mc_io, uint16_t token);
|
||||
/* Object initialization allowed - software context associated with this
|
||||
* container is allowed to invoke object initialization operations.
|
||||
*/
|
||||
#define DPRC_CFG_OPT_OBJ_CREATE_ALLOWED 0x00000004
|
||||
#define DPRC_CFG_OPT_OBJ_CREATE_ALLOWED 0x00000004
|
||||
|
||||
/* Topology change allowed - software context associated with this
|
||||
* container is allowed to invoke topology operations, such as attach/detach
|
||||
@ -389,11 +428,13 @@ 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;
|
||||
int portal_id;
|
||||
uint64_t options;
|
||||
char label[16];
|
||||
};
|
||||
|
||||
/**
|
||||
@ -484,6 +525,7 @@ 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];
|
||||
@ -494,6 +536,7 @@ struct dprc_obj_desc {
|
||||
uint8_t irq_count;
|
||||
uint8_t region_count;
|
||||
uint32_t state;
|
||||
char label[16];
|
||||
};
|
||||
|
||||
/**
|
||||
@ -516,8 +559,8 @@ int dprc_get_obj(struct fsl_mc_io *mc_io,
|
||||
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
|
||||
* 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
|
||||
@ -574,11 +617,14 @@ int dprc_get_res_ids(struct fsl_mc_io *mc_io,
|
||||
|
||||
/**
|
||||
* 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)
|
||||
*/
|
||||
struct dprc_region_desc {
|
||||
uint64_t base_paddr;
|
||||
uint64_t base_offset;
|
||||
uint32_t size;
|
||||
};
|
||||
|
||||
@ -642,8 +688,8 @@ int dprc_disconnect(struct fsl_mc_io *mc_io,
|
||||
/**
|
||||
* 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
|
||||
* @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
|
||||
|
@ -27,6 +27,7 @@
|
||||
(MCFAPR_PL_MASK | MCFAPR_BMT_MASK)
|
||||
|
||||
#define SOC_MC_PORTALS_BASE_ADDR ((void __iomem *)0x00080C000000)
|
||||
#define SOC_QBMAN_PORTALS_BASE_ADDR ((void __iomem *)0x000818000000)
|
||||
#define SOC_MC_PORTAL_STRIDE 0x10000
|
||||
|
||||
#define SOC_MC_PORTAL_ADDR(_portal_id) \
|
||||
|
Loading…
Reference in New Issue
Block a user