blob: 7f0075c71f0bc60ed9dee5fc9b09f4fa4ffe9db5 [file] [log] [blame]
Prabhakar Kushwahaa2a55e52015-03-19 09:20:45 -07001/*
2 * Freescale Layerscape MC I/O wrapper
3 *
4 * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
5 * Author: German Rivera <German.Rivera@freescale.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0+
8 */
9/*!
10 * @file fsl_dpbp.h
11 * @brief Data Path Buffer Pool API
12 */
13#ifndef __FSL_DPBP_H
14#define __FSL_DPBP_H
15
16/* DPBP Version */
17#define DPBP_VER_MAJOR 2
18#define DPBP_VER_MINOR 0
19
20/* Command IDs */
21#define DPBP_CMDID_CLOSE 0x800
22#define DPBP_CMDID_OPEN 0x804
23
24#define DPBP_CMDID_ENABLE 0x002
25#define DPBP_CMDID_DISABLE 0x003
26#define DPBP_CMDID_GET_ATTR 0x004
27#define DPBP_CMDID_RESET 0x005
28
29/* cmd, param, offset, width, type, arg_name */
30#define DPBP_CMD_OPEN(cmd, dpbp_id) \
31 MC_CMD_OP(cmd, 0, 0, 32, int, dpbp_id)
32
33/* cmd, param, offset, width, type, arg_name */
34#define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \
35do { \
36 MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \
37 MC_RSP_OP(cmd, 0, 32, 32, int, attr->id);\
38 MC_RSP_OP(cmd, 1, 0, 16, uint16_t, attr->version.major);\
39 MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\
40} while (0)
41
42/* Data Path Buffer Pool API
43 * Contains initialization APIs and runtime control APIs for DPBP
44 */
45
46struct fsl_mc_io;
47
48/**
49 * dpbp_open() - Open a control session for the specified object.
50 * @mc_io: Pointer to MC portal's I/O object
51 * @dpbp_id: DPBP unique ID
52 * @token: Returned token; use in subsequent API calls
53 *
54 * This function can be used to open a control session for an
55 * already created object; an object may have been declared in
56 * the DPL or by calling the dpbp_create function.
57 * This function returns a unique authentication token,
58 * associated with the specific object ID and the specific MC
59 * portal; this token must be used in all subsequent commands for
60 * this specific object
61 *
62 * Return: '0' on Success; Error code otherwise.
63 */
64int dpbp_open(struct fsl_mc_io *mc_io, int dpbp_id, uint16_t *token);
65
66/**
67 * dpbp_close() - Close the control session of the object
68 * @mc_io: Pointer to MC portal's I/O object
69 * @token: Token of DPBP object
70 *
71 * After this function is called, no further operations are
72 * allowed on the object without opening a new control session.
73 *
74 * Return: '0' on Success; Error code otherwise.
75 */
76int dpbp_close(struct fsl_mc_io *mc_io, uint16_t token);
77
78/**
79 * dpbp_enable() - Enable the DPBP.
80 * @mc_io: Pointer to MC portal's I/O object
81 * @token: Token of DPBP object
82 *
83 * Return: '0' on Success; Error code otherwise.
84 */
85
86int dpbp_enable(struct fsl_mc_io *mc_io, uint16_t token);
87
88/**
89 * dpbp_disable() - Disable the DPBP.
90 * @mc_io: Pointer to MC portal's I/O object
91 * @token: Token of DPBP object
92 *
93 * Return: '0' on Success; Error code otherwise.
94 */
95int dpbp_disable(struct fsl_mc_io *mc_io, uint16_t token);
96
97/**
98 * dpbp_reset() - Reset the DPBP, returns the object to initial state.
99 * @mc_io: Pointer to MC portal's I/O object
100 * @token: Token of DPBP object
101 *
102 * Return: '0' on Success; Error code otherwise.
103 */
104int dpbp_reset(struct fsl_mc_io *mc_io, uint16_t token);
105
106/**
107 * struct dpbp_attr - Structure representing DPBP attributes
108 * @id: DPBP object ID
109 * @version: DPBP version
110 * @bpid: Hardware buffer pool ID; should be used as an argument in
111 * acquire/release operations on buffers
112 */
113struct dpbp_attr {
114 int id;
115 /**
116 * struct version - Structure representing DPBP version
117 * @major: DPBP major version
118 * @minor: DPBP minor version
119 */
120 struct {
121 uint16_t major;
122 uint16_t minor;
123 } version;
124 uint16_t bpid;
125};
126
127
128/**
129 * dpbp_get_attributes - Retrieve DPBP attributes.
130 *
131 * @mc_io: Pointer to MC portal's I/O object
132 * @token: Token of DPBP object
133 * @attr: Returned object's attributes
134 *
135 * Return: '0' on Success; Error code otherwise.
136 */
137int dpbp_get_attributes(struct fsl_mc_io *mc_io,
138 uint16_t token,
139 struct dpbp_attr *attr);
140
141/** @} */
142
143#endif /* __FSL_DPBP_H */