xref: /rk3399_rockchip-uboot/include/fsl-mc/fsl_dpbp.h (revision cd85bec36d0e0d16fedb00e0c434ed070a9c6b37)
1a2a55e51SPrabhakar Kushwaha /*
2a2a55e51SPrabhakar Kushwaha  * Freescale Layerscape MC I/O wrapper
3a2a55e51SPrabhakar Kushwaha  *
4a2a55e51SPrabhakar Kushwaha  * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
5a2a55e51SPrabhakar Kushwaha  * Author: German Rivera <German.Rivera@freescale.com>
6a2a55e51SPrabhakar Kushwaha  *
7a2a55e51SPrabhakar Kushwaha  * SPDX-License-Identifier:	GPL-2.0+
8a2a55e51SPrabhakar Kushwaha  */
9a2a55e51SPrabhakar Kushwaha /*!
10a2a55e51SPrabhakar Kushwaha  *  @file    fsl_dpbp.h
11a2a55e51SPrabhakar Kushwaha  *  @brief   Data Path Buffer Pool API
12a2a55e51SPrabhakar Kushwaha  */
13a2a55e51SPrabhakar Kushwaha #ifndef __FSL_DPBP_H
14a2a55e51SPrabhakar Kushwaha #define __FSL_DPBP_H
15a2a55e51SPrabhakar Kushwaha 
16a2a55e51SPrabhakar Kushwaha /* DPBP Version */
17a2a55e51SPrabhakar Kushwaha #define DPBP_VER_MAJOR				2
18*53e353fcSPrabhakar Kushwaha #define DPBP_VER_MINOR				2
19a2a55e51SPrabhakar Kushwaha 
20a2a55e51SPrabhakar Kushwaha /* Command IDs */
21a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_CLOSE				0x800
22a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_OPEN					0x804
231ebbe4fcSPrabhakar Kushwaha #define DPBP_CMDID_CREATE				0x904
241ebbe4fcSPrabhakar Kushwaha #define DPBP_CMDID_DESTROY				0x900
25a2a55e51SPrabhakar Kushwaha 
26a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_ENABLE				0x002
27a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_DISABLE				0x003
28a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_GET_ATTR				0x004
29a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_RESET				0x005
30a2a55e51SPrabhakar Kushwaha 
31a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
32a2a55e51SPrabhakar Kushwaha #define DPBP_CMD_OPEN(cmd, dpbp_id) \
33a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    dpbp_id)
34a2a55e51SPrabhakar Kushwaha 
35a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
36a2a55e51SPrabhakar Kushwaha #define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \
37a2a55e51SPrabhakar Kushwaha do { \
38a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \
39a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 32, 32, int,	    attr->id);\
40a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  16, uint16_t, attr->version.major);\
41a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\
42a2a55e51SPrabhakar Kushwaha } while (0)
43a2a55e51SPrabhakar Kushwaha 
44a2a55e51SPrabhakar Kushwaha /* Data Path Buffer Pool API
45a2a55e51SPrabhakar Kushwaha  * Contains initialization APIs and runtime control APIs for DPBP
46a2a55e51SPrabhakar Kushwaha  */
47a2a55e51SPrabhakar Kushwaha 
48a2a55e51SPrabhakar Kushwaha struct fsl_mc_io;
49a2a55e51SPrabhakar Kushwaha 
50a2a55e51SPrabhakar Kushwaha /**
51a2a55e51SPrabhakar Kushwaha  * dpbp_open() - Open a control session for the specified object.
52a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
5387457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
54a2a55e51SPrabhakar Kushwaha  * @dpbp_id:	DPBP unique ID
55a2a55e51SPrabhakar Kushwaha  * @token:	Returned token; use in subsequent API calls
56a2a55e51SPrabhakar Kushwaha  *
57a2a55e51SPrabhakar Kushwaha  * This function can be used to open a control session for an
58a2a55e51SPrabhakar Kushwaha  * already created object; an object may have been declared in
59a2a55e51SPrabhakar Kushwaha  * the DPL or by calling the dpbp_create function.
60a2a55e51SPrabhakar Kushwaha  * This function returns a unique authentication token,
61a2a55e51SPrabhakar Kushwaha  * associated with the specific object ID and the specific MC
62a2a55e51SPrabhakar Kushwaha  * portal; this token must be used in all subsequent commands for
63a2a55e51SPrabhakar Kushwaha  * this specific object
64a2a55e51SPrabhakar Kushwaha  *
65a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
66a2a55e51SPrabhakar Kushwaha  */
6787457d11SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io	*mc_io,
6887457d11SPrabhakar Kushwaha 	      uint32_t		cmd_flags,
6987457d11SPrabhakar Kushwaha 	      int		dpbp_id,
7087457d11SPrabhakar Kushwaha 	      uint16_t		*token);
71a2a55e51SPrabhakar Kushwaha 
72a2a55e51SPrabhakar Kushwaha /**
73a2a55e51SPrabhakar Kushwaha  * dpbp_close() - Close the control session of the object
74a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
7587457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
76a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPBP object
77a2a55e51SPrabhakar Kushwaha  *
78a2a55e51SPrabhakar Kushwaha  * After this function is called, no further operations are
79a2a55e51SPrabhakar Kushwaha  * allowed on the object without opening a new control session.
80a2a55e51SPrabhakar Kushwaha  *
81a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
82a2a55e51SPrabhakar Kushwaha  */
8387457d11SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io	*mc_io,
8487457d11SPrabhakar Kushwaha 	       uint32_t		cmd_flags,
8587457d11SPrabhakar Kushwaha 	       uint16_t	token);
86a2a55e51SPrabhakar Kushwaha 
87a2a55e51SPrabhakar Kushwaha /**
881ebbe4fcSPrabhakar Kushwaha  * struct dpbp_cfg - Structure representing DPBP configuration
891ebbe4fcSPrabhakar Kushwaha  * @options:	place holder
901ebbe4fcSPrabhakar Kushwaha  */
911ebbe4fcSPrabhakar Kushwaha struct dpbp_cfg {
921ebbe4fcSPrabhakar Kushwaha 	uint32_t options;
931ebbe4fcSPrabhakar Kushwaha };
941ebbe4fcSPrabhakar Kushwaha 
951ebbe4fcSPrabhakar Kushwaha /**
961ebbe4fcSPrabhakar Kushwaha  * dpbp_create() - Create the DPBP object.
971ebbe4fcSPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
981ebbe4fcSPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
991ebbe4fcSPrabhakar Kushwaha  * @cfg:	Configuration structure
1001ebbe4fcSPrabhakar Kushwaha  * @token:	Returned token; use in subsequent API calls
1011ebbe4fcSPrabhakar Kushwaha  *
1021ebbe4fcSPrabhakar Kushwaha  * Create the DPBP object, allocate required resources and
1031ebbe4fcSPrabhakar Kushwaha  * perform required initialization.
1041ebbe4fcSPrabhakar Kushwaha  *
1051ebbe4fcSPrabhakar Kushwaha  * The object can be created either by declaring it in the
1061ebbe4fcSPrabhakar Kushwaha  * DPL file, or by calling this function.
1071ebbe4fcSPrabhakar Kushwaha  * This function returns a unique authentication token,
1081ebbe4fcSPrabhakar Kushwaha  * associated with the specific object ID and the specific MC
1091ebbe4fcSPrabhakar Kushwaha  * portal; this token must be used in all subsequent calls to
1101ebbe4fcSPrabhakar Kushwaha  * this specific object. For objects that are created using the
1111ebbe4fcSPrabhakar Kushwaha  * DPL file, call dpbp_open function to get an authentication
1121ebbe4fcSPrabhakar Kushwaha  * token first.
1131ebbe4fcSPrabhakar Kushwaha  *
1141ebbe4fcSPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
1151ebbe4fcSPrabhakar Kushwaha  */
1161ebbe4fcSPrabhakar Kushwaha int dpbp_create(struct fsl_mc_io	*mc_io,
1171ebbe4fcSPrabhakar Kushwaha 		uint32_t		cmd_flags,
1181ebbe4fcSPrabhakar Kushwaha 		const struct dpbp_cfg	*cfg,
1191ebbe4fcSPrabhakar Kushwaha 		uint16_t		*token);
1201ebbe4fcSPrabhakar Kushwaha 
1211ebbe4fcSPrabhakar Kushwaha /**
1221ebbe4fcSPrabhakar Kushwaha  * dpbp_destroy() - Destroy the DPBP object and release all its resources.
1231ebbe4fcSPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
1241ebbe4fcSPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
1251ebbe4fcSPrabhakar Kushwaha  * @token:	Token of DPBP object
1261ebbe4fcSPrabhakar Kushwaha  *
1271ebbe4fcSPrabhakar Kushwaha  * Return:	'0' on Success; error code otherwise.
1281ebbe4fcSPrabhakar Kushwaha  */
1291ebbe4fcSPrabhakar Kushwaha int dpbp_destroy(struct fsl_mc_io	*mc_io,
1301ebbe4fcSPrabhakar Kushwaha 		 uint32_t		cmd_flags,
1311ebbe4fcSPrabhakar Kushwaha 		 uint16_t		token);
1321ebbe4fcSPrabhakar Kushwaha 
1331ebbe4fcSPrabhakar Kushwaha /**
134a2a55e51SPrabhakar Kushwaha  * dpbp_enable() - Enable the DPBP.
135a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
13687457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
137a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPBP object
138a2a55e51SPrabhakar Kushwaha  *
139a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
140a2a55e51SPrabhakar Kushwaha  */
14187457d11SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io	*mc_io,
14287457d11SPrabhakar Kushwaha 		uint32_t		cmd_flags,
14387457d11SPrabhakar Kushwaha 		uint16_t		token);
144a2a55e51SPrabhakar Kushwaha 
145a2a55e51SPrabhakar Kushwaha /**
146a2a55e51SPrabhakar Kushwaha  * dpbp_disable() - Disable the DPBP.
147a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
14887457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
149a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPBP object
150a2a55e51SPrabhakar Kushwaha  *
151a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
152a2a55e51SPrabhakar Kushwaha  */
15387457d11SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io	*mc_io,
15487457d11SPrabhakar Kushwaha 		 uint32_t		cmd_flags,
15587457d11SPrabhakar Kushwaha 		 uint16_t		token);
15687457d11SPrabhakar Kushwaha 
15787457d11SPrabhakar Kushwaha /**
15887457d11SPrabhakar Kushwaha  * dpbp_is_enabled() - Check if the DPBP is enabled.
15987457d11SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
16087457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
16187457d11SPrabhakar Kushwaha  * @token:	Token of DPBP object
16287457d11SPrabhakar Kushwaha  * @en:		Returns '1' if object is enabled; '0' otherwise
16387457d11SPrabhakar Kushwaha  *
16487457d11SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
16587457d11SPrabhakar Kushwaha  */
16687457d11SPrabhakar Kushwaha int dpbp_is_enabled(struct fsl_mc_io	*mc_io,
16787457d11SPrabhakar Kushwaha 		    uint32_t		cmd_flags,
16887457d11SPrabhakar Kushwaha 		    uint16_t		token,
16987457d11SPrabhakar Kushwaha 		    int		*en);
170a2a55e51SPrabhakar Kushwaha 
171a2a55e51SPrabhakar Kushwaha /**
172a2a55e51SPrabhakar Kushwaha  * dpbp_reset() - Reset the DPBP, returns the object to initial state.
173a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
17487457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
175a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPBP object
176a2a55e51SPrabhakar Kushwaha  *
177a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
178a2a55e51SPrabhakar Kushwaha  */
17987457d11SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io	*mc_io,
18087457d11SPrabhakar Kushwaha 	       uint32_t		cmd_flags,
18187457d11SPrabhakar Kushwaha 	       uint16_t	token);
18287457d11SPrabhakar Kushwaha 
183a2a55e51SPrabhakar Kushwaha 
184a2a55e51SPrabhakar Kushwaha /**
185a2a55e51SPrabhakar Kushwaha  * struct dpbp_attr - Structure representing DPBP attributes
186a2a55e51SPrabhakar Kushwaha  * @id:		DPBP object ID
187a2a55e51SPrabhakar Kushwaha  * @version:	DPBP version
188a2a55e51SPrabhakar Kushwaha  * @bpid:	Hardware buffer pool ID; should be used as an argument in
189a2a55e51SPrabhakar Kushwaha  *		acquire/release operations on buffers
190a2a55e51SPrabhakar Kushwaha  */
191a2a55e51SPrabhakar Kushwaha struct dpbp_attr {
192a2a55e51SPrabhakar Kushwaha 	int id;
193a2a55e51SPrabhakar Kushwaha 	/**
194a2a55e51SPrabhakar Kushwaha 	 * struct version - Structure representing DPBP version
195a2a55e51SPrabhakar Kushwaha 	 * @major:	DPBP major version
196a2a55e51SPrabhakar Kushwaha 	 * @minor:	DPBP minor version
197a2a55e51SPrabhakar Kushwaha 	 */
198a2a55e51SPrabhakar Kushwaha 	struct {
199a2a55e51SPrabhakar Kushwaha 		uint16_t major;
200a2a55e51SPrabhakar Kushwaha 		uint16_t minor;
201a2a55e51SPrabhakar Kushwaha 	} version;
202a2a55e51SPrabhakar Kushwaha 	uint16_t bpid;
203a2a55e51SPrabhakar Kushwaha };
204a2a55e51SPrabhakar Kushwaha 
205a2a55e51SPrabhakar Kushwaha /**
206a2a55e51SPrabhakar Kushwaha  * dpbp_get_attributes - Retrieve DPBP attributes.
207a2a55e51SPrabhakar Kushwaha  *
208a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
20987457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
210a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPBP object
211a2a55e51SPrabhakar Kushwaha  * @attr:	Returned object's attributes
212a2a55e51SPrabhakar Kushwaha  *
213a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
214a2a55e51SPrabhakar Kushwaha  */
215a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io	*mc_io,
21687457d11SPrabhakar Kushwaha 			uint32_t	cmd_flags,
217a2a55e51SPrabhakar Kushwaha 			uint16_t		token,
218a2a55e51SPrabhakar Kushwaha 			struct dpbp_attr	*attr);
219a2a55e51SPrabhakar Kushwaha 
220a2a55e51SPrabhakar Kushwaha /** @} */
221a2a55e51SPrabhakar Kushwaha 
222a2a55e51SPrabhakar Kushwaha #endif /* __FSL_DPBP_H */
223