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