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_SPM_CONSTRAINT_H 8*91f16700Schasinglulu #define MT_SPM_CONSTRAINT_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <lpm/mt_lp_rm.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_CPU_BUCK_OFF BIT(0) 13*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_DRAM_S0 BIT(1) 14*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_DRAM_S1 BIT(2) 15*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_VCORE_LP BIT(3) 16*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_INFRA_PDN BIT(4) 17*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_BUS26M_OFF BIT(5) 18*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_AP_SUSPEND BIT(6) 19*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_BBLPM BIT(7) 20*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_XO_UFS BIT(8) 21*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_GPS_STATE BIT(9) 22*91f16700Schasinglulu #define MT_RM_CONSTRAINT_ALLOW_LVTS_STATE BIT(10) 23*91f16700Schasinglulu 24*91f16700Schasinglulu enum mt_spm_rm_rc_type { 25*91f16700Schasinglulu MT_RM_CONSTRAINT_ID_BUS26M, 26*91f16700Schasinglulu MT_RM_CONSTRAINT_ID_SYSPLL, 27*91f16700Schasinglulu MT_RM_CONSTRAINT_ID_DRAM, 28*91f16700Schasinglulu MT_RM_CONSTRAINT_ID_CPU_BUCK_LDO, 29*91f16700Schasinglulu MT_RM_CONSTRAINT_ID_ALL, 30*91f16700Schasinglulu }; 31*91f16700Schasinglulu 32*91f16700Schasinglulu #define MT_SPM_RC_INVALID (0x0) 33*91f16700Schasinglulu #define MT_SPM_RC_VALID_SW BIT(0) 34*91f16700Schasinglulu #define MT_SPM_RC_VALID_FW BIT(1) 35*91f16700Schasinglulu #define MT_SPM_RC_VALID_RESIDNECY BIT(2) 36*91f16700Schasinglulu #define MT_SPM_RC_VALID_COND_CHECK BIT(3) 37*91f16700Schasinglulu #define MT_SPM_RC_VALID_COND_LATCH BIT(4) 38*91f16700Schasinglulu #define MT_SPM_RC_VALID_UFS_H8 BIT(5) 39*91f16700Schasinglulu #define MT_SPM_RC_VALID_FLIGHTMODE BIT(6) 40*91f16700Schasinglulu #define MT_SPM_RC_VALID_XSOC_BBLPM BIT(7) 41*91f16700Schasinglulu #define MT_SPM_RC_VALID_TRACE_EVENT BIT(8) 42*91f16700Schasinglulu #define MT_SPM_RC_VALID_TRACE_TIME BIT(9) 43*91f16700Schasinglulu 44*91f16700Schasinglulu /* MT_RM_CONSTRAINT_SW_VALID | MT_RM_CONSTRAINT_FW_VALID */ 45*91f16700Schasinglulu #define MT_SPM_RC_VALID (MT_SPM_RC_VALID_SW) 46*91f16700Schasinglulu 47*91f16700Schasinglulu #define IS_MT_RM_RC_READY(status) ((status & MT_SPM_RC_VALID) == MT_SPM_RC_VALID) 48*91f16700Schasinglulu 49*91f16700Schasinglulu struct constraint_status { 50*91f16700Schasinglulu uint16_t id; 51*91f16700Schasinglulu uint16_t is_valid; 52*91f16700Schasinglulu uint32_t is_cond_block; 53*91f16700Schasinglulu uint32_t enter_cnt; 54*91f16700Schasinglulu uint32_t all_pll_dump; 55*91f16700Schasinglulu uint64_t residency; 56*91f16700Schasinglulu struct mt_spm_cond_tables *cond_res; 57*91f16700Schasinglulu }; 58*91f16700Schasinglulu 59*91f16700Schasinglulu enum constraint_status_update_type { 60*91f16700Schasinglulu CONSTRAINT_UPDATE_VALID, 61*91f16700Schasinglulu CONSTRAINT_UPDATE_COND_CHECK, 62*91f16700Schasinglulu CONSTRAINT_RESIDNECY, 63*91f16700Schasinglulu }; 64*91f16700Schasinglulu 65*91f16700Schasinglulu enum constraint_status_get_type { 66*91f16700Schasinglulu CONSTRAINT_GET_VALID = 0xD0000000, 67*91f16700Schasinglulu CONSTRAINT_GET_ENTER_CNT, 68*91f16700Schasinglulu CONSTRAINT_GET_RESIDENCY, 69*91f16700Schasinglulu CONSTRAINT_GET_COND_EN, 70*91f16700Schasinglulu CONSTRAINT_COND_BLOCK, 71*91f16700Schasinglulu CONSTRAINT_GET_COND_BLOCK_LATCH, 72*91f16700Schasinglulu CONSTRAINT_GET_COND_BLOCK_DETAIL, 73*91f16700Schasinglulu CONSTRAINT_GET_RESIDNECY, 74*91f16700Schasinglulu }; 75*91f16700Schasinglulu 76*91f16700Schasinglulu struct rc_common_state { 77*91f16700Schasinglulu unsigned int id; 78*91f16700Schasinglulu unsigned int act; 79*91f16700Schasinglulu unsigned int type; 80*91f16700Schasinglulu void *value; 81*91f16700Schasinglulu }; 82*91f16700Schasinglulu 83*91f16700Schasinglulu #define MT_SPM_RC_BBLPM_MODE (MT_SPM_RC_VALID_UFS_H8 | \ 84*91f16700Schasinglulu MT_SPM_RC_VALID_FLIGHTMODE | \ 85*91f16700Schasinglulu MT_SPM_RC_VALID_XSOC_BBLPM) 86*91f16700Schasinglulu 87*91f16700Schasinglulu #define IS_MT_SPM_RC_BBLPM_MODE(st) ((st & (MT_SPM_RC_BBLPM_MODE)) == MT_SPM_RC_BBLPM_MODE) 88*91f16700Schasinglulu 89*91f16700Schasinglulu #endif /* MT_SPM_CONSTRAINT_H */ 90