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