xref: /rk3399_ARM-atf/plat/mediatek/include/lpm_v2/mt_lp_rq.h (revision cf2df874cd09305ac7282fadb0fef6be597dfffb)
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_RQ_H
8*da8cc41bSWenzhen Yu #define MT_LP_RQ_H
9*da8cc41bSWenzhen Yu 
10*da8cc41bSWenzhen Yu /* Determine the generic resource request public type */
11*da8cc41bSWenzhen Yu #define MT_LP_RQ_XO_FPM		BIT(0)
12*da8cc41bSWenzhen Yu #define MT_LP_RQ_26M		BIT(1)
13*da8cc41bSWenzhen Yu #define MT_LP_RQ_INFRA		BIT(2)
14*da8cc41bSWenzhen Yu #define MT_LP_RQ_SYSPLL		BIT(3)
15*da8cc41bSWenzhen Yu #define MT_LP_RQ_DRAM		BIT(4)
16*da8cc41bSWenzhen Yu #define MT_LP_RQ_VCORE		BIT(6)
17*da8cc41bSWenzhen Yu #define MT_LP_RQ_EMI		BIT(7)
18*da8cc41bSWenzhen Yu #define MT_LP_RQ_PMIC		BIT(8)
19*da8cc41bSWenzhen Yu #define MT_LP_RQ_ALL		0xFFFFFFFF
20*da8cc41bSWenzhen Yu 
21*da8cc41bSWenzhen Yu struct mt_lp_resource_user {
22*da8cc41bSWenzhen Yu 	/* Determine the resource user mask */
23*da8cc41bSWenzhen Yu 	unsigned int umask;
24*da8cc41bSWenzhen Yu 	/* Determine the resource request user identify */
25*da8cc41bSWenzhen Yu 	unsigned int uid;
26*da8cc41bSWenzhen Yu 	/* Request the resource */
27*da8cc41bSWenzhen Yu 	int (*request)(struct mt_lp_resource_user *this, unsigned int res);
28*da8cc41bSWenzhen Yu 	/* Release the resource */
29*da8cc41bSWenzhen Yu 	int (*release)(struct mt_lp_resource_user *this);
30*da8cc41bSWenzhen Yu };
31*da8cc41bSWenzhen Yu 
32*da8cc41bSWenzhen Yu int mt_lp_resource_user_register(char *uname, struct mt_lp_resource_user *ru);
33*da8cc41bSWenzhen Yu 
34*da8cc41bSWenzhen Yu #endif /* MT_LP_RQ_H */
35