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