xref: /arm-trusted-firmware/plat/mediatek/include/lpm/mt_lp_rqm.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2023, MediaTek Inc. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef MT_LP_RQM_H
8*91f16700Schasinglulu #define MT_LP_RQM_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include "mt_lp_rq.h"
11*91f16700Schasinglulu 
12*91f16700Schasinglulu enum plat_mt_lpm_rq_update_type {
13*91f16700Schasinglulu 	PLAT_RQ_USER_NUM,
14*91f16700Schasinglulu 	PLAT_RQ_USER_VALID,
15*91f16700Schasinglulu 	PLAT_RQ_USER_REQ,
16*91f16700Schasinglulu 	PLAT_RQ_USER_REL,
17*91f16700Schasinglulu 	PLAT_RQ_PER_USER_NAME,
18*91f16700Schasinglulu 	PLAT_RQ_REQ_NUM,
19*91f16700Schasinglulu 	PLAT_RQ_REQ_USAGE,
20*91f16700Schasinglulu };
21*91f16700Schasinglulu 
22*91f16700Schasinglulu /* Determine the request valid */
23*91f16700Schasinglulu #define MT_LP_RQ_VALID		(0x1)
24*91f16700Schasinglulu #define MT_LP_RQ_INVALID	(0x0)
25*91f16700Schasinglulu 
26*91f16700Schasinglulu /* Determine the request user opertions */
27*91f16700Schasinglulu #define MT_LP_RQ_USER_INVALID	(-1)
28*91f16700Schasinglulu #define MT_LP_RQ_USER_MAX	(32)
29*91f16700Schasinglulu #define MT_LP_RQ_USER_NAME_LEN	(4)
30*91f16700Schasinglulu #define MT_LP_RQ_USER_CHAR_U	(8)
31*91f16700Schasinglulu 
32*91f16700Schasinglulu /* Determine the request update flag */
33*91f16700Schasinglulu #define MT_LP_RQ_FLAG_DONE		(0)
34*91f16700Schasinglulu #define MT_LP_RQ_FLAG_NEED_UPDATE	BIT(6)
35*91f16700Schasinglulu 
36*91f16700Schasinglulu /* Determine the resource update id */
37*91f16700Schasinglulu #define MT_LP_RQ_ID_ALL_USAGE	(-1)
38*91f16700Schasinglulu 
39*91f16700Schasinglulu /* Determine the return status */
40*91f16700Schasinglulu #define MT_LP_RQ_STA_OK		(0)
41*91f16700Schasinglulu #define MT_LP_RQ_STA_BAD	(-1)
42*91f16700Schasinglulu 
43*91f16700Schasinglulu struct mt_lp_res_req {
44*91f16700Schasinglulu 	/* Determine the resource req public identify */
45*91f16700Schasinglulu 	const unsigned int res_id;
46*91f16700Schasinglulu 	/* Determine the resource bitwise internal control */
47*91f16700Schasinglulu 	const unsigned int res_rq;
48*91f16700Schasinglulu 	/* Determine the users per bit for current resource usage */
49*91f16700Schasinglulu 	unsigned int res_usage;
50*91f16700Schasinglulu };
51*91f16700Schasinglulu 
52*91f16700Schasinglulu struct mt_resource_req_manager {
53*91f16700Schasinglulu 	/* Determine the set of resources */
54*91f16700Schasinglulu 	struct mt_lp_res_req **res;
55*91f16700Schasinglulu };
56*91f16700Schasinglulu 
57*91f16700Schasinglulu struct resource_req_status {
58*91f16700Schasinglulu 	/* Determine the status id */
59*91f16700Schasinglulu 	unsigned int id;
60*91f16700Schasinglulu 	/* Determine the status value */
61*91f16700Schasinglulu 	unsigned int val;
62*91f16700Schasinglulu };
63*91f16700Schasinglulu 
64*91f16700Schasinglulu int mt_lp_resource_request_manager_register(struct mt_resource_req_manager *rqm);
65*91f16700Schasinglulu int mt_lp_rq_update_status(int type, void *p);
66*91f16700Schasinglulu int mt_lp_rq_get_status(int type, void *p);
67*91f16700Schasinglulu 
68*91f16700Schasinglulu #endif /* MT_LP_RQM_H */
69