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