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