12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2d17799f9Schenhui zhao /* 3d17799f9Schenhui zhao * Support Power Management 4d17799f9Schenhui zhao * 5d17799f9Schenhui zhao * Copyright 2014-2015 Freescale Semiconductor Inc. 6d17799f9Schenhui zhao */ 7d17799f9Schenhui zhao #ifndef __PPC_FSL_PM_H 8d17799f9Schenhui zhao #define __PPC_FSL_PM_H 9d17799f9Schenhui zhao 10d17799f9Schenhui zhao #define E500_PM_PH10 1 11d17799f9Schenhui zhao #define E500_PM_PH15 2 12d17799f9Schenhui zhao #define E500_PM_PH20 3 13d17799f9Schenhui zhao #define E500_PM_PH30 4 14d17799f9Schenhui zhao #define E500_PM_DOZE E500_PM_PH10 15d17799f9Schenhui zhao #define E500_PM_NAP E500_PM_PH15 16d17799f9Schenhui zhao 17d17799f9Schenhui zhao #define PLAT_PM_SLEEP 20 18d17799f9Schenhui zhao #define PLAT_PM_LPM20 30 19d17799f9Schenhui zhao 20d17799f9Schenhui zhao #define FSL_PM_SLEEP (1 << 0) 21d17799f9Schenhui zhao #define FSL_PM_DEEP_SLEEP (1 << 1) 22d17799f9Schenhui zhao 23d17799f9Schenhui zhao struct fsl_pm_ops { 24d17799f9Schenhui zhao /* mask pending interrupts to the RCPM from MPIC */ 25d17799f9Schenhui zhao void (*irq_mask)(int cpu); 26d17799f9Schenhui zhao 27d17799f9Schenhui zhao /* unmask pending interrupts to the RCPM from MPIC */ 28d17799f9Schenhui zhao void (*irq_unmask)(int cpu); 29d17799f9Schenhui zhao void (*cpu_enter_state)(int cpu, int state); 30d17799f9Schenhui zhao void (*cpu_exit_state)(int cpu, int state); 31d17799f9Schenhui zhao void (*cpu_up_prepare)(int cpu); 32d17799f9Schenhui zhao void (*cpu_die)(int cpu); 33d17799f9Schenhui zhao int (*plat_enter_sleep)(void); 34d17799f9Schenhui zhao void (*freeze_time_base)(bool freeze); 35d17799f9Schenhui zhao 36d17799f9Schenhui zhao /* keep the power of IP blocks during sleep/deep sleep */ 37d17799f9Schenhui zhao void (*set_ip_power)(bool enable, u32 mask); 38d17799f9Schenhui zhao 39d17799f9Schenhui zhao /* get platform supported power management modes */ 40d17799f9Schenhui zhao unsigned int (*get_pm_modes)(void); 41d17799f9Schenhui zhao }; 42d17799f9Schenhui zhao 43d17799f9Schenhui zhao extern const struct fsl_pm_ops *qoriq_pm_ops; 44d17799f9Schenhui zhao 45d17799f9Schenhui zhao int __init fsl_rcpm_init(void); 46d17799f9Schenhui zhao 47d17799f9Schenhui zhao #endif /* __PPC_FSL_PM_H */ 48