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