xref: /arm-trusted-firmware/plat/mediatek/include/lpm/mt_lp_api.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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_API_H
8*91f16700Schasinglulu #define MT_LP_API_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <lpm/mt_lp_rm.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu #if MTK_PUBEVENT_ENABLE
13*91f16700Schasinglulu #include <vendor_pubsub_events.h>
14*91f16700Schasinglulu #endif
15*91f16700Schasinglulu 
16*91f16700Schasinglulu /* Ufs clk enum for PLAT_RC_CLKBUF_STATUS */
17*91f16700Schasinglulu enum rc_update_ex_ufs_ref_clk {
18*91f16700Schasinglulu 	UFS_REF_CLK_OFF = 0,
19*91f16700Schasinglulu 	UFS_REF_CLK_ON,
20*91f16700Schasinglulu };
21*91f16700Schasinglulu 
22*91f16700Schasinglulu /* Enum for flight mode  */
23*91f16700Schasinglulu enum rc_update_ex_flight_mode {
24*91f16700Schasinglulu 	FLIGHT_MODE_OFF = 0,
25*91f16700Schasinglulu 	FLIGHT_MODE_ON,
26*91f16700Schasinglulu };
27*91f16700Schasinglulu 
28*91f16700Schasinglulu struct mt_lpm_pubevent_data {
29*91f16700Schasinglulu 	unsigned int u32;
30*91f16700Schasinglulu };
31*91f16700Schasinglulu 
32*91f16700Schasinglulu enum mt_lpm_pubevents_id {
33*91f16700Schasinglulu 	MT_LPM_PUBEVENTS_BBLPM_ENTER,
34*91f16700Schasinglulu 	MT_LPM_PUBEVENTS_BBLPM_LEAVE,
35*91f16700Schasinglulu 	MT_LPM_PUBEVENTS_TARGET_CORE,
36*91f16700Schasinglulu 	MT_LPM_PUBEVENTS_SYS_POWER_OFF,
37*91f16700Schasinglulu 	MT_LPM_PUBEVENTS_SYS_POWER_ON,
38*91f16700Schasinglulu };
39*91f16700Schasinglulu 
40*91f16700Schasinglulu struct mt_lp_publish_event {
41*91f16700Schasinglulu 	unsigned int id;
42*91f16700Schasinglulu 	struct mt_lpm_pubevent_data val;
43*91f16700Schasinglulu };
44*91f16700Schasinglulu 
45*91f16700Schasinglulu #if MTK_PUBEVENT_ENABLE
46*91f16700Schasinglulu #define MT_LP_PUBLISH_EVENT(x) ({\
47*91f16700Schasinglulu 	PUBLISH_EVENT_ARG(lpm_publish_event, (const void *)(x)); })
48*91f16700Schasinglulu #define MT_LP_SUSPEND_PUBLISH_EVENT(x) ({\
49*91f16700Schasinglulu 	PUBLISH_EVENT_ARG(suspend_publish_event, (const void *)(x)); })
50*91f16700Schasinglulu 
51*91f16700Schasinglulu #define MT_LP_SUBSCRIBE_SUSPEND(func)	SUBSCRIBE_TO_EVENT(suspend_publish_event, func)
52*91f16700Schasinglulu #define MT_LP_SUBSCRIBE_LPM(func)	SUBSCRIBE_TO_EVENT(lpm_publish_event, func)
53*91f16700Schasinglulu #else
54*91f16700Schasinglulu #define MT_LP_PUBLISH_EVENT(x) ({ (void)x; })
55*91f16700Schasinglulu #define MT_LP_SUSPEND_PUBLISH_EVENT(x) ({ (void)x; })
56*91f16700Schasinglulu #define MT_LP_SUBSCRIBE_SUSPEND(func)
57*91f16700Schasinglulu #define MT_LP_SUBSCRIBE_LPM(func)
58*91f16700Schasinglulu #endif
59*91f16700Schasinglulu 
60*91f16700Schasinglulu /* MTK low power API types for audio */
61*91f16700Schasinglulu enum mt_lp_api_audio_type {
62*91f16700Schasinglulu 	AUDIO_AFE_ENTER,
63*91f16700Schasinglulu 	AUDIO_AFE_LEAVE,
64*91f16700Schasinglulu 	AUDIO_DSP_ENTER,
65*91f16700Schasinglulu 	AUDIO_DSP_LEAVE,
66*91f16700Schasinglulu };
67*91f16700Schasinglulu 
68*91f16700Schasinglulu /* MTK low power API types for usb */
69*91f16700Schasinglulu enum mt_lp_api_usb_type {
70*91f16700Schasinglulu 	LPM_USB_ENTER,
71*91f16700Schasinglulu 	LPM_USB_LEAVE,
72*91f16700Schasinglulu };
73*91f16700Schasinglulu 
74*91f16700Schasinglulu int mt_audio_update(int type);
75*91f16700Schasinglulu int mtk_usb_update(int type);
76*91f16700Schasinglulu 
77*91f16700Schasinglulu #endif /* MT_LP_API_H */
78