18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Support Power Management 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2014-2015 Freescale Semiconductor Inc. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef __PPC_FSL_PM_H 88c2ecf20Sopenharmony_ci#define __PPC_FSL_PM_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define E500_PM_PH10 1 118c2ecf20Sopenharmony_ci#define E500_PM_PH15 2 128c2ecf20Sopenharmony_ci#define E500_PM_PH20 3 138c2ecf20Sopenharmony_ci#define E500_PM_PH30 4 148c2ecf20Sopenharmony_ci#define E500_PM_DOZE E500_PM_PH10 158c2ecf20Sopenharmony_ci#define E500_PM_NAP E500_PM_PH15 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define PLAT_PM_SLEEP 20 188c2ecf20Sopenharmony_ci#define PLAT_PM_LPM20 30 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci#define FSL_PM_SLEEP (1 << 0) 218c2ecf20Sopenharmony_ci#define FSL_PM_DEEP_SLEEP (1 << 1) 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_cistruct fsl_pm_ops { 248c2ecf20Sopenharmony_ci /* mask pending interrupts to the RCPM from MPIC */ 258c2ecf20Sopenharmony_ci void (*irq_mask)(int cpu); 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci /* unmask pending interrupts to the RCPM from MPIC */ 288c2ecf20Sopenharmony_ci void (*irq_unmask)(int cpu); 298c2ecf20Sopenharmony_ci void (*cpu_enter_state)(int cpu, int state); 308c2ecf20Sopenharmony_ci void (*cpu_exit_state)(int cpu, int state); 318c2ecf20Sopenharmony_ci void (*cpu_up_prepare)(int cpu); 328c2ecf20Sopenharmony_ci void (*cpu_die)(int cpu); 338c2ecf20Sopenharmony_ci int (*plat_enter_sleep)(void); 348c2ecf20Sopenharmony_ci void (*freeze_time_base)(bool freeze); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci /* keep the power of IP blocks during sleep/deep sleep */ 378c2ecf20Sopenharmony_ci void (*set_ip_power)(bool enable, u32 mask); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci /* get platform supported power management modes */ 408c2ecf20Sopenharmony_ci unsigned int (*get_pm_modes)(void); 418c2ecf20Sopenharmony_ci}; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciextern const struct fsl_pm_ops *qoriq_pm_ops; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciint __init fsl_rcpm_init(void); 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci#endif /* __PPC_FSL_PM_H */ 48