162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Support Power Management 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2014-2015 Freescale Semiconductor Inc. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci#ifndef __PPC_FSL_PM_H 862306a36Sopenharmony_ci#define __PPC_FSL_PM_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define E500_PM_PH10 1 1162306a36Sopenharmony_ci#define E500_PM_PH15 2 1262306a36Sopenharmony_ci#define E500_PM_PH20 3 1362306a36Sopenharmony_ci#define E500_PM_PH30 4 1462306a36Sopenharmony_ci#define E500_PM_DOZE E500_PM_PH10 1562306a36Sopenharmony_ci#define E500_PM_NAP E500_PM_PH15 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define PLAT_PM_SLEEP 20 1862306a36Sopenharmony_ci#define PLAT_PM_LPM20 30 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define FSL_PM_SLEEP (1 << 0) 2162306a36Sopenharmony_ci#define FSL_PM_DEEP_SLEEP (1 << 1) 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct fsl_pm_ops { 2462306a36Sopenharmony_ci /* mask pending interrupts to the RCPM from MPIC */ 2562306a36Sopenharmony_ci void (*irq_mask)(int cpu); 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci /* unmask pending interrupts to the RCPM from MPIC */ 2862306a36Sopenharmony_ci void (*irq_unmask)(int cpu); 2962306a36Sopenharmony_ci void (*cpu_enter_state)(int cpu, int state); 3062306a36Sopenharmony_ci void (*cpu_exit_state)(int cpu, int state); 3162306a36Sopenharmony_ci void (*cpu_up_prepare)(int cpu); 3262306a36Sopenharmony_ci void (*cpu_die)(int cpu); 3362306a36Sopenharmony_ci int (*plat_enter_sleep)(void); 3462306a36Sopenharmony_ci void (*freeze_time_base)(bool freeze); 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci /* keep the power of IP blocks during sleep/deep sleep */ 3762306a36Sopenharmony_ci void (*set_ip_power)(bool enable, u32 mask); 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci /* get platform supported power management modes */ 4062306a36Sopenharmony_ci unsigned int (*get_pm_modes)(void); 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciextern const struct fsl_pm_ops *qoriq_pm_ops; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciint __init fsl_rcpm_init(void); 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#endif /* __PPC_FSL_PM_H */ 48