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