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