1*acc85548SJames Liao /* 2*acc85548SJames Liao * Copyright (c) 2020, MediaTek Inc. All rights reserved. 3*acc85548SJames Liao * 4*acc85548SJames Liao * SPDX-License-Identifier: BSD-3-Clause 5*acc85548SJames Liao */ 6*acc85548SJames Liao 7*acc85548SJames Liao #ifndef PLAT_MTK_LPM_H 8*acc85548SJames Liao #define PLAT_MTK_LPM_H 9*acc85548SJames Liao 10*acc85548SJames Liao #include <lib/psci/psci.h> 11*acc85548SJames Liao #include <lib/utils_def.h> 12*acc85548SJames Liao 13*acc85548SJames Liao #define MT_IRQ_REMAIN_MAX U(8) 14*acc85548SJames Liao #define MT_IRQ_REMAIN_CAT_LOG BIT(31) 15*acc85548SJames Liao 16*acc85548SJames Liao struct mt_irqremain { 17*acc85548SJames Liao unsigned int count; 18*acc85548SJames Liao unsigned int irqs[MT_IRQ_REMAIN_MAX]; 19*acc85548SJames Liao unsigned int wakeupsrc_cat[MT_IRQ_REMAIN_MAX]; 20*acc85548SJames Liao unsigned int wakeupsrc[MT_IRQ_REMAIN_MAX]; 21*acc85548SJames Liao }; 22*acc85548SJames Liao 23*acc85548SJames Liao #define PLAT_RC_STATUS_READY BIT(0) 24*acc85548SJames Liao #define PLAT_RC_STATUS_FEATURE_EN BIT(1) 25*acc85548SJames Liao #define PLAT_RC_STATUS_UART_NONSLEEP BIT(31) 26*acc85548SJames Liao 27*acc85548SJames Liao struct mt_lpm_tz { 28*acc85548SJames Liao int (*pwr_prompt)(unsigned int cpu, const psci_power_state_t *state); 29*acc85548SJames Liao int (*pwr_reflect)(unsigned int cpu, const psci_power_state_t *state); 30*acc85548SJames Liao 31*acc85548SJames Liao int (*pwr_cpu_on)(unsigned int cpu, const psci_power_state_t *state); 32*acc85548SJames Liao int (*pwr_cpu_dwn)(unsigned int cpu, const psci_power_state_t *state); 33*acc85548SJames Liao 34*acc85548SJames Liao int (*pwr_cluster_on)(unsigned int cpu, 35*acc85548SJames Liao const psci_power_state_t *state); 36*acc85548SJames Liao int (*pwr_cluster_dwn)(unsigned int cpu, 37*acc85548SJames Liao const psci_power_state_t *state); 38*acc85548SJames Liao 39*acc85548SJames Liao int (*pwr_mcusys_on)(unsigned int cpu, const psci_power_state_t *state); 40*acc85548SJames Liao int (*pwr_mcusys_on_finished)(unsigned int cpu, 41*acc85548SJames Liao const psci_power_state_t *state); 42*acc85548SJames Liao int (*pwr_mcusys_dwn)(unsigned int cpu, 43*acc85548SJames Liao const psci_power_state_t *state); 44*acc85548SJames Liao }; 45*acc85548SJames Liao 46*acc85548SJames Liao const struct mt_lpm_tz *mt_plat_cpu_pm_init(void); 47*acc85548SJames Liao 48*acc85548SJames Liao #endif /* PLAT_MTK_LPM_H */ 49