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